Autos nur Bennen nicht explodieren

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
  • Hallo Scripter und Breadfish Team


    Ich wollte mal fragen wie man das explodieren eines Fahrzeuges abstellen kann. Das heißt Wenn ein Auto Brennt das dies so lange Brennt bis die Feuerwehr dies löscht. Würde mich freuen wenn mir einer helfen könnte . Ich bedanke mich natürlich im vorraus schon




    //Edit Königsbrücker :)

  • Ich glaube die explosion abstellen ist unmöglich. Aber du kannst es so machen dass, das Auto wenn es anfängt zu brennen, wieder in den Rauchzustand versetzt wird. So würde das Auto auch nicht kapput gehen. Und wenn es soweit kapput geht, einfach den Motor des Autos ausstellen, sodass der Spieler nichtmher fahren kann, bis die Feuerwehr eintrifft. Ich hoffe es war relativ verständlich. Bei Fragen, einfach melden.


    MfG Waoler

  • Also ich finde man sollte selber erstmal etwas nachdenken, und dann Fragen. Ich möchte jetzt nicht einfach den Code posten.
    Fangen wir an!
    Zuerst müssen wir überlegen, wann es passsieren soll. Das wissenwir ja nicht genau, also fragen wir es jede Sekunde ab, wenn wir im Auto sitzten. D.h.: bei OnPlayerUpdate ein Abfrag ob wir in einem Auto sitzten. Aber damit wir auch direkt die aktuelle ID vom fahrzeug haben, machen wir es s:
    new gCurVeh = GetPlayerVehicleID(playerid);//ermitteln der aktuellen CarID. Und diese ind die Variable gCurVeh(aktuelles Vehicle) speichern.
    if(gCurVeh) // wenn er im Fahreug sitzt...
    {
    new Float:tempHealth;//neue Float erstellen, für die aktuelle Health
    GetVehicleHealth(gCurVeh, tempHealth); //Speichern der akt. Health vom Car
    if(tempHealth < 250){//Wenn die akt. Health unter 250 ist...
    SetVehicleHealth(gCurVeh, 255);//setze sie auf 255 Health (kurz vorm brennen)
    GetVehicleParamsEx(gCurVeh,engine,lights,alarm,doors,bonnet,boot,objective);//den aktuellen Status des Cars bekommen
    SetVehicleParamsEx(gCurVeh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);//den status setztn, das der Motor aus ist.
    //Wenn gewollt, noch eine Message ausgeben, z.B. "Dein Fahrzeug ist kapput".
    }
    }


    PS: Ungetestet. Hoffe hab alles berücksichtigt.


    MfG Waoler

  • stock PreventExplosion (vehicleid)
    {
    if (vehicleid != 0 && vehicleid != INVALID_VEHICLE_ID)
    {
    new Float: health;
    GetVehicleHealth (vehicleid, health);
    if (health < 250.0)
    SetVehicleHealth (vehicleid, 249.00);
    }
    }


    public OnPlayerUpdate (playerid)
    {
    PreventExplosion (GetPlayerVehicleID (playerid));
    return 1;
    }


    public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat) // Neue 0.3c R3/4/5 Funktion.
    {
    PreventExplosion (vehicleid);
    return 1;
    }


    Überall wo der Fahrzeugstatus geupdated wird, wird die mögliche Explosion verhindert.
    Das Auto brennt aber wird nicht explodieren.