ARMA 3 - MISSION EDITING & SCRIPTING Arma 3 AI Paratrooper
Arma 3 AI Paratrooper
Quelle: Gametwitter.de Forum | views: 1362

Im Rahmen unser Eventreihe "Longstreet" kämpfen wir gegen zwei Fraktionen auf der Map Reshmaan. Da hat es sich angeboten neben den örtlichen Rebellen auch die Russen auf den Plan zurufen und zwar als Fallschirmjäger. Hierzu findet man im Netz diverse Lösungen, viele davon funktionieren eher nicht. Also fängt man selbst an, ein Skript dafür zu erstellen.

Um die Fallschrimjäger abzubilden nutze ich, wie man später sehen kann, die CSAT Einheiten von Bohemia, muss aber dazusagen, das diese soweit sie erstellt werden von einem weiteren Skript ihre Russen Uniformen bekommen. So spare ich mir die Änderungen zumindest an diesem Skript. Dieses Skript ist auch MP fähig!


Arbeitsschritte:

Erstellt habe ich mir zunächst eine Datei, genannt: GTparatroopers.sqf

Eingefügt wird die Datei in die initServer.sqf, wie folgt:

sendGTparatroopers = compileFinal preprocessFileLineNumbers "GTscripts\Enemys\GTparatroopers.sqf";

Zum aktivieren benötigt man einen Trigger! . Hier von können auch mehrere gesetzt werden. Würde aber höchstens nur 2-4 für ein Zielgebiet empfehlen.

Der Trigger ist die Startposition des spawnenden Flugzeugs. Die Parameter zum Aufruf sehen, wie folgt aus:

[ thisTrigger,"markername", starthöhe] spawn sendGTparatroopers;

markername - Hier ist das Zielgebiet als Marker anzugeben, wo die Paratrooper in der Nähe abgeworfen werden und in das Gebiet maschieren

starthöhe - ist nicht unter 200 anzugeben, lieber mehr, da die Maschine sonst aufschlagen könnte

Das Skript sieht so aus:

Inhalt der GTparatroopers.sqf

//
//*******************************************************************************************************************************************************//
//	Autor:			[GT]Greni - www.Gametwitter.de
//	Intention:		Spawnen einer Paragruppe, die in der Nähe des Ziels abgeworfen wird
//	Erstellt:		05.01.2020
//	Erforderlich: 		Trigger
//	Einfügen:		initServer.sqf - sendGTparatroopers = compileFinal preprocessFileLineNumbers "GTscripts\Enemys\GTparatroopers.sqf";
//	Aufruf:			[ thisTrigger,"markername", starthöhe] spawn sendGTparatroopers;
//*******************************************************************************************************************************************************//

params ["_targetsector","_spawnsector","_airheight"];

private _trigger =  _this select 0;
private _spawnsector = (getpos _trigger);
private _target = _this select 1;
private _targetsector = (getMarkerPos _target);
private _airheight = _this select 2;
createCenter east;


//private _plane = "UK3CB_CW_SOV_O_EARLY_Antonov_AN2";
private _plane = "UK3CB_TKA_O_C130J";
private _newPlane = createVehicle [_plane, _spawnsector, [], 0, "FLY"];

_dropzone = [_targetsector, 50, 150, 10, 0, 20, 0] call BIS_fnc_findSafePos;

_crewUnits = createVehicleCrew _newPlane;
_crew = _crewUnits;

{
  if (alive _x) then {
   _x allowFleeing 0;
   _x setCombatMode "BLUE";
  };
}forEach units _crewUnits;

sleep 0.1;

planeHeight = _airheight;
_newPlane flyinheight planeHeight;

_waypoint = _crew  addWaypoint [_dropzone, 25];
_waypoint setWaypointType "MOVE";
_waypoint setWaypointSpeed "NORMAL";
_waypoint setWaypointBehaviour "CARELESS";
_waypoint setWaypointCombatMode "BLUE";

_reinforcements = [_spawnsector, EAST, [
"O_Soldier_SL_F",
"O_Soldier_AR_F",
"O_Soldier_GL_F",
"O_soldier_M_F",
"O_Soldier_AT_F",
"O_Soldier_AAT_F",
"O_Soldier_A_F",
"O_medic_F",
"O_Soldier_F",
"O_Soldier_F",
"O_soldier_exp_F",
"O_soldier_exp_F"
]] call BIS_fnc_spawnGroup;
sleep 0.5;

{_x assignAsCargo _newPlane; _x moveInCargo _newPlane;_x addBackpack "ACE_NonSteerableParachute";} forEach units _reinforcements;
{_x allowFleeing 0} forEach units _reinforcements;

waitUntil { (_newPlane distance2d _dropzone) < 1200};
_timer = [2,3,4]call bis_fnc_selectRandom;
sleep _timer;

{
  unassignVehicle _x ;
  _x action ["Eject", _newPlane];
  sleep 1;
} forEach (assignedCargo _newPlane);

_formation = ["NO CHANGE","COLUMN","STAG COLUMN","WEDGE","ECH LEFT","ECH RIGHT","VEE","FILE","DIAMOND"] call BIS_fnc_selectRandom;

_patroldis = [100,200,300] call BIS_fnc_selectRandom;
_speed = ["Normal","FULL"]call bis_fnc_selectRandom;
_wp0 = _reinforcements addWaypoint [_targetsector, 0];
_wp0 setWaypointType "MOVE";
_wp0 setWaypointSpeed _speed;
_wp0 setWaypointBehaviour "AWARE";
_wp0 setWaypointFormation _formation;
[_reinforcements,_targetsector, _patroldis] call BIS_fnc_taskPatrol;

_wp2 = _crew  addWaypoint [[0,0,0], 0];
_wp2 setWaypointSpeed "FULL";
_wp2 setWaypointStatements ["true", "{deleteVehicle _x} forEach crew (vehicle this) + [vehicle this];"];

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