ARMA 3 - MISSION EDITING & SCRIPTING Arma 3 - Feindflieger spawnen
Arma 3 - Feindflieger spawnen
Quelle: Gametwitter.de Forum | views: 3375

Je nach Mission kann man den Druck auf die Teilnehmer direkt oder indirekt gerne mal erhöhen. Neben Attentätern kann zb. ein Feindflieger oder ein feindlicher Hubschrauber dies tun. In der Regel enden Angriffe aus der Luft für viele der Teilnehmer oder zumindest einige tödlich.

Da man die Angriff aber auch dynamisch halten möchte und auch nicht zwingend tödlich sein sollten, habe ich mir neben dem Spawnen des Fliegers oder Helis auch ich gleich den Skill der jeweiligen Besatzung vorgenommen zu ändern. So schießen sie jedenfalls vermehrt daneben ... manchmal ;) .

Die BI Funktion BIS_fnc_taskPatrol sorgt dafür, das ein zufällige Patroullie geflogen wird.

Unter dem Array "_enemyAir" müsst ihr lediglich eure gewünschten Feindflieger eintragen.

Ausgangspunkt ist in diesem Skript-Beispiel immer die linke untere Kartenecke der jeweiligen Map! Könnt ihr auch anpassen, dazu kommen wir später.

Erstellt euch zuvor eine Datei , in meinem Beispiel GT_enemyAir.sqf mit folgendem Inhalt:

if (isServer) then {

   _enemyAir = ["UK3CB_TKA_O_UH1H_M240","UK3CB_CW_SOV_O_EARLY_Antonov_AN2_Armed","O_Heli_Light_02_dynamicLoadout_F"] call BIS_fnc_selectRandom;

   enemyPlane = [[0,0,0], 0, _enemyAir, EAST] call bis_fnc_spawnvehicle;
   plane = enemyPlane select 0;
   planeGroup = enemyPlane select 2;

   {
     _x allowFleeing 0;
     _x  setskill ["aimingAccuracy", 0.3];
     _x  setskill ["aimingShake", 0.3];
    _x  setskill ["aimingSpeed", 0.3];

   } forEach units planeGroup;

   planeGroupheight = 500;
   plane flyinheight planeGroupheight;
   plane setpos [getposATL plane select 0, getposATL plane select 1, planeGroupheight];

  _centerposition = [worldSize / 2, worldsize / 2, 0];
  _nul=[group plane,_centerposition, 5000] call BIS_fnc_taskPatrol;

};

Aufruf des Skripts geht dann wie folgt:

_null = execvm "GT_enemyAir.sqf"

Wenn die Patroullie gezielt in einem Mapbereich geflogen werden soll ersetzt ab _centerposition diesen Code. [16537.5,10839.5,0] bitte durch die Position auf der Karte ersetzen, wo die Patroullie statt finden soll. Die Daten bekommt ihr durch den Editor ... rechtsklick auf Karte -> Aufzeichnen -> Position in die Zwischenablage aufzeichnen und dann im Skript "Strg+V" drücken. Dann habt ihr die Koordinaten entsprechend für euren Patroullienbereich.

_centerposition = [16537.5,10839.5,0];

_waypoint = planeGroup addWaypoint [_centerposition, 500];
_waypoint setWaypointType "SAD";
_waypoint setWaypointSpeed "NORMAL";

_waypoint = planeGroup addWaypoint [_centerposition, 1000];
_waypoint setWaypointType "SAD";

_waypoint = planeGroup addWaypoint [_centerposition, 2000];
_waypoint setWaypointType "SAD";

_waypoint = planeGroup addWaypoint [_centerposition, 3000];
_waypoint setWaypointType "SAD";

_waypoint = planeGroup addWaypoint [_centerposition, 4000];
_waypoint setWaypointType "SAD";

_waypoint = planeGroup addWaypoint [_centerposition, 5000];
_waypoint setWaypointType "SAD";

_waypoint = planeGroup addWaypoint [_centerposition, 500];
_waypoint setWaypointType "CYCLE";

planeGroup setCurrentWaypoint [planeGroup, 2];

Der Aufruf kann zb. dann auch über einen Eventhandler oder Trigger z.B. erfolgen. Diesen Befehl habe ich für ein oder zwei Natoflieger in der jeweiligen INIT stehen .

this addEventHandler ["GetIn", { _null = execVM "GT_enemyAir.sqf"; }];

Dieser Eventhandler wird dann abgefeuert, wenn ein Spieler in den Natoflieger einsteigt. Und somit ist auch gleich ein Feindflieger mit in der Luft, damit der Pilot auch etwas zu tun bekommt.

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