Einzelnen Beitrag anzeigen
Alt 22.10.2013, 10:59   #1 (permalink)
JeeperCreeper
50 Beiträge
 
Benutzerbild von JeeperCreeper
 
Registriert seit: 18.10.2013
Alter: 41
Beiträge: 64
Standard Fahrzeug respawn (kleine hilfe)

Hallo zusammen,

habe es geschaft mir endlich ein kleines respawn Script für Fahrzeuge zu schreiben und dabei bräuchte ich noch ne kleine Hilfe.

Script sieht so aus:
PHP-Code:
// this = [this,300,10] execVM "vehiclerespawn.sqf";
// this = [fahrzeug, zeitbislöschenFahrzeug, zeitbisFahrzeugerstellen] execVM "vehiclerespawn.sqf";
 
private ["_veh","_delayveh","_resdelay","_typ","_pos","_dir"];
 
//Parameter übernehmen
 
_veh      _this select 0;
_delayveh _this select 1;
_resdelay _this select 2;
 
//Fahrzeugtype sowie Position und Ausrichtung vom Aufstellungsort speichern.
 
_typ typeOf _veh;
_pos getPos _veh;
_dir getDir _veh;
 
//Schleife
 
while {true} do
{
 
waitUntil {!canMove _veh or fuel _veh == or getPos _veh distance _pos 10};    // warten bis Fahrzeug unlenkbar, kein Sprit oder verlassen
 
waitUntil {{alive _xcount crew _veh == 0};                                     // warten bis keine Crew im Fahrzeug (Tote werden nicht gezählt)
 
{if (!alive _xthen {_x setPos [0,0]; deleteVehicle _x}} forEach crew _veh;    // Tote Crew löschen
 
sleep _delayveh;                                                               // Zeit bis zum löschen des Fahrzeugs
 
if (truethen {deleteVehicle _veh};                                          // Fahrzeug löschen
 
sleep _resdelay;                                                             // Delay für Respawn
 
_veh _typ createVehicle _pos;                                             // Fahrzeug wird an seiner ursprünglichen Position erstellt
 
_veh setDir _dir;

Sobalt Fahrzeug Sprit leer, kaputt oder zurück gelassen worden ist und man aussteigt, wird es nach 300 Sek. gelöscht und nach 10 Sek. wieder in der Base gespawnt.
Sobalt ich wieder nach dem verlassen einsteige, läuft das Script ja schon und mir wird das Fahrzeug unterm Arsch weggelöscht. Wie kann ich das jetzt verhindern? An welcher Stelle müsste ich jetzt das Script anhalten oder abbrechen oder ähnliches und wie sieht dafür die Syntax aus? Habe schon nen bissl rum probiert, aber ist nix bei rausgekommen. Ist es überhaupt möglich es wieder abzubrechen?

EDIT:
Hab es jetzt mal so probiert, dass ich in der Fahrzeug löschen Zeile das true geändert habe, sieht jetzt so aus:
if ({alive _x} count crew _veh == 0) then {deleteVehicle _veh};
damit hab ich zwar erreicht, dass mir das Vehicle nicht mehr gelöscht wird wenn ich nochmal einsteige, aber es wird dann nicht mehr gelöscht, wenn ich es zum zweiten mal verlasse. Gibt es irgendwie nen Loop befehlt, damit das Script in so einem Fall wieder von vorn anfängt?

EDIT die zweite
Hat sich erledigt! Hab mir jede Menge Respawn Scripts in den Weiten der Suchmaschine angeschaut und hab das ganze jetzt mit If gemacht, anstatt wie oben mit waitUntil. Da es goto in sqf nicht mehr gibt, ist mir einfach nix gescheites eingefallen.

Geändert von JeeperCreeper (23.10.2013 um 15:26 Uhr).
JeeperCreeper ist offline