Hi^^
Wie kann ich eine Abfrage durch alle dini Dateien machen ? Ich Brauchs nähmlich für mein bizzsystem. Also wenn Spieler XY /bizzkasse eingibt , soll das bizz von SpielerXY gesucht werden !
Hi^^
Wie kann ich eine Abfrage durch alle dini Dateien machen ? Ich Brauchs nähmlich für mein bizzsystem. Also wenn Spieler XY /bizzkasse eingibt , soll das bizz von SpielerXY gesucht werden !
mach ne for schleife mit den Bizzez
mal nen BSP
for(new i; i < MAX_BIZZE; i++)
und in der i schleife öffnest/schließt du deine dini sachen
Das mit der Schleife ist mir klar , nur ich weiß nicht wie ich die dini dateien öffne!
Ich muss ja
format(Biz,sizeof(Biz),"/Biz/%s.txt",name);//Bei Name weiß ichs ja nicht!
Und das Script soll halt automatisch den Namen rausfinden , damit der Spieler auch das richtige Biz kauft!
Du legst die Dateien im folgenden Schema an:
biz0.txt
biz1.txt
biz2.txt
..
Dann:
for (var i = 0; i < BIZ_FILES; i++)
{
var string[256];
format(string, sizeof(string), "/Biz/biz%d.txt", i);
}
Und schon hast du den Dateinamen.
So , neues Problem
Also , wenn ich /createbiz [Name] [Preis] mache , wird das biz erstellt und geladen.
In dem Scriptfiles ordner steht auch die Datei Biz1.txt.
Doch wenn ich dann nochmal /createbiz mache , passiert rein garnichts.
Es wird also keine neue Datei namens Biz2.txt erstellt.
Wenn ich nun Biz1.txt lösche , kann ich ingame wieder ein neues biz erstellen !
Code:
stock LoadBizz(bizid)
{
new Biz[64];
format(Biz,sizeof(Biz),"Biz/biz%d.txt",bizid);
if(dini_Exists(Biz))
{
bInfo[bizid][PossX] = dini_Float(Biz,"PosX");
bInfo[bizid][PossY] = dini_Float(Biz,"PosY");
bInfo[bizid][PossZ] = dini_Float(Biz,"PosZ");
format(bInfo[bizid][Namme],64,"%s",dini_Get(Biz,"Name"));
bInfo[bizid][Preis] = dini_Int(Biz,"Preis");
bInfo[bizid][Besetzt] = dini_Int(Biz,"Besetzt");
format(bInfo[bizid][Besitzer],64,"%s",dini_Get(Biz,"Besitzer"));
if(bInfo[bizid][Besetzt] == 0)
{
bInfo[bizid][Pickup] = CreatePickup(1238 ,23,bInfo[bizid][PossX],bInfo[bizid][PossY],bInfo[bizid][PossZ],0);
new string[196];
format(string,196,"*[BIZINFO]*\nName: %s\nBesitzer: Staat\nPreis: %i\n***",bInfo[bizid][Namme],bInfo[bizid][Preis]);
bInfo[bizid][Label] = Create3DTextLabel(string,0xFFFF00FF,bInfo[bizid][PossX],bInfo[bizid][PossY],bInfo[bizid][PossZ],20,0,0);
return print("Das Biz wurde erfolgreich geladen");
}
if(bInfo[bizid][Besetzt] == 1)
{
bInfo[bizid][Pickup] = CreatePickup(1238 ,23,bInfo[bizid][PossX],bInfo[bizid][PossY],bInfo[bizid][PossZ],0);
new string[196];
format(string,196,"*[BIZINFO]*\nName: %s\nBesitzer: %s\nPreis: %i\n***",bInfo[bizid][Namme],bInfo[bizid][Besitzer],bInfo[bizid][Preis]);
bInfo[bizid][Label] = Create3DTextLabel(string,0xFFFF00FF,bInfo[bizid][PossX],bInfo[bizid][PossY],bInfo[bizid][PossZ],20,0,0);
return print("Das Biz wurde erfolgreich geladen");
}
}
else
{
return 0;
}
return 1;
}
stock CreateBizz(Float:x,Float:y,Float:z,namme[64],besitzer[64],preis)
{
new Biz[64];
//new name[26],
// preis;
//new Float:X,Float:Y,Float:Z;
for(new b = 1; b <BIZ_FILES; b++)
{
format(Biz,64,"/Biz/biz%d.txt",b);
if(!dini_Exists(Biz))
{
dini_Create(Biz);
dini_FloatSet(Biz,"PosX",x);
dini_FloatSet(Biz,"PosY",y);
dini_FloatSet(Biz,"PosZ",z);
dini_Set(Biz,"Name",namme);
dini_IntSet(Biz,"Preis",preis);
dini_IntSet(Biz,"Besetzt",0);
dini_Set(Biz,"Besitzer",besitzer);
return LoadBizz(b);
}
else
{
return 0;
}
}
return 1;
}
ocmd:createbiz(playerid,params[])
{
new Float:x,Float:y,Float:z,preis;
new namme[64];
if(sscanf(params,"s[64]d",namme,preis))return SendClientMessage(playerid,Rot,"Fehler: /createbiz [Name] [Preis]");
{
GetPlayerPos(playerid,x,y,z);
CreateBizz(x,y,z,namme,"Staat",preis);
}
return 1;
}
BIZ_FILES hat aber schon die richtige Anzahl der Biz's oder? Es muss ja immerhin BIZ_FILES + 1 sein, da du ja eine zusätzliche Datei erstellen willst.
Ja^^
Ich habe oben #define BIZ_FILES 5
und im Biz ordner ist immer 1 Datei
Ausserdem kommt wenn ich zB /bizkasse mache so oft die Nachricht , wie ich oben BIZ_FILES definiert hab!