Wie teleportiert man ein Mensch mit sein Auto

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
  • Guten Abend.
    Ich will ein PaynSpray System scripten. Also wenn man vor ein PNS steht, soll man ein Befehl "/repair" eingeben und dann wird ein das Geld abgezogen. Dann wird man in den PaynSpray reinteleportiert und dann wird es ganz normal Repariert. Dann wird das Auto wieder dahin teleportiert wo es vorher auch Stand. Dann ist das Auto wieder heile. Ich weiß nur nicht wie ich das Scripten soll.
    (Das System soll bewirken, dass die Reparatur teurer ist als nur 100$.)


    Frage 1: Wie kann ich ein Auto + Mensch in den PNS teleportieren. (Mit welchen ScriptBefehlen)
    Frage 2; Wie kann ich das Scripten, dass die Reparatur Geld kostet und das Geld Automatisch von den Spieler abgezogen wird.


  • Ich würd's mal so probieren.
    1)

    if(IsPlayerInAnyVehicle(playerid))
    SetVehiclePos(...)

    2)

    ocmd:repair(playerid,params[])
    {
    GivePlayerMoney(playerid,-50000000)
    GameTextForPlayer(playerid,"-5000000 $", 3000, 3);
    }

    1)ste kann falsch sein.
    2) Muss richtig sein.^^


    lg :thumbup:


    #E: " vergessen.
    #E: 2) SetVehiclePos nicht SetPlayerPos.

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Ich habe das jetzt so gemacht:
    ocmd:repair(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,10,1963.0222,2162.1836,10.8203))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetVehiclePos(vehicleid,1974.9702,2162.5818,11.0703);
    GivePlayerMoney(playerid,-2000);
    GameTextForPlayer(playerid,"-2000 $", 3000, 3);
    return 1;
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,FRot,"Du bist nicht in der nähe eines Pay N Spray's.");
    return 0;
    }
    }


    Dieser Error:
    C:\Users\Marlon\Desktop\Games\GTA\Scripten\Script\gamemodes\Reallifescript.pwn(564) : error 017: undefined symbol "vehicleid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Der Abschnitt nach else soll das sein, wenn der Spieler nicht in der Nähe des Punktes ist.

  • Und vom wem die VehicleID herauslesen?
    Natürlich von playerid. ;)

    new vehicleid = GetPlayerVehicleID(playerid);


    lg :thumbup:


    #E: lg vergessen :o

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Geht leider immernoch nicht:
    Errors:
    C:\Users\Marlon\Desktop\Games\GTA\Scripten\Script\gamemodes\Reallifescript.pwn(564) : error 017: undefined symbol "vehicleid"
    C:\Users\Marlon\Desktop\Games\GTA\Scripten\Script\gamemodes\Reallifescript.pwn(565) : error 017: undefined symbol "vehicleid"
    C:\Users\Marlon\Desktop\Games\GTA\Scripten\Script\gamemodes\Reallifescript.pwn(566) : error 017: undefined symbol "vehicleid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.
    Befehl:
    ocmd:repair(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,10,1963.0222,2162.1836,10.8203))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    PutPlayerInVehicle(playerid,vehicleid,0);
    SetPlayerPos(vehicleid,1974.9702,2162.5818,11.0703);
    SetVehiclePos(vehicleid,1974.9702,2162.5818,11.0703);
    GivePlayerMoney(playerid,-2000);
    GameTextForPlayer(playerid,"-2000 $", 3000, 3);
    return 1;
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,FRot,"Du bist nicht in der nähe eines Pay N Spray's.");
    return 0;
    }
    }

  • Benutze return nicht so oft, wenn du es garnicht brauchst. Ebenfalls musst du die Position des Spielers nicht setzen wenn er mit dem Auto teleportiert wird und schon gar nicht musst du ihn ins Auto setzen, wenn er schon drin ist. Ebenfalls solltest du klar deine Variablen definieren und einen Wert zuweisen. Die vehicleid ist die ID des Autos, in dem der Spieler sich befindet. Das wird hier nun zugewiesen, wenn der Spieler in der Nähe des Pay'n'Sprays ist und in einem Auto sitzt.



    ocmd:repair(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid == GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
    GivePlayerMoney(playerid, -2000);
    GameTextForPlayer(playerid, "-2000 $", 3000, 3);
    }
    }
    else
    {
    SendClientMessage(playerid, FRot, "Du bist nicht in der nähe eines Pay N Spray's.");
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hier müsste perfekt gehen :D



    ocmd:repair(playerid,params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203))return SendClientMessage(playerid,FRot,"Du bist nicht in der nehe eines PayN Spray's");
    if(IsPlayerInAnyVehicle(playerid))
    {
    {
    new vehicleid;
    SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
    GivePlayerMoney(playerid, -2000);
    GameTextForPlayer(playerid, "-2000 $", 3000, 3);
    }
    }
    return 1;
    }



    MfG Equ :P


  • ocmd:repair(playerid,params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203))return SendClientMessage(playerid,FRot,"Du bist nicht in der nehe eines PayN Spray's");
    if(IsPlayerInAnyVehicle(playerid))
    {
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
    GivePlayerMoney(playerid, -2000);
    GameTextForPlayer(playerid, "-2000 $", 3000, 3);
    }
    }
    return 1;
    }

  • ocmd:repair(playerid,params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203))return SendClientMessage(playerid,FRot,"Du bist nicht in der nehe eines PayN Spray's");
    if(IsPlayerInAnyVehicle(playerid))
    {
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
    GivePlayerMoney(playerid, -2000);
    GameTextForPlayer(playerid, "-2000 $", 3000, 3);
    }
    }
    return 1;
    }


    Das geht gut aber jetzt noch eine Sache. Das Auto muss nachdem es repairt wurde, wieder rausgeportet werden. Der muss das ja irgendwie erkennen, wenn das Auto fertig Repariert wurde. Vielleicht mit ein Timer, bloß ich habe noch nicht mit ein Timer gearbeitet und ich weiß nicht wie soetwas geht. :S
    X,Y,Z: 1963.0222,2162.1836,10.8203


  • /* Array für alle Spieler setzen, um Daten des Timers zu
    speichern. - Ansonsten wird der Timer schneller sein,
    wenn mehr Spieler connected sind. */
    new PNSTimerData[MAX_PLAYERS];


    ocmd:repair(playerid, params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203)) return SendClientMessage(playerid, FRot, "Du bist nicht in der nehe eines PayN Spray's");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, FRot, "Du musst in einem Auto sein, um den Pay'n'Spray zu nutzen.");
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
    /* Daten dem Array zuweisen und Timer Starten (Hier: 5 Sekunden). */
    PNSTimerData[playerid] = SetTimerEx("PNSTimer", 5000, "d", playerid);
    return 1;
    }


    /* Public's müssen ge'forwarded werden. Hier 'playerid' nicht vergessen, da wir die benötigen. */
    forward PNSTimer(playerid);
    public PNSTimer(playerid) // Callback des Timers deklarieren.
    {
    /* Auto zu den neuen Koordinaten teleportieren. */
    SetVehiclePos(GetPlayerVehicleID(playerid), 1963.0222, 2162.1836, 10.8203);
    GivePlayerMoney(playerid, -2000);
    GameTextForPlayer(playerid, "-2000 $", 3000, 3);
    }

  • Ich bekomme jetzt doch diesen einen Error:
    C:\Users\Marlon\Desktop\Games\GTA\Scripten\Script\gamemodes\Reallifescript.pwn(574) : error 035: argument type mismatch (argument 3)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Der Befehl:
    ocmd:repair(playerid, params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203)) return SendClientMessage(playerid, FRot, "Du bist nicht in der nehe eines PayN Spray's");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, FRot, "Du musst in einem Auto sein, um den Pay'n'Spray zu nutzen.");
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
    /* Daten dem Array zuweisen und Timer Starten (Hier: 5 Sekunden). */
    PNSTimerData[playerid] = SetTimerEx("PNSTimer", 5000, "d", playerid);
    }
    return 1;
    }


    In der Zeile 9 ist der Fehler

  • Mein Fehler, so müsste es funktionieren.

    /* Array für alle Spieler setzen, um Daten des Timers zu
    speichern. - Ansonsten wird der Timer schneller sein,
    wenn mehr Spieler connected sind. */
    new PNSTimerData[MAX_PLAYERS];


    ocmd:repair(playerid, params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid, 10, 1963.0222, 2162.1836, 10.8203)) return SendClientMessage(playerid, FRot, "Du bist nicht in der nehe eines PayN Spray's");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, FRot, "Du musst in einem Auto sein, um den Pay'n'Spray zu nutzen.");
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicleid, 1974.9702, 2162.5818, 11.0703);
    /* Daten dem Array zuweisen und Timer Starten (Hier: 5 Sekunden). */
    PNSTimerData[playerid] = SetTimerEx("PNSTimer", 5000, false, "d", playerid);
    return 1;
    }


    /* Public's müssen ge'forwarded werden. Hier 'playerid' nicht vergessen, da wir die benötigen. */
    forward PNSTimer(playerid);
    public PNSTimer(playerid) // Callback des Timers deklarieren.
    {
    /* Auto zu den neuen Koordinaten teleportieren. */
    SetVehiclePos(GetPlayerVehicleID(playerid), 1963.0222, 2162.1836, 10.8203);
    GivePlayerMoney(playerid, -2000);
    GameTextForPlayer(playerid, "-2000 $", 3000, 3);
    }

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