Beitrag von palma7071 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Mir ist aufgefallen, das wir in Wirklichkeit gar keinen Timer brauchen
new Float:vHealth[MAX_VEHICLES];
public OnVehicleSpawn(vehicleid)
{
vHealth[vehicleid] = 1000.0;
return 1;
}
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
GetVehicleHealth(vehicleid, health);
vHealth[vehicleid] = vHealth[vehicleid] - ((vHealth[vehicleid] - health) / 2);
SetVehicleHealth(vehicleid, vHealth[vehicleid]);
return 1;
}
verrücktemongo ich versuch das mal zu erklären
Also als erstes sollten wir der Variable vHealth die Maximale Lebensanzahl zu weisen also 1000.
Warum?
Ganz einfach die Variable brauchen wir hinterher zum rechnen.
So jetzt zu OnVehicleDamageStatusUpdate.
OnVehicleDamageStatusUpdate wird auf gerufen sobald das Auto in irgendeiner Form beschädigt wird.
Auch wenn es nur visueller Schaden ist.
Jetzt zum Inhalt von OnVehicleDamageStatusUpdate.
Zuerst prüfen wir die übrigen Leben des Autos, damit wir das mit vHealth verrechnen können.
Zur Rechnung:
Damit wir dem Auto nur die Hälfte des Schaden abziehen müssen wir eine Differenz ermittlen -> vHealth - health
und davon benötigen wir nur die hälfte also teilen wir durch 2. -> (vHealth - health) / 2 | Klammern wegen Punkt vor Strich Rechnung.
Das ermittelte ergebnis ziehen wir dann einfach von vHealth ab -> vHealth - ( (vHealth - health) / 2)
Dann legen wir die Leben der Fahrzeuges, über SetVehicleHealth, neu fest.
@palma Autos können allgemein nicht mehr als 1000 "Leben" haben
PS: Ich hoffe das reicht als Erklärung, sonst einfach fragen