GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 12 Avril 2010, 21:04:54
-
Bonsoir a toutes et à tous, j'ai un petit soucis, j'ai crée ceci:
public SaveCarCoords()
{
new File: file2;
for(new car = 1; car <= 351; car++)
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%d,%d\n",
CarInfo[car][cModel],//
CarInfo[car][cLocationx],//
CarInfo[car][cLocationy],//
CarInfo[car][cLocationz],//
CarInfo[car][cAngle],//
CarInfo[car][cColorOne],//
CarInfo[car][cColorTwo]);//
if(car == 1)
{
file2 = fopen("Non.cfg", io_write);
}
else
{
file2 = fopen("Non.cfg", io_append);
}
fwrite(file2, coordsstring);
fclose(file2);
}
return 1;
}
Donc quand je tape une cmd, toutes le position des véhicule doivent être sauvegardée, seulement, tout les véhicule avant 167 sont sauvergardé par 0; 00000; 00000
et ceux apres sont save normal, avec id du véhicule, position...
Bizarement seul ceux achetable se save correctement.
-
Salut, la fonction SauvegardeVeh(); tu la charge dans une boucle ou un timer qui tourne toujours ?
-
Tu recupere bien les informations du véhicule ?
-
Salut,
pour ton problème je ne voit pas, par contre tu ferais mieux de n'ouvrir ton fichier qu'une seule fois, gain en temps énorme :
public SaveCarCoords()
{
new File: file2;
file2 = fopen("Non.cfg", io_write);
if(file2)
{
new coordsstring[256];
for(new car = 1; car <= 351; car++)
{
format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%d,%d\n",
CarInfo[car][cModel],//
CarInfo[car][cLocationx],//
CarInfo[car][cLocationy],//
CarInfo[car][cLocationz],//
CarInfo[car][cAngle],//
CarInfo[car][cColorOne],//
CarInfo[car][cColorTwo]);//
fwrite(file2, coordsstring);
}
fclose(file2);
}
return 1;
}
essaie de faire un print de toutes les données des véhicules pour voir, peut-être que les 166 premiers sont effacés avant de les sauvegardé...faudrait regardé quel bout de code peut bien causer cela
++Sim++
-
Je sais d'ou viens le problème. Ce n'est pas de cette fonction de save, mais des information.
Existe i il une fonction pour récupérer la couleur d'un véhicule?
-
Nan c'est un CallBack à mettre en bas de ton Gamemode :
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
CarInfo[vehicleid][cColorOne] = color1;
CarInfo[vehicleid][cColorTwo] = color2;
return 1;
}
Et sa en bas de ton script pour changer la Couleur du véhicule à utiliser au Chargement des véhicules :
stock SetVehicleColor(vehicleid, color1, color2)
{
CarInfo[vehicleid][cColorOne] = color1;
CarInfo[vehicleid][cColorTwo] = color2;
ChangeVehicleColor(vehicleid, color1, color2);
return 1;
}
-
Nan c'est un CallBack à mettre en bas de ton Gamemode :
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
CarInfo[vehicleid][cColorOne] = color1;
CarInfo[vehicleid][cColorTwo] = color2;
return 1;
}
Et sa en bas de ton script pour changer la Couleur du véhicule à utiliser au Chargement des véhicules :
stock SetVehicleColor(vehicleid, color1, color2)
{
CarInfo[vehicleid][cColorOne] = color1;
CarInfo[vehicleid][cColorTwo] = color2;
ChangeVehicleColor(vehicleid, color1, color2);
return 1;
}
Non pas quand on le repain, j'aimerais savoir si quand je fait un cmd il me donne les couleur 1 et 2 d'un véhicule
-
scott go reglement sign non acceptable
-
scott go reglement sign non acceptable
Pardon Cristab, puis je laisser le site?
Si non j'ai un autre probleme, a chaque fois que j'appele ce public, j'ai un serveur unknow cmd :s
public SaveTrunkhouse()
{
new idx;
new File: file2;
while (idx < sizeof(HouseInfo))
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%i,%i,%i,%i,%i,%i,%i,%i,%i,%f\n",
houseTrunk[idx][1],
houseTrunkAmmo[idx][1],
houseTrunk[idx][2],
houseTrunkAmmo[idx][2],
houseTrunk[idx][3],
houseTrunkAmmo[idx][3],
houseTrunkmatos[idx],
houseTrunkdrogues[idx],
houseTrunkCounter[idx],
houseTrunkArmour[idx]);
if(idx == 1)
{
file2 = fopen("housetrunkv2.cfg", io_write);
}
else
{
file2 = fopen("housetrunkv2.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}
Merci d'avance
-
Up
-
La seule chose que je vois c'est que ta variable idx n'est pas initialisée. Elle peut donc prendre n'importe quelle valeur à l'entré dans la fonction.
Donc
new idx;à remplacer par
new idx = 0;
++
Syg
-
Salut,
je croyais qu'en PAWN (ou sur sa-mp), les variables étaient toujours automatiquement initialisées à 0
++Sim++
-
Salut,
je croyais qu'en PAWN (ou sur sa-mp), les variables étaient toujours automatiquement initialisées à 0
++Sim++
j'affirme ;)
-
Donc mon code est juste?
-
a vue doeil pour moi sa devrai marcher
-
Salut,
je croyais qu'en PAWN (ou sur sa-mp), les variables étaient toujours automatiquement initialisées à 0
++Sim++
Non, j'ai pu constater que ce n'est pas la cas.
De toutes façons, il est toujours plus prudent d'initialiser une variable avant de s'en servir.
++
Syg
-
J'essaye et je te dis si ça fonctionne
-
Salut,
je croyais qu'en PAWN (ou sur sa-mp), les variables étaient toujours automatiquement initialisées à 0
++Sim++
Non, j'ai pu constater que ce n'est pas la cas.
De toutes façons, il est toujours plus prudent d'initialiser une variable avant de s'en servir.
++
Syg
Mais par défaut sa serais plus logique que elle soit mise à 0 enfin je vais essayer :P
-
Dans tous les cas (C, C++, PAWN, ...), c'est une bonne habitude d'initialiser ses variables, ça évite les surprises.
Et puis, même si tel ou tel compilateur force l'initialisation des variables à 0, ça ne veut pas dire que c'est la bonne valeur, dans certains cas, on peut avoir besoin d'initialiser une variable avec une autre valeur.
++
Syg
-
Dans tous les cas (C, C++, PAWN, ...), c'est une bonne habitude d'initialiser ses variables, ça évite les surprises.
Et puis, même si tel ou tel compilateur force l'initialisation des variables à 0, ça ne veut pas dire que c'est la bonne valeur, dans certains cas, on peut avoir besoin d'initialiser une variable avec une autre valeur.
++
Syg
tout à fait, mais bien souvent sur sa-mp on vas y stocker une valeur qui sera utilie par la suite donc l'initialisation n'est pas nécessaire
par contre il est bon de le faire pour les loop for, while, les variables dont la valeur initiale influence l'exécution par la suite
++Sim++