GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Brian Turner le 18 Août 2010, 19:53:37

Titre: [RESOLUT][Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 19:53:37
Salut tout le monde,
voila j'ai un petit probleme qui m'embette, j'essaye de faire un FS de biz complet (creation/edition/suppression/achat/vente...)(que je posterai), mon systeme de lecture marche mais pas come il faut, vous aller vite comprendre :

MON FICHIER BIZZ.INI :
Code: (pawn) [Sélectionner]
Proprio=Personne
NomBiz=TestBiz1
PrixOrigine=1
EntreX=2186.476562
EntreY=1113.612915
EntreZ=12.648400
Interior=3
VirtualWorld=2000001
ExitX=974.017700
ExitY=-9.593700
ExitZ=1001.148376
PrixVente=1
PrixEntre=1

MON SYSTEME DE LECTURE :
Code: (pawn) [Sélectionner]
stock LoadBiz()
{
if(!fexist(BIZ_FILE))
{
printf("BTBIZ: Le fichier "#BIZ_FILE" n'existe pas.");
return 0;
}
new key[128],val[128], Data[256], ID = 0;
new File:bFile = fopen(BIZ_FILE, io_read);
if(bFile)
{

while (fread(bFile, Data))
{
key = ini_GetKey(Data);
if( strcmp( key , "Proprio" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][BizOwner] = strval( val ); }
  if( strcmp( key , "NomBiz" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][BizNames] = strval( val ); }
if( strcmp( key , "PrixOrigine" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][BizCost] = strval( val ); }
if( strcmp( key , "EntreX" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][PickupX] = strval( val ); }
if( strcmp( key , "EntreY" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][PickupY] = strval( val ); }
if( strcmp( key , "EntreZ" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][PickupZ] = strval( val ); }
if( strcmp( key , "Interior" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][Interior] = strval( val ); }
if( strcmp( key , "VirtualWorld" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][Virtual] = strval( val ); }
if( strcmp( key , "ExitX" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][TeleX] = strval( val ); }
if( strcmp( key , "ExitY" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][TeleY] = strval( val ); }
if( strcmp( key , "ExitZ" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][TeleZ] = strval( val ); }
if( strcmp( key , "PrixVente" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][BizSell] = strval( val ); }
if( strcmp( key , "PrixEntre" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][BizEnter] = strval( val ); }
PickupID[ID] = CreatePickup(1273, 23, BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ], -1); // Création des pickups
Create3DTextLabel("Bizz", 0x00A0F6AA, BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ] + 0.75, 15.0, 0, 1); // Création des 3DText

printf("BTBIZ: Nom:%s Proprio:%s PrixEntre:%d PrixOrigine:%d PrixVente:%d Entre:%f,%f,%f Sortie:%f,%f,%f Int:%d VW:%d", BizInfo[ID][BizNames],
BizInfo[ID][BizOwner], BizInfo[ID][BizEnter], BizInfo[ID][BizCost], BizInfo[ID][BizSell], BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ],
BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ], BizInfo[ID][Interior], BizInfo[ID][Virtual]);
//}
ID++;
}
if(ID == 0)
{
  fclose (bFile);
    return 0;
}
fclose (bFile);
  }
   printf("BTBIZ: Nombre(s) de Biz presents au chargement: %d", ID);
fclose(bFile);
return 1;
}

MES LOGS:
Code: (pawn) [Sélectionner]
[19:15:49]   Loading filter script 'BTBiz.amx'...
[19:15:49] -------------------------------------------------------
[19:15:49] | Chargement BTBiz by Brian Turner ...                |
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[color=red][19:15:49] BTBIZ: Nom: Proprio:Personne PrixEntre:1 PrixOrigine:1 PrixVente:1 Entre:2186.476562,1113.612915,12.648400 Sortie:974.017700,-9.593700,1001.148376 Int:3 VW:2000001[/color]
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:1 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:2186.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,1113.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,12.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:3 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:2000001
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:974.000000,0.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,-9.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,1001.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:1 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nom: Proprio: PrixEntre:1 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[19:15:49] BTBIZ: Nombre(s) de Biz presents au chargement: 13

Comme vous l'avez remarqué, j'ai juste 1 seul biz a charger mais 13 se charge.
Plus:
1ere ligne = que des zéros et rien pour le nom et le proprio
2eme ligne = presque parfaite il manque le nom du biz ( TestBiz1 )
les autres lignes = décalage(truc bizarre)
derniere ligne = 13 Biz chargé au lieux de 1 ...


Voila comment faire?
Titre: Re : [Probleme] Chargement de fichier
Posté par: Soravani le 18 Août 2010, 21:33:48
Salut,

Proprio=Personne
NomBiz=TestBiz1
PrixOrigine=1
EntreX=2186.476562
EntreY=1113.612915
EntreZ=12.648400
Interior=3
VirtualWorld=2000001
ExitX=974.017700
ExitY=-9.593700
ExitZ=1001.148376
PrixVente=1
PrixEntre=1
Si tu as 13 biz, c'est sans doutes car ton script lis 13 lignes dans ton bizz.ini. Essaie de mettre les 13 lignes par biz en une seule ligne sans rien modif dans ton script, normalement, ca donnerais ça dans ton bizz.ini :

