ARMA 3 - MISSION EDITING & SCRIPTING Arma 3 - Attentäter
Arma 3 - Attentäter
Quelle: Gametwitter.de Forum | views: 4224

Der bzw. ein Attentäter als solches wird gerne gerne eingesetzt, wenn man sich in Wüsten-Szenarien befindet. Natürlich kann man so eine Einheit direkt auf der Map vorbereiten und dann via Trigger am Spieler "detonieren" lassen, jedoch wollte ich für mich aus Faulheit eine Variante haben, die jederzeit das Schlachtfeld betreten kann und einen zufällig gewählten Spieler als Ziel ausschaut.

Weitere Vorgaben für mich:

  • Der Attentäter nicht immer gleich gekleidet sein und sollte mit den Klamotten so gekleidet sein wie die meisten Zivilisten.
  • Spawnen sollte die Einheit in einer Reichweite von 300 bis 500m vom gewählten Spieler. So ist der Attentäter meistens außerhalb der Wahrnehmung des Spielers.
  • Der Attentäter den Bewegungsabläufen des Spielers der Attentäter folgen soll. Mit anderen Worten, wo der Spieler hingeht folgt auch der Attentäter :P

Zu leicht wollte ich dem Spielern das ja auch nicht machen, das der Attentäter nicht zu schnell erkannt wird und nicht zwingend entkommt ;)

Dazu habe ich dann folgendes Skript erstellt:

if (!isServer) exitWith {};
private _randomTarget = selectRandom (allPlayers - entities "HeadlessClient_F");
_safePosition = [(getPos _randomTarget), 300, 500, 10, 0, 20, 0] call BIS_fnc_findSafePos;
_assassin = createGroup EAST;
_assassin = [_safePosition, EAST, ["O_Soldier_A_F"]] call BIS_fnc_spawnGroup;
{
    _x enableAI "PATH";
    _x setUnitPos "up";
} forEach units _assassin;
{
    sleep 3;
    _x setVariable ["hasGTuniform",1,true];
    _x allowfleeing 0;
    removeAllWeapons _x;
    removeAllItems _x;
    removeAllAssignedItems _x;
    removeUniform _x;
    removeVest _x;
    removeBackpack _x;
    removeHeadgear _x;
    removeGoggles _x;
    _x unassignItem "Itemradio";
    _x removeItem "Itemradio";
    _x unassignItem "NVGoggles";
    _x removeItem "NVGoggles";
private _getUniform =   [
    "U_I_C_Soldier_Para_4_F",
    "U_I_C_Soldier_Para_3_F",
    "U_I_C_Soldier_Para_2_F",
    "U_I_C_Soldier_Para_1_F",
    "U_I_C_Soldier_Bandit_3_F",
    "U_I_C_Soldier_Bandit_2_F",
    "U_Marshal",
    "U_C_HunterBody_grn",
    "U_BG_Guerilla3_1",
    "U_BG_Guerilla1_1",
    "U_BG_Guerilla2_2",
    "U_BG_Guerilla2_3",
    "U_BG_Guerilla2_1",
    "U_I_G_Story_Protagonist_F",
    "U_C_WorkerCoveralls",
    "U_B_CTRG_1",
    "U_B_CTRG_2"
] call BIS_fnc_selectRandom;
private _getHeadgear =  [
    "H_Bandanna_blu",
    "H_Bandanna_sand",
    "H_Bandanna_gry",
    "H_Bandanna_camo",
    "H_Beret_blk",
    "H_Booniehat_khk_hs",
    "H_Cap_tan",
    "H_Cap_oli",
    "H_Cap_red",
    "H_Cap_blk",
    "H_ShemagOpen_tan",
    "H_Shemag_olive",
    "H_Beret_gen_F"
    ] call BIS_fnc_selectRandom;
    _x forceAddUniform _getUniform;
    _x addHeadgear _getHeadgear;
} foreach (units _assassin);
_AssassineLeader = leader _assassin;
while{(alive _randomTarget)}do{
    _wp1 = _assassin addWaypoint [(getPos _randomTarget), 0];
    _wp1 setWaypointType "SAD";
    _wp1 setWaypointSpeed "NORMAL";
    _wp1 setWaypointBehaviour "Careless";
    [_assassin, 2] setWaypointCompletionRadius 15;
    if(_AssassineLeader distance _randomTarget < 8 && alive _AssassineLeader)then{
        _AssassineLeader forceSpeed 0;
        [_AssassineLeader , "allahuakbar"] call CBA_fnc_globalSay3d;
        sleep 1;
        null = "grenadeHand" createVehicle getPos _AssassineLeader;
        _AssassineLeader setDamage 1;
    };
    
    _dmg = getDammage _AssassineLeader;
    
    if(!alive _AssassineLeader  && _dmg >0.5)exitWith{
        sleep 1;
        null = "grenadeHand" createVehicle getPos _AssassineLeader;
    };
    sleep 5;
    deleteWaypoint [_assassin, 2];
};

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