Einzelnen Beitrag anzeigen
Alt 12.03.2013, 15:06   #13 (permalink)
Vienna
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Wie aus Tajins Post ersichtlich, sind Fahrzeuge oft schon unbrauchbar bevor sie zerstört wurden. Ein Auto kann z.B. durch einen zerschossenen Reifen bereits unbrauchbar sein. Wobei die Beschädigung unter 5% liegt.

Folgend ein Skirpt welches bereits nicht mehr brauchbare Fahrzeuge erneuert. canFire wurde dabei nicht berücksichtigt, weil hier bei einem unbesetzten Fahrzeug false angezeigt wird.

Beim Skript-Aufruf ist auch einstellbar ob das alte Fahrzeug gelöscht werden soll und wie oft ein Respawn möglich ist.

Skript Fahrzeug_Respawn_2.sqf
Code:
// Fahrzeug-Respawn wenn Fahrzeug zerstört oder unlenkbar. [Vienna 12.03.2013]
//  Die neuen Fahrzeuge werden an der ursprünglichen Position erstellt.
//   Einmaliger Aufruf. Läuft beim Server. 
//
// Parameter: FahrzeugObjekt
//            Zeit in Sekunden bis zum Respawn
//            unbrauchbares Fahrzeug löschen (true/false)            
//            maximale Anzahl der neu zu erstelltenden Fahrzeuge 
//
// Aufrufbeispiel in der Initialisierungszeile des Fahrzeuges:
//   temp = [this, 120, true, 5] execVM "Fahrzeug_Respawn_2.sqf";

private ["_vehicle","_respawnZeit","_entfernen","_respawnAnzahl","_type","_pos","_dir","_respawn"];

//Parameter übernehmen
_vehicle       = _this select 0;
_respawnZeit   = _this select 1;
_entfernen     = _this select 2;
_respawnAnzahl = _this select 3;
//Fahrzeugtype sowie Position und Ausrichtung vom Aufstellungsort speichern.
_type = typeOf _vehicle;
_pos  = getPos _vehicle;
_dir  = getDir _vehicle;

//Schleife bis maximale Anzahl erreicht. Letztes Fahrzeug wird, wenn gewollt, noch gelöscht.
_respawn = 0;
while {isServer and _respawn <= _respawnAnzahl} do
 {
  waitUntil {!canMove _vehicle or fuel _vehicle == 0}; //warten bis Fahrzeug zerstört oder unlenkbar
  waitUntil {{alive _x} count crew _vehicle == 0};     //warten bis keine Crew im Fahrzeug (Tote werden nicht gezählt)
  _vehicle lock true;                 //Fahrzeug sperren (kein Einsteigen möglich)
  sleep 5;                            //Pause damit Tote nicht zu schnell verschwinden
  {if(!alive _x)then{_x setPos [0,0];deleteVehicle _x}}forEach crew _vehicle; // Tote Crew löschen
  sleep (_respawnZeit - 5);                      //warten bis Respawnzeit um 
  if (_entfernen) then {deleteVehicle _vehicle}; //Fahrzeug löschen, wenn gewollt.
  if (_respawn < _respawnAnzahl) then            //neues Fahrzeug erstellen
  {
   _vehicle = _type createVehicle _pos;
   _vehicle setDir _dir;
   _respawn = _respawn + 1;
   sleep 1
  }
 }
Vienna ist offline