Proprio=PersonneNomBiz=TestBiz1PrixOrigine=1EntreX=2186.476562EntreY=1113.612915EntreZ=12.648400Interior=3VirtualWorld=2000001ExitX=974.017700ExitY=-9.593700ExitZ=1001.148376PrixVente=1PrixEntre=1
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 21:39:46
Ok j'essaye donc sa veux que je fait sa par exemple :

avant :
format( ...... "Bidul=%s/n", ....);

apres :
format( ...... "Bidul=%s", ....);

J'editerai je te dirai si sa marche  :)

EDIT sa marche mieux qu'avant mais voila se que sa fait maintenant :
Code: (pawn) [Sélectionner]
[21:40:01] -------------------------------------------------------
[21:40:01] | Chargement BTBiz by Brian Turner ...                |
[21:40:01] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[21:40:01] BTBIZ: Nombre(s) de Biz presents au chargement: 1
[21:40:01] | Chargement termine BTBiz by Brian Turner ...        |
[21:40:01] -------------------------------------------------------

le code que j'ai modifier (il creer les biz) :
Code: (pawn) [Sélectionner]
stock CreateBiz(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell, prixenter)
{
BizCount ++;
new ID = BizCount; // Biz ID
format(BizInfo[ID][BizNames], 60, "%s", Filename);
BizInfo[ID][BizCost] = Cost;
BizInfo[ID][PickupX] = Pickupx;
BizInfo[ID][Virtual] = 2000000 + ID;
BizInfo[ID][PickupY] = Pickupy;
BizInfo[ID][PickupZ] = Pickupz;
BizInfo[ID][TeleX] = Telex;
BizInfo[ID][TeleY] = Teley;
BizInfo[ID][TeleZ] = Telez;
BizInfo[ID][Interior] = interior;
BizInfo[ID][BizSell] = sell;
BizInfo[ID][BizEnter] = prixenter;
format(BizInfo[ID][BizOwner], 24, "Personne");

new File:hFile;
new var[64];
hFile = fopen(BIZ_FILE, io_append);
  format(var, 64, "Proprio=%s",BizInfo[ID][BizOwner]);fwrite(hFile, var);
  format(var, 64, "NomBiz=%s",BizInfo[ID][BizNames]);fwrite(hFile, var);
  format(var, 64, "PrixOrigine=%d",BizInfo[ID][BizCost]);fwrite(hFile, var);
  format(var, 64, "EntreX=%f",BizInfo[ID][PickupX]);fwrite(hFile, var);
  format(var, 64, "EntreY=%f",BizInfo[ID][PickupY]);fwrite(hFile, var);
  format(var, 64, "EntreZ=%f",BizInfo[ID][PickupZ]);fwrite(hFile, var);
  format(var, 64, "Interior=%d",BizInfo[ID][Interior]);fwrite(hFile, var);
  format(var, 64, "VirtualWorld=%d",BizInfo[ID][Virtual]);fwrite(hFile, var);
  format(var, 64, "ExitX=%f",BizInfo[ID][TeleX]);fwrite(hFile, var);
  format(var, 64, "ExitY=%f",BizInfo[ID][TeleY]);fwrite(hFile, var);
  format(var, 64, "ExitZ=%f",BizInfo[ID][TeleZ]);fwrite(hFile, var);
  format(var, 64, "PrixVente=%d",BizInfo[ID][BizSell]);fwrite(hFile, var);
  format(var, 64, "PrixEntre=%d",BizInfo[ID][BizEnter]);fwrite(hFile, var);
fclose(hFile);

PickupID[ID] = CreatePickup(1273, 23, Pickupx, Pickupy, Pickupz, -1); // Création des pickups
Create3DTextLabel("Bizz", 0x00A0F6AA, Pickupx, Pickupy, Pickupz + 0.75, 15.0, 0, 1); // Création des 3DText
}

PS: je presise que je n'est pas toucher a autre chose qu'au script qui est juste dessus
Titre: Re : [Probleme] Chargement de fichier
Posté par: Soravani le 18 Août 2010, 21:59:37
Tu appel où stock CreateBiz ? par une Commande ?
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 22:03:07
non je le fait manuelement dans mon OnFilterScriptInit() je fait CreateBiz("TestBiz1", 1, 2186.4766,1113.6129,12.6484, 974.0177,-9.5937,1001.1484, 3, 1, 1);  apres je compile apres sa créer bien le biz (ya tout dans Bizz.ini) apres je commante la ligne  CreateBiz("TestBiz1", 1, 2186.4766,1113.6129,12.6484, 974.0177,-9.5937,1001.1484, 3, 1, 1); puis je compile et apres sa fait le pourquoi je suis venu poster.
Titre: Re : [Probleme] Chargement de fichier
Posté par: Soravani le 18 Août 2010, 22:06:19
Car tu sauvegarde pas ta ligne dans ton dossier, sans doutes, non?
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 22:08:16
sisi la ligne y est meme si je ferme le serveur. Mais rien est charger (a si que des 0 ou des espaces)
Titre: Re : [Probleme] Chargement de fichier
Posté par: Soravani le 18 Août 2010, 22:09:26
Fait nous voir le code de OnFilterScriptInit concernant les biz s'il te plait. (Avec ton CreateBiz)
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 22:14:20
OnFilterScriptInit() :
Code: (pawn) [Sélectionner]
<?php
public OnFilterScriptInit()
{
//CreateBiz("TestBiz1", 1, 2186.4766,1113.6129,12.6484, 974.0177,-9.5937,1001.1484, 3, 1, 1);
print("-------------------------------------------------------");
print("| Chargement BTBiz by Brian Turner ...                |");
LoadBiz();
print("| Chargement termine BTBiz by Brian Turner ...        |");
print("-------------------------------------------------------");
return 1;
}


