/makeadmin Befehl

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
  • Moin!


    Ich war gerade dabei ein Makeadmin - Befehl zu erstellen (mit strget).
    Das hat auch alles super funktioniert, aber da der Befehl rund 40 Zeilen braucht,
    wollte ich das Suchen nach dem Spieler in einen Stock packen.


    Hier der eigentliche Befehl:

    if(strcmp(strget(cmdtext,0),"/makeadmin",true)==0)
    {
    if(Spieler[playerid][Adminlevel]!=5) return SendClientMessage(playerid,ERROR,"Du bist dazu nicht berechtigt.");
    if(strlen(strget(cmdtext,1))==0||strlen(strget(cmdtext,2))==0) return SendClientMessage(playerid,ERROR,"Benutze: /makeadmin [Spieler] [Rank]");
    new Rank;
    new pID;
    Rank=strval(strget(cmdtext,2));
    SpielerSuchen(playerid,strget(cmdtext,1),pID);
    Spieler[pID][Adminlevel]=Rank;
    new string[50];
    format(string,sizeof(string),"%s hat %s zum Admin %i gemacht.",SpielerName(playerid),SpielerName(pID),Rank);
    SendClientMessageToAll(ERROR,string);
    format(string,sizeof(string),"%s hat dich zum Admin %i gemacht.",SpielerName(playerid),Rank);
    SendClientMessage(pID,ERROR,string);
    return 1;
    }



    Hier der eigen erstellte Stock:

    stock SpielerSuchen(playerid,text[],pssaaas)
    {
    if(IsNumeric(text)) pssaaas=strval(text);
    else
    {
    new anzahl;
    new stringpID[MAX_PLAYER_NAME+1];
    format(stringpID,sizeof(stringpID),"%s",text);
    for(new ID=0;ID<MAX_PLAYERS;ID++)
    {
    if(IsPlayerConnected(ID))
    {
    if(strfind(SpielerName(ID),stringpID,true,0)!=-1)
    {
    anzahl++;
    pssaaas=ID;
    }
    }
    }
    if(anzahl!=1) return SendClientMessage(playerid,ERROR,"Spieler wurde nicht gefunden.");
    else if(!IsPlayerConnected(pssaaas)) return SendClientMessage(playerid,ERROR,"Spieler wurde nicht gefunden.");
    }
    return pssaaas;
    }



    Das Problem:
    Sobald ein Error kommt (Kein Spieler gefunden, die ID nicht gefunden etc.) wird der Stock beendet
    und pID wird als ID ausgeführt. da eine neue Variable standartmäßig 0 ist,
    wird dann zwar der Text "Spieler wurde nicht gefunden" angezeigt, aber Spieler mit der ID 0 bekommt
    den Admintitel den man angibt.


    Danke für die Hilfe :thumbup:


    // Push bitte!

    Einmal editiert, zuletzt von Pille ()

  • if(anzahl!=1)
    {
    SendClientMessage(playerid,ERROR,"Spieler wurde nicht gefunden.");
    return -1;
    }
    else if(!IsPlayerConnected(pssaaas))
    {
    SendClientMessage(playerid,ERROR,"Spieler wurde nicht gefunden.");
    return -1;
    }



    an die entsprechenden Stellen.