Adminlevel selbst ändern, nur als RCON

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • COMMAND:setlevel(playerid, params[])
    {
    if(pInfo[playerid][AdminLevel] < 5 && !IsPlayerAdmin(playerid)) SendLanguageMessage(playerid, C_RED, "»ERROR« Du hast einen zu niedrigen Adminlevel, um diese Aktion auszuführen!", "»ERROR« Your admin level is too low to execute this action!");
    else
    {
    new ID,
    Level,
    stringDE[128],
    stringEN[128],
    pName[MAX_PLAYER_NAME],
    AdminName[MAX_PLAYER_NAME];

    if(sscanf(params, "ui", ID, Level)) return SendLanguageMessage(playerid, C_RED, "»ERROR« Gebrauch: /setlevel [ID] [Level]", "»ERROR« Usage: /setlevel [ID] [Level]");
    if(!IsPlayerConnected(ID)) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Dieser Spieler ist nicht online!", "»WARNING« This player is not online!");
    if(Level < 0 && Level > 5) return SendLanguageMessage(playerid, C_RED, "»ERROR« Ungültiges Level. Verfügbar: 0 bis 5.", "»ERROR« Invalid level. Available: 0 to 5.");
    if(ID == playerid) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du kannst deinen eigenen Adminrang nicht bestimmen.", "»WARNING« You can't determine your own admin rank.");

    GetPlayerName(playerid, AdminName, sizeof(AdminName));
    GetPlayerName(ID, pName, sizeof(pName));

    if(pInfo[ID][AdminLevel] < Level)
    {
    format(stringDE, sizeof(stringDE), "»ADMIN« Admin {%06x}%s "#C_TURQUOISE_E"hat {%06x}%s "#C_TURQUOISE_E"auf "#C_GOLD_E"Level %i "#C_GREEN_E"heraufgestuft!", GetPlayerColor(playerid) >>> 8, AdminName, GetPlayerColor(ID) >>> 8, pName, Level);
    format(stringEN, sizeof(stringEN), "»ADMIN« Admin {%06x}%s "#C_GREEN_E"increased {%06x}%s"#C_TURQUOISE_E"s level to "#C_GOLD_E"level %i!", GetPlayerColor(playerid) >>> 8, AdminName, GetPlayerColor(ID) >>> 8, pName, Level);
    SendLanguageMessageToAll(C_TURQUOISE, stringDE, stringEN);
    pInfo[ID][AdminLevel] = Level;
    return 1;
    }
    if(pInfo[ID][AdminLevel] > Level)
    {
    format(stringDE, sizeof(stringDE), "»ADMIN« Admin {%06x}%s "#C_TURQUOISE_E"hat {%06x}%s "#C_TURQUOISE_E"auf "#C_GOLD_E"Level %i "#C_RED_E"herabgestuft!", GetPlayerColor(playerid) >>> 8, AdminName, GetPlayerColor(ID) >>> 8, pName, Level);
    format(stringEN, sizeof(stringEN), "»ADMIN« Admin {%06x}%s "#C_RED_E"decreased {%06x}%s"#C_TURQUOISE_E"s level to "#C_GOLD_E"level %i!", GetPlayerColor(playerid) >>> 8, AdminName, GetPlayerColor(ID) >>> 8, pName, Level);
    SendLanguageMessageToAll(C_TURQUOISE, stringDE, stringEN);
    pInfo[ID][AdminLevel] = Level;
    return 1;
    }
    }
    return 1;
    }


    Ich möchte, dass ein RCON Admin seinen Rang selbst ändern kann. Alle anderen Admins sollen nicht an ihrem eigenen Rang rumschrauben können. Also spielt sich alles in Zeile 16 ab.
    Also, wenn "ID == playerid && IsPlayerAdmin(ID)" gegeben ist, soll der Compiler den Code weiter ausführen. Ist allerdings nur "ID == playerid" erfüllt, soll der Code abgebrochen werden.