LoadBiz() :
Code: (pawn) [Sélectionner]
<?php
stock LoadBiz
()
{
if(!fexist(BIZ_FILE))
{
printf("BTBIZ: Le fichier "#BIZ_FILE" n'existe pas.");
return 0;
}
new key[128],val[128], Data[256], ID 0;
new File:bFile fopen(BIZ_FILEio_read);
if(bFile)
{

while (fread(bFileData))
{

key ini_GetKey(Data);
  if( strcmpkey "Proprio" true ) == ) { val ini_GetValueData ); BizInfo[ID][BizOwner] = strvalval ); }
    if( strcmpkey "NomBiz" true ) == ) { val ini_GetValueData ); BizInfo[ID][BizNames] = strvalval ); }
if( strcmpkey "PrixOrigine" true ) == ) { val ini_GetValueData ); BizInfo[ID][BizCost] = strvalval ); }
if( strcmpkey "EntreX" true ) == ) { val ini_GetValueData ); BizInfo[ID][PickupX] = strvalval ); }
if( strcmpkey "EntreY" true ) == ) { val ini_GetValueData ); BizInfo[ID][PickupY] = strvalval ); }
if( strcmpkey "EntreZ" true ) == ) { val ini_GetValueData ); BizInfo[ID][PickupZ] = strvalval ); }
if( strcmpkey "Interior" true ) == ) { val ini_GetValueData ); BizInfo[ID][Interior] = strvalval ); }
if( strcmpkey "VirtualWorld" true ) == ) { val ini_GetValueData ); BizInfo[ID][Virtual] = strvalval ); }
if( strcmpkey "ExitX" true ) == ) { val ini_GetValueData ); BizInfo[ID][TeleX] = strvalval ); }
if( strcmpkey "ExitY" true ) == ) { val ini_GetValueData ); BizInfo[ID][TeleY] = strvalval ); }
if( strcmpkey "ExitZ" true ) == ) { val ini_GetValueData ); BizInfo[ID][TeleZ] = strvalval ); }
if( strcmpkey "PrixVente" true ) == ) { val ini_GetValueData ); BizInfo[ID][BizSell] = strvalval ); }
if( strcmpkey "PrixEntre" true ) == ) { val ini_GetValueData ); BizInfo[ID][BizEnter] = strvalval ); }

PickupID[ID] = CreatePickup(127323BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ], -1); // Création des pickups
Create3DTextLabel("Bizz"0x00A0F6AABizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ] + 0.7515.001); // Création des 3DText

printf("BTBIZ: Nom:%s Proprio:%s PrixEntre:%d PrixOrigine:%d PrixVente:%d Entre:%f,%f,%f Sortie:%f,%f,%f Int:%d VW:%d"BizInfo[ID][BizNames],
BizInfo[ID][BizOwner], BizInfo[ID][BizEnter], BizInfo[ID][BizCost], BizInfo[ID][BizSell], BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ],
BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ], BizInfo[ID][Interior], BizInfo[ID][Virtual]);
ID++;
}
if(ID == 0)
{
    fclose (bFile);
     return 0;
}
fclose (bFile);
 
}
  
printf("BTBIZ: Nombre(s) de Biz presents au chargement: %d"ID);
fclose(bFile);
return 1;
}


CreateBiz() :
Code: (pawn) [Sélectionner]
<?php
stock CreateBiz
(Filename[], CostFloat:PickupxFloat:PickupyFloat:PickupzFloat:TelexFloat:TeleyFloat:Telezinteriorsellprixenter)
{
BizCount ++;
new ID BizCount
format(BizInfo[ID][BizNames], 60"%s"Filename);
BizInfo[ID][BizCost] = Cost;
BizInfo[ID][PickupX] = Pickupx;
BizInfo[ID][Virtual] = 2000000 ID;
BizInfo[ID][PickupY] = Pickupy;
BizInfo[ID][PickupZ] = Pickupz;
BizInfo[ID][TeleX] = Telex;
BizInfo[ID][TeleY] = Teley;
BizInfo[ID][TeleZ] = Telez;
BizInfo[ID][Interior] = interior;
BizInfo[ID][BizSell] = sell;
BizInfo[ID][BizEnter] = prixenter;
format(BizInfo[ID][BizOwner], 24"Personne");

new File:hFile;
new var[64];
hFile fopen(BIZ_FILEio_append);
 
format(var, 64"Proprio=%s",BizInfo[ID][BizOwner]);fwrite(hFile, var);
 
format(var, 64"NomBiz=%s",BizInfo[ID][BizNames]);fwrite(hFile, var);
 
format(var, 64"PrixOrigine=%d",BizInfo[ID][BizCost]);fwrite(hFile, var);
 
format(var, 64"EntreX=%f",BizInfo[ID][PickupX]);fwrite(hFile, var);
 
format(var, 64"EntreY=%f",BizInfo[ID][PickupY]);fwrite(hFile, var);
 
format(var, 64"EntreZ=%f",BizInfo[ID][PickupZ]);fwrite(hFile, var);
 
format(var, 64"Interior=%d",BizInfo[ID][Interior]);fwrite(hFile, var);
 
format(var, 64"VirtualWorld=%d",BizInfo[ID][Virtual]);fwrite(hFile, var);
 
format(var, 64"ExitX=%f",BizInfo[ID][TeleX]);fwrite(hFile, var);
 
format(var, 64"ExitY=%f",BizInfo[ID][TeleY]);fwrite(hFile, var);
 
format(var, 64"ExitZ=%f",BizInfo[ID][TeleZ]);fwrite(hFile, var);
 
format(var, 64"PrixVente=%d",BizInfo[ID][BizSell]);fwrite(hFile, var);
 
format(var, 64"PrixEntre=%d",BizInfo[ID][BizEnter]);fwrite(hFile, var);
fclose(hFile);

PickupID[ID] = CreatePickup(127323PickupxPickupyPickupz, -1); 
Create3DTextLabel("Bizz"0x00A0F6AAPickupxPickupyPickupz 0.7515.001); 
}

