[HILFE] /tp 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
  • Jo ich wollte für meinen Server einen /tp Befehl machen .. Ich habe zwar das meißte geschafft aber ich kriegs mit dem teleportieren nicht hin :(




    ocmd:tp(playerid,params[])
    {
    new NAME[MAX_PLAYER_NAME],PID,string[128];
    if(sscanf(params,"u[128]",PID))return SendClientMessage(playerid,GELB,"INFO : /tp [ID]");
    if(!IsPlayerConnected(PID)) return SendClientMessage(playerid, ROT, "Dieser Spieler ist nicht verfügbar.");


    GetPlayerName(PID,NAME,sizeof(NAME));
    format(string,sizeof(string),"Du hast dich zu %s(%d) teleportiert.",NAME,PID);
    SendClientMessage(playerid,GELB,string);


    GetPlayerName(playerid,NAME,sizeof(NAME))
    format(string,sizeof(string),"Admin %s(d%) hat sich zu dir teleportiert.",NAME,playerid);
    SendClientMessage(PID,GELB,string);
    return 1;
    }
    Ich habs so gemacht (ohne Teleport) .. Wie füg ich es ein das man sich teleportiert (zu einem anderen Spieler..) ?
    Ich bitte um Hilfe !


    MfG TurnerStylz

    Einmal editiert, zuletzt von TurnerStylz ()

  • Du fragst die Position vom anderen Spieler ab. GetPlayerPos. Anschließend setzt du dann deine Position zu den Koordinaten des anderen Spielers. SetPlayerPos oder wenn du im Auto bist SetVehiclePos

  • Habs jetzt so gemacht ..



    ocmd:tp(playerid,params[])
    {
    new NAME[MAX_PLAYER_NAME],PID,string[128],Float:x,Float:y,Float:z;
    if(sscanf(params,"u[128]",PID))return SendClientMessage(playerid,GELB,"INFO : /tp [ID]");
    if(!IsPlayerConnected(PID)) return SendClientMessage(playerid, ROT, "Dieser Spieler ist nicht verfügbar.");


    GetPlayerPos(PID,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    SetVehiclePos(playerid,x,y,z);


    GetPlayerName(PID,NAME,sizeof(NAME));
    format(string,sizeof(string),"Du hast dich zu %s(%d) teleportiert.",NAME,PID);
    SendClientMessage(playerid,GELB,string);


    GetPlayerName(playerid,NAME,sizeof(NAME))
    (error zeile ->) format(string,sizeof(string),"Admin %s(d%) hat sich zu dir teleportiert.",NAME,playerid);
    SendClientMessage(PID,GELB,string);
    return 1;
    }


    Ist das so richtig ?

    Einmal editiert, zuletzt von TurnerStylz ()

  • schreibe den befehl mal so, zudem sölltest du dir sscanf mal andehen, wie ich schonmal sagte, das ist kein string!
    Zudem mach es mal so mit den Variablen, da sparst du dir varis.

    ocmd:tp(playerid,params[])
    {
    new NAME[MAX_PLAYER_NAME],PID,string[128],Float:Pos[3];
    if(sscanf(params,"u",PID))return SendClientMessage(playerid,GELB,"INFO : /tp [ID]");
    if(!IsPlayerConnected(PID)) return SendClientMessage(playerid, ROT, "Dieser Spieler ist nicht verfügbar.");

    GetPlayerPos(PID,Pos[0],Pos[1],Pos[2]);
    SetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    SetVehiclePos(playerid,Pos[0],Pos[1],Pos[2]);


    GetPlayerName(PID,NAME,sizeof(NAME));
    format(string,sizeof(string),"Du hast dich zu %s(%d) teleportiert.",NAME,PID);
    SendClientMessage(playerid,GELB,string);


    GetPlayerName(playerid,NAME,sizeof(NAME))
    format(string,sizeof(string),"Admin %s(d%) hat sich zu dir teleportiert.",NAME,playerid);
    SendClientMessage(PID,GELB,string);
    return 1;
    }

  • Code
    SetVehiclePos(playerid,Pos[0],Pos[1],Pos[2]); <- das auf keinen Fall rein tun, ist schwachsinn und kann nicht funktionieren.
    
    
    Frage ab ob der Spieler überhaupt in einem Auto ist mit IsPlayerInAnyVehicle, wenn ja dann kommt der Code zwischen den { } Klammern. 
    Also SetVehiclePos("Hier brauchst du die ID des Autos",Pos[0],Pos[1],Pos[2]);
    ID des Fahrzeuges bekommst du mit GetPlayerVehicleID. Ansonsten solltest du auch abfragen in welcher Virtuellen Welt und in welchem Interior der andere Spieler ist.
    Anschließend setzt du die VW und das Interior für dich.