/goto nicht zu höheren Admins möglich

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 Breadfish,


    Ich bin im moment am Scripten lernen und stehe nun vor folgendem Problem. Habe mit Hilfe ein /goto Befehl gemacht. Nuch möchte ich aber, das /goto nicht zu höhreren Admins geht,


    Admin Rank 1 kann sich zu 1 Porten
    Admin rank 2 zu 2 und 1
    und immer so weiter.


    Ich weiß leider nicht genau was ich da reinschreiben muss und habe auch schon die Sufu genutzt. Ich hoffe ihr könnt mir helfen.
    Hier mein /goto befehl.



    if(strcmp(cmd, "/goto", true) == 0)
    {
    if(IsPlayerConnected(playerid) && PlayerInfo[playerid][pAdmin] >= 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /goto [playerid/PartOfName]");
    return 1;
    }
    new Float:plocx,Float:plocy,Float:plocz;
    new plo;
    plo = ReturnUser(tmp);
    if (IsPlayerConnected(plo))
    {
    if(plo != INVALID_PLAYER_ID)
    {
    GetPlayerPos(plo, plocx, plocy, plocz);
    SetPlayerInterior(playerid, GetPlayerInterior(plo));
    PlayerInfo[playerid][pInt] = GetPlayerInterior(plo);
    SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(plo));
    if(GetPlayerState(playerid) == 2)
    {
    new tmpcar = GetPlayerVehicleID(playerid);
    SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
    TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
    }
    else
    {
    SetPlayerPos(playerid, plocx, plocy, plocz);
    }
    SendClientMessage(playerid, COLOR_YELLOW, " Teleport!");
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(plo, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), " AdmCmd: Admin %s hat sich zu %s teleportiert.", sendername, giveplayer);
    AdminLog(string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Unbekannte ID");
    return 1;
    }
    }
    }


    Danke im Vorraus

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)

  • if(PlayerInfo[plo][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,COLOR_X,"Der Spieler hat ein höheres Adminlevel als du!");


    So ungefähr?
    Einfach in den Code einfügen.
    //Edit: Und natürlich die Farbe ersetzen.


    Grüße,
    tonyalva

  • if(PlayerInfo[plo][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,COLOR_X,"Der Spieler hat ein höheres Adminlevel als du!");


    So ungefähr?
    Einfach in den Code einfügen.
    //Edit: Und natürlich die Farbe ersetzen.


    Grüße,
    tonyalva


    Leider klappt das nicht. Ich habe das nun so in mein /goto Befehl eingebaut.



    if(strcmp(cmd, "/goto", true) == 0)
    {
    if(IsPlayerConnected(playerid) && PlayerInfo[playerid][pAdmin] >= 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /goto [playerid/PartOfName]");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] > PlayerInfo[playerid][pAdmin])
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Der Spieler hat ein höheres Adminlevel als du!");
    return 1;
    }
    new Float:plocx,Float:plocy,Float:plocz;
    new plo;
    plo = ReturnUser(tmp);
    if (IsPlayerConnected(plo))
    {
    if(plo != INVALID_PLAYER_ID)
    {
    GetPlayerPos(plo, plocx, plocy, plocz);
    SetPlayerInterior(playerid, GetPlayerInterior(plo));
    PlayerInfo[playerid][pInt] = GetPlayerInterior(plo);
    SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(plo));
    if(GetPlayerState(playerid) == 2)
    {
    new tmpcar = GetPlayerVehicleID(playerid);
    SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
    TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
    }
    else
    {
    SetPlayerPos(playerid, plocx, plocy, plocz);
    }
    SendClientMessage(playerid, COLOR_YELLOW, " Teleport!");
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(plo, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), " AdmCmd: Admin %s hat sich zu %s teleportiert.", sendername, giveplayer);
    AdminLog(string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Unbekannte ID");
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du bist nicht berechtigt, diesen Befehl zu benutzen !");
    return 1;
    }
    }

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)

  • Zitat

    if(PlayerInfo[playerid][pAdmin] > PlayerInfo[playerid][pAdmin])


    Du fragst auch ab, ob das Adminlevel von "playerid" höher ist als das von "playerid".
    Schau Dir mal an, wie ich es geschrieben habe.
    Du musst prüfen, ob der Wert von der Person, zu der Du dich portest höher ist :)


    Grüße,
    tonyalva

  • if(PlayerInfo[plo][pAdmin] > PlayerInfo[playerid][pAdmin])


    dann sagt er mit das er "plo" nicht kennt.

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)

  • Trozdem kann sich ein Rank 2 Admin zum Fulladmin porten.

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)

  • if(PlayerInfo[playerid][pAdmin] > PlayerInfo[playerid][pAdmin]) { SendClientMessage(playerid,COLOR_GRAD2,"Der Spieler hat ein höheres Adminlevel als du!"); return 1; }

    zu
    if(PlayerInfo[playerid][pAdmin] > PlayerInfo[playerid][pAdmin]) { return SendClientMessage(playerid,COLOR_GRAD2,"Der Spieler hat ein höheres Adminlevel als du!"); }


  • if(strcmp(cmd, "/goto", true) == 0)
    {
    if(IsPlayerConnected(playerid) && PlayerInfo[playerid][pAdmin] >= 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /goto [playerid/PartOfName]");
    return 1;
    }
    if(PlayerInfo[giveplayerid][pAdmin] > PlayerInfo[playerid][pAdmin])
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Der Spieler hat ein höheres Adminlevel als du!");
    return 1;
    }
    new Float:plocx,Float:plocy,Float:plocz;
    new plo;
    plo = ReturnUser(tmp);
    if (IsPlayerConnected(plo))
    {
    if(plo != INVALID_PLAYER_ID)
    {
    GetPlayerPos(plo, plocx, plocy, plocz);
    SetPlayerInterior(playerid, GetPlayerInterior(plo));
    PlayerInfo[playerid][pInt] = GetPlayerInterior(plo);
    SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(plo));
    if(GetPlayerState(playerid) == 2)
    {
    new tmpcar = GetPlayerVehicleID(playerid);
    SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
    TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
    }
    else
    {
    SetPlayerPos(playerid, plocx, plocy, plocz);
    }
    SendClientMessage(playerid, COLOR_YELLOW, " Teleport!");
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(plo, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), " AdmCmd: Admin %s hat sich zu %s teleportiert.", sendername, giveplayer);
    AdminLog(string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Unbekannte ID");
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du bist nicht berechtigt, diesen Befehl zu benutzen !");
    return 1;
    }
    }

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)

  • if(strcmp(cmd, "/goto", true) == 0)
    {
    if(IsPlayerConnected(playerid) && PlayerInfo[playerid][pAdmin] >= 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /goto [playerid/PartOfName]");
    return 1;
    }
    new plo,Float:plocx,Float:plocy,Float:plocz;
    plo = ReturnUser(tmp);
    if(PlayerInfo[plo][pAdmin] > PlayerInfo[playerid][pAdmin])
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Der Spieler hat ein höheres Adminlevel als du!");
    return 1;
    }
    if (IsPlayerConnected(plo))
    {
    if(plo != INVALID_PLAYER_ID)
    {
    GetPlayerPos(plo, plocx, plocy, plocz);
    SetPlayerInterior(playerid, GetPlayerInterior(plo));
    PlayerInfo[playerid][pInt] = GetPlayerInterior(plo);
    SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(plo));
    if(GetPlayerState(playerid) == 2)
    {
    new tmpcar = GetPlayerVehicleID(playerid);
    SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
    TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
    }
    else
    {
    SetPlayerPos(playerid, plocx, plocy, plocz);
    }
    SendClientMessage(playerid, COLOR_YELLOW, " Teleport!");
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(plo, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), " AdmCmd: Admin %s hat sich zu %s teleportiert.", sendername, giveplayer);
    AdminLog(string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Unbekannte ID");
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du bist nicht berechtigt, diesen Befehl zu benutzen !");
    return 1;
    }
    }


    Du darfst "plo" auch nicht benutzen, bevor du es neu definiert hast.
    Für die, die sagen "versuch es doch mit giveplayerid", hier steht doch klar:

    Zitat

    plo = ReturnUser(tmp);


    Grüße,
    tonyalva

  • Um Abstürze vorzubeugen, empfehle ich dir folgendes:
    Schreibe den Teil

    if(PlayerInfo[plo][pAdmin] > PlayerInfo[playerid][pAdmin])
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Der Spieler hat ein höheres Adminlevel als du!");
    return 1;
    }

    in

    if (IsPlayerConnected(plo))

  • Es klappt. Vielen dank :love:

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)