/admins befehl Admins anzeigen

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
  • Ich habe einen /admins befehl hier der Code:
    if (strcmp(cmdtext, "/admins", true) == 0)
    {
    SendClientMessage(playerid, -1, "*Team-Mitglieder Online:");


    new i = 0, aname[256], string[256];
    for(; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerAnAdmin(playerid,1))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Supporter auf Probe: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(playerid,2))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Supporter: %s", aname);
    SendClientMessage(playerid, -1, aname);
    }
    else if(isPlayerAnAdmin(playerid,3))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Moderator: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(playerid,4))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(playerid,5))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Super Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(playerid,6))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Full Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(playerid,7))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Head Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    }
    }
    return 1;
    }


    Es sind keine Errors/Warnings.
    Es wird beim Adminlevel 7 Probe Supporter angezeigt.


    Aber so soll das nicht sein

  • Ich weiß nicht ob das was bringt, habe das aber schon öfters gelesen.
    Fange mit den Abfragen von oben nach unten an, sprich so:
    if(isPlayerAnAdmin(playerid,7))
    {


    }
    else if(isPlayerAnAdmin(playerid,6))
    {


    }
    else if(isPlayerAnAdmin(playerid,5))
    {


    }
    //usw.
    Teste das mal.


    Als kleiner Hinweis noch:
    Du hattest den Array "aname" mit einer sehr großen Länge angegeben. Die maximale Länge für den Namen beträgt aber nur 24 Zeichen.
    Ebenfalls war die Länge für den Array "string" auch zu lang. Man kann maximal in einer Chat-Zeile 144 Zeichen ausgeben.


    EDIT:
    Du kannst das auch mit einer swich-Abfrage machen.

    Spoiler anzeigen
    if(!strcmp(cmdtext,"/admins",true))
    {
    SendClientMessage(playerid,-1,"* Team-Mitglieder Online:");
    new i,aname[MAX_PLAYER_NAME],string[144];
    for(;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConncted(i))continue;
    if(isPlayerAnAdmin(playerid,0))continue;
    GetPlayerName(i,aname,MAX_PLAYER_NAME);
    switch(isPlayerAnAdmin(playerid))
    {
    case 7:format(string,sizeof string,"Head Admin: %s",aname);
    case 6:format(string,sizeof string,"Full Admin: %s",aname);
    case 5:format(string,sizeof string,"Super Admin: %s",aname);
    case 4:format(string,sizeof string,"Admin: %s",aname);
    case 3:format(string,sizeof string,"Moderator: %s",aname);
    case 2:format(string,sizeof string,"Supporter: %s",aname);
    case 1:format(string,sizeof string,"Supporter auf Probe: %s",aname);
    }
    SendClientMessage(playerid,-1,string);
    }
    return 1;
    }

    2 Mal editiert, zuletzt von AirM4X ()

  • das liegt daran, das isPlayerAnAdmin(playerid,1) nur überprüft, ob er Spieler min. ein Rang hat
    also musst du die ränge umdrehen
    das höchste Oben und niedrigste unten

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Ich habe hier noch TextDraws.
    Es werden alle auf einmal angezeigt.
    new user[MAX_PLAYER_NAME];
    new probesup[MAX_PLAYER_NAME];
    new sup[MAX_PLAYER_NAME];
    new moderator[MAX_PLAYER_NAME];
    new admin[MAX_PLAYER_NAME];
    new superadmin[MAX_PLAYER_NAME];
    new fulladmin[MAX_PLAYER_NAME];
    new headadmin[MAX_PLAYER_NAME];
    if(isPlayerAnAdmin(playerid,7)) //adminlvl 4 =ServerOwner könnt auch 1337 Admin lvl
    {
    headadmin = "Head Admin";
    HeadAdmin[playerid] = Create3DTextLabel(headadmin,ADMINFARBE7,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(HeadAdmin[playerid], playerid, 0.0, 0.0, 0.45);
    }
    if(isPlayerAnAdmin(playerid,6))//adminlvl 1 =moderator :)
    {
    fulladmin = "Full Admin";
    FullAdmin[playerid] = Create3DTextLabel(fulladmin,ADMINFARBE6,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(FullAdmin[playerid], playerid, 0.0, 0.0, 0.45);
    }
    if(isPlayerAnAdmin(playerid,5))//adminlvl 2 =admin
    {
    superadmin= "Super Admin";
    SuperAdmin[playerid] = Create3DTextLabel(superadmin,ADMINFARBE5,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(SuperAdmin[playerid], playerid, 0.0, 0.0, 0.45);
    }
    if(isPlayerAnAdmin(playerid,4))//adminlvl 3=superadmin
    {
    admin = "Admin";
    Admin[playerid] = Create3DTextLabel(admin,ADMINFARBE4,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(Admin[playerid], playerid, 0.0, 0.0, 0.45);
    }
    if(isPlayerAnAdmin(playerid,3))
    {
    moderator = "Moderator";
    Moderator[playerid] = Create3DTextLabel(moderator,ADMINFARBE3,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(Moderator[playerid], playerid, 0.0, 0.0, 0.45);
    }
    if(isPlayerAnAdmin(playerid,2))
    {
    sup = "Supporter";
    Supporter[playerid] = Create3DTextLabel(sup,ADMINFARBE2,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(Supporter[playerid], playerid, 0.0, 0.0, 0.45);
    }
    if(isPlayerAnAdmin(playerid,1))
    {
    probesup = "Supporter auf Probe";
    ProbeSupporter[playerid] = Create3DTextLabel(probesup,ADMINFARBE1,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(ProbeSupporter[playerid], playerid, 0.0, 0.0, 0.45);
    }
    if(isPlayerAnAdmin(playerid,0))
    {
    user = "Normaler User";
    User[playerid] = Create3DTextLabel(user,-1,0,0,0,70.5,1);
    Attach3DTextLabelToPlayer(User[playerid], playerid, 0.0, 0.0, 0.45);
    }


    Keine Fehler oder Error-

  • Keine Errors? Wundert mich aber.
    So etwas deklariert man so:
    new Text3D:User[MAX_PLAYERS];
    So sieht eine Deklaration dafür aus. "User" kannst du dann halt dementsprechend umbenennen.
    Benutzt wird das dann so.
    User[playerid] = Create3DTextLabel(......);

  • Hier ich habe mir mal die Zeit genommen dir den Befehl umzuschreiben:
    ist allerdings OCMD heißt du müsstest dir das OCMD Include laden.



    ocmd:admins(playerid,params[])
    {
    new string[64],bool:online, adminrank[64];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerNPC(i))
    {
    switch(PlayerDaten[i][pAdminlevel])
    {
    case 1:{adminrank="Suporter auf Probe";}
    case 2:{adminrank="Supporer";}
    case 3:{adminrank="Moderator";}
    case 4:{adminrank="Admin";}
    case 5:{adminrank="Super Admin";}
    case 6:{adminrank="Full Admin";}
    case 7:{adminrank="Head Admin";}
    }
    if(online == false)
    {
    SendClientMessage(playerid,0x00B71EFF,"Teammitglieder online:");
    format(string,sizeof(string)," %s: %s(ID:%i)",adminrank, SpielerName(i), i);
    SendClientMessage(playerid,WEIS,string);
    online = true;
    }
    else
    {
    format(string,sizeof(string)," %s: %s(ID:%i)",adminrank, SpielerName(i), i);
    SendClientMessage(playerid,WEIS,string);
    }
    }
    }
    if(online == false)
    {
    SendClientMessage(playerid, DUNKELROT," Derzeit ist kein Teammitglied online.");
    }
    return 1;
    }



    Grüße

    Einmal editiert, zuletzt von Equ () aus folgendem Grund: Kleiner fehler

  • Fehlercode: C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(0) : fatal error 101: cannot write to file: "Deathmatch.amx"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.



    Aktueller Code:
    ocmd:admins(playerid,params[])
    {
    new string[64],bool:online, adminrank[64];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerNPC(i))
    if(isPlayerAnAdmin == 1 || 2 || 3 || 4 || 5 || 6 || 7)
    {
    switch(isPlayerAnAdmin)
    {
    case 1:{adminrank="Suporter auf Probe";}
    case 2:{adminrank="Supporer";}
    case 3:{adminrank="Moderator";}
    case 4:{adminrank="Admin";}
    case 5:{adminrank="Super Admin";}
    case 6:{adminrank="Full Admin";}
    case 7:{adminrank="Head Admin";}
    }
    if(online == false)
    {
    SendClientMessage(playerid,0x00B71EFF,"Teammitglieder online:");
    format(string,sizeof(string)," %s: %s(ID:%i)",adminrank, SpielerName(i), i);
    SendClientMessage(playerid,-1,string);
    online = true;
    }
    else
    {
    format(string,sizeof(string)," %s: %s(ID:%i)",adminrank, SpielerName(i), i);
    SendClientMessage(playerid,-1,string);
    }
    }
    }
    if(online == false)
    {
    SendClientMessage(playerid, ROT," Derzeit ist kein Teammitglied online.");
    }
    return 1;
    }

  • Equ:
    Was machst du da bitteschön?
    if(isPlayerAnAdmin == 1 || 2 || 3 || 4 || 5 || 6 || 7)

  • Völliger Schwachsinn. Deine Schleife war direkt am Anfang einfach falsch.


    So ist es richtig:


    if (strcmp(cmdtext, "/admins", true) == 0)
    {
    SendClientMessage(playerid, -1, "*Team-Mitglieder Online:");


    new i = 0, aname[256], string[256];
    for(; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerAnAdmin(i,1))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Supporter auf Probe: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(i,2))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Supporter: %s", aname);
    SendClientMessage(playerid, -1, aname);
    }
    else if(isPlayerAnAdmin(i,3))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Moderator: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(i,4))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(i,5))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Super Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(i,6))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Full Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    else if(isPlayerAnAdmin(i,7))
    {
    GetPlayerName(i, aname, sizeof(aname));
    format(string, 256, "Head Admin: %s", aname);
    SendClientMessage(playerid, -1, string);
    }
    }
    }
    return 1;
    }

  • Das eingefügt aber immernoch Fehler code.
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(0) : fatal error 101: cannot write to file: "Deathmatch.amx"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ocmd:admins(playerid,params[])
    {
    new string[64],bool:online, adminrank[64];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerNPC(i))
    {
    switch(GetPVarInt(playerid,"Adminlevel"))
    {
    case 1:{adminrank="Suporter auf Probe";}
    case 2:{adminrank="Supporer";}
    case 3:{adminrank="Moderator";}
    case 4:{adminrank="Admin";}
    case 5:{adminrank="Super Admin";}
    case 6:{adminrank="Full Admin";}
    case 7:{adminrank="Head Admin";}
    }
    if(online == false)
    {
    SendClientMessage(playerid,0x00B71EFF,"Teammitglieder online:");
    format(string,sizeof(string)," %s: %s(ID:%i)",adminrank, NamePlayer(i), i);
    SendClientMessage(playerid,-1,string);
    online = true;
    }
    else
    {
    format(string,sizeof(string)," %s: %s(ID:%i)",adminrank, NamePlayer(i), i);
    SendClientMessage(playerid,-1,string);
    }
    }
    }
    if(online == false)
    {
    SendClientMessage(playerid, -1," Derzeit ist kein Teammitglied online.");
    }
    return 1;
    }
    So funktioniert es oder?

  • Jop sollte.

  • Das Problem bei eurem Code ist das nicht abgefragt wird ob er Admin ist.
    Wenn ihr GetMaxPlayers verwenden wollt weil ihr zu faul seit das define MAX_PLAYERS zu ändern, dann solltet ihr den Rückgabewert einem platzhalter übergeben sonst wird die funktion durchgehend aufgerufen beim ausführen des Befehls.



    ocmd:admins(playerid,params[])
    {
    new string[64],bool:online,aRank;
    SendClientMessage(playerid,0x00B71EFF,"Teammitglieder");
    for(new i, j = GetMaxPlayers(); i != j; ++i){
    aRank = GetPVarInt(playerid,"Adminlevel");
    if(!aRank)continue;
    format(string,sizeof(string)," %s: %s(ID:%i)",GetAdminRank(aRank), NamePlayer(i), i);
    SendClientMessage(playerid,-1,string);
    online = true;
    }
    if(!online)SendClientMessage(playerid, -1," Derzeit ist kein Teammitglied online.");
    return 1;
    }

    GetAdminRank(rank){
    new adminrank[20] ="Unbekannt";
    switch(rank){
    case 1:adminrank="Supporter auf Probe";
    case 2:adminrank="Supporter";
    case 3:adminrank="Moderator";
    case 4:adminrank="Admin";
    case 5:adminrank="Super Admin";
    case 6:adminrank="Full Admin";
    case 7:adminrank="Head Admin";
    }
    return adminrank;
    }