Hast recht. Habs jetzt hingekriegt, hat bisschen mehr nicht gestimmt. Der richtige Code sieht jetzt so aus, nur für die SuFu, falls mal jemand danach suchen sollte...
COMMAND:setlevel(playerid, params[])
{
new ID,
Level,
string1[128],
string2[128],
pName[MAX_PLAYER_NAME],
AdminWhoExecutesTheCommand[MAX_PLAYER_NAME];
if(pInfo[playerid][AdminLevel] == 0) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist kein Admin.");
if(pInfo[playerid][AdminLevel] > 0 && pInfo[playerid][AdminLevel] < 5) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du hast einen zu niedrigen Adminlevel, um diese Aktion auszuführen!");
if(sscanf(params, "ui", ID, Level)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Gebrauch: /setlevel [ID] [Level]");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Dieser Spieler ist nicht online!");
if(Level < 0 || Level > 5) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Ungueltiges Level.");
if(ID == playerid) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du kannst nicht deinen eigenen Adminlevel setzen!");
GetPlayerName(playerid, AdminWhoExecutesTheCommand, sizeof(AdminWhoExecutesTheCommand));
GetPlayerName(ID, pName, sizeof(pName));
if(pInfo[ID][AdminLevel] < Level)
{
format(string1, sizeof(string1), "[ADMININFO] Admin {%06x}%s "#COLOR_TURQUOISE_EMBED"hat {%06x}%s "#COLOR_TURQUOISE_EMBED"auf "#COLOR_GOLD_EMBED"Level %i "#COLOR_GREEN_EMBED"heraufgestuft!", GetPlayerColor(playerid) >>> 8, AdminWhoExecutesTheCommand, GetPlayerColor(ID) >>> 8, pName, Level);
SendClientMessageToAll(COLOR_TURQUOISE, string1);
pInfo[ID][AdminLevel] = Level;
return 1;
}
if(pInfo[ID][AdminLevel] > Level)
{
format(string2, sizeof(string2), "[ADMININFO] Admin {%06x}%s "#COLOR_TURQUOISE_EMBED"hat {%06x}%s "#COLOR_TURQUOISE_EMBED"auf "#COLOR_GOLD_EMBED"Level %i "#COLOR_RED_EMBED"herabgestuft!", GetPlayerColor(playerid) >>> 8, AdminWhoExecutesTheCommand, GetPlayerColor(ID) >>> 8, pName, Level);
SendClientMessageToAll(COLOR_TURQUOISE, string2);
pInfo[ID][AdminLevel] = Level;
return 1;
}
new INI:file = INI_Open(Path(playerid));
INI_WriteInt(file, "AdminLevel", pInfo[playerid][AdminLevel]);
INI_Close(file);
return 1;
}
Den file-Part hab ich ganz nach unten, unter beide if-Abfragen gemacht, da er davor, als der Part noch darüber war, den AdminLevel doppelt in die Userfile geschrieben hat. Und das, worauf du mich hingewiesen hast, war auch ausschlaggebend.
Vielen Dank!
EDIT: "PlayerWhoseLevelGetsSet"-Variable war dasselbe, wie "ID", also doppelt gemoppelt. Habs aus dem Code entfernt und angepasst.