Stationäre Geschütze besetzen

Aus Echo12 Wiki
Wechseln zu: Navigation, Suche

Nutzung

Mit diesem Skript lassen sich stationäre Geschütze und Fahrzeuge besetzen. Die Einheit wird dabei in DAC integriert und kann somit DAC Gruppen ideal unterstützen. Im Falle von besetzten Fahrzeugen verbleiben diese stationär bis der Schütze unter Beschuss genommen wird.

Vorraussetzungen

  • LV-Skripts
  • scripts\spawnDACGunner.sqf

spawnConvoi.sqf

//Ausfuehrung wie folgt:
//nul = [ReferenzGeschuetz, "Einheitentyp", "Spawnmarker", DacEinheitenTyp, [DACZone die Unterstuetzt wird], DACVerhaltenskonfiguration, DACSeitenkonfiguration] execVM "spawnGunner.sqf"; 
//0 = East
//1 = West
//2 = Resistance
//
//Beispiel: 
//nul = [obj1_gun1, "B_G_Soldier_AR_F", "tmark1", 3, [p2_1,p2_2], 4, 1] execVM "scripts\spawnDACGunner.sqf";


if(!(((HCPresent && (name player == HCName) && !isServer) || (!HCPresent && isServer)))) exitwith {};

//Parameteruebergabe
_gun = _this select 0;
_unitType = _this select 1;
_marker = _this select 2;
_gunType = _this select 3;
_zone = _this select 4;
_bhv = _this select 5;
_side = _this select 6;

//Erstellen der Gruppe
_grp = "";
switch (_side) do {
	case 0: {
		_grp = createGroup east
	};
	case 1: {
		_grp = createGroup west;
	};
	case 2: {
		_grp = createGroup resistance
	};
};

//Fuer stationaere Geschuetze 
if(_gunType == 1) then {
	_unitType createUnit [getMarkerPos _marker, _grp, "", 0.1];
	_tmpUnit = units _grp select 0;
	
	//Skillsettings werden von DAC ueberschrieben. Sind ueberbleipsel einer fruehren Version
	_tmpUnit setSkill ["aimingAccuracy", 0.1];
	_tmpUnit setSkill ["aimingShake", 0.1];
	_tmpUnit setSkill ["aimingSpeed", 0.4];
	_tmpUnit setSkill ["spotDistance", 0.7];
	_tmpUnit setSkill ["spotTime", 0.7];
	_tmpUnit setDir (getDir _gun);
	_tmpUnit moveInGunner _gun;
	
//Fuer Fahrzeuge
} else {
	_crew = [ _gun , _grp, false, "", "B_G_Soldier_F" ] call BIS_fnc_spawnCrew;
	sleep 10;
	
	//Festhalten des Fahrers
	(driver _gun) disableAI "MOVE";

	//Fahrer setzt sich in Bewegung wenn Schuetze unter Beschuss ist
	(driver _gun) addEventHandler ["Killed",{
												_car = nearestObject [getPos (_this select 0), "LandVehicle"]; 
												if(alive (gunner _car)) then {
													_gunner = (gunner _car);
													_gunner removeAllEventHandlers "Hit";
													_gunner removeAllEventHandlers "Killed";
												};
											}];
											
	(gunner _gun) addEventHandler ["Hit",{
												if(alive (driver (vehicle (_this select 0)))) then {
													_driver = driver (vehicle (_this select 0));
													if(!(_driver getVariable ["ACE_isUnconscious", false])) then {
														_driver enableAI "MOVE";
													};
												};

												(_this select 0) removeAllEventHandlers "Hit";
												(_this select 0) removeAllEventHandlers "Killed";
											}];
											
	(gunner _gun) addEventHandler ["Killed",{
												_car = nearestObject [getPos (_this select 0), "LandVehicle"]; 
												if(alive (gunner _car)) then {
													_driver = (driver _car);
													if(!(_driver getVariable ["ACE_isUnconscious", false])) then {
														_driver enableAI "MOVE";
													};
												};
													
												(_this select 0) removeAllEventHandlers "Hit";
												(_this select 0) removeAllEventHandlers "Killed";
											}];
};

//Integration in DAC
sleep 5;
waituntil{DAC_Basic_Value > 0};
[_grp,_gunType,_zone,5,_side,_bhv,[0,0,1],0,false] spawn DAC_fInsertGroup;