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

Titre: Comment sauvegardé une plaque ?
Posté 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
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Brian Turner le 27 Décembre 2010, 16:15:53
dans un fichier plaques.cfg par exemple? tu y stock l'id du vehicule et la plaque.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Komolos le 27 Décembre 2010, 17:29:57
J'avez pensé le même, mais je sais pas comment faire :s
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Damien_Lohier le 27 Décembre 2010, 17:52:47
essaye ça:
Citer
vehicleid (id du véhicule) plaque (n° plaque)

En tout cas je test pour toi...
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Komolos le 27 Décembre 2010, 23:42:49
Pas plus d'explication ? :s
Titre: Re : Comment sauvegardé une plaque ?
Posté par: chneubeul le 27 Décembre 2010, 23:58:53
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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Damien_Lohier le 28 Décembre 2010, 03:54:40
Citer
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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Xartrick le 28 Décembre 2010, 03:58:19
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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Damien_Lohier le 28 Décembre 2010, 04:06:41
Bah dans OnPlayerEnterVehicle...
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Jones le 28 Décembre 2010, 07:00:48
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++
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Komolos le 28 Décembre 2010, 10:45:29
Bonjour,

Merci beaucoup, chneubeul .

Je vais testé ça :)
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Damien_Lohier le 28 Décembre 2010, 13:50:23
Il y a quels variables à mettre ???
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Komolos le 28 Décembre 2010, 14:25:29
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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: chneubeul le 28 Décembre 2010, 15:07:13
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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Komolos le 28 Décembre 2010, 15:32:45
Sa que je viens de faire ne vas pas ?

Je n'ai pas trop compris, ton système.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Xartrick le 28 Décembre 2010, 18:55:36
@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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Damien_Lohier le 28 Décembre 2010, 20:55:29
Moué :closedeyes

J'ai toujours rien compris aux callback mais c'est pas grave  :)
(Si vous tenez à m'expliquer, envoyez moi un pm)
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Xartrick le 28 Décembre 2010, 21:01:21
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.


Code: (Pawn) [Sélectionner]
SetPlayerTime(playerid, time)
{
SetPlayerHour(playerid, hour)
{
// code
}

// code
}

Ceci est un code totalement faux.

Code: (Pawn) [Sélectionner]
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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Komolos le 28 Décembre 2010, 21:11:57
Revenons à mon problème s'il vous plait
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Xartrick le 28 Décembre 2010, 21:14:42
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.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Komolos le 28 Décembre 2010, 21:31:58
J'attends chneubeul pour voir si il peut m'en dire plus.
Titre: Re : Comment sauvegardé une plaque ?
Posté par: Damien_Lohier le 28 Décembre 2010, 22:12:52
D'accord merci Xartrick, j'ai déjà mieux compris :)
(Après faut savoir les créer :/)
Titre: Re : Re : Comment sauvegardé une plaque ?
Posté par: chneubeul le 28 Décembre 2010, 22:42:29
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.