Hey. Ich wollte mir ein dynamisches Fraktions system basteln, wo ich dann ingame /createfraktion [Fraktionsname] o.ä. eingebe und dann eine "Fraktionsid".txt erstellt wird.
Also hab ich mir gedacht fange ich mal so an:
Ich habe mir gedacht, da ich ja eine for schleife machen muss, damit keine Fraktionsid überschrieben wird, setze ich erstmal klein an, damit die for schleife nicht erstmal bis 100 hochzählen muss. Kann man ja nachher noch ändern, wenn man mehrere Fraktionen haben möchte.
enum fraktion_info
{
FName[128],
FMoney,
Rang1,
Rang2,
Rang3,
Rang4,
Rang5,
Rang6
}
new Fraktion_Info[MAX_FRAK][fraktion_info];
Alles anzeigen
Hier bin ich mir schon unsicher, ob das [64] rein muss, weil ich habe nirgends ein System gefunden, das einen Namen in einer Datei speichert.
Naja weiter.
stock CreateFraction()
{
new datei[64];
for(new frak=1;frak<MAX_FRAK;frak++)
{
format(datei,sizeof(datei),"/Fraktionen/%i.txt",frak);
if(!dini_Exists(datei))
{
dini_Create(datei);
dini_Set(datei,"FName",Fraktion_Info[frak][FName]);
dini_IntSet(datei,"FMoney",0);
dini_Set(datei,"Rang1","Rang 1");
dini_Set(datei,"Rang2","Rang 2");
dini_Set(datei,"Rang3","Rang 3");
dini_Set(datei,"Rang4","Rang 4");
dini_Set(datei,"Rang5","Rang 5");
dini_Set(datei,"Rang6","Rang 6");
return 1;
}
}
return 1;
}
Alles anzeigen
ocmd:createfraktion(playerid,params[])
{
if(isPlayerAnAdmin(playerid,0))
{
CreateFraction();
return 1;
}
return 1;
}
Das PlayerAdmin(0) ist so gewollt, da ich noch probleme mit dem speichern nach dem /gmx habe. So wie bekomme ich jetzt hin, dass der Name in der Datei gespeichert wird?
Klar mit
if(sscanf(params,"s",FName)) return SendClientMessage(playerid,COLOR_WHITE,"Benutze: /createfraktion [Fraktionsname]");
aber wie schaffe ich es jetzt den String FName in der Datei zu speichern. Für die Räne gibt es dann einen Extra befehl
Wäre nett wenn mir jemand helfen könnte.
Ich hoffe, dass ich mein Problem ausführlich und verständlich genug beschrieben habe.
MFG InsaneDucky
//EDIT: Codes und Probleme aktuallisiert
//EDIT 2:
Okay, ich hab es glaub ich fast selbst geschafft aber habe jetzt ein neues Problem:
ocmd:fkasse(playerid,params[])
{
new Betrag,datei[64];
if(sscanf(params,"i",Betrag)) return SendClientMessage(playerid,COLOR_WHITE,"Benutze: /FKasse [Betrag]");
for(new frak=1;frak<MAX_FRAK;frak++)
{
format(datei,sizeof(datei),"/Fraktionen/%i.txt",frak);
if(dini_Exists(datei))
{
if(frak==GetPVarInt(playerid,"Fraktion"))
{
Fraktion_Info[frak] -= Betrag;
return 1;
}
}
}
return 1;
}
Alles anzeigen
Error:
Ist die zeile