GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Komolos le 27 Décembre 2010, 15:23:55
-
Bonjour,
Aujourd'hui j'ai crée un système de plaques, mais je ne sais pas comment sauvegardé celle s'y.
J'ai essayé plusieurs méthode, mais sans vin, je viens donc demandé de l'aide :closedeyes
Merci d'avance. :P
-
dans un fichier plaques.cfg par exemple? tu y stock l'id du vehicule et la plaque.
-
J'avez pensé le même, mais je sais pas comment faire :s
-
essaye ça:
vehicleid (id du véhicule) plaque (n° plaque)
En tout cas je test pour toi...
-
Pas plus d'explication ? :s
-
Bonsoir, tu peut te créé une petite fonction qui va attribuer et sauvegarder une plaque.
SetRegisterNumberPlates{vehicleid, plate[])
{
SetVehicleNumberPlates(vehicleid, plate);// on change la plaque de la voiture
new File:platefile = fopen(PLATES_FILE, io_write);
if(platefile) // donc si il réussis à le créé ou l'ouvrir)
{
format(st, sizeof(st), "%d|%s\r\n", vehicleid, plate);
fwrite(platefile, st); // on écrit les données
}
fclose(platefile); // on ferme le fichier
return 1;
}
Ensuite pour la lecture des données je te conseille d'utiliser sscanf, c'est beaucoup plus simple :)
Mais n'a tu pas déjà un système de véhicule ? car autant rajouter une information et sauvegarder directement dans le même fichier :)
A+, Sam.
-
C:\Users\Damien Lohier\Desktop\Stundrift\gamemodes\Stuntdrift.pwn(249) : error 017: undefined symbol "SetRegisterNumberPlates"
C:\Users\Damien Lohier\Desktop\Stundrift\gamemodes\Stuntdrift.pwn(249) : warning 215: expression has no effect
C:\Users\Damien Lohier\Desktop\Stundrift\gamemodes\Stuntdrift.pwn(249) : error 017: undefined symbol "plate"
C:\Users\Damien Lohier\Desktop\Stundrift\gamemodes\Stuntdrift.pwn(249) : error 029: invalid expression, assumed zero
C:\Users\Damien Lohier\Desktop\Stundrift\gamemodes\Stuntdrift.pwn(249) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
-
Je suis sûr que tu as mit cette fonction dans un callback.
Il faut comprendre ce que tu fais et non faire de bête copier/coller.
-
Bah dans OnPlayerEnterVehicle...
-
Bon,mdr....
Tu pourrais nous expliquer un petit peu ton systeme ? Tu veux le mettre dans un fichier ScriptFiles ? ses bien sa ?
Approfondit ta question svp
++Jones++
-
Bonjour,
Merci beaucoup, chneubeul .
Je vais testé ça :)
-
Il y a quels variables à mettre ???
-
J'ai fait comme ça :
SetRegisterNumberPlates(vehicleid, plate[])
{
SetVehicleNumberPlates(vehicleid, plate);// on change la plaque de la voiture
new File:platefile = fopen("plaque.ini", io_write);
if(platefile) // donc si il réussis à le créé ou l'ouvrir)
{
format(st, sizeof(st), "%d|%s\r\n", vehicleid, plate);
fwrite(platefile, st); // on écrit les données
}
fclose(platefile); // on ferme le fichier
return 1;
}
//Maintenant le save grrr
public SavePlaque()
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d|%s\r\n", vehicleid, plate);
new File: file3 = fopen("plaque.ini", io_write);
fwrite(file3, coordsstring);
fclose(file3);
return 1;
}
Es-que ça irai ?
Avec un timer pour sauvegardé tout ça.
-
Salut, utilise ma fonction, la tienne déjà n'a aucun paramètres. Pour utiliser ma fonction, je viens de m'apercevoir il faut déjà rajouter le new st[37]; ( 4 caractères pour aller jusque 2000 véhicules + 1 pour le | et ensuite 32 caractères car c'est le maximum que peut accueillir une plaque d'immatriculation. Soit au final 32+4+1 = 37) puis après ça, définir le fichier :
#define PLATES_FILE "plaques.ini"
Pour ton idée de timer elle est inutile. Car la fonction va mettre une plaques au véhicule ( avant de le créé sinon il faut rajouter un petit quelque choses :D ) puis ensuite là sauvegarder.
-
Sa que je viens de faire ne vas pas ?
Je n'ai pas trop compris, ton système.
-
@Damien_Lohier: Comprend déjà se que tu fais avant de poser des questions aussi inutile.
Une fonction c'est comme un callback, à la différence que c'est toi qui dois le déclencher et non un évènement.
Si tu met une fonction dans un callback, que va t'il se passer ? Des erreurs.
-
Moué :closedeyes
J'ai toujours rien compris aux callback mais c'est pas grave :)
(Si vous tenez à m'expliquer, envoyez moi un pm)
-
Moi je vais t'expliquer ici car sinon, d'autres personnes passants par ici ne comprendrons pas non plus.
Un callback est une fonction qui est appelé quand un évènement en jeu se produit.
Par exemple, quand tu te connecte, le callback OnPlayerConnect est appelait avec en paramètre, l'ID du joueur qui se connecte.
Une fonction ne peut être inclue dans un autre fonction, donc tu ne peut pas inclure la fonction SetRegisterNumberPlates dans un callback ou une autre fonction.
SetPlayerTime(playerid, time)
{
SetPlayerHour(playerid, hour)
{
// code
}
// code
}
Ceci est un code totalement faux.
SetPlayerTime(playerid, time)
{
// code
}
SetPlayerHour(playerid, hour)
{
// code
}
Ce code est juste.
J'ai pris des noms fictifs, ces fonctions n'existes pas réellement sauf si tu les créer :P.
-
Revenons à mon problème s'il vous plait
-
Ton problème a été résolut, nous t'avons donné assez d'explication pour que tu puisse le faire tous seul, comme un grand.
-
J'attends chneubeul pour voir si il peut m'en dire plus.
-
D'accord merci Xartrick, j'ai déjà mieux compris :)
(Après faut savoir les créer :/)
-
J'attends chneubeul pour voir si il peut m'en dire plus.
Je ne peut pas en dire plus, j'ai déjà donner la fonction, après à vous de communiquer vos problèmes et ce que vous souhaitez, car on ne m'a toujours pas répondu à certaines de mes questions. Après, en dire plus, ce n'est pas donner du code.