OnVehicleDeath - Problem

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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 liebe Community


    Hab mich nach langer Zeit wieder einmal an mein Script gesetzt und bin sofort auf ein neues Problem gestossen.
    Und zwar möchte ich, dass wenn ein Auto explodiert und es kein Fraktionsauto (Lspdcar) ist, dass das Auto zerstört wird bzw. nicht mehr respawnt.


    Hab also ne Abfrage bei OnVehicleDeath, ob es ein Lspdcar ist und wenn nicht, dann wird es zerstört.
    Klappt alles wunderbar, doch sobald ein Auto auf dem Dach liegt, gibt es keine Explosion mehr. Das Auto wird also bereits davor gelöscht oder spawnt bereits.
    Jedoch nur wenn das Auto auf dem Dach liegt. Ansonsten klappt alles wunderbar.


    Meine Frage nun: Wie kann ich die Explosion des Autos, auch wenn es auf dem Dach liegt "abrufen"?


    Code:
    public OnVehicleDeath(vehicleid, killerid)
    {
    for(new i = 0;i<sizeof(lspdcars); i++)
    {
    if(vehicleid == lspdcars[i])
    {
    SetVehicleToRespawn(vehicleid);
    return 1;
    }
    DestroyVehicle(vehicleid);
    }
    return 1;
    }

  • public OnVehicleDeath(vehicleid, killerid)
    {
    for(new i = 0;i<sizeof(lspdcars); i++)
    {
    if(vehicleid == lspdcars[i])
    {
    SetVehicleToRespawn(vehicleid);
    return 1;
    }
    else
    {
    DestroyVehicle(vehicleid);
    }
    }
    return 1;
    }


    versuchs mal so :)

  • Geht nicht, da ich ja mehrere lspdcars habe und wenn ich die else Abfrage in die for-Schleife setze, funktioniert das nur beim lspdcars[1]. Denn beim lspdcars[2], wird dann die else Schleife aufgerufen, da die Abfrage ja mit 1 ist und somit wird das Fahrzeig zerstört.


    Danke aber trotzdem =)


    Mein Code funktioniert ja eigentlich bestens, nur leider die Explosion will nicht und ein Timer setzen, der dass Fahrzeug erst später zerstört, möchte ich aus Performancegründen eigentlich nicht machen :/



    //edit:


    Das Fahrzeug wird nun einfach erst beim spawnen zerstört. So explodiert es also auch wieder =)
    Jedoch frage ich mich, ob es nicht möglich ist, dass ein falsches Auto gelöscht bzw. nicht jedes gelöscht wird.
    Hab nämlich je 1 Variable (destroy & spawn) und wenn nun 2 Autos zur selben Zeit explodieren, was wäre dann?
    Ist dies überhaupt möglich oder ist da die Chance viel zu gering? (Will nur auf Nummer sicher gehen)


    Code:

    Spoiler anzeigen
    public OnVehicleSpawn(vehicleid)
    {
    if(vehicleid == destroy)
    {
    DestroyVehicle(destroy);
    destroy = -1;
    }
    else if(vehicleid == spawn)
    {
    SetVehicleToRespawn(spawn);
    spawn = -1;
    }
    return 1;
    }

    Spoiler anzeigen
    public OnVehicleDeath(vehicleid, killerid)
    {
    for(new i = 0;i<sizeof(lspdcars); i++)
    {
    if(vehicleid == lspdcars[i])
    {
    spawn = vehicleid;
    return 1;
    }
    }
    destroy = vehicleid;
    return 1;
    }

    Bin über jeden Ratschlag dankbar =)

    Einmal editiert, zuletzt von Hund ()

  • Das hatte ich zu Beginn ja genau so.
    Das Problem ist so, dass das Auto zu "früh" gelöscht wird. Also die Explosion bleibt aus.
    Wenn ich in eine Mauer fahre und das Auto beginnt zu brennen, dann explodiert es auch.
    Wenn es nun auf dem Dach liegt und das Auto beginnt zu brennen, explodiert es nicht, da es vorher bereits gelöscht wird.


    Und genau diese Explosion möchte ich ja haben....
    Deshalb funktioniert diese Methode leider nicht X(