Hallo liebes SA:MP Forum,
heute habe ich mal so glaube ich das größte und letzte Problem vor der Eröffnung meines DM-Servers.
Ich bin mit allem fertig, habe es geschafft vieles selbst zu erledigen (einiges auch dank euch, dankeschön an dieser Stelle an dieses Forum) und bin nun am Ziel erlangt.
Nur habe ich ein Problem, der mir jetzt aufgefallen ist.
Accounts werden nicht richtig gespeichert bzw. nur in seltenen Fällen gespeichert. Ich habe hinter vielen Sachen ein "SaveAccount" gesetzt (also hinter jeden Befehlen), jedoch wird bei einem Relog oder bei einem Server-Neustart selten was vom Account gespeichert. Nur wenn ich die Werte (z.B. Adminlevel) per phpMyAdmin Datenbank ändere, wird es gespeichert.
Beispiel: Ich setze den Wert von Adminlevel per Datenbank auf 4. Nun gehe ich InGame > es hat geklappt, ich bin Adminlevel 4. Wenn ich mich jetzt Adminlevel 3 mache (InGame) und relogge, bin ich immernoch AdminLevel 4. Würde ich dies über der Daten-Bank erledigen, würde das sicher nicht passieren.
Kann es auch vielleicht daran liegen, dass es alles aufm localhost statt findet? Ich glaube es nicht, aber wer weiß...
Heir mal mein SaveAccount
SaveAccount(playerid)
{
if(AccountInfo[playerid][eingeloggt]==0)return 1;
new query[128];
format(query,sizeof(query),"UPDATE user SET levelscore='%i',money='%i',admlevel='%i',premium='%i',spielerskin='%i',mute='%i',banned='%i',fightstyle='%i' WHERE id='%i'",AccountInfo[playerid][levelscore],GetPlayerMoney(playerid),AccountInfo[playerid][admlevel],AccountInfo[playerid][premium],AccountInfo[playerid][spielerskin],AccountInfo[playerid][mute],AccountInfo[playerid][banned],AccountInfo[playerid][fightstyle],AccountInfo[playerid][id]);
mysql_function_query(dbhandle,query,false,"","");
return 1;
}
Da als Beispiel mein /makeadmin.
ocmd:makeadmin(playerid,params[])
{
if(IsPlayerAnAdmin(playerid,5))
{
new pID,rank,string[256],string2[256];
if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,WEIß,"{FFFFFF}» {FF000F}Syntax: {FFFFFF}/makeadmin {969696}[Name/ID] [Adminlevel]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, GRAU, "Dieser Spieler ist nicht online.");
if(rank<0||rank>5)return SendClientMessage(playerid,GRAU,"Bitte nur gültiges Adminlevel angeben! {FFFFFF}[0-5]");
AccountInfo[pID][admlevel]=rank;
format(string,sizeof(string),"Dein Adminlevel wurde auf {969696}%i {FFFFFF}({969696}%s{FFFFFF}) gesetzt. Verantwortlicher: {969696}%s{FFFFFF}.",rank,Adminrang(pID),Name(playerid));
format(string2,sizeof(string2),"Du hast das Adminlevel von dem Spieler {969696}%s{FFFFFF} auf {969696}%i{FFFFFF} ({969696}%s{FFFFFF}) gesetzt.",Name(pID),rank,Adminrang(pID));
SendClientMessage(pID,WEIß,string);
SendClientMessage(playerid,WEIß,string2);
SaveAccount(pID);
return 1;
}
SendClientMessage(playerid,GRAU,"Für diesen Befehl benötigst du das folgende Adminlevel: {002DFF}Scripter {969696}[{002DFF}5{969696}].");
return 1;
}
Ich hoffe, ihr könnt mir helfen.
MfG