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
-
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 :
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 :
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:
[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?
-
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
-
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 :
[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) :
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
-
Tu appel où stock CreateBiz ? par une Commande ?
-
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.
-
Car tu sauvegarde pas ta ligne dans ton dossier, sans doutes, non?
-
sisi la ligne y est meme si je ferme le serveur. Mais rien est charger (a si que des 0 ou des espaces)
-
Fait nous voir le code de OnFilterScriptInit concernant les biz s'il te plait. (Avec ton CreateBiz)
-
OnFilterScriptInit() :
<?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() :
<?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_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;
}
CreateBiz() :
<?php
stock CreateBiz(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell, prixenter)
{
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_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);
Create3DTextLabel("Bizz", 0x00A0F6AA, Pickupx, Pickupy, Pickupz + 0.75, 15.0, 0, 1);
}
Plus:
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;
}
-
EDIT: J'ai rien dit,
essaie voir de mettre un SAveBiz(); après ton CreateBiz ?
-
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:
if( strcmp( key , "Proprio" , true ) == 0 ) { val = ini_GetValue( Data ); BizInfo[ID][BizOwner] = strval( val ); }
-
Oui, mais pas au moment que tu le crée, dans OnFilterScriptInit() ...
-
J'essaye je te dit se que sa fait.
-
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
-
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é
-
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++
-
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 :
<?php
public split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
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 entry[256];
new File:bfile = fopen(BIZ_FILE, io_write);
format(entry, 128, "%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(bfile, entry);
printf("BTBIZZ: Bizz %d creer!", ID);
fclose(bfile);
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
}
stock SauvBiz()
{
new entry[256];
new File:bfile = fopen(BIZ_FILE, io_write);
for(new ID; ID<BizCount; ID++)
{
format(entry, 128, "%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(bfile, entry);
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_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;
}
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:
[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 :
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?
-
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..
-
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()
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.
-
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 ?
-
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.
-
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 :
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;
}
-
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!) :
<?php
stock LoadBiz()
{
if(fexist(BIZ_FILE))
{
new Argument[14][70];
new entry[256];
new File:bfile = fopen(BIZ_FILE, io_read);
new ID;
if (bfile)
{
while(fread(bfile, entry, 256))
{
ID = BizCount;
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", 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) :
[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?
-
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);
-
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 :ShowPlayerDialog(playerid,NOMMENU,DIALOG_STYLE_INPUT,"Nom","Entrez le nom du biz(60 caractères maxi):","Ok","Annuler");