Adminbefehle funktionieren nicht?

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
  • Hallo.. Ich habe heute in meinem Script ein Adminsystem und (ein paar) dazugehörige befehle eingebaut.
    Allerdings geht keiner der befehle, bzw. mein Rang ist nicht hoch genug (Eigentlich ja schon..)
    Najaaa..


    Okay..


    Enum eingetragen:
    alevel


    Speichersystem (Beim Disconnect:)
    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    new query[300];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][id]);
    mysql_function_query(handledb,query,false,"","");
    return 1;
    }


    Einloggen:
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",handledb);


    IsAdmin:
    isAdmin(playerid,a_level)
    {
    if(sInfo[playerid][alevel]>=a_level)return 1;
    return 0;
    }


    Ein Befehl:
    ocmd:gmx(playerid,params[])
    {
    if(!isAdmin(playerid,6))return SendClientMessage(playerid,KID_COL_RED, "Du bist nicht .Kid!");
    SendRconCommand("gmx");
    return 1;
    }


    Ich bekomme bei jedem Adminbefehl nur:
    "Du bist nicht .Kid!", obwohl ich mein alevel in der db auf 6 gestellt habe!


    Danke für jede Hilfe!


    MFG, .Kid

  • Was wird dir hier in die Konsole geschrieben, wenn du den Befehl "/gmx" eingibst?
    ocmd:gmx(playerid,params[])
    {
    printf("Adminrang: %d",sInfo[playerid][alevel]);
    if(!isAdmin(playerid,6))return SendClientMessage(playerid,KID_COL_RED, "Du bist nicht .Kid!");
    SendRconCommand("gmx");
    return 1;
    }

  • Ja sicher, bloß was wird dir in die Konsole (bzw. server_log.txt) geschrieben? :thumbup:

  • [16:17:46] Number of vehicle models: 2
    [16:18:26] Incoming connection: 217.85.150.86:55259
    [16:18:27] [join] [LoSA].Kid has joined the server (0:217.85.150.86)
    [16:19:01] [part] [LoSA].Kid has left the server (0:1)
    [17:15:18] Incoming connection: 217.85.150.86:60244
    [17:15:18] [join] [LoSA].Kid has joined the server (0:217.85.150.86)
    [17:15:33] [part] [LoSA].Kid has left the server (0:1)


    Nichts eig..

  • Den Befehl hast du aber schon eingegeben, oder?
    Ansonsten schreib das mal in OnPlayerCommandText():
    printf("cmdtext[]: %s",cmdtext);


    Was wird dir ausgegeben, wenn du nun den Befehl eingibst?

  • [18:31:35] Number of vehicle models: 2
    [18:32:09] Incoming connection: 217.85.150.86:53510
    [18:32:10] [join] [LoSA].Kid has joined the server (0:217.85.150.86)
    [18:32:16] Adminrang: 6



    hmm.. Adminrang: 6..

  • ocmd:gmx(playerid,params[])
    {
    printf("Adminrang: %d",sInfo[playerid][alevel]);
    if(sInfo[playerid][alevel] < 6)return SendClientMessage(playerid,KID_COL_RED, "Du bist nicht .Kid!");
    SendRconCommand("gmx");
    return 1;
    }
    Was wird dir nun ausgegeben? (Ebenfalls wieder in der server_log.txt).

    Einmal editiert, zuletzt von AirM4X ()

  • Kriege beim Compilen errors:


    C:\*\Selfmade.pwn(467) : error 029: invalid expression, assumed zero
    C:\*\Selfmade.pwn(467) : warning 215: expression has no effect
    C:\*\Selfmade.pwn(467) : error 001: expected token: ";", but found "return"

  • Ja, eigentlich schon. Allerdings ist es recht unnötig eine Funktion dafür zu verwenden, da es ja nur die Abfrage ist.


    Besser wäre sowas, das wirkt sich nicht auf die Performance aus:
    #define IsAdmin(%0,%1) (sInfo[%0][alevel] >= %1)


    Dann kannst du auch
    ocmd:gmx(playerid,params[])
    {
    printf("Adminrang: %d",sInfo[playerid][alevel]);
    if(!IsAdmin(playerid, 6)) return SendClientMessage(playerid,KID_COL_RED, "Du bist nicht .Kid!");
    SendRconCommand("gmx");
    return 1;
    }
    verwenden.