Plus:
Code: (pawn) [Sélectionner]
stock ini_GetKey( line[] )
{
new keyRes[128];
keyRes[0] = 0;
    if ( strfind( line , "=" , true ) == -1 ) return keyRes;
    strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
    return keyRes;
}
stock ini_GetValue( line[] )
{
new valRes[128];
valRes[0]=0;
if ( strfind( line , "=" , true ) == -1 ) return valRes;
strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
return valRes;
}
Titre: Re : [Probleme] Chargement de fichier
Posté par: Soravani le 18 Août 2010, 22:19:31
EDIT: J'ai rien dit,

essaie voir de mettre un SAveBiz(); après ton CreateBiz ?
Titre: Re : Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 22:23:55
EDIT: J'ai rien dit,

essaie voir de mettre un SAveBiz(); après ton CreateBiz ?

C'est a dire? Car il sauvegarde directement les biz avec les:
Code: (pawn) [Sélectionner]
if( strcmp( key , "Proprio" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][BizOwner] = strval( val ); }
Titre: Re : [Probleme] Chargement de fichier
Posté par: Soravani le 18 Août 2010, 22:25:37
Oui, mais pas au moment que tu le crée, dans OnFilterScriptInit() ...
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 22:28:40
J'essaye je te dit se que sa fait.
Titre: Re : [Probleme] Chargement de fichier
Posté par: Eloctro le 18 Août 2010, 22:30:48
Tu as qu'a regarder le mien si ça peut t'aider :)
En tout cas la c'est pas bon du tout ton système
Titre: Re : Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 18 Août 2010, 22:46:09
Tu as qu'a regarder le mien si ça peut t'aider :)
En tout cas la c'est pas bon du tout ton système

Oui je croix que jvais changer
je vous dit si sa marche avec un systeme que j'ai vu

Double post
Je vous dirai demain si sa marche et comment j'ai fait, car la je doit y allé
Titre: Re : [Probleme] Chargement de fichier
Posté par: S!m le 19 Août 2010, 00:02:33
Salut Brian,

un truc cloche dans ton système.

Le fichier que tu nous montre provient normalement d'un système pour lequel 1 fichier = 1 bizz

Le code que tu nous montre, plusieurs bizz dans le même fichier.

(perso je pencherais pour le 1 fichier = 1 bizz)

++Sim++
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 19 Août 2010, 00:29:31
c'est pour sa que j'ai changer, j'en m'en suis pas rendu compte ^^. C'était le systeme pour se connecter sur un serveur. Aller a demain pour ma réponse :)
.

Double post
sa marche toujours pas ...

voila mon script :
Code: (pawn) [Sélectionner]
<?php
public split(const strsrc[], strdest[][], delimiter)
{
new ili;
new aNum;
new len;
while(<= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
        len strmid(strdest[aNum], strsrclii128);
        strdest[aNum][len] = 0;
        li i+1;
        aNum++;
}
i++;
}
return 1;
}
stock CreateBiz(Filename[], CostFloat:PickupxFloat:PickupyFloat:PickupzFloat:TelexFloat:TeleyFloat:Telezinteriorsellprixenter)
{
BizCount++;
new ID BizCount// Biz ID
format(BizInfo[ID][BizNames], 60"%s"Filename);
BizInfo[ID][BizCost] = Cost;
BizInfo[ID][PickupX] = Pickupx;
BizInfo[ID][Virtual] = 2000000 ID;
BizInfo[ID][PickupY] = Pickupy;
BizInfo[ID][PickupZ] = Pickupz;
BizInfo[ID][TeleX] = Telex;
BizInfo[ID][TeleY] = Teley;
BizInfo[ID][TeleZ] = Telez;
BizInfo[ID][Interior] = interior;
BizInfo[ID][BizSell] = sell;
BizInfo[ID][BizEnter] = prixenter;
format(BizInfo[ID][BizOwner], 24"Personne");

new entry[256];
new File:bfile fopen(BIZ_FILEio_write);

format(entry128"%s,%s,%d,%f,%f,%f,%d,%d,%f,%f,%f,%d,%d \r\n",BizInfo[ID][BizOwner], BizInfo[ID][BizNames], BizInfo[ID][BizCost], BizInfo[ID][PickupX],
BizInfo[ID][PickupY], BizInfo[ID][PickupZ], BizInfo[ID][Interior], BizInfo[ID][Virtual], BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ],
BizInfo[ID][BizSell], BizInfo[ID][BizEnter]);
fwrite(bfileentry);

