Adminchat funktioniert leider 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 Leute,
    ich habe folgendes Problem.


    Ich habe einen Adminchat erstellt, jedoch kommt bei mir immer die Warnung, dass ich kein Admin bin
    Hier die Codes:


    if(strcmp(cmdtext, "/admin", true) == 0 || strcmp(cmdtext, "/a", true) == 0)
    {
    if(IsPlayerAnAdmin(playerid,0)) return SendClientMessage(playerid, rot,"Du hast keine Berechtigung!");
    if(!strlen(strget(cmdtext,1))) return SendClientMessage(playerid,gelb,"* Verwendung: /a [text]");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    new String[100];
    format(String,sizeof(String),"{32CD32}**AChat: %s: %s",name,cmdtext[2]);
    for(new ii=0; ii<MAX_PLAYERS; ii++) if(IsPlayerAnAdmin(playerid,1))SendClientMessage(ii,GetPlayerColor(playerid),String);
    print("Adminchat wurde ausgeführt");
    return 1;
    }


    So wird mein if(IsPlayerAnAdmin(playerid,1)) abgefragt:


    stock IsPlayerAnAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
    return 0;
    }


    Kann mir jemand helfen?
    Ich bin Admin aber es geht trotzdem nicht.
    lg


  • Du fragst ab ob das Adminlevel größer als 0 oder gleich 0 ist. Passe die Abfrage so an:
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid, rot,"Du hast keine Berechtigung!");


    danke für Deine Hilfe.
    Nun kommt schonmal der Verwendung /admin text.
    Trotzdem wird mir der Text nicht angezeigt.

  • Du musst den Befehl aussplitten, sonst klappt das nicht:
    new cmd[20], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/admin", true, 6) == 0 || strcmp(cmd, "/a", true, 2) == 0)
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid, rot,"Du hast keine Berechtigung!");
    new tmp[20];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,gelb,"* Verwendung: /a(dmin) [text]");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    new string[100];
    format(string,sizeof(string),"{32CD32}**AChat: %s: %s",name,cmdtext[strlen(cmd)+1]);
    for(new ii=0; ii<MAX_PLAYERS; ii++) if(IsPlayerAnAdmin(playerid,1))SendClientMessage(ii,GetPlayerColor(playerid),string);
    print("Adminchat wurde ausgeführt");
    return 1;
    }


    Ganz unten in dem Gamemode:
    stock strtok(const string[], &index) //©Jeffry
    {
    new result[20], length = strlen(string), i = index;
    while ((i < length) && (string[i] == ' ')) i++;
    strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
    index++;
    return result;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Du musst den Befehl aussplitten, sonst klappt das nicht:

    Danke für Deine Hilfe.
    Ich bekomme leider folgende Errors:


    Code
    error 017: undefined symbol "params"
    C:\Users\***.pwn(1554) : error 047: array sizes do not match, or destination array is too small
    C:\Users\***.pwn(1559) : error 017: undefined symbol "params"
    C:\Users\***.pwn(1559) : error 047: array sizes do not match, or destination array is too small
    C:\Users\***.pwn(1553) : warning 203: symbol is never used: "idx"
    C:\Users\***.pwn(2697) : error 021: symbol already defined: "strtok"
    C:\Users\***.pwn(2702) : error 047: array sizes do not match, or destination array is too small
  • Das liegt dann daran, dass du strtok bereits definiert hast. Der Fehler mit params war ein Schreibfehler von mir.
    Schreibe es so:


    new cmd[20], idx;
    cmd = strtok2(cmdtext, idx);
    if(strcmp(cmd, "/admin", true, 6) == 0 || strcmp(cmd, "/a", true, 2) == 0)
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid, rot,"Du hast keine Berechtigung!");
    new tmp[20];
    tmp = strtok2(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,gelb,"* Verwendung: /a(dmin) [text]");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    new string[100];
    format(string,sizeof(string),"{32CD32}**AChat: %s: %s",name,cmdtext[strlen(cmd)+1]);
    for(new ii=0; ii<MAX_PLAYERS; ii++) if(IsPlayerAnAdmin(playerid,1))SendClientMessage(ii,GetPlayerColor(playerid),string);
    print("Adminchat wurde ausgeführt");
    return 1;
    }


    stock strtok2(const string[], &index) //©Jeffry
    {
    new result[20], length = strlen(string), i = index;
    while ((i < length) && (string[i] == ' ')) i++;
    strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
    index++;
    return result;
    }


    Dann sollte es gehen.