Adminlevel-Befehl spinnt

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
  • Guten Abend zusammen :D
    Ich bin noch sehr am Anfang und wollte einen Befehl erstellen, mit dem man als Rcon-Admin oder Serverleiter (Adminlevel 4) das Aminlevel eines Spielers ändern kann. Compile-Errors hab ich keine.
    Sowie ich /setadminlevel 0 (Meine ID) 4 auf meinem Localhost eingebe, passiert das im Chat:





    Hier der Befehl im Script:
    dcmd_setadminlevel(playerid, params[])
    {
    new spieler[100];
    new spieler2[100];
    new name[MAX_PLAYER_NAME];
    new name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(spieler,sizeof(spieler),"/Accounts/%s.txt",name);
    if(IsPlayerAdmin(playerid))
    {
    new id, alevel;
    new str[128];
    new str2[128];
    new str3[128];
    if(sscanf(params,"uu",id,alevel)) return SendClientMessage(playerid,WEISS,"/setadminlevel [ID] [0-4]");
    GetPlayerName(id,name2,sizeof(name2));
    format(str,sizeof(str),"A: %s ist nun ein level %d Admin!",name2,alevel);
    format(str2,sizeof(str2),"A: Du wurdest zu einem level %d Admin befördert!",alevel);
    format(str3,sizeof(str3),"A: Du wurdest zu einem level %d Admin degradiert!",alevel);
    format(spieler2,sizeof(spieler2),"/Accounts/%s.txt",name2);
    dini_IntSet(spieler2,"Adminlevel",alevel);
    if(dini_Int(spieler2,"Adminlevel") > alevel)
    SendClientMessage(playerid,HELLROT,str);
    {
    SendClientMessage(id,HELLROT,str3);
    }
    if(dini_Int(spieler2,"Adminlevel") < alevel)
    {
    SendClientMessage(id,HELLROT,str2);
    }
    if(dini_Int(spieler2,"Adminlevel") == alevel)
    {
    SendClientMessage(playerid,HELLROT,"A: Dieser Spieler hat bereits dieses Adminlevel!");
    return 1;
    }
    return 1;
    }
    if(dini_Int(spieler,"Adminlevel") == 4)
    {
    new id, alevel;
    new str[128];
    new str2[128];
    new str3[128];
    if(sscanf(params,"uu",id,alevel)) return SendClientMessage(playerid,WEISS,"/setadminlevel [ID] [0-4]");
    GetPlayerName(id,name2,sizeof(name2));
    format(str,sizeof(str),"A: %s ist nun ein level %d Admin!",name2,alevel);
    format(str2,sizeof(str2),"A: Du wurdest zu einem level %d Admin befördert!",alevel);
    format(str3,sizeof(str3),"A: Du wurdest zu einem level %d Admin degradiert!",alevel);
    format(spieler2,sizeof(spieler2),"/Accounts/%s.txt",name2);
    dini_IntSet(spieler2,"Adminlevel",alevel);
    if(dini_Int(spieler2,"Adminlevel") > alevel)
    SendClientMessage(playerid,HELLROT,str);
    {
    SendClientMessage(id,HELLROT,str3);
    }
    if(dini_Int(spieler2,"Adminlevel") < alevel)
    {
    SendClientMessage(id,HELLROT,str2);
    }
    if(dini_Int(spieler2,"Adminlevel") == alevel)
    {
    SendClientMessage(playerid,HELLROT,"A: Dieser Spieler hat bereits dieses Adminlevel!");
    return 1;
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,HELLROT,"A: Du bist nicht befugt!");
    return 1;
    }
    }


    Danke schonmal im Voraus :thumbup:

  • Versuch es mal mit dem Code.


  • Ok, habe noch in Zeile 3 "SName" zu "Sname" geändert, doch jetzt kommen die Fehlercodes:


    C:\Users\Simon\Desktop\GTA SA Server\gamemodes\NVRoleplay.pwn(1132) : error 001: expected token: "-string end-", but found "-identifier-" // if(dini_Int(Spieler2, "Adminlevel" > alevel))
    C:\Users\Simon\Desktop\GTA SA Server\gamemodes\NVRoleplay.pwn(1141) : error 001: expected token: "-string end-", but found "-identifier-" //else if(dini_Int(Spieler2, "Adminlevel" < alevel))
    C:\Users\Simon\Desktop\GTA SA Server\gamemodes\NVRoleplay.pwn(1150) : error 001: expected token: "-string end-", but found "-identifier-" //else if(dini_Int(Spieler2, "Adminlevel" == alevel))
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.

  • Code
    if(dini_Int(Spieler2, "Adminlevel" > alevel))

    Bearbeite das und die anderen zwei Abfragen nach diesem Schema:



    Code
    if(dini_Int(Spieler2, "Adminlevel") > alevel)

    Eine Klammer muss nach "Adminlevel" gesetzt werden also "Adminlevel") und eine der beiden hinteren kannst du löschen.


    //Edit: Ich beziehe mich auf den Code von SLaYz

  • War mein Fehler sorry. Sollte nun gehen.

  • Jetzt ist der Error draußen, aber Jetzt kann ich als Admin Level 0, 1, 2, 3 mein Level ändern, aber wenn ich Level 4 bin nicht mehr..
    //Edit: Allein als Rcon admin funktioniert, sry ^^

  • So war das nicht gemeint ^^ Ich meinte, dass ich den Command sowohl nur als Serverleiter (Level 4 Admin) , nur als Rcon-Admin als auch als Serverleiter und Rcon-Admin zusammen nutzen kann , also so, wie ich es am Anfang in den Thread gepostet habe :D Tut mir leid, dass es grad so kompliziert ist ^^

  • Ich hoffe ich hab das jetzt richtig verstanden... also du willst den Befehl als Rcon-Admin oder als Serverleiter (Level 4 Admin) verwenden können bzw. wenn du beides bist. Falls ja dann:


  • Ja, richtig verstanden :D Doch wenn ich jetzt kein Rcon-Admin bin, jedoch Level 4 admin, kann ich den Befehl trz nicht verwenden.
    Und wenn ich kein Rcon-Admin bin, jedoch level 4 Admin, geht es auch nicht.. :/
    Ich schätze das liegt an daran, dass die Bedingung Rcon-Admin zu sein ( if(!IsPlayerAdmin(playerid)) ) mit der bedingung level 4 Admin zu sein ( dini_Int(Spieler,"Adminlevel") < 4) ) zusammenhängt..
    Ich würde sagen, es passt aber auch so, bevor ich noch mehr eurer Zeit raube ^^


    Auf jeden Fall bedanke ich mich recht herzlich bei euch! :)

  • Ich schätze das liegt an daran, dass die Bedingung Rcon-Admin zu sein ( if(!IsPlayerAdmin(playerid)) ) mit der bedingung level 4 Admin zu sein ( dini_Int(Spieler,"Adminlevel") < 4) ) zusammenhängt..
    Ich würde sagen, es passt aber auch so, bevor ich noch mehr eurer Zeit raube

    Ups...


    Entweder:

    Oder du ersetzt bei dem anderen Code die | | durch && .