/goto Befehl Problem

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
  • Also wie der Name schon sagt, habe ich ein Problem mit meinem /goto [ID] befehl.
    Ich habe diesen Befehl aus dem Filterscript(test_cmd's) entnommen. Und ihn etwas verändert, denn auf meinem Server sollen nur Admins diesen Befehl benutzen können. Das hat eignetlich auch ganz gut funktioniert nur zeigt es immer an: Du bist kein Admin Rang 3 obwohl der Befehl ausgeführt wurde.
    Das Script sieht so aus:
    if(strcmp( cmd, "/goto", true ) == 0)
    {
    if (GetPVarInt(playerid, "Adminlevel") >= 3)
    {
    new tmp[256];


    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp)) { return 1; }


    new Float:X, Float:Y, Float:Z;


    if(GetPlayerVehicleID(playerid))
    {
    GetPlayerPos( strval(tmp), X, Y, Z );
    SetVehiclePos( GetPlayerVehicleID(playerid), X+2, Y+2, Z );
    } else {
    GetPlayerPos( strval(tmp), X, Y, Z );
    SetPlayerPos( playerid, X+2, Y+2, Z );
    }

    SendClientMessage(playerid,rot,"Du bist kein Admin Rang 3!");
    return 1;
    }

    Kann mir da jemand helfen?

  • Probier's mal so

    if(strcmp( cmd, "/goto", true ) == 0)
    {
    if (GetPVarInt(playerid, "Adminlevel") >= 3)
    {
    new tmp[256];


    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp)) { return 1; }


    new Float:X, Float:Y, Float:Z;


    if(GetPlayerVehicleID(playerid))
    {
    GetPlayerPos( strval(tmp), X, Y, Z );
    SetVehiclePos( GetPlayerVehicleID(playerid), X+2, Y+2, Z );
    } else {
    GetPlayerPos( strval(tmp), X, Y, Z );
    SetPlayerPos( playerid, X+2, Y+2, Z );
    }


    else return SendClientMessage(playerid,rot,"Du bist kein Admin Rang 3!");
    return 1;
    }
    mfG
    Walker

  • if(strcmp(cmd, "/goto", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /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)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
    {
    if(Spectate[playerid] != 255)
    {
    Spectate[playerid] = 256;
    }
    GetPlayerPos(plo, plocx, plocy, plocz);
    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+2, plocz);
    }
    PlayerInfo[playerid][pLocal] = PlayerInfo[plo][pLocal];
    PlayerInfo[playerid][pInt] = PlayerInfo[plo][pInt];
    SetPlayerInterior(playerid,PlayerInfo[plo][pInt]);
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(plo));
    SendClientMessage(playerid, COLOR_GRAD1, " Du hast dich Teleportiert [Nutze es nicht aus, es wird in der Log. Angezeigt!]");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Admin!");
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein Aktiver Spieler.", plo);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    Damit dürfte es Funktionieren aber der Befehl ist für Admins Rang 1 gedacht müsstest du ändern,den Rang des Supporters einfach mit übernehmen.


    MfG
    Killstreet

    Das beste beim Diktieren ist, dass man Worte verwenden kann,



    von denen man keine Ahnung hat, wie sie geschrieben werden!


  • Ähm danke das ist ziemlich gut das verbessert meinen /goto Befehl sogar noch.
    Kannst du mir davon vielleicht auch noch einen /bring befehl machen, der mir einen Spieler zu mir Teleportiert?

  • if(strcmp(cmd, "/gethere", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /gethere [playerid]");
    return 1;
    }
    new Float:plocx,Float:plocy,Float:plocz;
    new plo;
    plo = ReturnUser(tmp);
    if (IsPlayerConnected(plo))
    {
    if(plo != INVALID_PLAYER_ID)
    {
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    GetPlayerPos(playerid, plocx, plocy, plocz);
    if (GetPlayerState(plo) == 2)
    {
    TelePos[plo][0] = 0.0;
    TelePos[plo][1] = 0.0;
    new tmpcar = GetPlayerVehicleID(plo);
    SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
    }
    else
    {
    SetPlayerPos(plo,plocx,plocy+2, plocz);
    }
    PlayerInfo[plo][pLocal] = PlayerInfo[playerid][pLocal];
    PlayerInfo[plo][pInt] = PlayerInfo[playerid][pInt];
    SetPlayerInterior(plo,PlayerInfo[playerid][pInt]);
    SetPlayerVirtualWorld(plo,GetPlayerVirtualWorld(playerid));
    SendClientMessage(plo, COLOR_GRAD1, " Du wurdest Teleportiert");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Admin!");
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein Aktiver Spieler.", plo);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    Hier ist das was du dir gewünscht hast.


    Wenn du noch etwas brauchst sag bescheid.


    MfG
    Killstreet

    Das beste beim Diktieren ist, dass man Worte verwenden kann,



    von denen man keine Ahnung hat, wie sie geschrieben werden!

  • Ja habe noch eine Frage und zwar bekomme ich 8 Errors bei dem /goto Code... Muss man da noch einige New's machen etwas definieren oder braucht man ein spezielles #include... Danke...
    Hier man die Errors:
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(31) : error 017: undefined symbol "tmp"
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(32) : error 017: undefined symbol "tmp"
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(34) : error 017: undefined symbol "COLOR_GRAD2"
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(39) : error 017: undefined symbol "ReturnUser"
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(44) : error 017: undefined symbol "PlayerInfo"
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(44) : warning 215: expression has no effect
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(44) : error 001: expected token: ";", but found "]"
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(44) : error 029: invalid expression, assumed zero
    C:\Dokumente und Einstellungen\Administrator\Desktop\Server\filterscripts\game.pwn(44) : fatal error 107: too many error messages on one line


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



    8 Errors.

  • Was ich aus diesen Error Codes lesen kann ist das einige sachen in dem /goto Befehl nicht definiert werden d.h z.B der COLOR_GRAD2 ist bei dir im Script nirgends eingetragen.


    Kannst mich ja in Skype Adden dann beheben wir dir diese Errors.


    MfG
    Killstreet


    PS: Skype achimedes21

    Das beste beim Diktieren ist, dass man Worte verwenden kann,



    von denen man keine Ahnung hat, wie sie geschrieben werden!