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.