Brauche Hilfe bei Destroy Vehicle

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 Leute,
    ich habe in meinem GM einen Befehl drinne um einen Turismo zu spawnen.
    Allerdings will ich das wenn man den Turismo verlässt, das Auto automatisch wieder entfernt wird.
    Ich weiß es würde mit DestroyVehicle gehen, allerdings will ich es nur für den Turismo so haben.
    Da man es nicht gerade gebrauchen kann auf einem TDM Server, das aufeinmal dein Auto verschwindet.
    Also wie schaffe ich es, den Turismo entfernen zu lassen, sobald ich ihn verlasse?
    Schonmal nen Danke im Vorraus ;)

  • Also wenn ich dich richtig verstehe, willst du, wenn du aus deinem Turismo aussteigst, das dieser dann verschwindet?
    Das geht so:


    Im Header fügst du diese Variable ein:
    new Turismo; // Mit dieser Variable kannst du später nur ein gewünschtes Fahrzeug entfernen


    Dann unter
    OnGameModeInit()


    das hier:
    Turismo = CreateVehicle(451,X,Y,Z,A,-1,-1,30); // Hier wird das Fahrzeug erstellt/erzeugt
    // X, Y, Z und A stehen für die Koordinaten und Blickrichtung (A) des Fahrzeuges
    // -1 und -1 stehen für jede Farbe, also das Fahrzeug hat jedesmal eine andere Farbe
    // Die 30 steht für die Sekunden wenn das Fahrzeug verlassen wird, dass es nach 30 Sekunden wieder erzeugt wird


    Dann fügst du unter
    OnPlayerExitVehicle(playerid, vehicleid)


    das ein:
    if(vehicleid == Turismo)
    {
    DestroyVehicle(Turismo); // Hier, mit diesem Code wird nur der Turismo entfernt.
    }


    Ich habe das ganze noch nicht getestet, sollte aber funktonieren. :D


    Wenn du jetzt allerdings in den Turismo einsteigst, und wieder aussteigst, wird natütlich dann das Fahrzeug entfernt, kommt aber nicht wieder.
    Falls du das so haben möchtest, wenn der Turismo entfernt wird und nach einer Minute wieder erzeugt wird, schreib einfach nochmal hier in das Thema, ich/wir werden versuchen dir weiterzuhelfen. :D

  • Ähm funktioniert das auch so, wenn ich das als Befehl habe:


    if (strcmp("/turismo", cmdtext, true, 8 )== 0)
    {
    new Float:X,Float:Y,Float:Z,Float:Angle, carid;
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,Angle);
    carid = GetPlayerVehicleID(playerid);
    carid = CreateVehicle(451,X,Y,Z,Angle,-1,-1,600);
    PutPlayerInVehicle(playerid,carid,0);
    TogglePlayerControllable(playerid,true);
    return SendClientMessage(playerid, COLOR_STAFF, "Turismo wurde gespawnt!");
    }


    //Edit:
    Ich will es halt nur für den Turismo haben, den ich per Befehl hole

    Einmal editiert, zuletzt von Nicorotom ()

  • Meinst du, wenn man den Befehl ausführt, dass dann der Turismo erzeugt wird und wenn man dann einsteigt und wieder aussteigt, dass der Turismo enfernt wird oder wie? :D


    Dann einfach unter
    OnPlayerExitVehicle(playerid, vehicleid)


    das hier:
    if(vehicleid == carid) // Eigenschaften beim aussteigen des Turismos
    {
    DestroyVehicle(carid); // NUR der Turismo wird beim aussteigen entfernt
    }


    Meinst du das jetzt so? Ich verstehe jetzt nämlich nicht so ganz was du meinst... :D

  • Also:


    Ich gebe den Befehl ein
    Nun sitze ich automatisch im Turismo
    Wenn ich nun aussteige soll der Wagen verschwinden damit kein anderer den Wagen nehmen kann


    //Edit:
    Das Problem ist ja, ich kann bei OnGameModeInit nicht das einfügen was du sagtest, da der Turismo ja per Befehl geholt wird.

  • Also, du hast ja diesen Befehl um den Turismo zu erstellen/erzeugen:
    if (strcmp("/turismo", cmdtext, true, 8 )== 0)
    {
    new Float:X,Float:Y,Float:Z,Float:Angle, carid;
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,Angle);
    carid = GetPlayerVehicleID(playerid);
    carid = CreateVehicle(451,X,Y,Z,Angle,-1,-1,600);
    PutPlayerInVehicle(playerid,carid,0);
    TogglePlayerControllable(playerid,true);
    return SendClientMessage(playerid, COLOR_STAFF, "Turismo wurde gespawnt!");
    }


    Jetzt fügst unter
    OnPlayerExitVehicle(playerid, vehicleid)


    das ein:
    if(vehicleid == carid) // Eigenschaften beim aussteigen des Turismos
    {
    DestroyVehicle(carid); // NUR der Turismo wird beim aussteigen entfernt
    }


    Wenn du nun den Befehl eingibst, erzeugst du einen Turismo, und wirst automatisch in den Turismo als Fahrer gebracht. Wenn du nun aussteigst, wird NUR der Turismo enfernt.
    Hoffe ich konnte dir helfen. Wenn nicht, schreib nochmal, dann helfe ich dir wieder gerne. :D

  • Ok habe es so gemacht.
    Beim compilen kommt dieser Error
    D:\gta server\0.3\gamemodes\test.pwn(285) : error 017: undefined symbol "carid"
    D:\gta server\0.3\gamemodes\test.pwn(287) : error 017: undefined symbol "carid"


    //Edit:
    Habe oben nun eingetragen new carid
    nun kommt diese Warnung:
    D:\gta server\0.3\gamemodes\test.pwn(245) : warning 219: local variable "carid" shadows a variable at a preceding level
    D:\gta server\0.3\gamemodes\test.pwn(256) : warning 219: local variable "carid" shadows a variable at a preceding level

    Einmal editiert, zuletzt von Nicorotom ()

  • Du hast ja in deinem Befehl diese Zeile:
    new Float:X,Float:Y,Float:Z,Float:Angle, carid;


    Die Variable "carid" darf nicht in dem Befehl vorkommen, nur oben im Header.


    Lösche nun die Variable carid, es sollte dann so aussehen:
    new Float:X,Float:Y,Float:Z,Float:Angle;


    Jetzt fügst du ganz oben (im "Header") in deinem Script das ein:
    new carid;


    Danach sollte das Problem gelöst sein. :D

  • Ok danke danke ;)
    Funktioniert nun alles ;)


    Kann ich jetzt den gleichen Code auch für meinen Hunter benutzen??


    //Edit:
    Hat sich erledigt, funktioniert auch, da der Hunter den gleichen Befehl nutzt nur halt andere Modelnummer.


    PS: Melde dich mal in ICQ 486423232

    Einmal editiert, zuletzt von Nicorotom ()