GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: DexX le 18 Juillet 2011, 01:22:25
-
Bonsoir,
Alors, j'ai fais un système de gestion de salaire par le maire.
Il peut éditer n'importe quel salaire depuis le jeu.
Cela sauvegarde bien dans le fichier .ini mais j'ai l'impression que sa le charge mal...
Car quand il tape la commande pour changer le salaire, sa lui affiche 0$ comme montant alors que dans le fichier ce n'est pas égale à 0.
Dès qu'on édite ce salaire et qu'on entre comme montant 1000 par exemple, si on retape la commande pour éditer, on voit bien 1000$.
Donc, je pense que le chargement du fichier se fait mal.
J'ai crée une commande pour recharger les donner de la mairie, donc rappeler la fonction Mairie_Chargement et sa remet tous à 0 sur le serveur. Donc on voit plus le 1000 par exemple. Mais les valeurs sont toujours présentent dans le fichier .ini.
Donc dans OnGameModeInit :
Mairie_Chargement();
forward Mairie_Chargement();
public Mairie_Chargement()
{
new arrCoords[11][64];
new strFromFile2[256];
new File: file = fopen("Mairie.ini", io_read);
if (file)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
strmid(Mairie[Banque], arrCoords[0], 0, strlen(arrCoords[0]), 255);
strmid(Mairie[Salaire_RMI], arrCoords[1], 0, strlen(arrCoords[1]), 255);
strmid(Mairie[Salaire_SFPD], arrCoords[2], 0, strlen(arrCoords[2]), 255);
strmid(Mairie[Salaire_Mecanicien], arrCoords[3], 0, strlen(arrCoords[3]), 255);
strmid(Mairie[Salaire_Eboueur], arrCoords[4], 0, strlen(arrCoords[4]), 255);
strmid(Mairie[Salaire_Fermier], arrCoords[5], 0, strlen(arrCoords[5]), 255);
strmid(Mairie[Salaire_VendeurGlaces], arrCoords[6], 0, strlen(arrCoords[6]), 255);
strmid(Mairie[Salaire_Balayeur], arrCoords[7], 0, strlen(arrCoords[7]), 255);
strmid(Mairie[Salaire_PizzaBoy], arrCoords[8], 0, strlen(arrCoords[8]), 255);
strmid(Mairie[Permis_Voiture], arrCoords[9], 0, strlen(arrCoords[9]), 255);
strmid(Mairie[Permis_Code], arrCoords[10], 0, strlen(arrCoords[10]), 255);
}
fclose(file);
}
forward Mairie_Sauvegarde();
public Mairie_Sauvegarde()
{
new idx;
new File: file2;
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d",
Mairie[Banque],
Mairie[Salaire_RMI],
Mairie[Salaire_SFPD],
Mairie[Salaire_Mecanicien],
Mairie[Salaire_Eboueur],
Mairie[Salaire_Fermier],
Mairie[Salaire_VendeurGlaces],
Mairie[Salaire_Balayeur],
Mairie[Salaire_PizzaBoy],
Mairie[Permis_Voiture],
Mairie[Permis_Code]);
if(idx == 0)
{
file2 = fopen("Mairie.ini", io_write);
}
else
{
file2 = fopen("Mairie.ini", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
Merci d'avance de vos aides ;).
-
TOn fichier a ses données séparées par des retour à la ligne, or toi tu les sépare par le caractère '|' :
split(strFromFile2, arrCoords, '|');
remplace par
split(strFromFile2, arrCoords, '\r\n');
-
Hum ... J'avais pas fais attention à cela ;).
Mais il ne prend pas à compte, car il me met cela :
error 027: invalid character constant
error 029: invalid expression, assumed zero
error 017: undefined symbol "n"
fatal error 107: too many error messages on one line
forward Mairie_Chargement();
public Mairie_Chargement()
{
new arrCoords[11][64];
new strFromFile2[256];
new File: file = fopen("Mairie.ini", io_read);
if (file)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '\r\n');
strmid(Mairie[Banque], arrCoords[0], 0, strlen(arrCoords[0]), 255);
strmid(Mairie[Salaire_RMI], arrCoords[1], 0, strlen(arrCoords[1]), 255);
strmid(Mairie[Salaire_SFPD], arrCoords[2], 0, strlen(arrCoords[2]), 255);
strmid(Mairie[Salaire_Mecanicien], arrCoords[3], 0, strlen(arrCoords[3]), 255);
strmid(Mairie[Salaire_Eboueur], arrCoords[4], 0, strlen(arrCoords[4]), 255);
strmid(Mairie[Salaire_Fermier], arrCoords[5], 0, strlen(arrCoords[5]), 255);
strmid(Mairie[Salaire_VendeurGlaces], arrCoords[6], 0, strlen(arrCoords[6]), 255);
strmid(Mairie[Salaire_Balayeur], arrCoords[7], 0, strlen(arrCoords[7]), 255);
strmid(Mairie[Salaire_PizzaBoy], arrCoords[8], 0, strlen(arrCoords[8]), 255);
strmid(Mairie[Permis_Voiture], arrCoords[9], 0, strlen(arrCoords[9]), 255);
strmid(Mairie[Permis_Code], arrCoords[10], 0, strlen(arrCoords[10]), 255);
}
fclose(file);
}
-
Essaye avec des double quotes.
-
Bien, il me met sa :
error 035: argument type mismatch (argument 3)
split(strFromFile2, arrCoords, "\r\n");
Edit :
Problème résolu. J'ai trouvé une autre solution ;). Merci Apo ;).