Map Port 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
  • Hallo :)


    Ich habe eine Frage. Wie kann ich einen Befehl scripten der mich dann an die angegebene Position teleportiert nachdem ich auf der Map im ESC Menü einen Punkt gesetzt habe. Ich meine das so wie auf Spitnex-Deathmatch mit dem /mapport befehl. Ich habe mir da etwas mit OnPlayerClickMap gedacht aber da kann man keinen Befehl erstellen. Könntet ihr mir da bitte weiter helfen. Danke. :)

  • Willkommen auf Breadfish!


    Das kannst du so machen:
    Unter den Includes:
    new Float:clickPos[MAX_PLAYERS][3];


    OnPlayerClickMap:
    public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
    {
    clickPos[playerid][0] = fX;
    clickPos[playerid][1] = fY;
    clickPos[playerid][2] = fZ;
    return 1;
    }


    Befehl:
    ocmd:mapport(playerid)
    {
    return SetPlayerPos(playerid, clickPos[playerid][0], clickPos[playerid][1], clickPos[playerid][2]);
    }

  • So klappt es auch:


    public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    SetPlayerPosFindZ(playerid, fX, fY, fZ);
    }
    else if(IsPlayerInAnyVehicle(playerid))
    {
    new Babatz = GetPlayerVehicleID(playerid);
    new Batz = GetPlayerVehicleSeat(playerid);
    SetVehiclePos(Babatz,fX,fY,fZ);
    PutPlayerInVehicle(playerid,Babatz,Batz);
    }
    return 1;
    }


    Mit freundlichen Grüßen
    German_ScripterHD


  • #define DIALOG_TPFRAGE



    public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
    {
    if(!isPlayerAnAdmin(playerid,3))return 1;
    SetPVarFloat(playerid,"tpx",fX);
    SetPVarFloat(playerid,"tpy",fY);
    ShowPlayerDialog(playerid,DIALOG_TPFRAGE,DIALOG_STYLE_MSGBOX,"Teleportieren","Möchtest du dich zu der gesetzten Markierung teleportieren?","Ja","Nein");
    return 1;
    }



    if(dialogid == DIALOG_TPFRAGE)
    {
    if(response)
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    SetPlayerInterior(playerid,0);
    SetPlayerPosFindZ(playerid,GetPVarFloat(playerid,"tpx"),GetPVarFloat(playerid,"tpy"),200);
    SetTimerEx("tptimer",500,0,"i",playerid);
    s_TogglePlayerControllable(playerid,0);
    HackInfo[playerid][EnterFreezeVar] = 2;
    DeletePVar(playerid,"tpx");
    DeletePVar(playerid,"tpy");
    }
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Float:x; new Float:y; new Float:z,vehid;
    SetPlayerPosFindZ(playerid,GetPVarFloat(playerid,"tpx"),GetPVarFloat(playerid,"tpy"),200);
    vehid=GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid, x, y, z);
    SetVehiclePos(vehid, x,y,z);
    s_PutPlayerInVehicle(playerid,vehid,0);
    SetPlayerInterior(playerid,0);
    LinkVehicleToInterior(vehid,0);
    SetTimerEx("tptimer",500,0,"i",playerid);
    s_TogglePlayerControllable(playerid,0);
    HackInfo[playerid][EnterFreezeVar] = 2;
    DeletePVar(playerid,"tpx");
    DeletePVar(playerid,"tpy");
    }
    }
    }

    Bittesehr :)

  • ryaN.iXi: Du musst dem Dialog auch noch eine ID geben, sonst geht es nicht. ;)


    #define DIALOG_TPFRAGE 1337


    Ich weiß hab ich bei mir schon definiert gemacht, aber er soll sein Kopf anstrengen immerhin soll er ja auch was lernen, außerdem weiß ich nicht, wieviele Dialoge er hat, wenn ich da einfach eine große Zahl eingebe, das sieht auch scheiße aus.

  • Danke für die Hilfe :) 8o
    Es hat funktioniert aber ich spawne manchmal etwas weiter weg von der Markierung kann man das auch irgendwie fixxen und ist das normal das man erstmal unter dem boden ist also fliegt? Kann man das umgehen?

    Einmal editiert, zuletzt von Smoot ()

  • ist das normal das man erstmal unter dem boden ist also fliegt? Kann man das umgehen?


    Du kannst einen kurzen Timer setzen (100ms) der den gleichen Code aus dem Callback nochmal ausführt (gegebenenfalls mit SetPlayerPosFindZ).
    Wenn man weit von der Position weg ist klappt es nicht immer richtig, dann muss der Code nochmal ausgeführt werden, dann klappt es.

  • Ich kriege leider diese errors




    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(662) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(687) : error 010: invalid function or declaration
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(690) : error 010: invalid function or declaration
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(691) : error 010: invalid function or declaration
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(693) : error 010: invalid function or declaration
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1136) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1159) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1285) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1412) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1888) : warning 203: symbol is never used: "vID"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.

    3 Mal editiert, zuletzt von Smoot ()

  • Ich habe es selbst probiert zu beheben und habe diese errors bekommen



    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(662) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(687) : error 010: invalid function or declaration
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(690) : error 010: invalid function or declaration
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(691) : error 010: invalid function or declaration
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1135) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1158) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1284) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1411) : warning 219: local variable "vID" shadows a variable at a preceding level
    C:\Users\ante valentic\Desktop\SAMP SERVER\gamemodes\Reallife.pwn(1887) : warning 203: symbol is never used: "vID"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.


    Das ist der befehl




    ocmd:mapport(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,0xFF0000FF,"Du bist kein Admin.");
    SetPlayerPosFindZ(playerid,clickPos[playerid][0],clickPos[playerid][1],clickPos[playerid][2]);
    return 1;
    }
    else
    {
    new vID;
    vID = GetPlayerVehicleID(playerid);
    if(IsPlayerInAnyVehicle(playerid);
    SetVehiclePos(vID,clickPos[playerid][0],clickPos[playerid][1],clickPos[playerid][2]);
    }

  • ocmd:mapport(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,0xFF0000FF,"Du bist kein Admin.");
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetPlayerPosFindZ(playerid,clickPos[playerid][0],clickPos[playerid][1],clickPos[playerid][2]);
    }
    else
    {
    new vID = GetPlayerVehicleID(playerid);
    SetVehiclePos(vID,clickPos[playerid][0],clickPos[playerid][1],clickPos[playerid][2]);
    }
    return 1;
    }

  • Danke sehr, wenn ich das Map Andreas Plugin habe, kann ich dann einfach anstatt SetPlayerPosFindZ und SetVehiclePos MapAndreas_FindZ_For2DCoord benutzn oder gilt es nur für Spieler? Also wie muss der Befehl dann aussehen?

  • ocmd:mapport(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,0xFF0000FF,"Du bist kein Admin.");
    MapAndreas_FindZ_For2DCoord(clickPos[playerid][0], clickPos[playerid][1], clickPos[playerid][2]);
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetPlayerPos(playerid, clickPos[playerid][0], clickPos[playerid][1], clickPos[playerid][2]);
    }
    else
    {
    new vID = GetPlayerVehicleID(playerid);
    SetVehiclePos(vID,clickPos[playerid][0],clickPos[playerid][1],clickPos[playerid][2]);
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen