В миссии для "вдохновления", сделано так:
description.ext
class CLY_rage_vehicleTypeIndex
{
title = "Aircraft:";
values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
texts[] = {"A-143 Buzzard", "A-10 Thunderbolt II (Arma 2)", "A-10 Thunderbolt II (Operation Arrowhead)", "AV-8B Harrier II (Arma 2)", "F-35B Lightning II (Arma 2)", "L-39ZA Albatros (Operation Arrowhead)", "Su-25K Frogfoot (Operation Arrowhead)", "Su-25TM Frogfoot (Arma 2)", "Su-34 Fullback (Arma 2)", "F/A-18E Super Hornet (addon)"};
default = 0;
};
init.sqf
CLY_rage_vehicleTypes = ["I_Plane_Fighter_03_AA_F", "A10", "A10_US_EP1", "AV8B2", "F35B", "L39_TK_EP1", "Su25_TK_EP1", "Su39", "Su34", "JS_JC_FA18E"];
jrRoutines.sqf
waitUntil {{isNil _x} count ["CLY_DM_end", "CLY_rage_vehicleTypeIndex", "CLY_rage_damageMultiplier"] == 0};
waitUntil {!isNull player};
CLY_rage_vehicleType = CLY_rage_vehicleTypes select CLY_rage_vehicleTypeIndex;
if (!isClass (configFile / "CfgVehicles" / CLY_rage_vehicleType)) then
{
CLY_rage_vehicleType = CLY_rage_vehicleTypes select 0;
29 cutText ["\n\nThe plane selected in the mission parameters does not exist in your game!\n\nReverting to A-143 Buzzard.", "PLAIN", 1];
};
//--- Spawn jet
CLY_rage_vehicle = objNull;
[] spawn
{
while {!CLY_DM_end} do
{
waitUntil {alive player};
sleep 0.001;
removeBackpack player;
player addWeapon "NVGoggles";
player setDir ([player, markerPos "respawn_independent"] call BIS_fnc_dirTo);
_dir = vectorDir player;
_vehicle = createVehicle [CLY_rage_vehicleType, [0, 0, 100 + random 5000], [], 0, "FLY"];
_vehicle setPosASL [getPosASL player select 0, getPosASL player select 1, 400 + random 50];
_vehicle setVectorDir _dir;
_vehicle setVectorUp [0, 0, 1];
_landingSpeed = getNumber (configFile / "CfgVehicles" / CLY_rage_vehicleType / "landingSpeed");
_maxSpeed = getNumber (configFile / "CfgVehicles" / CLY_rage_vehicleType / "maxSpeed");
_velocity = (_landingSpeed + _maxSpeed) / 2 / 3.6;
_vehicle setVelocity [_velocity * (_dir select 0), _velocity * (_dir select 1), 0];
_vehicle setFuel 0.5;
if (CLY_rage_vehicleType in ["JS_JC_FA18E", "JS_JC_FA18F"]) then
{
[_vehicle, "js_m_fa18_aim9x_x1", "js_m_fa18_aim9x_x1","js_m_fa18_aim9x_x1","js_m_fa18_aim9x_x1","js_m_fa18_aim120c_x1","js_m_fa18_aim120c_x1", "js_m_fa18_aim120c_x1", "js_m_fa18_aim120c_x1", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty", "js_m_fa18_empty","js_m_fa18_empty"] call fa18_dynamic_loadoutscript;
_vehicle removeWeapon "js_w_master_arms_safe";
};
CLY_rage_missileWeapons = [];
CLY_rage_rocketWeapons = [];
_removeMagazines = [];
{
_weapon = _x;
_magazines = getArray (configFile / "CfgWeapons" / _weapon / "magazines");
_magazine = if (count _magazines > 0) then {_magazines select 0} else {""};
_ammo = getText (configFile / "CfgMagazines" / _magazine / "ammo");
if (getText (configFile / "CfgAmmo" / _ammo / "simulation") == "shotMissile") then
{
while {_vehicle ammo _weapon > 0} do
{
_vehicle setAmmo [_weapon, 0];
reload _vehicle;
};
if (getNumber (configFile / "CfgAmmo" / _ammo / "airLock") > 0) then
{
CLY_rage_missileWeapons set [count CLY_rage_missileWeapons, _weapon];
}
else
{
_vehicle removeWeapon _weapon;
{_removeMagazines set [count _removeMagazines, _x];} forEach _magazines;
};
};
if (getText (configFile / "CfgAmmo" / _ammo / "simulation") == "shotRocket") then
{
if (getNumber (configFile / "CfgAmmo" / _ammo / "thrust") == 0) then
{
while {_vehicle ammo _weapon > 0} do
{
_vehicle setAmmo [_weapon, 0];
reload _vehicle;
};
_vehicle removeWeapon _weapon;
{_removeMagazines set [count _removeMagazines, _x];} forEach _magazines;
}
else
{
CLY_rage_rocketWeapons set [count CLY_rage_rocketWeapons, _weapon];
};
};
} forEach weapons _vehicle;
{
_vehicle removeMagazines _x;
} forEach _removeMagazines;
//--- Runway touching EH
CLY_rage_runwayTouched = time - CLY_rage_runwayCooldown;
_vehicle addEventHandler
[
"LandedTouchDown",
{
_unit = _this select 0;
if (time > CLY_rage_runwayTouched + CLY_rage_runwayCooldown) then
{
if (_unit in list CLY_rage_runway) then
{
_unit setVehicleAmmo 1;
_unit setFuel 1;
_unit setDamage 0;
CLY_rage_runwayTouched = time;
_text = if (count CLY_rage_missileWeapons > 0) then
{
"You now have air-to-air missiles."
}
else
{
"Your plane is fully resupplied."
};
["Resupplied", [_text]] call BIS_fnc_showNotification;
};
};
}
];
//--- Cannon damage amplifier
_vehicle addEventHandler
[
"HandleDamage",
{
_unit = _this select 0;
_damage = _this select 2;
_ammo = _this select 4;
if (_this select 1 == "") then
{
if (getText (configFile / "CfgAmmo" / _ammo / "simulation") == "shotBullet") then
{
_oldDamage = damage _unit;
_damage = _damage - _oldDamage;
_damage = _damage * CLY_rage_damageMultiplier;
_damage = _oldDamage + _damage;
};
_unit setHitPointDamage ["HitHull", _damage];
if (_damage > 0.99) then
{
_damage = 1;
};
};
_damage;
}
];
//--- Remove EHs when dead
_vehicle addEventHandler
[
"Killed",
{
_unit = _this select 0;
{
_unit removeAllEventHandlers _x;
} forEach ["LandedTouchDown", "HandleDamage", "Killed"];
}
];
//--- Sensor jammer
_vehicle addAction
[
"<t font='EtelkaMonoSpacePro' size='1' color='#00ffff'>Activate sensor jammer</t> <img image='\A3\ui_f\data\map\Diary\signal_ca.paa'>",
{
_vehicle = _this select 0;
_vehicle setVariable ["CLY_rage_jamming", true, true];
["JammerOn", ["You are now invisible on your enemies' displays."]] call BIS_fnc_showNotification;
},
nil,
10,
false,
true,
"",
"alive _this && _this == driver _target && !(_target getVariable ['CLY_rage_jamming', false]) && fuel _target > 0.02"
];
_vehicle addAction
[
"<t font='EtelkaMonoSpacePro' size='1' color='#ffff00'>Deactivate sensor jammer</t> <img image='\A3\ui_f\data\map\Diary\signal_ca.paa'>",
{
_vehicle = _this select 0;
_vehicle setVariable ["CLY_rage_jamming", false, true];
["JammerOff", ["Your enemies can see you on their displays again."]] call BIS_fnc_showNotification;
},
nil,
10,
false,
true,
"",
"alive _this && _this == driver _target && (_target getVariable ['CLY_rage_jamming', false])"
];
//--- New plane
/*if (CLY_rage_respawn) then
{
deleteVehicle CLY_rage_vehicle;
}
else
{
_vehicle addAction
[
"<t font='EtelkaMonoSpacePro' size='1' color='#ff0000'>Get new plane</t>",
{
player setPosASL [getPosASL player select 0, getPosASL player select 1, 10000];
CLY_rage_respawn = true;
},
nil,
11,
true,
true,
"",
"alive _this && _this == driver _target && getPos _target select 2 < 5 && abs speed _target < 3"
];
};*/
//--- Final adjustments
player moveInDriver _vehicle;
player action ["MANUALFIRE", _vehicle];
_vehicle lock true;
CLY_rage_vehicle = _vehicle;
CLY_rage_respawn = false;
26 cutText ["", "BLACK IN", 3];
waitUntil {sleep 0.2;(!alive player || CLY_rage_respawn)};
if (!alive player) then
{
CLY_rage_vehicle = objNull;
};
};
};
//--- Player routines
_wait = 0.1;
_lastLoop = time;
_deltaInStore = 0;
while {!CLY_DM_end} do
{
_lastLoop = time;
sleep _wait;
_delta = time - _lastLoop;
_deltaInStore = _deltaInStore + _delta;
_deltaModifier = _delta / _wait;
_vehicle = vehicle player;
if (alive _vehicle && _vehicle != player) then
{
if (_vehicle getVariable ["CLY_rage_jamming", false]) then
{
if (isEngineOn _vehicle) then
{
if (fuel _vehicle > 0.02) then
{
_vehicle setFuel (fuel _vehicle - (0.05 * _wait) * _deltaModifier) max 0.02;
}
else
{
_vehicle setVariable ["CLY_rage_jamming", false, true];
["FuelLow", ["The sensor jammer is now offline."]] call BIS_fnc_showNotification;
};
};
};
_inValley = false;
if (getPos _vehicle select 2 > 0) then
{
if (abs speed _vehicle > 1) then
{
if (terrainIntersectASL [getPosASL _vehicle, [getPosASL _vehicle, 500, getDir _vehicle + 90] call BIS_fnc_relPos]) then
{
if (terrainIntersectASL [getPosASL _vehicle, [getPosASL _vehicle, 500, getDir _vehicle - 90] call BIS_fnc_relPos]) then
{
_inValley = true;
};
};
};
};
if (_inValley) then
{
_vehicle setFuel (fuel _vehicle + (0.1 * _wait) * _deltaModifier);
_vehicle setDamage (damage _vehicle - (0.1 * _wait) * _deltaModifier);
{
if !(_x in CLY_rage_missileWeapons) then
{
if !(_x in CLY_rage_rocketWeapons) then
{
_vehicle setAmmo [_x, (_vehicle ammo _x) + 2];
}
else
{
_vehicle setAmmo [_x, (_vehicle ammo _x) + 1];
};
};
} forEach ((_vehicle weaponsTurret [-1]) + (_vehicle weaponsTurret [0]));
};
};
};
На всякий случай, прикрепляю саму миссию:
dm20_jet-rage.stratis.rar 57.95KB
1 downloads
ЗЫ: а можно еще от туда как то выдрать генератор помех(ECM)? Если конечно можно как то заставить работать радар.