printf("BTBIZZ: Bizz %d creer!"ID);
fclose(bfile);


PickupID[ID] = CreatePickup(127323PickupxPickupyPickupz, -1); // Création des pickups
Create3DTextLabel("Bizz"0x00A0F6AAPickupxPickupyPickupz 0.7515.001); // Création des 3DText
}
stock SauvBiz()
{
new entry[256];
new File:bfile fopen(BIZ_FILEio_write);
for(new IDID<BizCountID++)
{
    format(entry128"%s,%s,%d,%f,%f,%f,%d,%d,%f,%f,%f,%d,%d \r\n",BizInfo[ID][BizOwner], BizInfo[ID][BizNames], BizInfo[ID][BizCost], BizInfo[ID][PickupX],
BizInfo[ID][PickupY], BizInfo[ID][PickupZ], BizInfo[ID][Interior], BizInfo[ID][Virtual], BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ],
BizInfo[ID][BizSell], BizInfo[ID][BizEnter]);
fwrite(bfileentry);
printf("BTBIZZ: Bizz %d sauvegarde!"ID);
}
fclose(bfile);
 
return 1;
}

stock LoadBiz()
{
if(fexist(BIZ_FILE))
{
    new Total 0;
new Argument[14][70];
new entry[256];
new File:bfile fopen(BIZ_FILEio_read);
    if (bfile)
{
while(fread(bfileentry256))
{
BizCount++;
  
}
    for(new IDID<BizCountID++)
{
split(entryArgument',');
format(BizInfo[ID][BizOwner], 64"%s"Argument[0]);
format(BizInfo[ID][BizNames], 64"%s"Argument[1]);
BizInfo[ID][BizCost] = strval(Argument[2]);
BizInfo[ID][PickupX] = floatstr(Argument[3]);
BizInfo[ID][PickupY] = floatstr(Argument[4]);
BizInfo[ID][PickupZ] = floatstr(Argument[5]);
BizInfo[ID][Interior] = strval(Argument[6]);
BizInfo[ID][Virtual] = strval(Argument[7]);
BizInfo[ID][TeleX] = floatstr(Argument[8]);
BizInfo[ID][TeleY] = floatstr(Argument[9]);
BizInfo[ID][TeleZ] = floatstr(Argument[10]);
BizInfo[ID][BizSell] = strval(Argument[11]);
BizInfo[ID][BizEnter] = strval(Argument[12]);
Total ++;
PickupID[ID] = CreatePickup(127323BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ], -1); // Création des pickups
Create3DTextLabel("Bizz"0x00A0F6AABizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ] + 0.7515.001); // Création des 3DText

printf("BTBIZ: Nom:%s Proprio:%s PrixEntre:%d PrixOrigine:%d PrixVente:%d Entre:%f,%f,%f Sortie:%f,%f,%f Int:%d VW:%d"BizInfo[ID][BizNames],
BizInfo[ID][BizOwner], BizInfo[ID][BizEnter], BizInfo[ID][BizCost], BizInfo[ID][BizSell], BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ],
BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ], BizInfo[ID][Interior], BizInfo[ID][Virtual]);
printf("BTBIZ: Biz %d charge"ID);
}
fclose(bfile);
printf("BTBIZ: Nombre(s) de Biz presents au chargement: %d"Total);
}
}
else if(!fexist(BIZ_FILE))
{
printf("BTBIZ: Le fichier "#BIZ_FILE" n'existe pas.");
return 0;
 
}
return 1;
}


public 
OnFilterScriptInit()
{
//CreateBiz("TestBiz1", 1, 2186.4766,1113.6129,12.6484, 974.0177,-9.5937,1001.1484, 3, 1, 1);
print("-------------------------------------------------------");
print("| Chargement BTBiz by Brian Turner ...                |");
LoadBiz();
print("| Chargement termine BTBiz by Brian Turner ...        |");
print("-------------------------------------------------------");
return 1;
}

public 
OnFilterScriptExit()
{
SauvBiz();
return 1;
}

Voila les logs:
Code: (pawn) [Sélectionner]
[10:44:08] -------------------------------------------------------
[10:44:08] | Chargement BTBiz by Brian Turner ...                |
[10:44:08] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[10:44:08] BTBIZ: Biz 0 charge
[10:44:08] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[10:44:08] BTBIZ: Biz 1 charge
[10:44:08] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[10:44:08] BTBIZ: Biz 2 charge
[10:44:08] BTBIZ: Nom: Proprio: PrixEntre:0 PrixOrigine:0 PrixVente:0 Entre:0.000000,0.000000,0.000000 Sortie:0.000000,0.000000,0.000000 Int:0 VW:0
[10:44:08] BTBIZ: Biz 3 charge
[10:44:08] BTBIZ: Nombre(s) de Biz presents au chargement: 4
[10:44:08] | Chargement termine BTBiz by Brian Turner ...        |
[10:44:08] -------------------------------------------------------

