Thema: Rucksack
Einzelnen Beitrag anzeigen
Alt 27.10.2011, 14:50   #18 (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

Der Respawn EventHandler funktioniert nur in Arma2 OA. Dann nur wenn man nicht zuvor an Arma2 programmiert hat.

Hier ein Beispiel für den Respawn der Spieler. Der EventHandler ruft ein Skript auf. Die Bewaffnung wird von der Leiche des Spielers übernommen, die der EventHandler übermittelt.

Einmaliger Aufruf des Eventhandlers für die Spieler:
temp = player addEventHandler ["Respawn", {_this execVM "Respawn_mit_Waffen_der_Leiche.sqf"}]

Skript "Respawn_mit_Waffen_der_Leiche.sqf"
Code:
// Skript für Respawn mit Bewaffnung der getöteten Unit.
//
//Einmaliger Aufruf für Spieler: temp = player addEventHandler ["Respawn", {_this execVM "Respawn_mit_Waffen_der_Leiche.sqf"}]


if (isNull player) exitWith {}; //Wenn EventHandler nur für die Spieler

//nur zum Testen: titleText["Respawn-Skript ausgeführt!","plain"];

private ["_UnitNeu","_UnitLeiche","_magazines","_weapons","_backpack","_backpackweap","_backpackmags","_i"];

_UnitNeu    = _this select 0;
_UnitLeiche = _this select 1;

_weapons   = weapons   _UnitLeiche;
_magazines = magazines _UnitLeiche;
_items     = items     _UnitLeiche;

_backpack = if (!isNull unitBackpack _UnitLeiche) then {typeOf unitBackpack _UnitLeiche} else {""};
if (_backpack != "") then
 {
  _backpackmags = getMagazineCargo _backpack;
  _backpackweap = getWeaponCargo   _backpack
 };

removeAllWeapons _UnitNeu;
removeAllItems   _UnitNeu;
removeBackpack   _UnitNeu;

{_UnitNeu addMagazine _x} foreach _magazines;
{_UnitNeu addWeapon   _x} foreach _weapons;
{_UnitNeu addWeapon   _x} forEach _items;

if (primaryWeapon _UnitNeu != "") then
 {
  _UnitNeu selectWeapon (primaryWeapon _UnitNeu);
  _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon _UnitNeu >> "muzzles"); // Fix for weapons with grenade launcher
  _UnitNeu selectWeapon (_muzzles select 0)
 };
 
 if(_backpack != "") then
  {
   _UnitNeu addBackpack _backpack;
   clearWeaponCargoGlobal   (unitBackpack _UnitNeu);
   clearMagazineCargoGlobal (unitBackpack _UnitNeu);
   for "_i" from 0 to (count (_backpackmags select 0) - 1) do
    {
     (unitBackpack _UnitNeu) addMagazineCargoGlobal [(_backpackmags select 0) select _i,(_backpackmags select 1) select _i]
    };
   for "_i" from 0 to (count (_backpackweap select 0) - 1) do
    {
     (unitBackpack _UnitNeu) addWeaponCargoGlobal [(_backpackweap select 0) select _i,(_backpackweap select 1) select _i]
    }
  }
Der Skriptablauf entspricht dem aus dem Post #7 von Psychobastard. Ich habe es nur mit Bewaffnung ohne Rucksack getestet.
Vienna ist offline