ARMA 3 - MISSION EDITING & SCRIPTING Arma 3 - Gefangene generieren
Arma 3 - Gefangene generieren
Quelle: Gametwitter.de Forum | views: 872

Gefangenenbefreiung ist ja immer wieder ein beliebtes Thema in den einzelnen Missionen. Besonders natürlich dann, wenn es um Einsätze der Spezialkräfte geht. Da ich es lieber mag, das die Gefangenen verschiedenen gefesselten Positionen erscheinen, fing ich an ein wenig zu experimentieren und suchte nach Optionen um diverse Animationen aus einem Skript heraus zu generieren.

Bitte beachten für dieses Beispiel wird der Mod Unsung benötigt!

Bei Bedarf für andere Mods & Kleidung etc. entsprechend die Arrays _randomUniform und _randomHeadgear anpassen!

Was z.B. setze ich hier ein um es so abzubilden, das es mir zumindest zusagt:

  • verschiedene Uniformen
  • verschiedene Kopfbedeckung, in dem Fall ging es eher um Kopfbandagen (Zur Abbildung von Verletzungen)
  • ein EventHandler, um zu wissen wer die Geisel möglicher Weise gekillt hat
  • ein Addaction Befehl zwecks Befreiung mit der Funktion bis_fnc_holdActionAdd

Die Einheit kann auch zwischen Feinden positioniert werden, wenn z.B. die Spieler Blufor , wie die Geisel. Der Status der Geisel ändert sich erst mit der Befreiung. Dann sehen auch die Geisel als Feind an. Dies wird geregelt durch den setCaptive Befehl.

Bei der Befreiung wird die Geisel noch einen Zufallsspruch absetzen, die natürlich beliebig in dem Skript angepasst werden können.

Folgendes in die Initzeile der Geisel einfügen:

[this] execVM "GT_hostage.sqf";

Dann erstellt man eine Datei Namens: GT_hostage.sqf mit folgendem Inhalt:

private _captive = _this select 0;
private _anim = selectRandom [
    "Acts_AidlPsitMstpSsurWnonDnon01",
    "Acts_AidlPsitMstpSsurWnonDnon02",
    "Acts_AidlPsitMstpSsurWnonDnon03",
    "Acts_AidlPsitMstpSsurWnonDnon04",
    "Acts_AidlPsitMstpSsurWnonDnon05",
    "Acts_ExecutionVictim_Loop"
];


if !(captive _captive) then {
    _captive setCaptive true;
}:


removeAllWeapons _captive;
removeBackpack _captive;
removeVest _captive;
removeAllAssignedItems _captive;


removeGoggles _captive;
_captive unassignItem "Itemradio";
_captive removeItem "Itemradio";
_captive unassignItem "NVGoggles";
_captive removeItem "NVGoggles";
_captive disableAI "MOVE";
_captive disableAI "AUTOTARGET";
_captive disableAI "ANIM";
_captive allowFleeing 0;
_captive setBehaviour "Careless";




_randomUniform = ["uns_U_simc_TCU_mk3_poplijn_trop_blench","UNS_SAS_BDU_T2","UNS_SAS_BDU_T","UNS_ARMY_BDU_USA_BDU_Earlymaj"] call BIS_fnc_selectRandom;
_randomHeadgear = ["UNS_Beret_5CPT","H_HeadBandage_bloody_F","UNS_Headband_OD2","UNS_Bandana_OD3","H_HeadBandage_bloody_F","H_HeadBandage_stained_F"] call BIS_fnc_selectRandom;


removeUniform _captive ;
_captive  forceAddUniform _randomUniform;
_captive  addHeadgear _randomHeadgear;
_captive  addEventHandler ["Killed", {
params ["_unit", "_killer", "_instigator", "_useEffects"];
_unit setDammage 1;


if(isPlayer _killer)then{
    hint format["Soldat %1 wurde getötet von %2",name _unit, name _killer];
}else{
    hint format["Soldat %1 wurde getötet",name _unit];
};
}];




sleep 1;


null = [_captive,_anim] remoteExec ["switchMove", 0, _captive];


if (_anim == "Acts_ExecutionVictim_Loop") then {
    _captive setDamage .5;
};


if (isNil {_captive getVariable "captured"}) then {
    _captive setVariable ["captured",true,true];
};


null = [
_captive,
"Befreie Geisel",
"\a3\ui_f\data\IGUI\Cfg\HoldActions\holdAction_unbind_ca.paa",
"\a3\ui_f\data\IGUI\Cfg\HoldActions\holdAction_unbind_ca.paa",
"(_this distance _target) < 5 && alive _target",
"true",
{},
{},
{
if (_this select 3 select 0 == "Acts_ExecutionVictim_Loop") then {
null = [(_this select 0),"Acts_ExecutionVictim_Unbow"] remoteExec ["playMove", 2, false];
} else {
null = [(_this select 0),"Acts_AidlPsitMstpSsurWnonDnon_out"] remoteExec ["switchMove", 0, false];
};
_complMessage = selectRandom [
"Ich dachte, ich müßte hier sterben!",
"Danke Mann.",
"Bloss weg hier. Danke...",
"Kann ich Dich später auf ein Bier einladen?",
"Oh mein Gott, ich lebe.",
"Wo zur Hölle bin ich hier überhaupt?",
"Ich will zu Mami!"
];
null = ["Hostage", _complMessage] call BIS_fnc_showSubtitle;
sleep 5.5;
null = [(_this select 0),"MOVE"] remoteExec ["enableAI", 2, false];
null = [(_this select 0),"AUTOTARGET"] remoteExec ["enableAI", 2, false];
null = [(_this select 0),"ANIM"] remoteExec ["enableAI", 2, false];
null = [(_this select 0),"SAFE"] remoteExec ["setBehaviour", 2, false];
null = [(_this select 0),(_this select 2)] remoteExec ["bis_fnc_holdActionRemove", [0,-2] select isDedicated,(_this select 0)];
(_this select 0) setVariable ["captured",false,true];


(_this select 0) disableAI "move";
(_this select 0) setCaptive true;
},
{
_intrMessage = selectRandom [
"Hey! Ich will hier nicht sterben!",
"Lasse mich mich nicht hier! Bitte!",
"Sie töten uns alle hier. Hole mich hier raus!"
];
null = ["Hostage", _intrMessage] call BIS_fnc_showSubtitle;
},
[_anim],
3,
0,
true,
false] remoteExec ["bis_fnc_holdActionAdd", [0,-2] select isDedicated, _captive];

Eine Kommentarfunktion ist in diesem Blog nicht vorgesehen.
Bei Problemen zum Skript bitte im Gametwitter.de Forum registieren und dort die Kommentarfunktion nutzen.