Mon Bizz.ini :
Code: (pawn) [Sélectionner]
Personne,TestBiz1,1,2186.476562,1113.612915,12.648400,3,2000001,974.017700,-9.593700,1001.148376,1,1
Personne,TestBiz2,1,2186.476562,1113.612915,12.648400,3,2000001,974.017700,-9.593700,1001.148376,1,1
Personne,TestBiz3,1,2186.476562,1113.612915,12.648400,3,2000001,974.017700,-9.593700,1001.148376,1,1
Personne,TestBiz4,1,2186.476562,1113.612915,12.648400,3,2000001,974.017700,-9.593700,1001.148376,1,1

Comme on le vois, il arrive a les compter(Nombre(s) de Biz presents au chargement: 4), mais il ne les charge pas...
Comment faire?
Titre: Re : [Probleme] Chargement de fichier
Posté par: Soravani le 19 Août 2010, 11:51:56
tes
public OnFilterScriptInit()
public OnFilterScriptExit()

m'intrigue vraiment. Déjà, pourquoi les crées dans OnFilterScriptInit? Si tu les crée dedans, laisse alors la ligne, sinon, normal que ca charge avec des 0 ...
Tente voir de crée le biz IG, avec des cmds..
Titre: Re : Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 19 Août 2010, 14:28:02
tes
public OnFilterScriptInit()
public OnFilterScriptExit()

m'intrigue vraiment. Déjà, pourquoi les crées dans OnFilterScriptInit? Si tu les crée dedans, laisse alors la ligne, sinon, normal que ca charge avec des 0 ...
Tente voir de crée le biz IG, avec des cmds..

non car le CreateBiz lance la creation et l'écriture dans le fichier Bizz.ini donc dedans ya bien la ligne, maintenant ya un probleme avec le LoadBiz()

Code: (pawn) [Sélectionner]
stock LoadBiz()
{
if(fexist(BIZ_FILE))
{
    new Total = 0;
new Argument[14][70];
new entry[256];
new File:bfile = fopen(BIZ_FILE, io_read);
    if (bfile)
{
while(fread(bfile, entry, 256))
{
BizCount++;
  }
    for(new ID; ID<BizCount; ID++)
{
split(entry, Argument, ',');
format(BizInfo[ID][BizOwner], 64, "%s", Argument[0]);
format(BizInfo[ID][BizNames], 64, "%s", Argument[1]);
BizInfo[ID][BizCost] = strval(Argument[2]);
BizInfo[ID][PickupX] = floatstr(Argument[3]);
BizInfo[ID][PickupY] = floatstr(Argument[4]);
BizInfo[ID][PickupZ] = floatstr(Argument[5]);
BizInfo[ID][Interior] = strval(Argument[6]);
BizInfo[ID][Virtual] = strval(Argument[7]);
BizInfo[ID][TeleX] = floatstr(Argument[8]);
BizInfo[ID][TeleY] = floatstr(Argument[9]);
BizInfo[ID][TeleZ] = floatstr(Argument[10]);
BizInfo[ID][BizSell] = strval(Argument[11]);
BizInfo[ID][BizEnter] = strval(Argument[12]);
Total ++;
PickupID[ID] = CreatePickup(1273, 23, BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ], -1); // Création des pickups
Create3DTextLabel("Bizz", 0x00A0F6AA, BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ] + 0.75, 15.0, 0, 1); // Création des 3DText

printf("BTBIZ: Nom:%s Proprio:%s PrixEntre:%d PrixOrigine:%d PrixVente:%d Entre:%f,%f,%f Sortie:%f,%f,%f Int:%d VW:%d", BizInfo[ID][BizNames],
BizInfo[ID][BizOwner], BizInfo[ID][BizEnter], BizInfo[ID][BizCost], BizInfo[ID][BizSell], BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ],
BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ], BizInfo[ID][Interior], BizInfo[ID][Virtual]);
printf("BTBIZ: Biz %d charge", ID);
}
fclose(bfile);
printf("BTBIZ: Nombre(s) de Biz presents au chargement: %d", Total);
}
}
else if(!fexist(BIZ_FILE))
{
printf("BTBIZ: Le fichier "#BIZ_FILE" n'existe pas.");
return 0;
  }
return 1;
}

Puis meme si je laisse le CreateBiz quand on lance le serveur, il crée puis il Charge, et sa dit quand meme 0 partout.
Titre: Re : [Probleme] Chargement de fichier
Posté par: Eloctro le 19 Août 2010, 14:45:20
Remplace :
BizCount++;
new ID = BizCount; // Biz ID
Par :
new ID = BizCount; // Biz ID
BizCount++;
Dans CreateBiz

Enssuite quand tu save ça écris dans le fichier ?
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 19 Août 2010, 14:55:26
Quand je le créé avec CreateBiz sa ecris bien la bonne ligne avec tout se que j'ai demandé dedans, tout est niquel au niveau de l'ecriture, c'et au niveau lecture que sa va pas.
Titre: Re : [Probleme] Chargement de fichier
Posté par: Eloctro le 19 Août 2010, 15:38:26
Nan car BizzCount par de zéro donc tu gâche de la mémoire en sautant le bizz ID 0

