Hallo Community!
Ich habe mir überlegt, dass ich mein Fraktions System dynamisch Scripte, es funktioniert auch alles bis auf die Speicherung der Rangnamen. alles andere wird (soweit ich das getestet habe bisher) richtig gespeichert.
Mein Enum:
Code
enum frakInfo
{
f_id,
f_name[50],
f_kasse,
Float:f_x,
Float:f_y,
Float:f_z,
Float:f_r,
gehalt1,
gehalt2,
gehalt3,
gehalt4,
gehalt5,
rname1[20],
rname2[20],
rname3[20],
rname4[20],
rname5[20],
frakmsg[200]
}
new FI[2][frakInfo];
Alles anzeigen
Mein OnGameModeExit:
Mein stock SaveFraks(By Jeffrey):
Code
stock SaveFraks()
{
new query[512];
for(new i=0;i<sizeof(FI);i++)
{
mysql_format(db_handle,query,sizeof(query),"UPDATE fraktionen SET name = '%e', kasse = %d, gehalt1 = %d, gehalt2 = %d, gehalt3 = %d, gehalt4 = %d, gehalt5 = %d, rname1 = '%e', rname2 = '%e', rname3 = '%e', rname4 = '%e', rname5 = '%e', frakmsg = '%e' WHERE id = %d",
FI[i][f_name],FI[i][f_kasse],FI[i][gehalt1],FI[i][gehalt2],FI[i][gehalt3],FI[i][gehalt4],FI[i][gehalt5],FI[i][rname1],FI[i][rname2],FI[i][rname3],FI[i][rname4],FI[i][rname5],FI[i][frakmsg],FI[i][f_id]);
mysql_pquery(db_handle,query);
}
return 1;
}
Alles anzeigen
Und zu guter letzt mein Befehl zum ändern der Rangnamen:
Code
ocmd:changername(playerid,params[])
{
if(PI[playerid][pLeader] >= 1 || PI[playerid][pAdmin] >= 3)
{
new str[128];
if(PI[playerid][pAdmin] >= 3)
{
new rang,name[25],fraktion;
if(sscanf(params,"dds[25]",fraktion,rang,name))return SCM(playerid,frot,"[FEHLER]: /changername [fraktion] [Rang] [Name]");
if(rang > 5 || rang < 1)return SCM(playerid,frot,"[FEHLER]: Der Rang muss zwischen 1 und 5 liegen!");
if(strlen(name) > 20)return SCM(playerid,frot,"[FEHLER]: Der Name darf maximal 20 Zeichen lang sein!");
if(rang == 1)format(FI[fraktion][rname1],25,name);
else if(rang == 2)format(FI[fraktion][rname2],25,name);
else if(rang == 3)format(FI[fraktion][rname3],25,name);
else if(rang == 4)format(FI[fraktion][rname4],25,name);
else if(rang == 5)format(FI[fraktion][rname5],25,name);
format(str,sizeof(str),"Der Admin %s hat den Namen des Ranges %d auf %s geändert!",GPlayerName(playerid),rang,name);
SendFrakMessage(fraktion,str);
}
new rang,name[25],frakid = PI[playerid][pLeader];
if(sscanf(params,"ds[25]",rang,name))return SCM(playerid,frot,"[FEHLER]: /changername [Rang] [Name]");
if(rang > 5 || rang < 1)return SCM(playerid,frot,"[FEHLER]: Der Rang muss zwischen 1 und 5 liegen!");
if(strlen(name) > 20)return SCM(playerid,frot,"[FEHLER]: Der Name darf maximal 20 Zeichen lang sein!");
if(rang == 1)format(FI[frakid][rname1],25,name);
else if(rang == 2)format(FI[frakid][rname2],25,name);
else if(rang == 3)format(FI[frakid][rname3],25,name);
else if(rang == 4)format(FI[frakid][rname4],25,name);
else if(rang == 5)format(FI[frakid][rname5],25,name);
format(str,sizeof(str),"Der Leader %s hat den Namen des Ranges %d auf %s geändert!",GPlayerName(playerid),rang,name);
SendFrakMessage(frakid,str);
return 1;
}
SCM(playerid,frot,"[FEHLER]: Du hast nicht den nötigen Fraktions/Admin Rang");
return 1;
}
Alles anzeigen
Unten habe ich einen Screenshot angehängt.
Ausgangssituation:
Ich hatte sowohl bei den Zivilisten als auch beim LSPD die Felder mit den rangnamen geleert.
Ich habe Ingame den Befehl "/changername 1 3 KlausPeter" eingegeben. Fraktion 1 ist das LSPD, 0 die Zivilisten.
Jetzt kam dabei das heraus was am Screenshot zu sehen ist.
Hoffe ihr könnt mir helfen, mfg Simon.