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

Titre: Enregistrement dans un fichier
Posté 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.
Titre: Re : Enregistrement dans un fichier
Posté par: chneubeul le 16 Avril 2010, 15:42:24
Salut, la fonction SauvegardeVeh(); tu la charge dans une boucle ou un timer qui tourne toujours ?
Titre: Re : Enregistrement dans un fichier
Posté par: Eloctro le 16 Avril 2010, 17:40:59
Tu recupere bien les informations du véhicule ?
Titre: Re : Enregistrement dans un fichier
Posté par: S!m le 17 Avril 2010, 03:44:17
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++
Titre: Re : Enregistrement dans un fichier
Posté par: scott1 le 17 Avril 2010, 04:37:54
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?
Titre: Re : Enregistrement dans un fichier
Posté par: Eloctro le 17 Avril 2010, 18:18:17
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;
}
Titre: Re : Re : Enregistrement dans un fichier
Posté par: scott1 le 17 Avril 2010, 20:20:03
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
Titre: Re : Enregistrement dans un fichier
Posté par: cristab le 18 Avril 2010, 13:54:25
scott go reglement sign non acceptable
Titre: Re : Re : Enregistrement dans un fichier
Posté par: scott1 le 18 Avril 2010, 23:51:07
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

Citer
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
Titre: Re : Enregistrement dans un fichier
Posté par: scott1 le 25 Avril 2010, 18:54:00
Up
Titre: Re : Enregistrement dans un fichier
Posté par: Syg le 25 Avril 2010, 22:27:56
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
Titre: Re : Enregistrement dans un fichier
Posté par: S!m le 26 Avril 2010, 00:22:01
Salut,

je croyais qu'en PAWN (ou sur sa-mp), les variables étaient toujours automatiquement initialisées à 0

++Sim++
Titre: Re : Re : Enregistrement dans un fichier
Posté par: Mr_C30 le 26 Avril 2010, 01:24:28
Salut,

je croyais qu'en PAWN (ou sur sa-mp), les variables étaient toujours automatiquement initialisées à 0

++Sim++
j'affirme  ;)
Titre: Re : Enregistrement dans un fichier
Posté par: scott1 le 26 Avril 2010, 01:28:20
Donc mon code est juste?
Titre: Re : Enregistrement dans un fichier
Posté par: Mr_C30 le 26 Avril 2010, 01:37:55
a vue doeil pour moi sa devrai marcher
Titre: Re : Re : Enregistrement dans un fichier
Posté par: Syg le 26 Avril 2010, 12:08:24
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
Titre: Re : Enregistrement dans un fichier
Posté par: scott1 le 28 Avril 2010, 00:41:22
J'essaye et je te dis si ça fonctionne
Titre: Re : Re : Re : Enregistrement dans un fichier
Posté par: BuBuNo le 28 Avril 2010, 01:11:32
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
Titre: Re : Enregistrement dans un fichier
Posté par: Syg le 28 Avril 2010, 16:28:27
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
Titre: Re : Re : Enregistrement dans un fichier
Posté par: S!m le 29 Avril 2010, 01:30:36
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++