Et a ta sauvegarde tu sauvegarde l'id 0 donc une ligne vide .
Enssuite dans LoadBizz ton total ne sert stritement a rien car il renvoie la même valeur de BizzCount .

Test ce code :

Code: (cpp) [Sélectionner]
stock LoadBiz()
{
if(fexist(BIZ_FILE))
{
new Argument[14][70];
new entry[256];
new File:bfile = fopen(BIZ_FILE, io_read);
    if (bfile)
{
while(fread(bfile, entry, 256))
{
split(entry, Argument, ',');
format(BizInfo[ID][BizOwner], 64, "%s", Argument[0]);
format(BizInfo[ID][BizNames], 64, "%s", Argument[1]);
BizInfo[ID][BizCost] = strval(Argument[2]);
BizInfo[ID][PickupX] = floatstr(Argument[3]);
BizInfo[ID][PickupY] = floatstr(Argument[4]);
BizInfo[ID][PickupZ] = floatstr(Argument[5]);
BizInfo[ID][Interior] = strval(Argument[6]);
BizInfo[ID][Virtual] = strval(Argument[7]);
BizInfo[ID][TeleX] = floatstr(Argument[8]);
BizInfo[ID][TeleY] = floatstr(Argument[9]);
BizInfo[ID][TeleZ] = floatstr(Argument[10]);
BizInfo[ID][BizSell] = strval(Argument[11]);
BizInfo[ID][BizEnter] = strval(Argument[12]);
PickupID[ID] = CreatePickup(1273, 23, BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ], -1); // Création des pickups
Create3DTextLabel("Bizz", 0x00A0F6AA, BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ] + 0.75, 15.0, 0, 1); // Création des 3DText

printf("BTBIZ: Nom:%s Proprio:%s PrixEntre:%d PrixOrigine:%d PrixVente:%d Entre:%f,%f,%f Sortie:%f,%f,%f Int:%d VW:%d", BizInfo[ID][BizNames],
BizInfo[ID][BizOwner], BizInfo[ID][BizEnter], BizInfo[ID][BizCost], BizInfo[ID][BizSell], BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ],
BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ], BizInfo[ID][Interior], BizInfo[ID][Virtual]);
printf("BTBIZ: Biz %d charge", ID);
ID++;
BizCount++;
  }
fclose(bfile);
printf("BTBIZ: Nombre(s) de Biz presents au chargement: %d", Total);
}
}
else if(!fexist(BIZ_FILE))
{
printf("BTBIZ: Le fichier "#BIZ_FILE" n'existe pas.");
return 0;
  }
return 1;
}
Titre: Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 19 Août 2010, 23:18:07
Ah merci, merci tout le monde pour l'aide que vous m'avez donné!

voila sa marche comme sa(meme si je met plusieurs biz!) :

Code: (pawn) [Sélectionner]
<?php

stock LoadBiz
()
{
if(fexist(BIZ_FILE))
{
new Argument[14][70];
new entry[256];
new File:bfile fopen(BIZ_FILEio_read);
new ID;
    if (bfile)
{
while(fread(bfileentry256))
{
    ID BizCount;
split(entryArgument',');
format(BizInfo[ID][BizOwner], 64"%s"Argument[0]);
format(BizInfo[ID][BizNames], 64"%s"Argument[1]);
BizInfo[ID][BizCost] = strval(Argument[2]);
BizInfo[ID][PickupX] = floatstr(Argument[3]);
BizInfo[ID][PickupY] = floatstr(Argument[4]);
BizInfo[ID][PickupZ] = floatstr(Argument[5]);
BizInfo[ID][Interior] = strval(Argument[6]);
BizInfo[ID][Virtual] = strval(Argument[7]);
BizInfo[ID][TeleX] = floatstr(Argument[8]);
BizInfo[ID][TeleY] = floatstr(Argument[9]);
BizInfo[ID][TeleZ] = floatstr(Argument[10]);
BizInfo[ID][BizSell] = strval(Argument[11]);
BizInfo[ID][BizEnter] = strval(Argument[12]);
PickupID[ID] = CreatePickup(127323BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ], -1); // Création des pickups
Create3DTextLabel("Bizz"0x00A0F6AABizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ] + 0.7515.001); // Création des 3DText

printf("BTBIZ: Nom:%s Proprio:%s PrixEntre:%d PrixOrigine:%d PrixVente:%d Entre:%f,%f,%f Sortie:%f,%f,%f Int:%d VW:%d"BizInfo[ID][BizNames],
BizInfo[ID][BizOwner], BizInfo[ID][BizEnter], BizInfo[ID][BizCost], BizInfo[ID][BizSell], BizInfo[ID][PickupX], BizInfo[ID][PickupY], BizInfo[ID][PickupZ],
BizInfo[ID][TeleX], BizInfo[ID][TeleY], BizInfo[ID][TeleZ], BizInfo[ID][Interior], BizInfo[ID][Virtual]);
printf("BTBIZ: Biz %d charge"ID);
ID++;
BizCount++;
  
}
fclose(bfile);
printf("BTBIZ: Nombre(s) de Biz presents au chargement: %d"ID);
}
}
else if(!fexist(BIZ_FILE))
{
printf("BTBIZ: Le fichier "#BIZ_FILE" n'existe pas.");
return 0;
 
}
return 1;
}

voila les logs avec 4 biz!(coordonnés inventées juste pour test) :
Code: (pawn) [Sélectionner]
[23:16:20] -------------------------------------------------------
[23:16:20] | Chargement BTBiz by Brian Turner ...                |
[23:16:20] BTBIZ: Nom:TestBiz1 Proprio:Personne PrixEntre:1 PrixOrigine:10 PrixVente:1 Entre:2186.476562,1113.612915,12.648400 Sortie:974.017700,-9.593700,1001.148376 Int:3 VW:2000000
[23:16:20] BTBIZ: Biz 0 charge
[23:16:20] BTBIZ: Nom:TestBiz2 Proprio:Personne PrixEntre:20 PrixOrigine:150000 PrixVente:20000 Entre:-256.854614,4568.142578,64.648399 Sortie:301.017700,-7.593699,896.148376 Int:1 VW:2000001
[23:16:20] BTBIZ: Biz 1 charge
[23:16:20] BTBIZ: Nom:TestBiz3 Proprio:Personne PrixEntre:10 PrixOrigine:16985498 PrixVente:15 Entre:4536.424316,684.615600,85.648399 Sortie:974.017700,-9.593700,123.148376 Int:5 VW:2000005
[23:16:20] BTBIZ: Biz 2 charge
[23:16:20] BTBIZ: Nom:TestBiz4 Proprio:Personne PrixEntre:50 PrixOrigine:16984489 PrixVente:155600 Entre:-2254.235351,5464.142578,232.654602 Sortie:301.017700,-95.545600,134.148376 Int:6 VW:2000007
[23:16:20] BTBIZ: Biz 3 charge
[23:16:20] BTBIZ: Nombre(s) de Biz presents au chargement: 4
[23:16:20] | Chargement termine BTBiz by Brian Turner ...        |
[23:16:20] -------------------------------------------------------


EDIT: Voila un autre probleme, je suis pas fort avec les commandes avec plusieurs(comment dire, j'ai oublier le terme) truc :
Voila ce que je veux faire : /creerbiz [PrixOrigine] [PrixVente] [PrixEntre] [Nom] [Vw] avec strtok, comment faire?
Titre: Re : [Probleme] Chargement de fichier
Posté par: Eloctro le 20 Août 2010, 10:33:58
Pour ça il faut utiliser le strtok :
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[128],tmp[128];
new idx;
cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/cmd", true) == 0)
    {
tmp = strtok(cmdtext, idx);//Tu récupère la 1er info séparé par un Espace /cmd ICI info info ...
//Ici tu enregistre l'info soit le Prix d'origne on va donc l'enregistrer en tant que valeur
new Prixorigine=strval(tmp);
////////////////////////////////////////////////////////////////////////
tmp = strtok(cmdtext, idx);//Tu récupère la 2ème info séparé par un Espace /cmd info ICI info ...
//Ici tu enregistre l'info soit le Prix de vente on va donc l'enregistrer en tant que valeur
new PrixdeVente=strval(tmp);

//etc ...
        return 1;
    }
return 0;
}
Si l'info que tu récupère est une phrase :
new NomBiz[64];
NomBiz = strtok(cmdtext, idx);
Titre: Re : Re : [Probleme] Chargement de fichier
Posté par: Brian Turner le 20 Août 2010, 10:38:51
Pour ça il faut utiliser le strtok :
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[128],tmp[128];
new idx;
cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/cmd", true) == 0)
    {
tmp = strtok(cmdtext, idx);//Tu récupère la 1er info séparé par un Espace /cmd ICI info info ...
//Ici tu enregistre l'info soit le Prix d'origne on va donc l'enregistrer en tant que valeur
new Prixorigine=strval(tmp);
////////////////////////////////////////////////////////////////////////
tmp = strtok(cmdtext, idx);//Tu récupère la 2ème info séparé par un Espace /cmd info ICI info ...
//Ici tu enregistre l'info soit le Prix de vente on va donc l'enregistrer en tant que valeur
new PrixdeVente=strval(tmp);

//etc ...
        return 1;
    }
return 0;
}
Si l'info que tu récupère est une phrase :
new NomBiz[64];
NomBiz = strtok(cmdtext, idx);

Bonjour, Merci Electro c'était vraiment confu dans ma tete, maintenant sa ne l'ai plus, merci d'avoir fait l'effort de commenter etc.

Double post
Bonjour,
J'ai un autre legé probleme, ma commande marche bien enfin presque, par exemple j'appel mon biz 24/7 ben il va s'appelé 2/7 quand je regarde bizz.ini c'est marqué []2/7 (ya une rectangle c'est pas des crocher, mais je sais pas faire les rectangles), voila le début de la commande :

PS: J'aimerai savoir comment on fait des espaces mais que se soit toujours le nom(exemple : Biz numero 1) avec le strtok car si je marque Biz Numero 1 ben le nom du biz va juste etre "Biz"
Voila j'espere que j'ai étais assez précis.


RESOLUT j'ai fait :
Code: (pawn) [Sélectionner]
ShowPlayerDialog(playerid,NOMMENU,DIALOG_STYLE_INPUT,"Nom","Entrez le nom du biz(60 caractères maxi):","Ok","Annuler");