mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' of https://github.com/KoffeinFlummi/ACE3 into ATragMX
This commit is contained in:
commit
2dfc9d7919
BIN
ace_fcs.dll
BIN
ace_fcs.dll
Binary file not shown.
@ -1,5 +1,19 @@
|
|||||||
|
|
||||||
class CfgAmmo {
|
class CfgAmmo {
|
||||||
|
class BulletBase;
|
||||||
|
class B_20mm;
|
||||||
|
|
||||||
|
class ACE_20mm_HEDP : B_20mm {
|
||||||
|
hit = 80;
|
||||||
|
indirectHit = 12;
|
||||||
|
indirectHitRange = 2; //2;
|
||||||
|
caliber = 1.4;
|
||||||
|
tracerStartTime = 0.02;
|
||||||
|
timeToLive = 40;
|
||||||
|
explosive = 1.8;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// adjust minigun caliber and deflection to other ammo
|
// adjust minigun caliber and deflection to other ammo
|
||||||
class SubmunitionBullet;
|
class SubmunitionBullet;
|
||||||
class B_65x39_Minigun_Caseless: SubmunitionBullet {
|
class B_65x39_Minigun_Caseless: SubmunitionBullet {
|
||||||
@ -13,7 +27,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// also adjust tracer, "muh lightshow"; also adjust splash damage radius
|
// also adjust tracer, "muh lightshow"; also adjust splash damage radius
|
||||||
class BulletBase;
|
|
||||||
class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase {
|
class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase {
|
||||||
hit = 80;
|
hit = 80;
|
||||||
indirectHit = 12;
|
indirectHit = 12;
|
||||||
@ -22,6 +35,7 @@ class CfgAmmo {
|
|||||||
deflecting = 3;
|
deflecting = 3;
|
||||||
fuseDistance = 3;
|
fuseDistance = 3;
|
||||||
tracerStartTime = 0.02;
|
tracerStartTime = 0.02;
|
||||||
|
timeToLive = 40;
|
||||||
};
|
};
|
||||||
|
|
||||||
// helper projectiles to simulate a rof > fps
|
// helper projectiles to simulate a rof > fps
|
||||||
|
@ -10,6 +10,7 @@ class CfgMagazines {
|
|||||||
// an extended magazine for the comanche
|
// an extended magazine for the comanche
|
||||||
class 300Rnd_20mm_shells;
|
class 300Rnd_20mm_shells;
|
||||||
class ACE_500Rnd_20mm_shells_Comanche: 300Rnd_20mm_shells {
|
class ACE_500Rnd_20mm_shells_Comanche: 300Rnd_20mm_shells {
|
||||||
|
ammo = "ACE_20mm_HEDP";
|
||||||
count = 500;
|
count = 500;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -95,29 +95,7 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Heli_Attack_01_base_F: Helicopter_Base_F {
|
#include "Heli_Attack_01_base_F.hpp"
|
||||||
lockDetectionSystem = 12;
|
|
||||||
incomingMissileDetectionSystem = 16;
|
|
||||||
driverCanEject = 1;
|
|
||||||
|
|
||||||
class Turrets: Turrets {
|
|
||||||
class MainTurret: MainTurret {
|
|
||||||
canEject = 1;
|
|
||||||
showHMD = 1;
|
|
||||||
weapons[] = {"ACE_gatling_20mm_Comanche","missiles_DAGR","missiles_ASRAAM"};
|
|
||||||
magazines[] = {"ACE_500Rnd_20mm_shells_Comanche","4Rnd_AAA_missiles","24Rnd_PG_missiles"};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AnimationSources: AnimationSources {
|
|
||||||
class Gatling {
|
|
||||||
weapon = "ACE_gatling_20mm_Comanche";
|
|
||||||
};
|
|
||||||
class Muzzle_flash {
|
|
||||||
weapon = "ACE_gatling_20mm_Comanche";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class B_Heli_Attack_01_F: Heli_Attack_01_base_F {};
|
class B_Heli_Attack_01_F: Heli_Attack_01_base_F {};
|
||||||
|
|
||||||
@ -222,7 +200,7 @@ class CfgVehicles {
|
|||||||
lockDetectionSystem = 0;
|
lockDetectionSystem = 0;
|
||||||
incomingMissileDetectionSystem = 16;
|
incomingMissileDetectionSystem = 16;
|
||||||
driverCanEject = 1;
|
driverCanEject = 1;
|
||||||
weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher"};
|
weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher", "ACE_AIR_SAFETY" };
|
||||||
magazines[] = {"5000Rnd_762x51_Yellow_Belt","24Rnd_missiles","168Rnd_CMFlare_Chaff_Magazine"};
|
magazines[] = {"5000Rnd_762x51_Yellow_Belt","24Rnd_missiles","168Rnd_CMFlare_Chaff_Magazine"};
|
||||||
|
|
||||||
class Turrets: Turrets {
|
class Turrets: Turrets {
|
||||||
|
@ -4,6 +4,23 @@ class Mode_Burst;
|
|||||||
class Mode_FullAuto;
|
class Mode_FullAuto;
|
||||||
|
|
||||||
class CfgWeapons {
|
class CfgWeapons {
|
||||||
|
|
||||||
|
class RocketPods;
|
||||||
|
class ACE_AIR_SAFETY : RocketPods
|
||||||
|
{
|
||||||
|
CanLock = 0;
|
||||||
|
displayName = "SAFE";
|
||||||
|
displayNameMagazine = "SAFE";
|
||||||
|
shortNameMagazine = "SAFE";
|
||||||
|
nameSound = "cannon";
|
||||||
|
cursor = "EmptyCursor";
|
||||||
|
cursorAim = "EmptyCursor";
|
||||||
|
magazines[] = {"FakeMagazine"};
|
||||||
|
burst = 0;
|
||||||
|
reloadTime = 0.01;
|
||||||
|
magazineReloadTime = 0.1;
|
||||||
|
};
|
||||||
|
|
||||||
// Manual Switching Of Flare Mode
|
// Manual Switching Of Flare Mode
|
||||||
class SmokeLauncher;
|
class SmokeLauncher;
|
||||||
class CMFlareLauncher: SmokeLauncher {
|
class CMFlareLauncher: SmokeLauncher {
|
||||||
@ -37,24 +54,24 @@ class CfgWeapons {
|
|||||||
|
|
||||||
class manual: manual {
|
class manual: manual {
|
||||||
reloadTime = 0.04;
|
reloadTime = 0.04;
|
||||||
dispersion = 0.0022;
|
dispersion = 0.006;
|
||||||
displayName = "$STR_ACE_Aircraft_gatling_20mm_Name";
|
displayName = "$STR_ACE_Aircraft_gatling_20mm_Name";
|
||||||
};
|
};
|
||||||
class close: close {
|
class close: close {
|
||||||
reloadTime = 0.04;
|
reloadTime = 0.04;
|
||||||
dispersion = 0.0022;
|
dispersion = 0.006;
|
||||||
};
|
};
|
||||||
class short: short {
|
class short: short {
|
||||||
reloadTime = 0.04;
|
reloadTime = 0.04;
|
||||||
dispersion = 0.0022;
|
dispersion = 0.006;
|
||||||
};
|
};
|
||||||
class medium: medium {
|
class medium: medium {
|
||||||
reloadTime = 0.04;
|
reloadTime = 0.04;
|
||||||
dispersion = 0.0022;
|
dispersion = 0.006;
|
||||||
};
|
};
|
||||||
class far: far {
|
class far: far {
|
||||||
reloadTime = 0.04;
|
reloadTime = 0.04;
|
||||||
dispersion = 0.0022;
|
dispersion = 0.006;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
979
addons/aircraft/Heli_Attack_01_base_F.hpp
Normal file
979
addons/aircraft/Heli_Attack_01_base_F.hpp
Normal file
File diff suppressed because one or more lines are too long
@ -3,6 +3,7 @@ ace_aircraft
|
|||||||
|
|
||||||
Changes to air weaponry, flightmodels and HUDs.
|
Changes to air weaponry, flightmodels and HUDs.
|
||||||
|
|
||||||
|
* Contributations by Kimi (geraldbolso1899) for HUD updates
|
||||||
|
|
||||||
## Maintainers
|
## Maintainers
|
||||||
|
|
||||||
@ -10,3 +11,4 @@ The people responsible for merging changes to this component or answering potent
|
|||||||
|
|
||||||
- [KoffeinFlummi](https://github.com/KoffeinFlummi)
|
- [KoffeinFlummi](https://github.com/KoffeinFlummi)
|
||||||
- [commy2](https://github.com/commy2)
|
- [commy2](https://github.com/commy2)
|
||||||
|
- [jaynus](https://github.com/walterpearce)
|
581
addons/aircraft/RscInGameUI.hpp
Normal file
581
addons/aircraft/RscInGameUI.hpp
Normal file
@ -0,0 +1,581 @@
|
|||||||
|
class RscControlsGroup;
|
||||||
|
class RscText;
|
||||||
|
class RangeText: RscText{};
|
||||||
|
class RscPicture;
|
||||||
|
class RscOpticsText;
|
||||||
|
class RscIGProgress;
|
||||||
|
class RscOpticsValue;
|
||||||
|
class VScrollbar;
|
||||||
|
class HScrollbar;
|
||||||
|
class RscLadderPicture;
|
||||||
|
class RscControlsGroupNoScrollbars;
|
||||||
|
|
||||||
|
|
||||||
|
class RscInGameUI
|
||||||
|
{
|
||||||
|
class RscUnitInfo;
|
||||||
|
class Rsc_ACE_Helo_UI_Turret: RscUnitInfo
|
||||||
|
{
|
||||||
|
idd = 300;
|
||||||
|
controls[] = {"CA_IGUI_elements_group","CA_VehicleToggles"};
|
||||||
|
class VScrollbar;
|
||||||
|
class HScrollbar;
|
||||||
|
class CA_IGUI_elements_group: RscControlsGroup
|
||||||
|
{
|
||||||
|
idc = 170;
|
||||||
|
class VScrollbar: VScrollbar
|
||||||
|
{
|
||||||
|
width = 0;
|
||||||
|
};
|
||||||
|
class HScrollbar: HScrollbar
|
||||||
|
{
|
||||||
|
height = 0;
|
||||||
|
};
|
||||||
|
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||||
|
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||||
|
w = "53.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "40 * (0.025 * SafezoneH)";
|
||||||
|
class controls
|
||||||
|
{
|
||||||
|
class CA_Distance: RscText
|
||||||
|
{
|
||||||
|
idc = 151;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
x = "24.78 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30.88 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Speed: RangeText
|
||||||
|
{
|
||||||
|
idc = 188;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "120";
|
||||||
|
x = "14.78 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30.88 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Alt: RangeText
|
||||||
|
{
|
||||||
|
idc = 189;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "3825";
|
||||||
|
x = "34.78 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30.88 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_VisionMode: RscText
|
||||||
|
{
|
||||||
|
idc = 152;
|
||||||
|
style = 0;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "VIS";
|
||||||
|
x = "12.58 * (0.01875 * SafezoneH)";
|
||||||
|
y = "8 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_FlirMode: RscText
|
||||||
|
{
|
||||||
|
idc = 153;
|
||||||
|
style = 0;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "BHOT";
|
||||||
|
x = "15.78 * (0.01875 * SafezoneH)";
|
||||||
|
y = "8 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueGrid: RangeText
|
||||||
|
{
|
||||||
|
idc = 172;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
x = "12.20 * (0.01875 * SafezoneH)";
|
||||||
|
y = "3.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextTADS: RangeText
|
||||||
|
{
|
||||||
|
idc = 1010;
|
||||||
|
text = "TADS";
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
style = 2;
|
||||||
|
shadow = 0;
|
||||||
|
x = "12.30 * (0.01875 * SafezoneH)";
|
||||||
|
y = "5 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueTime: RangeText
|
||||||
|
{
|
||||||
|
idc = 190;
|
||||||
|
text = "20:28:35";
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
x = "12.1 * (0.01875 * SafezoneH)";
|
||||||
|
y = "6.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Laser: RscText
|
||||||
|
{
|
||||||
|
idc = 158;
|
||||||
|
style = "0x30 + 0x800";
|
||||||
|
sizeEx = "0.038*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = PATHTOF(data\Helo_LaserON.paa);
|
||||||
|
x = "20.45 * (0.01875 * SafezoneH)";
|
||||||
|
y = "14.1 * (0.025 * SafezoneH)";
|
||||||
|
w = "12.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "12 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Heading: RscText
|
||||||
|
{
|
||||||
|
idc = 156;
|
||||||
|
style = 0;
|
||||||
|
sizeEx = "0.038*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "023";
|
||||||
|
x = "24.83 * (0.01875 * SafezoneH)";
|
||||||
|
y = "6 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Rsc_ACE_Helo_UI_01: RscUnitInfo
|
||||||
|
{
|
||||||
|
controls[] = {"WeaponInfoControlsGroupRight","CA_TextFlaresMode","CA_TextFlares","CA_VehicleToggles","CA_Radar"};
|
||||||
|
};
|
||||||
|
class Rsc_ACE_Helo_UI_02: RscUnitInfo
|
||||||
|
{
|
||||||
|
controls[] = {"CA_TextFlaresMode","CA_TextFlares","CA_VehicleToggles","CA_Radar"};
|
||||||
|
};
|
||||||
|
class Rsc_ACE_Drones_UI_Turret: RscUnitInfo
|
||||||
|
{
|
||||||
|
idd = 300;
|
||||||
|
controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"};
|
||||||
|
class CA_IGUI_elements_group: RscControlsGroup
|
||||||
|
{
|
||||||
|
idc = 170;
|
||||||
|
class VScrollbar: VScrollbar
|
||||||
|
{
|
||||||
|
width = 0;
|
||||||
|
};
|
||||||
|
class HScrollbar: HScrollbar
|
||||||
|
{
|
||||||
|
height = 0;
|
||||||
|
};
|
||||||
|
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||||
|
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||||
|
w = "53.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "40 * (0.025 * SafezoneH)";
|
||||||
|
class controls
|
||||||
|
{
|
||||||
|
class CA_Distance: RscText
|
||||||
|
{
|
||||||
|
idc = 151;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
x = "24.78 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30.88 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Speed: RangeText
|
||||||
|
{
|
||||||
|
idc = 188;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "120";
|
||||||
|
x = "14.78 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30.88 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Alt: RangeText
|
||||||
|
{
|
||||||
|
idc = 189;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "3825";
|
||||||
|
x = "34.78 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30.88 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueTime: RangeText
|
||||||
|
{
|
||||||
|
idc = 190;
|
||||||
|
text = "20:28:35";
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
x = "1.75 * (0.01875 * SafezoneH)";
|
||||||
|
y = "10.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_VisionMode: RscText
|
||||||
|
{
|
||||||
|
idc = 152;
|
||||||
|
style = 0;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "VIS";
|
||||||
|
align = "right";
|
||||||
|
x = "2.6 * (0.01875 * SafezoneH)";
|
||||||
|
y = "12.0 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.0 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_FlirMode: RscText
|
||||||
|
{
|
||||||
|
idc = 153;
|
||||||
|
style = 0;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "BHOT";
|
||||||
|
align = "right";
|
||||||
|
x = "6.18 * (0.01875 * SafezoneH)";
|
||||||
|
y = "12.0 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.0 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TgT_Grid_text: RangeText
|
||||||
|
{
|
||||||
|
idc = 1005;
|
||||||
|
text = "TGT:";
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
x = "1.20 * (0.01875 * SafezoneH)";
|
||||||
|
y = "13.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TGT_ValueGrid: RangeText
|
||||||
|
{
|
||||||
|
idc = 172;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
colorText[] = {0.706,0.0745,0.0196,0.8};
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
x = "5.20 * (0.01875 * SafezoneH)";
|
||||||
|
y = "13.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class OWN_Grid_text: RangeText
|
||||||
|
{
|
||||||
|
idc = 1005;
|
||||||
|
text = "OWN:";
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
x = "1.20 * (0.01875 * SafezoneH)";
|
||||||
|
y = "15 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class OWN_ValueGrid: RangeText
|
||||||
|
{
|
||||||
|
idc = 171;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
colorText[] = {0.15,1,0.15,0.8};
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.0295*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
x = "5.20 * (0.01875 * SafezoneH)";
|
||||||
|
y = "15 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Laser: RscText
|
||||||
|
{
|
||||||
|
idc = 158;
|
||||||
|
style = "0x30 + 0x800";
|
||||||
|
sizeEx = "0.038*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
align = "right";
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = PATHTOF(data\Helo_LaserON.paa);
|
||||||
|
x = "20.45 * (0.01875 * SafezoneH)";
|
||||||
|
y = "14.1 * (0.025 * SafezoneH)";
|
||||||
|
w = "12.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "12 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Heading: RscText
|
||||||
|
{
|
||||||
|
idc = 156;
|
||||||
|
style = 0;
|
||||||
|
sizeEx = "0.038*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "023";
|
||||||
|
align = "right";
|
||||||
|
x = "25 * (0.01875 * SafezoneH)";
|
||||||
|
y = "5 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Rsc_ACE_Drones_UI_Pilots: RscUnitInfo
|
||||||
|
{
|
||||||
|
idd = 300;
|
||||||
|
controls[] = {"WeaponInfoControlsGroupRight","CA_BackgroundVehicle","CA_BackgroundVehicleTitle","CA_BackgroundVehicleTitleDark","CA_BackgroundFuel","CA_Vehicle","CA_VehicleRole","CA_HitZones","CA_SpeedBackground","CA_SpeedUnits","CA_Speed","CA_ValueFuel","CA_AltBackground","CA_AltUnits","CA_Alt","CA_VehicleToggles","CA_Radar","DriverOpticsGroup"};
|
||||||
|
class DriverOpticsGroup: RscControlsGroup
|
||||||
|
{
|
||||||
|
idc = 392;
|
||||||
|
class VScrollbar: VScrollbar
|
||||||
|
{
|
||||||
|
width = 0;
|
||||||
|
};
|
||||||
|
class HScrollbar: HScrollbar
|
||||||
|
{
|
||||||
|
height = 0;
|
||||||
|
};
|
||||||
|
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||||
|
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||||
|
w = "53.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "40 * (0.025 * SafezoneH)";
|
||||||
|
class controls
|
||||||
|
{
|
||||||
|
class TextGrid: RscText
|
||||||
|
{
|
||||||
|
style = 0;
|
||||||
|
sizeEx = "0.02*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
idc = 1005;
|
||||||
|
text = "GRID:";
|
||||||
|
x = "5.8 * (0.01875 * SafezoneH)";
|
||||||
|
y = "31.8 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueGrid: TextGrid
|
||||||
|
{
|
||||||
|
idc = 189;
|
||||||
|
text = "382546";
|
||||||
|
x = "10.3 * (0.01875 * SafezoneH)";
|
||||||
|
y = "31.8 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextTime: TextGrid
|
||||||
|
{
|
||||||
|
idc = 1010;
|
||||||
|
text = "TIME [UTC]:";
|
||||||
|
x = "5.8 * (0.01875 * SafezoneH)";
|
||||||
|
y = "32.6 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class ValueTime: TextGrid
|
||||||
|
{
|
||||||
|
idc = 101;
|
||||||
|
text = "20:28:35";
|
||||||
|
x = "10 * (0.01875 * SafezoneH)";
|
||||||
|
y = "32.6 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextMag: TextGrid
|
||||||
|
{
|
||||||
|
idc = 1011;
|
||||||
|
text = "CAM MAG:";
|
||||||
|
x = "5.8 * (0.01875 * SafezoneH)";
|
||||||
|
y = "7 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class OpticsZoom: TextGrid
|
||||||
|
{
|
||||||
|
idc = 192;
|
||||||
|
text = "28x";
|
||||||
|
x = "10.3 * (0.01875 * SafezoneH)";
|
||||||
|
y = "7 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class BorderLineSpdTop: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1203;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||||
|
x = "3.343 * (0.01875 * SafezoneH)";
|
||||||
|
y = "12.4 * (0.025 * SafezoneH)";
|
||||||
|
w = "3 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class BorderLineSpdBottom: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1207;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||||
|
x = "3.343 * (0.01875 * SafezoneH)";
|
||||||
|
y = "26.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "3 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class BorderLineAltTop: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1205;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||||
|
x = "47.16 * (0.01875 * SafezoneH)";
|
||||||
|
y = "12.4 * (0.025 * SafezoneH)";
|
||||||
|
w = "3 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class BorderLineAltBottom: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1206;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||||
|
x = "47.16 * (0.01875 * SafezoneH)";
|
||||||
|
y = "26.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "3 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextSpd: TextGrid
|
||||||
|
{
|
||||||
|
idc = 1004;
|
||||||
|
text = "SPD";
|
||||||
|
x = "4.8 * (0.01875 * SafezoneH)";
|
||||||
|
y = "11.8 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class SpeedValueBorder: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1200;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\altimeter_value_ca.paa";
|
||||||
|
x = "6.3 * (0.01875 * SafezoneH)";
|
||||||
|
y = "19 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Speed: TextGrid
|
||||||
|
{
|
||||||
|
idc = 190;
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
text = "120";
|
||||||
|
x = "7.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "19.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "6 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class AnalogueSpeed: RscLadderPicture
|
||||||
|
{
|
||||||
|
idc = 384;
|
||||||
|
topValue = 1312;
|
||||||
|
bottomValue = -345;
|
||||||
|
visibleRange = -1;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\UAVspeedLadder_ca.paa";
|
||||||
|
x = "1.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "13 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "14 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class TextAlt: TextGrid
|
||||||
|
{
|
||||||
|
idc = 1006;
|
||||||
|
text = "ALT";
|
||||||
|
x = "46.9 * (0.01875 * SafezoneH)";
|
||||||
|
y = "11.8 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class AltValueBorder: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1201;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\airspeed_value_ca.paa";
|
||||||
|
x = "42.25 * (0.01875 * SafezoneH)";
|
||||||
|
y = "19 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class CA_Alt: TextGrid
|
||||||
|
{
|
||||||
|
idc = 191;
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
style = 1;
|
||||||
|
text = "3825";
|
||||||
|
x = "43 * (0.01875 * SafezoneH)";
|
||||||
|
y = "19.5 * (0.025 * SafezoneH)";
|
||||||
|
w = "3.2 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class AnalogueAlt: RscLadderPicture
|
||||||
|
{
|
||||||
|
idc = 385;
|
||||||
|
topValue = 14430;
|
||||||
|
bottomValue = -2110;
|
||||||
|
visibleRange = -1;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\UAValtLadder_ca.paa";
|
||||||
|
x = "47 * (0.01875 * SafezoneH)";
|
||||||
|
y = "13 * (0.025 * SafezoneH)";
|
||||||
|
w = "2.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "14 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class AnalogueHorizon: RscLadderPicture
|
||||||
|
{
|
||||||
|
idc = 383;
|
||||||
|
topValue = 90;
|
||||||
|
bottomValue = -90;
|
||||||
|
visibleRange = -1;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\horizon_ladder_ca.paa";
|
||||||
|
x = "16.75 * (0.01875 * SafezoneH)";
|
||||||
|
y = "5 * (0.025 * SafezoneH)";
|
||||||
|
w = "20 * (0.01875 * SafezoneH)";
|
||||||
|
h = "30 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
class HorizonCenter: RscPicture
|
||||||
|
{
|
||||||
|
idc = 1202;
|
||||||
|
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\horizon_aircraft_ca.paa";
|
||||||
|
x = "24.75 * (0.01875 * SafezoneH)";
|
||||||
|
y = "19 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -6,7 +6,7 @@ class CfgPatches {
|
|||||||
weapons[] = {};
|
weapons[] = {};
|
||||||
requiredVersion = REQUIRED_VERSION;
|
requiredVersion = REQUIRED_VERSION;
|
||||||
requiredAddons[] = {"ace_common"};
|
requiredAddons[] = {"ace_common"};
|
||||||
author[] = {"KoffeinFlummi","Crusty","commy2"};
|
author[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
|
||||||
authorUrl = "https://github.com/KoffeinFlummi/";
|
authorUrl = "https://github.com/KoffeinFlummi/";
|
||||||
VERSION_CONFIG;
|
VERSION_CONFIG;
|
||||||
};
|
};
|
||||||
@ -16,3 +16,4 @@ class CfgPatches {
|
|||||||
#include "CfgMagazines.hpp"
|
#include "CfgMagazines.hpp"
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
#include "CfgWeapons.hpp"
|
#include "CfgWeapons.hpp"
|
||||||
|
#include "RscInGameUI.hpp"
|
BIN
addons/aircraft/data/Helo_LaserON.paa
Normal file
BIN
addons/aircraft/data/Helo_LaserON.paa
Normal file
Binary file not shown.
@ -94,7 +94,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
|
|||||||
_unit removeAction _actionID;
|
_unit removeAction _actionID;
|
||||||
|
|
||||||
if (GVAR(placeAction) == 1) then {
|
if (GVAR(placeAction) == 1) then {
|
||||||
_startingPosition = _tempObject modelToWorld [0,0,0];
|
_startingPosition = _tempObject modelToWorldVisual [0,0,0];
|
||||||
[_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAtachText, _startingPosition] call FUNC(placeApprove);
|
[_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAtachText, _startingPosition] call FUNC(placeApprove);
|
||||||
};
|
};
|
||||||
deleteVehicle _tempObject;
|
deleteVehicle _tempObject;
|
||||||
|
@ -25,6 +25,6 @@ _itemName = [_args, 0, ""] call CBA_fnc_defaultParam;
|
|||||||
_attachLimit = [6, 1] select (_player == _attachToVehicle);
|
_attachLimit = [6, 1] select (_player == _attachToVehicle);
|
||||||
_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []];
|
_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []];
|
||||||
|
|
||||||
_playerPos = (ACE_player modelToWorld (ACE_player selectionPosition "pilot"));
|
_playerPos = (ACE_player modelToWorldVisual (ACE_player selectionPosition "pilot"));
|
||||||
|
|
||||||
(canStand _player) && {(_attachToVehicle distance _player) < 7} && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_itemName in ((itemsWithMagazines _player) + [""])};
|
(canStand _player) && {(_attachToVehicle distance _player) < 7} && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_itemName in ((itemsWithMagazines _player) + [""])};
|
||||||
|
@ -45,7 +45,7 @@ while {(_closeInMax - _closeInMin) > 0.01} do {
|
|||||||
// systemChat format ["Trying %1 from %2 start %3", _closeInDistance, [_closeInMax, _closeInMin], _startDistanceFromCenter];
|
// systemChat format ["Trying %1 from %2 start %3", _closeInDistance, [_closeInMax, _closeInMin], _startDistanceFromCenter];
|
||||||
_endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance);
|
_endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance);
|
||||||
_endPosTestOffset set [2, (_startingOffset select 2)];
|
_endPosTestOffset set [2, (_startingOffset select 2)];
|
||||||
_endPosTest = _attachToVehicle modelToWorld _endPosTestOffset;
|
_endPosTest = _attachToVehicle modelToWorldVisual _endPosTestOffset;
|
||||||
|
|
||||||
_doesIntersect = false;
|
_doesIntersect = false;
|
||||||
{
|
{
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
#include "\z\ace\Addons\main\script_mod.hpp"
|
#include "\z\ace\Addons\main\script_mod.hpp"
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_ATTACH
|
#ifdef DEBUG_ENABLED_ATTACH
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_SETTINGS_ATTACH
|
#ifdef DEBUG_SETTINGS_ATTACH
|
||||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "\z\ace\Addons\main\script_macros.hpp"
|
#include "\z\ace\Addons\main\script_macros.hpp"
|
@ -37,7 +37,7 @@ _sounds = [
|
|||||||
QUOTE(PATHTO_R(sounds\zip_out.wav))
|
QUOTE(PATHTO_R(sounds\zip_out.wav))
|
||||||
];
|
];
|
||||||
|
|
||||||
_position = _target modelToWorld (_target selectionPosition "Spine3");
|
_position = _target modelToWorldVisual (_target selectionPosition "Spine3");
|
||||||
_position = _position call EFUNC(common,positionToASL);
|
_position = _position call EFUNC(common,positionToASL);
|
||||||
|
|
||||||
playSound3D [
|
playSound3D [
|
||||||
|
20
addons/ballistics/CfgAmmo.hpp
Normal file
20
addons/ballistics/CfgAmmo.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
class CfgAmmo {
|
||||||
|
class BulletCore;
|
||||||
|
|
||||||
|
class BulletBase: BulletCore {
|
||||||
|
timeToLive = 15; // Default: 6, doubleplusgood all munition range.
|
||||||
|
};
|
||||||
|
|
||||||
|
class B_20mm : BulletBase {
|
||||||
|
timeToLive = 30;
|
||||||
|
};
|
||||||
|
class B_25mm : BulletBase {
|
||||||
|
timeToLive = 30;
|
||||||
|
};
|
||||||
|
class B_35mm_AA : BulletBase {
|
||||||
|
timeToLive = 30;
|
||||||
|
};
|
||||||
|
class B_30mm_AP : BulletBase {
|
||||||
|
timeToLive = 30;
|
||||||
|
};
|
||||||
|
};
|
@ -14,3 +14,4 @@ class CfgPatches {
|
|||||||
|
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
#include "CfgWeapons.hpp"
|
#include "CfgWeapons.hpp"
|
||||||
|
#include "CfgAmmo.hpp"
|
@ -4,10 +4,10 @@
|
|||||||
_wall = _this select 0;
|
_wall = _this select 0;
|
||||||
|
|
||||||
if (local _wall) then {
|
if (local _wall) then {
|
||||||
_paper = "UserTexture_1x2_F" createVehicle position _wall;
|
_paper = "UserTexture_1x2_F" createVehicle position _wall;
|
||||||
|
|
||||||
_paper attachTo [_wall, [0,-0.02,0.6]];
|
_paper attachTo [_wall, [0,-0.02,0.6]];
|
||||||
_paper setDir getDir _wall;
|
_paper setDir getDir _wall;
|
||||||
|
|
||||||
_paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))];
|
_paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))];
|
||||||
};
|
};
|
||||||
|
@ -18,9 +18,6 @@
|
|||||||
|
|
||||||
EXPLODE_2_PVT(_this,_unit,_isUnconc);
|
EXPLODE_2_PVT(_this,_unit,_isUnconc);
|
||||||
|
|
||||||
diag_log "handleOnUnconscious";
|
|
||||||
diag_log _this;
|
|
||||||
diag_log _unit;
|
|
||||||
if (!local _unit) exitWith {};
|
if (!local _unit) exitWith {};
|
||||||
|
|
||||||
if (_isUnconc) then {
|
if (_isUnconc) then {
|
||||||
|
@ -73,6 +73,16 @@ PREP(getStringFromMissionSQM);
|
|||||||
PREP(getTargetAzimuthAndInclination);
|
PREP(getTargetAzimuthAndInclination);
|
||||||
PREP(getTargetDistance);
|
PREP(getTargetDistance);
|
||||||
PREP(getTargetObject);
|
PREP(getTargetObject);
|
||||||
|
PREP(getTurnedOnLights);
|
||||||
|
PREP(getTurretCommander);
|
||||||
|
PREP(getTurretConfigPath);
|
||||||
|
PREP(getTurretCopilot);
|
||||||
|
PREP(getTurretGunner);
|
||||||
|
PREP(getTurretIndex);
|
||||||
|
PREP(getTurrets);
|
||||||
|
PREP(getTurretsFFV);
|
||||||
|
PREP(getTurretsOther);
|
||||||
|
PREP(getTurretDirection);
|
||||||
PREP(getUavControlPosition);
|
PREP(getUavControlPosition);
|
||||||
PREP(getVehicleCargo);
|
PREP(getVehicleCargo);
|
||||||
PREP(getVehicleCodriver);
|
PREP(getVehicleCodriver);
|
||||||
@ -102,6 +112,7 @@ PREP(isModLoaded);
|
|||||||
PREP(isPlayer);
|
PREP(isPlayer);
|
||||||
PREP(isTurnedOut);
|
PREP(isTurnedOut);
|
||||||
PREP(letterToCode);
|
PREP(letterToCode);
|
||||||
|
PREP(lightIntensityFromObject);
|
||||||
PREP(loadPerson);
|
PREP(loadPerson);
|
||||||
PREP(loadPersonLocal);
|
PREP(loadPersonLocal);
|
||||||
PREP(loadSettingsFromProfile);
|
PREP(loadSettingsFromProfile);
|
||||||
@ -113,6 +124,7 @@ PREP(moveToTempGroup);
|
|||||||
PREP(muteUnit);
|
PREP(muteUnit);
|
||||||
PREP(numberToDigits);
|
PREP(numberToDigits);
|
||||||
PREP(numberToDigitsString);
|
PREP(numberToDigitsString);
|
||||||
|
PREP(numberToString);
|
||||||
PREP(onAnswerRequest);
|
PREP(onAnswerRequest);
|
||||||
PREP(onLoadRscDisplayChannel);
|
PREP(onLoadRscDisplayChannel);
|
||||||
PREP(owned);
|
PREP(owned);
|
||||||
@ -179,6 +191,8 @@ PREP(getConfigGunner);
|
|||||||
PREP(getConfigCommander);
|
PREP(getConfigCommander);
|
||||||
PREP(getHitPoints);
|
PREP(getHitPoints);
|
||||||
PREP(getHitPointsWithSelections);
|
PREP(getHitPointsWithSelections);
|
||||||
|
PREP(getReflectorsWithSelections);
|
||||||
|
PREP(getLightProperties);
|
||||||
PREP(getVehicleCrew);
|
PREP(getVehicleCrew);
|
||||||
|
|
||||||
// turrets
|
// turrets
|
||||||
|
@ -29,7 +29,7 @@ private "_index";
|
|||||||
_index = _conditionNames find _conditionName;
|
_index = _conditionNames find _conditionName;
|
||||||
|
|
||||||
if (_index == -1) then {
|
if (_index == -1) then {
|
||||||
_index = count _conditionNames;
|
_index = count _conditionNames;
|
||||||
};
|
};
|
||||||
|
|
||||||
_conditionNames set [_index, _conditionName];
|
_conditionNames set [_index, _conditionName];
|
||||||
|
@ -57,7 +57,7 @@ switch ((_type select 0)) do {
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
_addedToPlayer = false;
|
_addedToPlayer = false;
|
||||||
_pos = _unit modelToWorld [0,1,0.05];
|
_pos = _unit modelToWorldVisual [0,1,0.05];
|
||||||
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
|
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
|
||||||
_unit addWeaponCargoGlobal [_classname,1];
|
_unit addWeaponCargoGlobal [_classname,1];
|
||||||
_unit setPosATL _pos;
|
_unit setPosATL _pos;
|
||||||
@ -73,7 +73,7 @@ switch ((_type select 0)) do {
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
_addedToPlayer = false;
|
_addedToPlayer = false;
|
||||||
_pos = _unit modelToWorld [0,1,0.05];
|
_pos = _unit modelToWorldVisual [0,1,0.05];
|
||||||
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
|
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
|
||||||
_unit addMagazineCargoGlobal [_classname, 1];
|
_unit addMagazineCargoGlobal [_classname, 1];
|
||||||
_unit setPosATL _pos;
|
_unit setPosATL _pos;
|
||||||
@ -89,7 +89,7 @@ switch ((_type select 0)) do {
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
_addedToPlayer = false;
|
_addedToPlayer = false;
|
||||||
_pos = _unit modelToWorld [0,1,0.05];
|
_pos = _unit modelToWorldVisual [0,1,0.05];
|
||||||
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
|
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
|
||||||
_unit addItemCargoGlobal [_classname,1];
|
_unit addItemCargoGlobal [_classname,1];
|
||||||
_unit setPosATL _pos;
|
_unit setPosATL _pos;
|
||||||
|
@ -11,4 +11,4 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
sunOrMoon * sunOrMoon * (1 - overcast * 0.25) + (moonIntensity/5 min 1) * (1 - overcast)
|
(sunOrMoon * sunOrMoon * (1 - overcast * 0.25) + (moonIntensity/5) * (1 - overcast)) min 1
|
||||||
|
@ -15,28 +15,28 @@ _id = _this select 0;
|
|||||||
_show = if (count _this > 1) then {_this select 1} else {false};
|
_show = if (count _this > 1) then {_this select 1} else {false};
|
||||||
|
|
||||||
if (isnil QGVAR(SHOW_BLUR_SCREEN_COLLECTION)) then {
|
if (isnil QGVAR(SHOW_BLUR_SCREEN_COLLECTION)) then {
|
||||||
GVAR(SHOW_BLUR_SCREEN_COLLECTION) = [];
|
GVAR(SHOW_BLUR_SCREEN_COLLECTION) = [];
|
||||||
};
|
};
|
||||||
if (typeName _show == typeName 0) then {
|
if (typeName _show == typeName 0) then {
|
||||||
_show = (_show == 1);
|
_show = (_show == 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_show) then {
|
if (_show) then {
|
||||||
GVAR(SHOW_BLUR_SCREEN_COLLECTION) pushback _id;
|
GVAR(SHOW_BLUR_SCREEN_COLLECTION) pushback _id;
|
||||||
// show blur
|
// show blur
|
||||||
if (isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
|
if (isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
|
||||||
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = ppEffectCreate ["DynamicBlur", 102];
|
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = ppEffectCreate ["DynamicBlur", 102];
|
||||||
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectAdjust [0.9];
|
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectAdjust [0.9];
|
||||||
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectEnable true;
|
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectEnable true;
|
||||||
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectCommit 0;
|
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectCommit 0;
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
GVAR(SHOW_BLUR_SCREEN_COLLECTION) = GVAR(SHOW_BLUR_SCREEN_COLLECTION) - [_id];
|
GVAR(SHOW_BLUR_SCREEN_COLLECTION) = GVAR(SHOW_BLUR_SCREEN_COLLECTION) - [_id];
|
||||||
if (GVAR(SHOW_BLUR_SCREEN_COLLECTION) isEqualTo []) then {
|
if (GVAR(SHOW_BLUR_SCREEN_COLLECTION) isEqualTo []) then {
|
||||||
// hide blur
|
// hide blur
|
||||||
if (!isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
|
if (!isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
|
||||||
ppEffectDestroy GVAR(MENU_ppHandle_GUI_BLUR_SCREEN);
|
ppEffectDestroy GVAR(MENU_ppHandle_GUI_BLUR_SCREEN);
|
||||||
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = nil;
|
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = nil;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -242,10 +242,10 @@ _fnc_isInRange = {
|
|||||||
private ["_unitPosition", "_distance"];
|
private ["_unitPosition", "_distance"];
|
||||||
_unitPosition = getPos _unit;
|
_unitPosition = getPos _unit;
|
||||||
|
|
||||||
_distance = _unitPosition distance (_vehicle modelToWorld _selectionPosition);
|
_distance = _unitPosition distance (_vehicle modelToWorldVisual _selectionPosition);
|
||||||
|
|
||||||
if (!isNil "_selectionPosition2") then {
|
if (!isNil "_selectionPosition2") then {
|
||||||
_distance = _distance min (_unitPosition distance (_vehicle modelToWorld _selectionPosition2));
|
_distance = _distance min (_unitPosition distance (_vehicle modelToWorldVisual _selectionPosition2));
|
||||||
};
|
};
|
||||||
|
|
||||||
_distance < _radius
|
_distance < _radius
|
||||||
|
@ -19,40 +19,35 @@ private ["_projectile", "_adjustDir", "_adjustUp", "_adjustSpeed", "_vdir", "_di
|
|||||||
_projectile = _this select 0;
|
_projectile = _this select 0;
|
||||||
_adjustDir = _this select 1;
|
_adjustDir = _this select 1;
|
||||||
_adjustUp = _this select 2;
|
_adjustUp = _this select 2;
|
||||||
_adjustSpeed = _this select 3;
|
|
||||||
|
|
||||||
if (isNil "_adjustSpeed") then {
|
_adjustSpeed = if (count _this > 3) then {
|
||||||
_adjustSpeed = 0;
|
_this select 3
|
||||||
|
} else {
|
||||||
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
["CPD", [_fnc_scriptNameParent, _adjustDir, _adjustUp, _adjustSpeed], nil, false] call FUNC(log);
|
["CPD", [_fnc_scriptNameParent, _adjustDir, _adjustUp, _adjustSpeed], nil, false] call FUNC(log);
|
||||||
|
|
||||||
// get old direction vector
|
// get old direction vector
|
||||||
_vdir = vectorDir _projectile;
|
_vdir = vectorNormalized velocity _projectile;
|
||||||
|
|
||||||
// get azimuth and inclination and apply corrections
|
// get azimuth and inclination and apply corrections
|
||||||
_dir = (_vdir select 0) atan2 (_vdir select 1) + _adjustDir;
|
_dir = (_vdir select 0) atan2 (_vdir select 1) + _adjustDir;
|
||||||
_up = sqrt ((_vdir select 1) ^ 2 + (_vdir select 0) ^ 2) atan2 - (_vdir select 2) + _adjustUp;
|
_up = asin (_vdir select 2) + _adjustUp;
|
||||||
|
|
||||||
// get new direction vector (this is a unit vector)
|
// get new direction vector (this is a unit vector)
|
||||||
_vdir = [
|
_vdir = [
|
||||||
sin _dir * sin _up,
|
sin _dir * cos _up,
|
||||||
cos _dir * sin _up,
|
cos _dir * cos _up,
|
||||||
- cos _up
|
sin _up
|
||||||
];
|
];
|
||||||
|
|
||||||
// get best up vector
|
// get best up vector
|
||||||
_l = sqrt ((_vdir select 0) ^ 2 + (_vdir select 1) ^ 2); if (_l == 0) then {diag_log text format ["[ACE] ERROR: %1, %2, %3, %4, %5, %6, %7", _projectile, _adjustDir, _adjustUp, vectorDir _projectile, _vdir, _dir, _up]};
|
_vlat = vectorNormalized (_vdir vectorCrossProduct [0,0,1]);
|
||||||
_r = -(_vdir select 2) / _l;
|
_vup = _vlat vectorCrossProduct _vdir;
|
||||||
|
|
||||||
_vup = [
|
|
||||||
(_vdir select 0) * _r,
|
|
||||||
(_vdir select 1) * _r,
|
|
||||||
_l
|
|
||||||
];
|
|
||||||
|
|
||||||
// get new speed vector. Keep total speed, but change to new direction. Yay for vector commands.
|
// get new speed vector. Keep total speed, but change to new direction. Yay for vector commands.
|
||||||
_vel = _vdir vectorMultiply _adjustSpeed + vectorMagnitude velocity _projectile;
|
_vel = _vdir vectorMultiply (_adjustSpeed + vectorMagnitude velocity _projectile);
|
||||||
|
|
||||||
// set projectile direction dir and up. Projectiles are long objects, especially with tracers, so it would look dumb otherwise.
|
// set projectile direction dir and up. Projectiles are long objects, especially with tracers, so it would look dumb otherwise.
|
||||||
_projectile setVectorDirAndUp [_vdir, _vup];
|
_projectile setVectorDirAndUp [_vdir, _vup];
|
||||||
|
@ -34,13 +34,13 @@
|
|||||||
#define Y_POS_ICONS_SECOND (TOP_SIDE + (1.1 * ICON_WIDTH))
|
#define Y_POS_ICONS_SECOND (TOP_SIDE + (1.1 * ICON_WIDTH))
|
||||||
|
|
||||||
// setting values
|
// setting values
|
||||||
#define TOP_RIGHT_DOWN 1
|
#define TOP_RIGHT_DOWN 1
|
||||||
#define TOP_RIGHT_LEFT 2
|
#define TOP_RIGHT_LEFT 2
|
||||||
#define TOP_LEFT_DOWN 3
|
#define TOP_LEFT_DOWN 3
|
||||||
#define TOP_LEFT_RIGHT 4
|
#define TOP_LEFT_RIGHT 4
|
||||||
|
|
||||||
// other constants
|
// other constants
|
||||||
#define DEFAULT_TIME 6
|
#define DEFAULT_TIME 6
|
||||||
|
|
||||||
private ["_iconId", "_show", "_icon", "_allControls", "_refresh", "_timeAlive", "_list", "_color"];
|
private ["_iconId", "_show", "_icon", "_allControls", "_refresh", "_timeAlive", "_list", "_color"];
|
||||||
_iconId = _this select 0;
|
_iconId = _this select 0;
|
||||||
@ -53,68 +53,68 @@ disableSerialization;
|
|||||||
_list = missionNamespace getvariable [QGVAR(displayIconList),[]];
|
_list = missionNamespace getvariable [QGVAR(displayIconList),[]];
|
||||||
|
|
||||||
_refresh = {
|
_refresh = {
|
||||||
private ["_allControls"];
|
private ["_allControls"];
|
||||||
// Refreshing of all icons..
|
// Refreshing of all icons..
|
||||||
_allControls = missionNamespace getvariable [QGVAR(displayIconListControls), []];
|
_allControls = missionNamespace getvariable [QGVAR(displayIconListControls), []];
|
||||||
{
|
{
|
||||||
ctrlDelete _x;
|
ctrlDelete _x;
|
||||||
}foreach _allControls;
|
}foreach _allControls;
|
||||||
|
|
||||||
_allControls = [];
|
_allControls = [];
|
||||||
|
|
||||||
private ["_ctrl", "_setting"];
|
private ["_ctrl", "_setting"];
|
||||||
_setting = missionNamespace getvariable[QGVAR(settingFeedbackIcons), 0];
|
_setting = missionNamespace getvariable[QGVAR(settingFeedbackIcons), 0];
|
||||||
if (_setting > 0) then {
|
if (_setting > 0) then {
|
||||||
{
|
{
|
||||||
// +19000 because we want to make certain we are using free IDCs..
|
// +19000 because we want to make certain we are using free IDCs..
|
||||||
_ctrl = ((findDisplay 46) ctrlCreate ["RscPicture", _foreachIndex + 19000]);
|
_ctrl = ((findDisplay 46) ctrlCreate ["RscPicture", _foreachIndex + 19000]);
|
||||||
_position = switch (_setting) do {
|
_position = switch (_setting) do {
|
||||||
case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
|
case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
|
||||||
case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]};
|
case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]};
|
||||||
case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
|
case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
|
||||||
case TOP_LEFT_RIGHT: {[LEFT_SIDE + (0.5 * ICON_WIDTH) - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND, ICON_WIDTH, ICON_WIDTH]};
|
case TOP_LEFT_RIGHT: {[LEFT_SIDE + (0.5 * ICON_WIDTH) - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND, ICON_WIDTH, ICON_WIDTH]};
|
||||||
default {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
|
default {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
|
||||||
};
|
};
|
||||||
_ctrl ctrlSetPosition _position;
|
_ctrl ctrlSetPosition _position;
|
||||||
_ctrl ctrlsetText (_x select 1);
|
_ctrl ctrlsetText (_x select 1);
|
||||||
_ctrl ctrlSetTextColor (_x select 2);
|
_ctrl ctrlSetTextColor (_x select 2);
|
||||||
_ctrl ctrlCommit 0;
|
_ctrl ctrlCommit 0;
|
||||||
_allControls pushback _ctrl;
|
_allControls pushback _ctrl;
|
||||||
}foreach (missionNamespace getvariable [QGVAR(displayIconList),[]]);
|
}foreach (missionNamespace getvariable [QGVAR(displayIconList),[]]);
|
||||||
};
|
};
|
||||||
missionNamespace setvariable [QGVAR(displayIconListControls), _allControls];
|
missionNamespace setvariable [QGVAR(displayIconListControls), _allControls];
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_show) then {
|
if (_show) then {
|
||||||
if ({(_x select 0 == _iconId)} count _list == 0) then {
|
if ({(_x select 0 == _iconId)} count _list == 0) then {
|
||||||
_list pushback [_iconId, _icon, _color, time];
|
_list pushback [_iconId, _icon, _color, time];
|
||||||
} else {
|
} else {
|
||||||
{
|
{
|
||||||
if (_x select 0 == _iconId) exitwith {
|
if (_x select 0 == _iconId) exitwith {
|
||||||
_list set [_foreachIndex, [_iconId, _icon, _color, time]];
|
_list set [_foreachIndex, [_iconId, _icon, _color, time]];
|
||||||
};
|
};
|
||||||
}foreach _list;
|
}foreach _list;
|
||||||
};
|
};
|
||||||
missionNamespace setvariable [QGVAR(displayIconList), _list];
|
missionNamespace setvariable [QGVAR(displayIconList), _list];
|
||||||
call _refresh;
|
call _refresh;
|
||||||
|
|
||||||
if (_timeAlive >= 0) then {
|
if (_timeAlive >= 0) then {
|
||||||
[{
|
[{
|
||||||
[_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon);
|
[_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon);
|
||||||
}, [_iconId], _timeAlive, _timeAlive] call EFUNC(common,waitAndExecute);
|
}, [_iconId], _timeAlive, _timeAlive] call EFUNC(common,waitAndExecute);
|
||||||
};
|
};
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if ({(_x select 0 == _iconId)} count _list == 1) then {
|
if ({(_x select 0 == _iconId)} count _list == 1) then {
|
||||||
private "_newList";
|
private "_newList";
|
||||||
_newList = [];
|
_newList = [];
|
||||||
{
|
{
|
||||||
if (_x select 0 != _iconId) then {
|
if (_x select 0 != _iconId) then {
|
||||||
_newList pushback _x;
|
_newList pushback _x;
|
||||||
};
|
};
|
||||||
}foreach _list;
|
}foreach _list;
|
||||||
|
|
||||||
missionNamespace setvariable [QGVAR(displayIconList), _newList];
|
missionNamespace setvariable [QGVAR(displayIconList), _newList];
|
||||||
call _refresh;
|
call _refresh;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -7,19 +7,19 @@ _var = _this select 0;
|
|||||||
_depth = _this select 1;
|
_depth = _this select 1;
|
||||||
_pad = "";
|
_pad = "";
|
||||||
for "_i" from 0 to _depth do {
|
for "_i" from 0 to _depth do {
|
||||||
_pad = _pad + toString [9];
|
_pad = _pad + toString [9];
|
||||||
};
|
};
|
||||||
_depth = _depth + 1;
|
_depth = _depth + 1;
|
||||||
if(IS_ARRAY(_var)) then {
|
if(IS_ARRAY(_var)) then {
|
||||||
if((count _var) > 0) then {
|
if((count _var) > 0) then {
|
||||||
diag_log text format["%1[", _pad];
|
diag_log text format["%1[", _pad];
|
||||||
{
|
{
|
||||||
[_x, _depth] call FUNC(dumpArray);
|
[_x, _depth] call FUNC(dumpArray);
|
||||||
} forEach _var;
|
} forEach _var;
|
||||||
diag_log text format["%1],", _pad];
|
diag_log text format["%1],", _pad];
|
||||||
} else {
|
} else {
|
||||||
diag_log text format["%1[],", _pad];
|
diag_log text format["%1[],", _pad];
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
diag_log text format["%1%2", _pad, [_var] call FUNC(formatVar)];
|
diag_log text format["%1%2", _pad, [_var] call FUNC(formatVar)];
|
||||||
};
|
};
|
||||||
|
@ -6,42 +6,42 @@
|
|||||||
diag_log text format["REGISTERED ACE PFH HANDLERS"];
|
diag_log text format["REGISTERED ACE PFH HANDLERS"];
|
||||||
diag_log text format["-------------------------------------------"];
|
diag_log text format["-------------------------------------------"];
|
||||||
if(!isNil "ACE_PFH_COUNTER") then {
|
if(!isNil "ACE_PFH_COUNTER") then {
|
||||||
{
|
{
|
||||||
private["_pfh"];
|
private["_pfh"];
|
||||||
_pfh = _x select 0;
|
_pfh = _x select 0;
|
||||||
diag_log text format["Registered PFH: id=%1, %1:%2", (_pfh select 0), (_pfh select 1), (_pfh select 2) ];
|
diag_log text format["Registered PFH: id=%1, %1:%2", (_pfh select 0), (_pfh select 1), (_pfh select 2) ];
|
||||||
} forEach ACE_PFH_COUNTER;
|
} forEach ACE_PFH_COUNTER;
|
||||||
};
|
};
|
||||||
|
|
||||||
diag_log text format["ACE COUNTER RESULTS"];
|
diag_log text format["ACE COUNTER RESULTS"];
|
||||||
diag_log text format["-------------------------------------------"];
|
diag_log text format["-------------------------------------------"];
|
||||||
{
|
{
|
||||||
private["_counterEntry", "_iter", "_total", "_count", "_delta", "_averageResult"];
|
private["_counterEntry", "_iter", "_total", "_count", "_delta", "_averageResult"];
|
||||||
_counterEntry = _x;
|
_counterEntry = _x;
|
||||||
_iter = 0;
|
_iter = 0;
|
||||||
_total = 0;
|
_total = 0;
|
||||||
_count = 0;
|
_count = 0;
|
||||||
_averageResult = 0;
|
_averageResult = 0;
|
||||||
if( (count _counterEntry) > 3) then {
|
if( (count _counterEntry) > 3) then {
|
||||||
// calc
|
// calc
|
||||||
{
|
{
|
||||||
if(_iter > 2) then {
|
if(_iter > 2) then {
|
||||||
_count = _count + 1;
|
_count = _count + 1;
|
||||||
_delta = (_x select 1) - (_x select 0);
|
_delta = (_x select 1) - (_x select 0);
|
||||||
|
|
||||||
_total = _total + _delta;
|
_total = _total + _delta;
|
||||||
};
|
};
|
||||||
_iter = _iter + 1;
|
_iter = _iter + 1;
|
||||||
} forEach _counterEntry;
|
} forEach _counterEntry;
|
||||||
|
|
||||||
// results
|
// results
|
||||||
_averageResult = (_total / _count) * 1000;
|
_averageResult = (_total / _count) * 1000;
|
||||||
|
|
||||||
// dump results
|
// dump results
|
||||||
diag_log text format["%1: Average: %2s / %3 = %4ms", (_counterEntry select 0), _total, _count, _averageResult];
|
diag_log text format["%1: Average: %2s / %3 = %4ms", (_counterEntry select 0), _total, _count, _averageResult];
|
||||||
} else {
|
} else {
|
||||||
diag_log text format["%1: No results", (_counterEntry select 0) ];
|
diag_log text format["%1: No results", (_counterEntry select 0) ];
|
||||||
};
|
};
|
||||||
} forEach ACE_COUNTERS;
|
} forEach ACE_COUNTERS;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -49,21 +49,21 @@ diag_log text format["-------------------------------------------"];
|
|||||||
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER"];
|
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER"];
|
||||||
diag_log text format["-------------------------------------------"];
|
diag_log text format["-------------------------------------------"];
|
||||||
{
|
{
|
||||||
private["_delay"];
|
private["_delay"];
|
||||||
_delay = _x select 2;
|
_delay = _x select 2;
|
||||||
//if(_delay > 0) then { _delay = _delay / 1000; };
|
//if(_delay > 0) then { _delay = _delay / 1000; };
|
||||||
|
|
||||||
diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)];
|
diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)];
|
||||||
} forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER;
|
} forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER;
|
||||||
|
|
||||||
// Dump PFH Trackers
|
// Dump PFH Trackers
|
||||||
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER"];
|
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER"];
|
||||||
diag_log text format["-------------------------------------------"];
|
diag_log text format["-------------------------------------------"];
|
||||||
{
|
{
|
||||||
private["_delta"];
|
private["_delta"];
|
||||||
_delta = _x select 1;
|
_delta = _x select 1;
|
||||||
//if(_delta > 0) then { _delta = _delta / 1000; };
|
//if(_delta > 0) then { _delta = _delta / 1000; };
|
||||||
diag_log text format[" DELTA: %1s", _delta];
|
diag_log text format[" DELTA: %1s", _delta];
|
||||||
} forEach ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER;
|
} forEach ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER;
|
||||||
|
|
||||||
//{
|
//{
|
||||||
|
63
addons/common/functions/fnc_getLightProperties.sqf
Normal file
63
addons/common/functions/fnc_getLightProperties.sqf
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Author: commy2
|
||||||
|
* Read properties of given vehicles light.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Object with lights (Object)
|
||||||
|
* 1: Light classname (String)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Stuff from config (Array)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_vehicle", "_light"];
|
||||||
|
|
||||||
|
_vehicle = _this select 0;
|
||||||
|
_light = _this select 1;
|
||||||
|
|
||||||
|
private "_config";
|
||||||
|
_config = configFile >> "CfgVehicles" >> typeOf _vehicle >> "Reflectors" >> _light;
|
||||||
|
|
||||||
|
private ["_intensity", "_position", "_direction", "_innerAngle", "_outerAngle"];
|
||||||
|
|
||||||
|
_intensity = getNumber (_config >> "intensity");
|
||||||
|
_position = getText (_config >> "position");
|
||||||
|
_direction = getText (_config >> "direction");
|
||||||
|
_innerAngle = getNumber (_config >> "innerAngle");
|
||||||
|
_outerAngle = getNumber (_config >> "outerAngle");
|
||||||
|
|
||||||
|
[_intensity, _position, _direction, _innerAngle, _outerAngle]
|
||||||
|
|
||||||
|
/*
|
||||||
|
class Reflectors
|
||||||
|
{
|
||||||
|
class Light_1
|
||||||
|
{
|
||||||
|
color[] = {1000,1000,1100};
|
||||||
|
ambient[] = {10,10,11};
|
||||||
|
intensity = 5;
|
||||||
|
size = 1;
|
||||||
|
innerAngle = 90;
|
||||||
|
outerAngle = 130;
|
||||||
|
coneFadeCoef = 2;
|
||||||
|
position = "Light_1_pos";
|
||||||
|
direction = "Light_1_dir";
|
||||||
|
hitpoint = "Light_1_hitpoint";
|
||||||
|
selection = "Light_1_hide";
|
||||||
|
useFlare = 1;
|
||||||
|
flareSize = 0.9;
|
||||||
|
flareMaxDistance = 85;
|
||||||
|
class Attenuation
|
||||||
|
{
|
||||||
|
start = 0;
|
||||||
|
constant = 0;
|
||||||
|
linear = 0;
|
||||||
|
quadratic = 0.9;
|
||||||
|
hardLimitStart = 40;
|
||||||
|
hardLimitEnd = 60;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
*/
|
45
addons/common/functions/fnc_getReflectorsWithSelections.sqf
Normal file
45
addons/common/functions/fnc_getReflectorsWithSelections.sqf
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Author: commy2
|
||||||
|
*
|
||||||
|
* Returns all lighting hitpoints of any vehicle.
|
||||||
|
* Note: These are actual selections that are affected by setHit and getHit, not getHitPointDamage or setHitpointDamage.
|
||||||
|
* They behave like having an armor value of 0.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: A vehicle, not the classname (Object)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* The light names and selections (Array)
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_vehicle", "_config", "_hitpoints", "_selections"];
|
||||||
|
|
||||||
|
_vehicle = _this select 0;
|
||||||
|
|
||||||
|
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||||
|
|
||||||
|
_hitpoints = [];
|
||||||
|
_selections = [];
|
||||||
|
|
||||||
|
// iterate through all parents
|
||||||
|
while {isClass _config} do {
|
||||||
|
private "_class";
|
||||||
|
_class = _config >> "Reflectors";
|
||||||
|
|
||||||
|
for "_i" from 0 to (count _class - 1) do {
|
||||||
|
private ["_entry", "_selection"];
|
||||||
|
|
||||||
|
_entry = _class select _i;
|
||||||
|
_selection = getText (_entry >> "hitpoint");
|
||||||
|
|
||||||
|
if (!(_selection in _selections) && {!isNil {_vehicle getHit _selection}}) then {
|
||||||
|
_hitpoints pushBack configName _entry;
|
||||||
|
_selections pushBack _selection;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
_config = inheritsFrom _config;
|
||||||
|
};
|
||||||
|
|
||||||
|
[_hitPoints, _selections]
|
36
addons/common/functions/fnc_getTurnedOnLights.sqf
Normal file
36
addons/common/functions/fnc_getTurnedOnLights.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Author: commy2
|
||||||
|
*
|
||||||
|
* Returns all turned on lights of any vehicle or streetlamp.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: A vehicle, not the classname (Object)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* All burning lights (Array)
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private "_vehicle";
|
||||||
|
|
||||||
|
_vehicle = _this select 0;
|
||||||
|
|
||||||
|
if (!isLightOn _vehicle) exitWith {[]};
|
||||||
|
|
||||||
|
private ["_reflectorsWithSelections", "_lights", "_hitpoints"];
|
||||||
|
|
||||||
|
_reflectorsWithSelections = [_vehicle] call FUNC(getReflectorsWithSelections);
|
||||||
|
|
||||||
|
_lights = _reflectorsWithSelections select 0;
|
||||||
|
_hitpoints = _reflectorsWithSelections select 1;
|
||||||
|
|
||||||
|
private "_turnedOnLights";
|
||||||
|
_turnedOnLights = [];
|
||||||
|
{
|
||||||
|
if (_vehicle getHit _x <= 0.9) then {
|
||||||
|
_turnedOnLights pushBack (_lights select _forEachIndex);
|
||||||
|
};
|
||||||
|
|
||||||
|
} forEach _hitpoints;
|
||||||
|
|
||||||
|
_turnedOnLights
|
37
addons/common/functions/fnc_getTurretDirection.sqf
Normal file
37
addons/common/functions/fnc_getTurretDirection.sqf
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Get the absolute turret direction for FOV/PIP turret.
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: Vehicle (Object)
|
||||||
|
* 1: Turret Position
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* [position, direction]
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
EXPLODE_2_PVT(_this,_vehicle,_position);
|
||||||
|
private ["_turrets", "_turret", "_config", "_turret", "_povPos", "_povDir", "_gunBeginPos", "_gunEndPos", "_pov"];
|
||||||
|
|
||||||
|
_turret = [_vehicle, _position] call CBA_fnc_getTurret;
|
||||||
|
_pov = getText (_turret >> "memoryPointGunnerOptics");
|
||||||
|
_gunBeg = getText (_turret >> "gunBeg");
|
||||||
|
_gunEnd = getText (_turret >> "gunEnd");
|
||||||
|
TRACE_3("", _pov, _gunBeg, _gunEnd);
|
||||||
|
|
||||||
|
// Pull the PIP pov or barrel direction, depending on how the model is set up
|
||||||
|
_povPos = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition _pov ) );
|
||||||
|
_povDir = [0,0,0];
|
||||||
|
|
||||||
|
if(_pov == "pip0_pos") then {
|
||||||
|
_pipDir = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition "pip0_dir" ) );
|
||||||
|
_povDir = _pipDir vectorDiff _povPos;
|
||||||
|
} else {
|
||||||
|
_gunBeginPos = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition _gunBeg ) );
|
||||||
|
_gunEndPos = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition _gunEnd ) );
|
||||||
|
_povDir = _gunBeginPos vectorDiff _gunEndPos;
|
||||||
|
};
|
||||||
|
|
||||||
|
[_povPos, _povDir]
|
@ -14,7 +14,7 @@ private ["_unit","_return","_aslPos"];
|
|||||||
_unit = _this select 0;
|
_unit = _this select 0;
|
||||||
_return = false;
|
_return = false;
|
||||||
if ((surfaceIsWater getPos _unit)) then {
|
if ((surfaceIsWater getPos _unit)) then {
|
||||||
_aslPos = _unit modelToWorld (_unit selectionPosition "head");
|
_aslPos = _unit modelToWorldVisual (_unit selectionPosition "head");
|
||||||
if ((_aslPos select 2) <= 0) then {
|
if ((_aslPos select 2) <= 0) then {
|
||||||
_return = true;
|
_return = true;
|
||||||
};
|
};
|
||||||
|
56
addons/common/functions/fnc_lightIntensityFromObject.sqf
Normal file
56
addons/common/functions/fnc_lightIntensityFromObject.sqf
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Author: commy2
|
||||||
|
* Calculate light intensity object 1 recieves from object 2
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Object that recieves light (Object)
|
||||||
|
* 1: Object that emits light (Object)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Brightest light level
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_lightSource"];
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
_lightSource = _this select 1;
|
||||||
|
|
||||||
|
private "_unitPos";
|
||||||
|
_unitPos = _unit modelToWorld (_unit selectionPosition "spine3");
|
||||||
|
|
||||||
|
private ["_lights", "_lightLevel"];
|
||||||
|
|
||||||
|
_lights = [_lightSource] call FUNC(getTurnedOnLights);
|
||||||
|
|
||||||
|
_lightLevel = 0;
|
||||||
|
|
||||||
|
{
|
||||||
|
private ["_properties", "_intensity", "_innerAngle", "_outerAngle", "_position", "_direction", "_directionToUnit", "_distance", "_angle"];
|
||||||
|
|
||||||
|
_properties = [_lightSource, _x] call FUNC(getLightProperties);
|
||||||
|
|
||||||
|
// @todo intensity affects range?
|
||||||
|
//_intensity = _properties select 0;
|
||||||
|
|
||||||
|
_innerAngle = (_properties select 3) / 2;
|
||||||
|
_outerAngle = (_properties select 4) / 2;
|
||||||
|
|
||||||
|
// get world position and direction
|
||||||
|
_position = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 1));
|
||||||
|
_direction = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 2));
|
||||||
|
|
||||||
|
_direction = _position vectorFromTo _direction;
|
||||||
|
_directionToUnit = _position vectorFromTo _unitPos;
|
||||||
|
|
||||||
|
_distance = _unitPos distance _position;
|
||||||
|
_angle = acos (_direction vectorDotProduct _directionToUnit);
|
||||||
|
|
||||||
|
_lightLevel = _lightLevel max ((linearConversion [0, 30, _distance, 1, 0, true]) * (linearConversion [_innerAngle, _outerAngle, _angle, 1, 0, true]));
|
||||||
|
|
||||||
|
//systemChat format ["%1 %2", (linearConversion [0, 30, _distance, 1, 0, true]), (linearConversion [_innerAngle, _outerAngle, _angle, 1, 0, true])];
|
||||||
|
|
||||||
|
} forEach _lights;
|
||||||
|
|
||||||
|
_lightLevel
|
@ -15,52 +15,38 @@
|
|||||||
|
|
||||||
GVAR(settings) = [];
|
GVAR(settings) = [];
|
||||||
|
|
||||||
// Load settings from main config
|
_parseConfigForSettings = {
|
||||||
_countOptions = count (configFile >> "ACE_Settings");
|
private ["_config", "_countOptions", "_optionEntry", "_index"];
|
||||||
for "_index" from 0 to (_countOptions - 1) do {
|
|
||||||
_optionEntry = (configFile >> "ACE_Settings") select _index;
|
|
||||||
|
|
||||||
[_optionEntry] call FUNC(setSettingFromConfig);
|
_config = _this select 0;
|
||||||
};
|
_countOptions = count _config;
|
||||||
// Check if all settings should be forced
|
for "_index" from 0 to (_countOptions - 1) do {
|
||||||
if (GVAR(forceAllSettings)) then {
|
_optionEntry = _config select _index;
|
||||||
{
|
[_optionEntry] call FUNC(setSettingFromConfig);
|
||||||
_x set [6, true];
|
|
||||||
} forEach GVAR(settings);
|
|
||||||
};
|
|
||||||
|
|
||||||
// @todo
|
|
||||||
// Load settings from server userconfig only if the ACE_ServerSettings is loaded
|
|
||||||
/*if (isClass (configFile >> "CfgPatches" >> "ACE_ServerSettings")) then {
|
|
||||||
DFUNC(serverUserConfig) = compile preprocessFileLineNumbers "\userconfig\ACE\ACE_Settings.hpp";
|
|
||||||
if !(isNil DFUNC(serverUserConfig)) then {
|
|
||||||
[] call FUNC(serverUserConfig);
|
|
||||||
};
|
};
|
||||||
// Check if all settings should be forced
|
// Check if all settings should be forced
|
||||||
if (GVAR(forceAllSettings)) then {
|
if (GVAR(forceAllSettings)) then {
|
||||||
{
|
{
|
||||||
if !(missionNamespace getVariable format ["%1_forced", _x]) then {
|
_x set [6, true];
|
||||||
missionNamespace setVariable format ["%1_forced", _x, true];
|
} forEach GVAR(settings);
|
||||||
publicVariable format ["%1_forced", _name];
|
|
||||||
};
|
|
||||||
} forEach GVAR(settingsList);
|
|
||||||
};
|
};
|
||||||
};*/
|
|
||||||
|
|
||||||
// Load settings from mission config
|
|
||||||
_countOptions = count (missionConfigFile >> "ACE_Settings");
|
|
||||||
for "_index" from 0 to (_countOptions - 1) do {
|
|
||||||
_optionEntry = (missionConfigFile >> "ACE_Settings") select _index;
|
|
||||||
|
|
||||||
[_optionEntry] call FUNC(setSettingFromConfig);
|
|
||||||
};
|
|
||||||
// Check if all settings should be forced
|
|
||||||
if (GVAR(forceAllSettings)) then {
|
|
||||||
{
|
|
||||||
_x set [6, true];
|
|
||||||
} forEach GVAR(settings);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Order is this way because:
|
||||||
|
// ACE_Settings should never force any setting by default. Loading it first ensures that all settings from ACE_Settings exist.
|
||||||
|
// This way, ACE_ServerSettings will override ACE_Settings, even if no force is used.
|
||||||
|
// Mission settings will override the server config settings, if no force is used.
|
||||||
|
// This ensures that all settings are of their correct type, in case an outdated or corrupt server config is used , as well as have their correct localized display name and description
|
||||||
|
|
||||||
|
// Regular config
|
||||||
|
[configFile >> "ACE_Settings"] call _parseConfigForSettings;
|
||||||
|
|
||||||
|
// Server config
|
||||||
|
[configFile >> "ACE_ServerSettings"] call _parseConfigForSettings;
|
||||||
|
|
||||||
|
// mission side settings
|
||||||
|
[missionConfigFile >> "ACE_Settings"] call _parseConfigForSettings;
|
||||||
|
|
||||||
// Publish all settings data
|
// Publish all settings data
|
||||||
publicVariable QGVAR(settings);
|
publicVariable QGVAR(settings);
|
||||||
// Publish all setting values
|
// Publish all setting values
|
||||||
|
@ -7,11 +7,11 @@ _configs = "true" configClasses (configFile >> _this);
|
|||||||
_entries = [];
|
_entries = [];
|
||||||
|
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
_name = toLower configName _x;
|
_name = toLower configName _x;
|
||||||
if !(_name in _entries) then {
|
if !(_name in _entries) then {
|
||||||
diag_log text _name;
|
diag_log text _name;
|
||||||
_entries pushBack _name;
|
_entries pushBack _name;
|
||||||
};
|
};
|
||||||
} forEach configProperties [_x, "toLower configName _x find 'ace' == 0", false];
|
} forEach configProperties [_x, "toLower configName _x find 'ace' == 0", false];
|
||||||
} forEach _configs;
|
} forEach _configs;
|
||||||
|
25
addons/common/functions/fnc_numberToString.sqf
Normal file
25
addons/common/functions/fnc_numberToString.sqf
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: commy2
|
||||||
|
*
|
||||||
|
* Converts a number to a string without losing as much precission as str or format.
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: A number (Number)
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* The number as string (String)
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_number", "_decimals"];
|
||||||
|
|
||||||
|
_number = _this select 0;
|
||||||
|
|
||||||
|
_decimals = str (abs(_number) mod 1);
|
||||||
|
_decimals = toArray _decimals;
|
||||||
|
_decimals deleteAt 0;
|
||||||
|
|
||||||
|
if (_number < 0) exitWith {
|
||||||
|
format ["-%1%2", floor abs(_number), toString _decimals];
|
||||||
|
};
|
||||||
|
format ["%1%2", floor _number, toString _decimals];
|
@ -18,30 +18,30 @@ _type = [_this, 3, 0,[0]] call BIS_fnc_Param;
|
|||||||
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
|
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
|
||||||
|
|
||||||
if (isPlayer _reciever) then {
|
if (isPlayer _reciever) then {
|
||||||
if (!local _reciever) then {
|
if (!local _reciever) then {
|
||||||
[_this, QUOTE(FUNC(sendDisplayInformationTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
|
[_this, QUOTE(FUNC(sendDisplayInformationTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
|
||||||
} else {
|
} else {
|
||||||
if (isLocalized _title) then {
|
if (isLocalized _title) then {
|
||||||
_title = localize _title;
|
_title = localize _title;
|
||||||
};
|
};
|
||||||
_localizationArray = [_title];
|
_localizationArray = [_title];
|
||||||
{
|
{
|
||||||
_localizationArray pushback _x;
|
_localizationArray pushback _x;
|
||||||
}foreach _parameters;
|
}foreach _parameters;
|
||||||
_title = format _localizationArray;
|
_title = format _localizationArray;
|
||||||
|
|
||||||
{
|
{
|
||||||
if (isLocalized _x) then {
|
if (isLocalized _x) then {
|
||||||
_localizationArray = [localize _x];
|
_localizationArray = [localize _x];
|
||||||
{
|
{
|
||||||
_localizationArray pushback _x;
|
_localizationArray pushback _x;
|
||||||
}foreach _parameters;
|
}foreach _parameters;
|
||||||
|
|
||||||
_content set [_foreachIndex, format _localizationArray];
|
_content set [_foreachIndex, format _localizationArray];
|
||||||
};
|
};
|
||||||
|
|
||||||
}foreach _content;
|
}foreach _content;
|
||||||
|
|
||||||
[_title,_content,_type] call EFUNC(common,displayInformation);
|
[_title,_content,_type] call EFUNC(common,displayInformation);
|
||||||
};
|
};
|
||||||
};
|
};
|
@ -18,29 +18,29 @@ _type = [_this, 3, 0,[0]] call BIS_fnc_Param;
|
|||||||
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
|
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
|
||||||
|
|
||||||
if (isPlayer _reciever) then {
|
if (isPlayer _reciever) then {
|
||||||
if (!local _reciever) then {
|
if (!local _reciever) then {
|
||||||
[_this, QUOTE(FUNC(sendDisplayMessageTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
|
[_this, QUOTE(FUNC(sendDisplayMessageTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (isLocalized _title) then {
|
if (isLocalized _title) then {
|
||||||
_title = localize _title;
|
_title = localize _title;
|
||||||
};
|
};
|
||||||
if (isLocalized _content) then {
|
if (isLocalized _content) then {
|
||||||
_content = localize _content;
|
_content = localize _content;
|
||||||
};
|
};
|
||||||
|
|
||||||
_localizationArray = [_title];
|
_localizationArray = [_title];
|
||||||
{
|
{
|
||||||
_localizationArray pushback _x;
|
_localizationArray pushback _x;
|
||||||
}foreach _parameters;
|
}foreach _parameters;
|
||||||
_title = format _localizationArray;
|
_title = format _localizationArray;
|
||||||
|
|
||||||
_localizationArray = [_content];
|
_localizationArray = [_content];
|
||||||
{
|
{
|
||||||
_localizationArray pushback _x;
|
_localizationArray pushback _x;
|
||||||
}foreach _parameters;
|
}foreach _parameters;
|
||||||
_content = format _localizationArray;
|
_content = format _localizationArray;
|
||||||
|
|
||||||
[_title,_content,_type] call EFUNC(common,displayMessage);
|
[_title,_content,_type] call EFUNC(common,displayMessage);
|
||||||
};
|
};
|
||||||
};
|
};
|
@ -1,13 +1,13 @@
|
|||||||
#include "\z\ace\addons\common\script_component.hpp"
|
#include "\z\ace\addons\common\script_component.hpp"
|
||||||
|
|
||||||
#define VALIDHASH(hash) (IS_ARRAY(hash) && {(count hash) >= 2} && {IS_ARRAY(hash select 0)} && {IS_ARRAY(hash select 1)})
|
#define VALIDHASH(hash) (IS_ARRAY(hash) && {(count hash) >= 2} && {IS_ARRAY(hash select 0)} && {IS_ARRAY(hash select 1)})
|
||||||
#define ERROR(msg) throw msg + format[" @ %1:%2", _callFrom, _lineNo]
|
#define ERROR(msg) throw msg + format[" @ %1:%2", _callFrom, _lineNo]
|
||||||
#define HANDLECATCH diag_log text _exception; assert(exception=="")
|
#define HANDLECATCH diag_log text _exception; assert(exception=="")
|
||||||
|
|
||||||
#define ERRORDATA(c) private ["_callFrom", "_lineNo"];\
|
#define ERRORDATA(c) private ["_callFrom", "_lineNo"];\
|
||||||
_callFrom = "";\
|
_callFrom = "";\
|
||||||
_lineNo = -1;\
|
_lineNo = -1;\
|
||||||
if((count _this) > c) then {\
|
if((count _this) > c) then {\
|
||||||
_callFrom = _this select c;\
|
_callFrom = _this select c;\
|
||||||
_lineNo = _this select c+1;\
|
_lineNo = _this select c+1;\
|
||||||
};
|
};
|
@ -1,351 +1,349 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Edited with tabler - 2014-12-16 -->
|
<!-- Edited with tabler - 2015-04-06 -->
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Common">
|
<Package name="Common">
|
||||||
<Key ID="STR_ACE_Common_ACETeam">
|
<Key ID="STR_ACE_Common_ACETeam">
|
||||||
<English>ACE-Team</English>
|
<English>ACE-Team</English>
|
||||||
<German>ACE-Team</German>
|
<German>ACE-Team</German>
|
||||||
<Spanish>ACE-Team</Spanish>
|
<Spanish>ACE-Team</Spanish>
|
||||||
<Polish>ACE-Team</Polish>
|
<Polish>ACE-Team</Polish>
|
||||||
<Czech>ACE-Team</Czech>
|
<Czech>ACE-Team</Czech>
|
||||||
<French>ACE-Team</French>
|
<French>ACE-Team</French>
|
||||||
<Russian>Команда ACE</Russian>
|
<Russian>Команда ACE</Russian>
|
||||||
<Portuguese>ACE-Team</Portuguese>
|
<Portuguese>ACE-Team</Portuguese>
|
||||||
<Hungarian>ACE-Team</Hungarian>
|
<Hungarian>ACE-Team</Hungarian>
|
||||||
<Italian>ACE-Team</Italian>
|
<Italian>ACE-Team</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_Save">
|
<Key ID="STR_ACE_Common_Save">
|
||||||
<English>Save</English>
|
<English>Save</English>
|
||||||
<German>Speichern</German>
|
<German>Speichern</German>
|
||||||
<Spanish>Guardar</Spanish>
|
<Spanish>Guardar</Spanish>
|
||||||
<Polish>Zapisz</Polish>
|
<Polish>Zapisz</Polish>
|
||||||
<Czech>Uložit</Czech>
|
<Czech>Uložit</Czech>
|
||||||
<French>Sauvegarder</French>
|
<French>Sauvegarder</French>
|
||||||
<Russian>Сохранить</Russian>
|
<Russian>Сохранить</Russian>
|
||||||
<Portuguese>Salvar</Portuguese>
|
<Portuguese>Salvar</Portuguese>
|
||||||
<Hungarian>Mentés</Hungarian>
|
<Hungarian>Mentés</Hungarian>
|
||||||
<Italian>Salva</Italian>
|
<Italian>Salva</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_Cancel">
|
<Key ID="STR_ACE_Common_Cancel">
|
||||||
<English>Cancel</English>
|
<English>Cancel</English>
|
||||||
<German>Abbrechen</German>
|
<German>Abbrechen</German>
|
||||||
<Spanish>Cancelar</Spanish>
|
<Spanish>Cancelar</Spanish>
|
||||||
<Polish>Anuluj</Polish>
|
<Polish>Anuluj</Polish>
|
||||||
<Czech>Zrušit</Czech>
|
<Czech>Zrušit</Czech>
|
||||||
<French>Annuler</French>
|
<French>Annuler</French>
|
||||||
<Russian>Отмена</Russian>
|
<Russian>Отмена</Russian>
|
||||||
<Portuguese>Cancelar</Portuguese>
|
<Portuguese>Cancelar</Portuguese>
|
||||||
<Hungarian>Mégse</Hungarian>
|
<Hungarian>Mégse</Hungarian>
|
||||||
<Italian>Annulla</Italian>
|
<Italian>Annulla</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_Options">
|
<Key ID="STR_ACE_Common_Options">
|
||||||
<English>ACE Options</English>
|
<English>ACE Options</English>
|
||||||
<German>ACE Optionen</German>
|
<German>ACE Optionen</German>
|
||||||
<Spanish>Opciones ACE</Spanish>
|
<Spanish>Opciones ACE</Spanish>
|
||||||
<Polish>Opcje ACE</Polish>
|
<Polish>Opcje ACE</Polish>
|
||||||
<Czech>ACE Nastavení</Czech>
|
<Czech>ACE Nastavení</Czech>
|
||||||
<French>ACE Options</French>
|
<French>ACE Options</French>
|
||||||
<Russian>ACE Настройки</Russian>
|
<Russian>ACE Настройки</Russian>
|
||||||
<Portuguese>Opções do ACE</Portuguese>
|
<Portuguese>Opções do ACE</Portuguese>
|
||||||
<Hungarian>ACE Opciók</Hungarian>
|
<Hungarian>ACE Opciók</Hungarian>
|
||||||
<Italian>Opzioni ACE</Italian>
|
<Italian>Opzioni ACE</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<!-- These are cardinal directions, in case you didn't guess. -->
|
<!-- These are cardinal directions, in case you didn't guess. -->
|
||||||
<Key ID="STR_ACE_Common_N">
|
<Key ID="STR_ACE_Common_N">
|
||||||
<English>N</English>
|
<English>N</English>
|
||||||
<German>N</German>
|
<German>N</German>
|
||||||
<Spanish>N</Spanish>
|
<Spanish>N</Spanish>
|
||||||
<Polish>N</Polish>
|
<Polish>N</Polish>
|
||||||
<Czech>S</Czech>
|
<Czech>S</Czech>
|
||||||
<French>N</French>
|
<French>N</French>
|
||||||
<Russian>С</Russian>
|
<Russian>С</Russian>
|
||||||
<Portuguese>N</Portuguese>
|
<Portuguese>N</Portuguese>
|
||||||
<Hungarian>É</Hungarian>
|
<Hungarian>É</Hungarian>
|
||||||
<Italian>N</Italian>
|
<Italian>N</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_NNE">
|
<Key ID="STR_ACE_Common_NNE">
|
||||||
<English>NNE</English>
|
<English>NNE</English>
|
||||||
<German>NNO</German>
|
<German>NNO</German>
|
||||||
<Spanish>NNE</Spanish>
|
<Spanish>NNE</Spanish>
|
||||||
<Polish>NNE</Polish>
|
<Polish>NNE</Polish>
|
||||||
<Czech>SSV</Czech>
|
<Czech>SSV</Czech>
|
||||||
<French>NNE</French>
|
<French>NNE</French>
|
||||||
<Russian>ССВ</Russian>
|
<Russian>ССВ</Russian>
|
||||||
<Portuguese>NNE</Portuguese>
|
<Portuguese>NNE</Portuguese>
|
||||||
<Hungarian>ÉÉK</Hungarian>
|
<Hungarian>ÉÉK</Hungarian>
|
||||||
<Italian>NNE</Italian>
|
<Italian>NNE</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_NE">
|
<Key ID="STR_ACE_Common_NE">
|
||||||
<English>NE</English>
|
<English>NE</English>
|
||||||
<German>NO</German>
|
<German>NO</German>
|
||||||
<Spanish>NE</Spanish>
|
<Spanish>NE</Spanish>
|
||||||
<Polish>NE</Polish>
|
<Polish>NE</Polish>
|
||||||
<Czech>SV</Czech>
|
<Czech>SV</Czech>
|
||||||
<French>NE</French>
|
<French>NE</French>
|
||||||
<Russian>СВ</Russian>
|
<Russian>СВ</Russian>
|
||||||
<Portuguese>NE</Portuguese>
|
<Portuguese>NE</Portuguese>
|
||||||
<Hungarian>ÉK</Hungarian>
|
<Hungarian>ÉK</Hungarian>
|
||||||
<Italian>NE</Italian>
|
<Italian>NE</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_ENE">
|
<Key ID="STR_ACE_Common_ENE">
|
||||||
<English>ENE</English>
|
<English>ENE</English>
|
||||||
<German>ONO</German>
|
<German>ONO</German>
|
||||||
<Spanish>ENE</Spanish>
|
<Spanish>ENE</Spanish>
|
||||||
<Polish>ENE</Polish>
|
<Polish>ENE</Polish>
|
||||||
<Czech>VSV</Czech>
|
<Czech>VSV</Czech>
|
||||||
<French>ENE</French>
|
<French>ENE</French>
|
||||||
<Russian>ВСВ</Russian>
|
<Russian>ВСВ</Russian>
|
||||||
<Portuguese>LNE</Portuguese>
|
<Portuguese>LNE</Portuguese>
|
||||||
<Hungarian>KÉK</Hungarian>
|
<Hungarian>KÉK</Hungarian>
|
||||||
<Italian>ENE</Italian>
|
<Italian>ENE</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_E">
|
<Key ID="STR_ACE_Common_E">
|
||||||
<English>E</English>
|
<English>E</English>
|
||||||
<German>O</German>
|
<German>O</German>
|
||||||
<Spanish>E</Spanish>
|
<Spanish>E</Spanish>
|
||||||
<Polish>E</Polish>
|
<Polish>E</Polish>
|
||||||
<Czech>V</Czech>
|
<Czech>V</Czech>
|
||||||
<French>E</French>
|
<French>E</French>
|
||||||
<Russian>В</Russian>
|
<Russian>В</Russian>
|
||||||
<Portuguese>L</Portuguese>
|
<Portuguese>L</Portuguese>
|
||||||
<Hungarian>K</Hungarian>
|
<Hungarian>K</Hungarian>
|
||||||
<Italian>E</Italian>
|
<Italian>E</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_ESE">
|
<Key ID="STR_ACE_Common_ESE">
|
||||||
<English>ESE</English>
|
<English>ESE</English>
|
||||||
<German>OSO</German>
|
<German>OSO</German>
|
||||||
<Spanish>ESE</Spanish>
|
<Spanish>ESE</Spanish>
|
||||||
<Polish>ESE</Polish>
|
<Polish>ESE</Polish>
|
||||||
<Czech>VJV</Czech>
|
<Czech>VJV</Czech>
|
||||||
<French>ESE</French>
|
<French>ESE</French>
|
||||||
<Russian>ВЮВ</Russian>
|
<Russian>ВЮВ</Russian>
|
||||||
<Portuguese>LSE</Portuguese>
|
<Portuguese>LSE</Portuguese>
|
||||||
<Hungarian>KDK</Hungarian>
|
<Hungarian>KDK</Hungarian>
|
||||||
<Italian>ESE</Italian>
|
<Italian>ESE</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SE">
|
<Key ID="STR_ACE_Common_SE">
|
||||||
<English>SE</English>
|
<English>SE</English>
|
||||||
<German>SO</German>
|
<German>SO</German>
|
||||||
<Spanish>SE</Spanish>
|
<Spanish>SE</Spanish>
|
||||||
<Polish>SE</Polish>
|
<Polish>SE</Polish>
|
||||||
<Czech>JV</Czech>
|
<Czech>JV</Czech>
|
||||||
<French>SE</French>
|
<French>SE</French>
|
||||||
<Russian>ЮВ</Russian>
|
<Russian>ЮВ</Russian>
|
||||||
<Portuguese>SE</Portuguese>
|
<Portuguese>SE</Portuguese>
|
||||||
<Hungarian>DK</Hungarian>
|
<Hungarian>DK</Hungarian>
|
||||||
<Italian>SE</Italian>
|
<Italian>SE</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SSE">
|
<Key ID="STR_ACE_Common_SSE">
|
||||||
<English>SSE</English>
|
<English>SSE</English>
|
||||||
<German>SSO</German>
|
<German>SSO</German>
|
||||||
<Spanish>SSE</Spanish>
|
<Spanish>SSE</Spanish>
|
||||||
<Polish>SSE</Polish>
|
<Polish>SSE</Polish>
|
||||||
<Czech>JJV</Czech>
|
<Czech>JJV</Czech>
|
||||||
<French>SSE</French>
|
<French>SSE</French>
|
||||||
<Russian>ЮЮВ</Russian>
|
<Russian>ЮЮВ</Russian>
|
||||||
<Portuguese>SSE</Portuguese>
|
<Portuguese>SSE</Portuguese>
|
||||||
<Hungarian>DDK</Hungarian>
|
<Hungarian>DDK</Hungarian>
|
||||||
<Italian>SSE</Italian>
|
<Italian>SSE</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_S">
|
<Key ID="STR_ACE_Common_S">
|
||||||
<English>S</English>
|
<English>S</English>
|
||||||
<German>S</German>
|
<German>S</German>
|
||||||
<Spanish>S</Spanish>
|
<Spanish>S</Spanish>
|
||||||
<Polish>S</Polish>
|
<Polish>S</Polish>
|
||||||
<Czech>J</Czech>
|
<Czech>J</Czech>
|
||||||
<French>S</French>
|
<French>S</French>
|
||||||
<Russian>Ю</Russian>
|
<Russian>Ю</Russian>
|
||||||
<Portuguese>S</Portuguese>
|
<Portuguese>S</Portuguese>
|
||||||
<Hungarian>D</Hungarian>
|
<Hungarian>D</Hungarian>
|
||||||
<Italian>S</Italian>
|
<Italian>S</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SSW">
|
<Key ID="STR_ACE_Common_SSW">
|
||||||
<English>SSW</English>
|
<English>SSW</English>
|
||||||
<German>SSW</German>
|
<German>SSW</German>
|
||||||
<Spanish>SSO</Spanish>
|
<Spanish>SSO</Spanish>
|
||||||
<Polish>SSW</Polish>
|
<Polish>SSW</Polish>
|
||||||
<Czech>JJZ</Czech>
|
<Czech>JJZ</Czech>
|
||||||
<French>SSO</French>
|
<French>SSO</French>
|
||||||
<Russian>ЮЮЗ</Russian>
|
<Russian>ЮЮЗ</Russian>
|
||||||
<Portuguese>SSO</Portuguese>
|
<Portuguese>SSO</Portuguese>
|
||||||
<Hungarian>DDNy</Hungarian>
|
<Hungarian>DDNy</Hungarian>
|
||||||
<Italian>SSO</Italian>
|
<Italian>SSO</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SW">
|
<Key ID="STR_ACE_Common_SW">
|
||||||
<English>SW</English>
|
<English>SW</English>
|
||||||
<German>SW</German>
|
<German>SW</German>
|
||||||
<Spanish>SO</Spanish>
|
<Spanish>SO</Spanish>
|
||||||
<Polish>SW</Polish>
|
<Polish>SW</Polish>
|
||||||
<Czech>JZ</Czech>
|
<Czech>JZ</Czech>
|
||||||
<French>SO</French>
|
<French>SO</French>
|
||||||
<Russian>ЮЗ</Russian>
|
<Russian>ЮЗ</Russian>
|
||||||
<Portuguese>SO</Portuguese>
|
<Portuguese>SO</Portuguese>
|
||||||
<Hungarian>DNy</Hungarian>
|
<Hungarian>DNy</Hungarian>
|
||||||
<Italian>SO</Italian>
|
<Italian>SO</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_WSW">
|
<Key ID="STR_ACE_Common_WSW">
|
||||||
<English>WSW</English>
|
<English>WSW</English>
|
||||||
<German>WSW</German>
|
<German>WSW</German>
|
||||||
<Spanish>OSO</Spanish>
|
<Spanish>OSO</Spanish>
|
||||||
<Polish>WSW</Polish>
|
<Polish>WSW</Polish>
|
||||||
<Czech>ZJZ</Czech>
|
<Czech>ZJZ</Czech>
|
||||||
<French>OSO</French>
|
<French>OSO</French>
|
||||||
<Russian>ЗЮЗ</Russian>
|
<Russian>ЗЮЗ</Russian>
|
||||||
<Portuguese>OSO</Portuguese>
|
<Portuguese>OSO</Portuguese>
|
||||||
<Hungarian>NyDNy</Hungarian>
|
<Hungarian>NyDNy</Hungarian>
|
||||||
<Italian>OSO</Italian>
|
<Italian>OSO</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_W">
|
<Key ID="STR_ACE_Common_W">
|
||||||
<English>W</English>
|
<English>W</English>
|
||||||
<German>W</German>
|
<German>W</German>
|
||||||
<Spanish>O</Spanish>
|
<Spanish>O</Spanish>
|
||||||
<Polish>W</Polish>
|
<Polish>W</Polish>
|
||||||
<Czech>Z</Czech>
|
<Czech>Z</Czech>
|
||||||
<French>O</French>
|
<French>O</French>
|
||||||
<Russian>З</Russian>
|
<Russian>З</Russian>
|
||||||
<Portuguese>O</Portuguese>
|
<Portuguese>O</Portuguese>
|
||||||
<Hungarian>Ny</Hungarian>
|
<Hungarian>Ny</Hungarian>
|
||||||
<Italian>O</Italian>
|
<Italian>O</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_WNW">
|
<Key ID="STR_ACE_Common_WNW">
|
||||||
<English>WNW</English>
|
<English>WNW</English>
|
||||||
<German>WNW</German>
|
<German>WNW</German>
|
||||||
<Spanish>ONO</Spanish>
|
<Spanish>ONO</Spanish>
|
||||||
<Polish>WNW</Polish>
|
<Polish>WNW</Polish>
|
||||||
<Czech>ZSZ</Czech>
|
<Czech>ZSZ</Czech>
|
||||||
<French>ONO</French>
|
<French>ONO</French>
|
||||||
<Russian>ЗСЗ</Russian>
|
<Russian>ЗСЗ</Russian>
|
||||||
<Portuguese>ONO</Portuguese>
|
<Portuguese>ONO</Portuguese>
|
||||||
<Hungarian>NyÉNy</Hungarian>
|
<Hungarian>NyÉNy</Hungarian>
|
||||||
<Italian>ONO</Italian>
|
<Italian>ONO</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_NW">
|
<Key ID="STR_ACE_Common_NW">
|
||||||
<English>NW</English>
|
<English>NW</English>
|
||||||
<German>NW</German>
|
<German>NW</German>
|
||||||
<Spanish>NO</Spanish>
|
<Spanish>NO</Spanish>
|
||||||
<Polish>NW</Polish>
|
<Polish>NW</Polish>
|
||||||
<Czech>SZ</Czech>
|
<Czech>SZ</Czech>
|
||||||
<French>NO</French>
|
<French>NO</French>
|
||||||
<Russian>СЗ</Russian>
|
<Russian>СЗ</Russian>
|
||||||
<Portuguese>NO</Portuguese>
|
<Portuguese>NO</Portuguese>
|
||||||
<Hungarian>ÉNy</Hungarian>
|
<Hungarian>ÉNy</Hungarian>
|
||||||
<Italian>NO</Italian>
|
<Italian>NO</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_NNW">
|
<Key ID="STR_ACE_Common_NNW">
|
||||||
<English>NNW</English>
|
<English>NNW</English>
|
||||||
<German>NNW</German>
|
<German>NNW</German>
|
||||||
<Spanish>NNO</Spanish>
|
<Spanish>NNO</Spanish>
|
||||||
<Polish>NNW</Polish>
|
<Polish>NNW</Polish>
|
||||||
<Czech>SSZ</Czech>
|
<Czech>SSZ</Czech>
|
||||||
<French>NNO</French>
|
<French>NNO</French>
|
||||||
<Russian>ССЗ</Russian>
|
<Russian>ССЗ</Russian>
|
||||||
<Portuguese>NNO</Portuguese>
|
<Portuguese>NNO</Portuguese>
|
||||||
<Hungarian>ÉÉNy</Hungarian>
|
<Hungarian>ÉÉNy</Hungarian>
|
||||||
<Italian>NNO</Italian>
|
<Italian>NNO</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_ActionAborted">
|
<Key ID="STR_ACE_Common_ActionAborted">
|
||||||
<English>Action cancelled.</English>
|
<English>Action cancelled.</English>
|
||||||
<German>Aktion abgebrochen.</German>
|
<German>Aktion abgebrochen.</German>
|
||||||
<Spanish>Acción cancelada.</Spanish>
|
<Spanish>Acción cancelada.</Spanish>
|
||||||
<Polish>Przerwano czynność</Polish>
|
<Polish>Przerwano czynność</Polish>
|
||||||
<Czech>Akce přerušena</Czech>
|
<Czech>Akce přerušena</Czech>
|
||||||
<French>Action annulée.</French>
|
<French>Action annulée.</French>
|
||||||
<Russian>Действие отменено.</Russian>
|
<Russian>Действие отменено.</Russian>
|
||||||
<Portuguese>Ação cancelada.</Portuguese>
|
<Portuguese>Ação cancelada.</Portuguese>
|
||||||
<Hungarian>Művelet megszakítva.</Hungarian>
|
<Hungarian>Művelet megszakítva.</Hungarian>
|
||||||
<Italian>Azione cancellata.</Italian>
|
<Italian>Azione cancellata.</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_MiscItems">
|
<Key ID="STR_ACE_Common_MiscItems">
|
||||||
<English>[ACE] Miscellaneous Items</English>
|
<English>[ACE] Miscellaneous Items</English>
|
||||||
<German>[ACE] Verschiedenes</German>
|
<German>[ACE] Verschiedenes</German>
|
||||||
<Spanish>[ACE] Objetos varios</Spanish>
|
<Spanish>[ACE] Objetos varios</Spanish>
|
||||||
<Polish>[ACE] Różne przedmioty</Polish>
|
<Polish>[ACE] Różne przedmioty</Polish>
|
||||||
<Czech>[ACE] Ostatní předměty</Czech>
|
<Czech>[ACE] Ostatní předměty</Czech>
|
||||||
<French>[ACE] Objets divers</French>
|
<French>[ACE] Objets divers</French>
|
||||||
<Russian>[ACE] Различные предметы</Russian>
|
<Russian>[ACE] Различные предметы</Russian>
|
||||||
<Portuguese>[ACE] Itens diversos</Portuguese>
|
<Portuguese>[ACE] Itens diversos</Portuguese>
|
||||||
<Hungarian>[ACE] Egyéb tárgyak</Hungarian>
|
<Hungarian>[ACE] Egyéb tárgyak</Hungarian>
|
||||||
<Italian>[ACE] Oggetti vari</Italian>
|
<Italian>[ACE] Oggetti vari</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_EnableNumberHotkeys">
|
<Key ID="STR_ACE_Common_EnableNumberHotkeys">
|
||||||
<English>Disable Command Menu</English>
|
<English>Disable Command Menu</English>
|
||||||
<German>Befehlsmenü ausschalten</German>
|
<German>Befehlsmenü ausschalten</German>
|
||||||
<Spanish>Desactivar menú de mando</Spanish>
|
<Spanish>Desactivar menú de mando</Spanish>
|
||||||
<Polish>Wyłącz menu dowodzenia</Polish>
|
<Polish>Wyłącz menu dowodzenia</Polish>
|
||||||
<Czech>Vypnout velící menu</Czech>
|
<Czech>Vypnout velící menu</Czech>
|
||||||
<French>Désactiver Menu Commande</French>
|
<French>Désactiver Menu Commande</French>
|
||||||
<Russian>Выключить командное меню</Russian>
|
<Russian>Выключить командное меню</Russian>
|
||||||
<Hungarian>Parancsnoki menü kikapcsolása</Hungarian>
|
<Hungarian>Parancsnoki menü kikapcsolása</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_Unknown">
|
<Key ID="STR_ACE_Common_Unknown">
|
||||||
<English>Unknown</English>
|
<English>Unknown</English>
|
||||||
<German>Unbekannt</German>
|
<German>Unbekannt</German>
|
||||||
<Spanish>Desconocido</Spanish>
|
<Spanish>Desconocido</Spanish>
|
||||||
<Polish>Nieznany</Polish>
|
<Polish>Nieznany</Polish>
|
||||||
<Czech>Neznámý</Czech>
|
<Czech>Neznámý</Czech>
|
||||||
<Russian>Неизвестно</Russian>
|
<Russian>Неизвестно</Russian>
|
||||||
<Hungarian>Ismeretlen</Hungarian>
|
<Hungarian>Ismeretlen</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_NoVoice">
|
<Key ID="STR_ACE_Common_NoVoice">
|
||||||
<English>No Voice</English>
|
<English>No Voice</English>
|
||||||
<German>Keine Stimme</German>
|
<German>Keine Stimme</German>
|
||||||
<Spanish>Sin voz</Spanish>
|
<Spanish>Sin voz</Spanish>
|
||||||
<Polish>Brak głosu</Polish>
|
<Polish>Brak głosu</Polish>
|
||||||
<Czech>Žádný hlas</Czech>
|
<Czech>Žádný hlas</Czech>
|
||||||
<Russian>Без голоса</Russian>
|
<Russian>Без голоса</Russian>
|
||||||
<Hungarian>Nincs hang</Hungarian>
|
<Hungarian>Nincs hang</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TITLE">
|
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TITLE">
|
||||||
<Original>Accept Requests</Original>
|
<Polish>Akceptuj prośby</Polish>
|
||||||
<Polish>Akceptuj prośby</Polish>
|
<Spanish>Aceptar Peticiones</Spanish>
|
||||||
<Spanish>Aceptar Peticiones</Spanish>
|
<English>Accept Requests</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TITLE">
|
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TITLE">
|
||||||
<Original>Decline Requests</Original>
|
<Polish>Ignoruj prośby</Polish>
|
||||||
<Polish>Ignoruj prośby</Polish>
|
<Spanish>Rechazar Peticiones</Spanish>
|
||||||
<Spanish>Rechazar Peticiones</Spanish>
|
<English>Decline Requests</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TOOLTIP">
|
<Key ID="STR_ACE_ACTION_ACCEPT_REQUEST_KEY_TOOLTIP">
|
||||||
<Original>Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions.</Original>
|
<Polish>Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
||||||
<Polish>Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
<Spanish>Acepta Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
||||||
<Spanish>Acepta Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
<English>Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions.</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TOOLTIP">
|
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TOOLTIP">
|
||||||
<Original>Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions.</Original>
|
<Polish>Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
||||||
<Polish>Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.</Polish>
|
<Spanish>Rechazar Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
||||||
<Spanish>Rechazar Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.</Spanish>
|
<English>Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions.</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsName">
|
<Key ID="STR_ACE_Common_SettingFeedbackIconsName">
|
||||||
<English>Feedback icons</English>
|
<English>Feedback icons</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsDesc">
|
<Key ID="STR_ACE_Common_SettingFeedbackIconsDesc">
|
||||||
<English>Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed.</English>
|
<English>Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed.</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingProgressbarLocationName">
|
<Key ID="STR_ACE_Common_SettingProgressbarLocationName">
|
||||||
<English>Progress bar location</English>
|
<English>Progress bar location</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingProgressbarLocationDesc">
|
<Key ID="STR_ACE_Common_SettingProgressbarLocationDesc">
|
||||||
<English>Set the desired location of the progress bar on your screen.</English>
|
<English>Set the desired location of the progress bar on your screen.</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingDisplayTextColorName">
|
<Key ID="STR_ACE_Common_SettingDisplayTextColorName">
|
||||||
<English>Hint Background color</English>
|
<English>Hint Background color</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingDisplayTextColorDesc">
|
<Key ID="STR_ACE_Common_SettingDisplayTextColorDesc">
|
||||||
<English>The color of the background from the ACE hints.</English>
|
<English>The color of the background from the ACE hints.</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorName">
|
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorName">
|
||||||
<English>Hint text font color</English>
|
<English>Hint text font color</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorDesc">
|
<Key ID="STR_ACE_Common_SettingDisplayTextFontColorDesc">
|
||||||
<English>The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified.</English>
|
<English>The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified.</English>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Common_bananaDisplayName">
|
||||||
<Key ID="STR_ACE_Common_bananaDisplayName">
|
<English>Banana</English>
|
||||||
<English>Banana</English>
|
</Key>
|
||||||
</Key>
|
<Key ID="STR_ACE_Common_bananaDescr">
|
||||||
<Key ID="STR_ACE_Common_bananaDescr">
|
<English>A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa.</English>
|
||||||
<English>A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa.</English>
|
</Key>
|
||||||
</Key>
|
</Package>
|
||||||
</Package>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
@ -2,11 +2,11 @@
|
|||||||
#include "\z\ace\Addons\main\script_mod.hpp"
|
#include "\z\ace\Addons\main\script_mod.hpp"
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_ATTACH
|
#ifdef DEBUG_ENABLED_ATTACH
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_SETTINGS_ATTACH
|
#ifdef DEBUG_SETTINGS_ATTACH
|
||||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "\z\ace\Addons\main\script_macros.hpp"
|
#include "\z\ace\Addons\main\script_macros.hpp"
|
@ -36,7 +36,7 @@ if (_target isKindOf "CAManBase") then {
|
|||||||
|
|
||||||
// add height offset of model
|
// add height offset of model
|
||||||
private "_offset";
|
private "_offset";
|
||||||
_offset = (_target modelToWorld [0, 0, 0] select 2) - (_unit modelToWorld [0, 0, 0] select 2);
|
_offset = (_target modelToWorldVisual [0, 0, 0] select 2) - (_unit modelToWorldVisual [0, 0, 0] select 2);
|
||||||
|
|
||||||
_position = _position vectorAdd [0, 0, _offset];
|
_position = _position vectorAdd [0, 0, _offset];
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ _direction = _target getVariable [QGVAR(dragDirection), 0];
|
|||||||
|
|
||||||
// add height offset of model
|
// add height offset of model
|
||||||
private "_offset";
|
private "_offset";
|
||||||
_offset = (_target modelToWorld [0, 0, 0] select 2) - (_unit modelToWorld [0, 0, 0] select 2);
|
_offset = (_target modelToWorldVisual [0, 0, 0] select 2) - (_unit modelToWorldVisual [0, 0, 0] select 2);
|
||||||
|
|
||||||
_position = _position vectorAdd [0, 0, _offset];
|
_position = _position vectorAdd [0, 0, _offset];
|
||||||
|
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
/*
|
/*
|
||||||
Name: AGM_Drag_fnc_GetWeight
|
Name: AGM_Drag_fnc_GetWeight
|
||||||
|
|
||||||
Author(s):
|
Author(s):
|
||||||
L-H, edited by commy2
|
L-H, edited by commy2
|
||||||
|
|
||||||
Description:
|
Description:
|
||||||
Returns the weight of a crate.
|
Returns the weight of a crate.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
0: OBJECT - Crate to get weight of
|
0: OBJECT - Crate to get weight of
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
NUMBER - Weight
|
NUMBER - Weight
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
_weight = Crate1 call AGM_Drag_fnc_GetWeight;
|
_weight = Crate1 call AGM_Drag_fnc_GetWeight;
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
@ -25,24 +25,24 @@ _object = _this select 0;
|
|||||||
private ["_totalWeight", "_fnc","_fnc_Extra"];
|
private ["_totalWeight", "_fnc","_fnc_Extra"];
|
||||||
_totalWeight = 0;
|
_totalWeight = 0;
|
||||||
_fnc_Extra = {
|
_fnc_Extra = {
|
||||||
private ["_weight", "_items"];
|
private ["_weight", "_items"];
|
||||||
_items = _this select 0;
|
_items = _this select 0;
|
||||||
_weight = 0;
|
_weight = 0;
|
||||||
{
|
{
|
||||||
_weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> (_this select 2) >> "mass") * ((_items select 1) select _foreachIndex));
|
_weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> (_this select 2) >> "mass") * ((_items select 1) select _foreachIndex));
|
||||||
} foreach (_items select 0);
|
} foreach (_items select 0);
|
||||||
|
|
||||||
_weight
|
_weight
|
||||||
};
|
};
|
||||||
_fnc = {
|
_fnc = {
|
||||||
private ["_weight", "_items"];
|
private ["_weight", "_items"];
|
||||||
_items = _this select 0;
|
_items = _this select 0;
|
||||||
_weight = 0;
|
_weight = 0;
|
||||||
{
|
{
|
||||||
_weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> "mass") * ((_items select 1) select _foreachIndex));
|
_weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> "mass") * ((_items select 1) select _foreachIndex));
|
||||||
} foreach (_items select 0);
|
} foreach (_items select 0);
|
||||||
|
|
||||||
_weight
|
_weight
|
||||||
};
|
};
|
||||||
_totalWeight = ([getMagazineCargo _object, "CfgMagazines"] call _fnc);
|
_totalWeight = ([getMagazineCargo _object, "CfgMagazines"] call _fnc);
|
||||||
_totalWeight = _totalWeight + ([getItemCargo _object, "CfgWeapons", "ItemInfo"] call _fnc_Extra);
|
_totalWeight = _totalWeight + ([getItemCargo _object, "CfgWeapons", "ItemInfo"] call _fnc_Extra);
|
||||||
|
@ -36,7 +36,7 @@ if (_carriedItem isKindOf "CAManBase") exitWith {false};
|
|||||||
private ["_position", "_maxHeight"];
|
private ["_position", "_maxHeight"];
|
||||||
|
|
||||||
_position = getPosATL _carriedItem;
|
_position = getPosATL _carriedItem;
|
||||||
_maxHeight = (_unit ModelToWorld [0,0,0]) select 2;
|
_maxHeight = (_unit modelToWorldVisual [0,0,0]) select 2;
|
||||||
|
|
||||||
_position set [2, ((_position select 2) + _scrollAmount min (_maxHeight + 1.5)) max _maxHeight];
|
_position set [2, ((_position select 2) + _scrollAmount min (_maxHeight + 1.5)) max _maxHeight];
|
||||||
|
|
||||||
|
@ -1,54 +1,54 @@
|
|||||||
class CfgACE_Triggers {
|
class CfgACE_Triggers {
|
||||||
/* onPlace parameters:
|
/* onPlace parameters:
|
||||||
0: OBJECT - unit placing
|
0: OBJECT - unit placing
|
||||||
1: OBJECT - Placed explosive
|
1: OBJECT - Placed explosive
|
||||||
2: STRING - Magazine classname
|
2: STRING - Magazine classname
|
||||||
3: ARRAY - vars
|
3: ARRAY - vars
|
||||||
Last Index: CfgACE_Triggers config of trigger type.
|
Last Index: CfgACE_Triggers config of trigger type.
|
||||||
onSetup parameters:
|
onSetup parameters:
|
||||||
0: STRING - Magazine Classname
|
0: STRING - Magazine Classname
|
||||||
*/
|
*/
|
||||||
class Command {
|
class Command {
|
||||||
displayName = $STR_ACE_Explosives_clacker_displayName;
|
displayName = $STR_ACE_Explosives_clacker_displayName;
|
||||||
picture = PATHTOF(Data\UI\Clacker.paa);
|
picture = PATHTOF(Data\UI\Clacker.paa);
|
||||||
onPlace = QUOTE(_this call FUNC(AddClacker);false);
|
onPlace = QUOTE(_this call FUNC(AddClacker);false);
|
||||||
requires[] = {"ACE_Clacker"};
|
requires[] = {"ACE_Clacker"};
|
||||||
};
|
};
|
||||||
class MK16_Transmitter:Command {
|
class MK16_Transmitter:Command {
|
||||||
displayName = $STR_ACE_Explosives_MK16_displayName;
|
displayName = $STR_ACE_Explosives_MK16_displayName;
|
||||||
picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa);
|
picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa);
|
||||||
requires[] = {"ACE_M26_Clacker"};
|
requires[] = {"ACE_M26_Clacker"};
|
||||||
};
|
};
|
||||||
class DeadManSwitch:Command {
|
class DeadManSwitch:Command {
|
||||||
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
|
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
|
||||||
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
|
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
|
||||||
requires[] = {"ACE_DeadManSwitch"};
|
requires[] = {"ACE_DeadManSwitch"};
|
||||||
};
|
};
|
||||||
class Cellphone:Command {
|
class Cellphone:Command {
|
||||||
displayName = $STR_ACE_Explosives_cellphone_displayName;
|
displayName = $STR_ACE_Explosives_cellphone_displayName;
|
||||||
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
|
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
|
||||||
onPlace = QUOTE(_this call FUNC(addCellphoneIED);false);
|
onPlace = QUOTE(_this call FUNC(addCellphoneIED);false);
|
||||||
requires[] = {"ACE_Cellphone"};
|
requires[] = {"ACE_Cellphone"};
|
||||||
};
|
};
|
||||||
class PressurePlate {
|
class PressurePlate {
|
||||||
displayName = $STR_ACE_Explosives_PressurePlate;
|
displayName = $STR_ACE_Explosives_PressurePlate;
|
||||||
picture = PATHTOF(Data\UI\PressurePlate.paa);
|
picture = PATHTOF(Data\UI\PressurePlate.paa);
|
||||||
onPlace = "_dist=GetNumber(ConfigFile >> 'CfgMagazines' >> (_this select 2) >> 'ACE_Triggers' >> 'PressurePlate' >> 'digDistance');_ex=_this select 1;_ex setPosATL ((getPosATL _ex) vectorDiff ((VectorUp _ex) vectorCrossProduct [0,0,_dist]));false";
|
onPlace = "_dist=GetNumber(ConfigFile >> 'CfgMagazines' >> (_this select 2) >> 'ACE_Triggers' >> 'PressurePlate' >> 'digDistance');_ex=_this select 1;_ex setPosATL ((getPosATL _ex) vectorDiff ((VectorUp _ex) vectorCrossProduct [0,0,_dist]));false";
|
||||||
};
|
};
|
||||||
class IRSensor {
|
class IRSensor {
|
||||||
displayName = $STR_ACE_Explosives_IRSensor;
|
displayName = $STR_ACE_Explosives_IRSensor;
|
||||||
picture = PATHTOF(Data\UI\PressurePlate.paa);
|
picture = PATHTOF(Data\UI\PressurePlate.paa);
|
||||||
onPlace = "false";
|
onPlace = "false";
|
||||||
};
|
};
|
||||||
class Timer {
|
class Timer {
|
||||||
displayName = $STR_ACE_Explosives_timerName;
|
displayName = $STR_ACE_Explosives_timerName;
|
||||||
picture = PATHTOF(data\UI\Timer.paa);
|
picture = PATHTOF(data\UI\Timer.paa);
|
||||||
onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false);
|
onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false);
|
||||||
onSetup = QUOTE(_this call FUNC(openTimerSetUI);true);
|
onSetup = QUOTE(_this call FUNC(openTimerSetUI);true);
|
||||||
};
|
};
|
||||||
class Tripwire {
|
class Tripwire {
|
||||||
displayName = $STR_ACE_Explosives_TripWire;
|
displayName = $STR_ACE_Explosives_TripWire;
|
||||||
picture = PATHTOF(Data\UI\Tripwire.paa);
|
picture = PATHTOF(Data\UI\Tripwire.paa);
|
||||||
onPlace = "false";
|
onPlace = "false";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,78 +1,78 @@
|
|||||||
class CfgAmmo {
|
class CfgAmmo {
|
||||||
// All explosive based Ammo classes. These are all listed in case they become required.
|
// All explosive based Ammo classes. These are all listed in case they become required.
|
||||||
class Default;
|
class Default;
|
||||||
|
|
||||||
class TimeBombCore:Default {
|
class TimeBombCore:Default {
|
||||||
ACE_DefuseTime = 5;
|
ACE_DefuseTime = 5;
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
class BoundingMineCore:TimeBombCore;
|
class BoundingMineCore:TimeBombCore;
|
||||||
class BoundingMineBase:BoundingMineCore;
|
class BoundingMineBase:BoundingMineCore;
|
||||||
class APERSBoundingMine_Range_Ammo:BoundingMineBase;
|
class APERSBoundingMine_Range_Ammo:BoundingMineBase;
|
||||||
|
|
||||||
class MineCore: TimeBombCore;
|
class MineCore: TimeBombCore;
|
||||||
class MineBase:MineCore;
|
class MineBase:MineCore;
|
||||||
class APERSMine_Range_Ammo:MineBase;
|
class APERSMine_Range_Ammo:MineBase;
|
||||||
class ATMine_Range_Ammo:MineBase;
|
class ATMine_Range_Ammo:MineBase;
|
||||||
|
|
||||||
class UnderwaterMine_Range_Ammo:MineBase;
|
class UnderwaterMine_Range_Ammo:MineBase;
|
||||||
class UnderwaterMineAB_Range_Ammo:UnderwaterMine_Range_Ammo;
|
class UnderwaterMineAB_Range_Ammo:UnderwaterMine_Range_Ammo;
|
||||||
class UnderwaterMinePDM_Range_Ammo:UnderwaterMine_Range_Ammo;
|
class UnderwaterMinePDM_Range_Ammo:UnderwaterMine_Range_Ammo;
|
||||||
|
|
||||||
class DirectionalBombCore:TimeBombCore;
|
class DirectionalBombCore:TimeBombCore;
|
||||||
class DirectionalBombBase:DirectionalBombCore;
|
class DirectionalBombBase:DirectionalBombCore;
|
||||||
class APERSTripMine_Wire_Ammo:DirectionalBombBase;
|
class APERSTripMine_Wire_Ammo:DirectionalBombBase;
|
||||||
|
|
||||||
class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase;
|
class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase;
|
||||||
|
|
||||||
class PipeBombCore: TimeBombCore;
|
class PipeBombCore: TimeBombCore;
|
||||||
class PipeBombBase:PipeBombCore;
|
class PipeBombBase:PipeBombCore;
|
||||||
*/
|
*/
|
||||||
class DirectionalBombBase;
|
class DirectionalBombBase;
|
||||||
class ClaymoreDirectionalMine_Remote_Ammo:DirectionalBombBase{
|
class ClaymoreDirectionalMine_Remote_Ammo:DirectionalBombBase{
|
||||||
ACE_Explosive = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
|
ACE_Explosive = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
|
||||||
soundActivation[] = {"",0,0,0};
|
soundActivation[] = {"",0,0,0};
|
||||||
soundDeactivation[] = {"",0,0,0};
|
soundDeactivation[] = {"",0,0,0};
|
||||||
};
|
};
|
||||||
//class ClaymoreDirectionalMine_Remote_Ammo_Scripted:ClaymoreDirectionalMine_Remote_Ammo;
|
//class ClaymoreDirectionalMine_Remote_Ammo_Scripted:ClaymoreDirectionalMine_Remote_Ammo;
|
||||||
|
|
||||||
class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase{
|
class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase{
|
||||||
indirectHitRange = 20;
|
indirectHitRange = 20;
|
||||||
ACE_explodeOnDefuse = 1;
|
ACE_explodeOnDefuse = 1;
|
||||||
};
|
};
|
||||||
class SLAMDirectionalMine_Command_Ammo:SLAMDirectionalMine_Wire_Ammo {
|
class SLAMDirectionalMine_Command_Ammo:SLAMDirectionalMine_Wire_Ammo {
|
||||||
mineTrigger = "RemoteTrigger";
|
mineTrigger = "RemoteTrigger";
|
||||||
ACE_explodeOnDefuse = 0;
|
ACE_explodeOnDefuse = 0;
|
||||||
};
|
};
|
||||||
class SLAMDirectionalMine_Timer_Ammo:SLAMDirectionalMine_Wire_Ammo {
|
class SLAMDirectionalMine_Timer_Ammo:SLAMDirectionalMine_Wire_Ammo {
|
||||||
mineTrigger = "TimeTrigger";
|
mineTrigger = "TimeTrigger";
|
||||||
ACE_explodeOnDefuse = 0;
|
ACE_explodeOnDefuse = 0;
|
||||||
};
|
};
|
||||||
class SLAMDirectionalMine_Magnetic_Ammo:SLAMDirectionalMine_Wire_Ammo {
|
class SLAMDirectionalMine_Magnetic_Ammo:SLAMDirectionalMine_Wire_Ammo {
|
||||||
mineTrigger = "MagneticTrigger";
|
mineTrigger = "MagneticTrigger";
|
||||||
};
|
};
|
||||||
|
|
||||||
class PipeBombBase;
|
class PipeBombBase;
|
||||||
class DemoCharge_Remote_Ammo:PipeBombBase{
|
class DemoCharge_Remote_Ammo:PipeBombBase{
|
||||||
ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted";
|
ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted";
|
||||||
soundActivation[] = {"",0,0,0};
|
soundActivation[] = {"",0,0,0};
|
||||||
soundDeactivation[] = {"",0,0,0};
|
soundDeactivation[] = {"",0,0,0};
|
||||||
hit = 500;
|
hit = 500;
|
||||||
indirectHit = 500;
|
indirectHit = 500;
|
||||||
indirectHitRange = 7;
|
indirectHitRange = 7;
|
||||||
};
|
};
|
||||||
class SatchelCharge_Remote_Ammo:PipeBombBase{
|
class SatchelCharge_Remote_Ammo:PipeBombBase{
|
||||||
ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted";
|
ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted";
|
||||||
soundActivation[] = {"",0,0,0};
|
soundActivation[] = {"",0,0,0};
|
||||||
soundDeactivation[] = {"",0,0,0};
|
soundDeactivation[] = {"",0,0,0};
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
class DemoCharge_Remote_Ammo_Scripted:DemoCharge_Remote_Ammo;
|
class DemoCharge_Remote_Ammo_Scripted:DemoCharge_Remote_Ammo;
|
||||||
class SatchelCharge_Remote_Ammo_Scripted:SatchelCharge_Remote_Ammo;
|
class SatchelCharge_Remote_Ammo_Scripted:SatchelCharge_Remote_Ammo;
|
||||||
|
|
||||||
TODO: Configure IEDs to use the system.
|
TODO: Configure IEDs to use the system.
|
||||||
class IEDLandBig_Remote_Ammo:PipeBombBase{
|
class IEDLandBig_Remote_Ammo:PipeBombBase{
|
||||||
triggerWhenDestroyed = 1;
|
triggerWhenDestroyed = 1;
|
||||||
};
|
};
|
||||||
class IEDLandSmall_Remote_Ammo:PipeBombBase{
|
class IEDLandSmall_Remote_Ammo:PipeBombBase{
|
||||||
triggerWhenDestroyed = 1;
|
triggerWhenDestroyed = 1;
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
class Extended_PreInit_EventHandlers {
|
class Extended_PreInit_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class Extended_PostInit_EventHandlers {
|
class Extended_PostInit_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO: Move the addEventHandlers out of PostInit into here or separate eventHandlers,
|
TODO: Move the addEventHandlers out of PostInit into here or separate eventHandlers,
|
||||||
to enable them on all units, so unit switching works for explosives properly.
|
to enable them on all units, so unit switching works for explosives properly.
|
||||||
class Extended_Init_EventHandlers {
|
class Extended_Init_EventHandlers {
|
||||||
class CAManBase {
|
class CAManBase {
|
||||||
init = "";
|
init = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
@ -1,127 +1,127 @@
|
|||||||
class CfgMagazines {
|
class CfgMagazines {
|
||||||
class CA_Magazine;
|
class CA_Magazine;
|
||||||
class ATMine_Range_Mag:CA_Magazine{
|
class ATMine_Range_Mag:CA_Magazine{
|
||||||
ACE_Placeable = 1;
|
ACE_Placeable = 1;
|
||||||
useAction = 0;
|
useAction = 0;
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_ATMine"; // CfgVehicle class for setup object.
|
ACE_SetupObject = "ACE_Explosives_Place_ATMine"; // CfgVehicle class for setup object.
|
||||||
ACE_DelayTime = 2.5;
|
ACE_DelayTime = 2.5;
|
||||||
class ACE_Triggers {
|
class ACE_Triggers {
|
||||||
SupportedTriggers[] = {"PressurePlate"};
|
SupportedTriggers[] = {"PressurePlate"};
|
||||||
class PressurePlate {
|
class PressurePlate {
|
||||||
digDistance = 0.1;
|
digDistance = 0.1;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
class APERSBoundingMine_Range_Mag:ATMine_Range_Mag{
|
||||||
class APERSBoundingMine_Range_Mag:ATMine_Range_Mag{
|
ACE_SetupObject = "ACE_Explosives_Place_APERSBoundingMine";
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_APERSBoundingMine";
|
class ACE_Triggers {
|
||||||
class ACE_Triggers {
|
SupportedTriggers[] = {"PressurePlate"};
|
||||||
SupportedTriggers[] = {"PressurePlate"};
|
class PressurePlate {
|
||||||
class PressurePlate {
|
digDistance = 0.075;
|
||||||
digDistance = 0.075;
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
class APERSMine_Range_Mag:ATMine_Range_Mag{
|
||||||
class APERSMine_Range_Mag:ATMine_Range_Mag{
|
ACE_SetupObject = "ACE_Explosives_Place_APERSMine";
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_APERSMine";
|
class ACE_Triggers {
|
||||||
class ACE_Triggers {
|
SupportedTriggers[] = {"PressurePlate"};
|
||||||
SupportedTriggers[] = {"PressurePlate"};
|
class PressurePlate {
|
||||||
class PressurePlate {
|
digDistance = 0.05;
|
||||||
digDistance = 0.05;
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
class APERSTripMine_Wire_Mag:ATMine_Range_Mag{
|
||||||
class APERSTripMine_Wire_Mag:ATMine_Range_Mag{
|
ACE_SetupObject = "ACE_Explosives_Place_APERSTripwireMine";
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_APERSTripwireMine";
|
class ACE_Triggers {
|
||||||
class ACE_Triggers {
|
SupportedTriggers[] = {"Tripwire"};
|
||||||
SupportedTriggers[] = {"Tripwire"};
|
class Tripwire;
|
||||||
class Tripwire;
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class ClaymoreDirectionalMine_Remote_Mag:CA_Magazine{
|
class ClaymoreDirectionalMine_Remote_Mag:CA_Magazine{
|
||||||
ACE_Placeable = 1;
|
ACE_Placeable = 1;
|
||||||
useAction = 0;
|
useAction = 0;
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_Claymore";
|
ACE_SetupObject = "ACE_Explosives_Place_Claymore";
|
||||||
ACE_DelayTime = 1.5;
|
ACE_DelayTime = 1.5;
|
||||||
class ACE_Triggers {
|
class ACE_Triggers {
|
||||||
SupportedTriggers[] = {"Command"};
|
SupportedTriggers[] = {"Command"};
|
||||||
class Command {
|
class Command {
|
||||||
FuseTime = 0.5;
|
FuseTime = 0.5;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class SatchelCharge_Remote_Mag:CA_Magazine{
|
class SatchelCharge_Remote_Mag:CA_Magazine{
|
||||||
ACE_Placeable = 1;
|
ACE_Placeable = 1;
|
||||||
useAction = 0;
|
useAction = 0;
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_SatchelCharge";
|
ACE_SetupObject = "ACE_Explosives_Place_SatchelCharge";
|
||||||
ACE_DelayTime = 1;
|
ACE_DelayTime = 1;
|
||||||
class ACE_Triggers {
|
class ACE_Triggers {
|
||||||
SupportedTriggers[] = {"Timer","Command", "MK16_Transmitter", "DeadmanSwitch"};
|
SupportedTriggers[] = {"Timer","Command", "MK16_Transmitter", "DeadmanSwitch"};
|
||||||
class Timer {
|
class Timer {
|
||||||
FuseTime = 0.5;
|
FuseTime = 0.5;
|
||||||
};
|
};
|
||||||
class Command {
|
class Command {
|
||||||
FuseTime = 0.5;
|
FuseTime = 0.5;
|
||||||
};
|
};
|
||||||
class MK16_Transmitter:Command{};
|
class MK16_Transmitter:Command{};
|
||||||
class DeadmanSwitch:Command{};
|
class DeadmanSwitch:Command{};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class DemoCharge_Remote_Mag:SatchelCharge_Remote_Mag{
|
||||||
|
ACE_SetupObject = "ACE_Explosives_Place_DemoCharge";
|
||||||
|
model = "\A3\Weapons_F\explosives\c4_charge_small_d";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
class DemoCharge_Remote_Mag:SatchelCharge_Remote_Mag{
|
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_DemoCharge";
|
|
||||||
model = "\A3\Weapons_F\explosives\c4_charge_small_d";
|
|
||||||
};
|
|
||||||
|
|
||||||
class SLAMDirectionalMine_Wire_Mag: ATMine_Range_Mag{
|
class SLAMDirectionalMine_Wire_Mag: ATMine_Range_Mag{
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_SLAM";
|
ACE_SetupObject = "ACE_Explosives_Place_SLAM";
|
||||||
class ACE_Triggers {
|
class ACE_Triggers {
|
||||||
SupportedTriggers[] = {"IRSensor","PressurePlate","Timer","Command"};
|
SupportedTriggers[] = {"IRSensor","PressurePlate","Timer","Command"};
|
||||||
class PressurePlate{
|
class PressurePlate{
|
||||||
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
|
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
|
||||||
digDistance = 0;
|
digDistance = 0;
|
||||||
ammo = "SLAMDirectionalMine_Magnetic_Ammo";
|
ammo = "SLAMDirectionalMine_Magnetic_Ammo";
|
||||||
pitch = 90;
|
pitch = 90;
|
||||||
};
|
};
|
||||||
class IRSensor{
|
class IRSensor{
|
||||||
displayName = $STR_ACE_Explosives_SLAME_IRSensor;
|
displayName = $STR_ACE_Explosives_SLAME_IRSensor;
|
||||||
};
|
};
|
||||||
class Timer {
|
class Timer {
|
||||||
ammo = "SLAMDirectionalMine_Timer_Ammo";
|
ammo = "SLAMDirectionalMine_Timer_Ammo";
|
||||||
};
|
};
|
||||||
class Command {
|
class Command {
|
||||||
ammo = "SLAMDirectionalMine_Command_Ammo";
|
ammo = "SLAMDirectionalMine_Command_Ammo";
|
||||||
fuseTime = 0.5;
|
fuseTime = 0.5;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag {
|
class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag {
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanBig";
|
ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanBig";
|
||||||
class ACE_Triggers {
|
class ACE_Triggers {
|
||||||
SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
|
SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
|
||||||
class Command {
|
class Command {
|
||||||
FuseTime = 0.5;
|
FuseTime = 0.5;
|
||||||
};
|
};
|
||||||
class DeadmanSwitch:Command{};
|
class DeadmanSwitch:Command{};
|
||||||
class Cellphone:Command{};
|
class Cellphone:Command{};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
class IEDLandBig_Remote_Mag: IEDUrbanBig_Remote_Mag{
|
||||||
class IEDLandBig_Remote_Mag: IEDUrbanBig_Remote_Mag{
|
ACE_SetupObject = "ACE_Explosives_Place_IEDLandBig";
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_IEDLandBig";
|
};
|
||||||
};
|
class IEDUrbanSmall_Remote_Mag: DemoCharge_Remote_Mag {
|
||||||
class IEDUrbanSmall_Remote_Mag: DemoCharge_Remote_Mag {
|
ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanSmall";
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanSmall";
|
class ACE_Triggers {
|
||||||
class ACE_Triggers {
|
SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
|
||||||
SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
|
class Command {
|
||||||
class Command {
|
FuseTime = 0.5;
|
||||||
FuseTime = 0.5;
|
};
|
||||||
};
|
class DeadmanSwitch:Command{};
|
||||||
class DeadmanSwitch:Command{};
|
class Cellphone:Command{};
|
||||||
class Cellphone:Command{};
|
};
|
||||||
|
};
|
||||||
|
class IEDLandSmall_Remote_Mag: IEDUrbanSmall_Remote_Mag {
|
||||||
|
ACE_SetupObject = "ACE_Explosives_Place_IEDLandSmall";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
class IEDLandSmall_Remote_Mag: IEDUrbanSmall_Remote_Mag {
|
|
||||||
ACE_SetupObject = "ACE_Explosives_Place_IEDLandSmall";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
@ -1,44 +1,44 @@
|
|||||||
class Module_F;
|
class Module_F;
|
||||||
class ACE_ModuleExplosive: Module_F {
|
class ACE_ModuleExplosive: Module_F {
|
||||||
author = "$STR_ACE_Common_ACETeam";
|
author = "$STR_ACE_Common_ACETeam";
|
||||||
category = "ACE";
|
category = "ACE";
|
||||||
displayName = "Explosive System";
|
displayName = "Explosive System";
|
||||||
function = QUOTE(FUNC(module));
|
function = QUOTE(FUNC(module));
|
||||||
scope = 2;
|
scope = 2;
|
||||||
isGlobal = 1;
|
isGlobal = 1;
|
||||||
icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa);
|
icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa);
|
||||||
class Arguments {
|
class Arguments {
|
||||||
class RequireSpecialist {
|
class RequireSpecialist {
|
||||||
displayName = "Require specialists?";
|
displayName = "Require specialists?";
|
||||||
description = "Require explosive specialists to disable explosives? Default: No";
|
description = "Require explosive specialists to disable explosives? Default: No";
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
class values {
|
class values {
|
||||||
class Yes {
|
class Yes {
|
||||||
name = "Yes";
|
name = "Yes";
|
||||||
value = 1;
|
value = 1;
|
||||||
|
};
|
||||||
|
class No {
|
||||||
|
default = 1;
|
||||||
|
name = "No";
|
||||||
|
value = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class No {
|
class PunishNonSpecialists {
|
||||||
default = 1;
|
displayName = "Punish non-specialists?";
|
||||||
name = "No";
|
description = "Increase the time it takes to complete actions for non-specialists? Default: Yes";
|
||||||
value = 0;
|
typeName = "BOOL";
|
||||||
|
class values {
|
||||||
|
class Yes {
|
||||||
|
default = 1;
|
||||||
|
name = "Yes";
|
||||||
|
value = 1;
|
||||||
|
};
|
||||||
|
class No {
|
||||||
|
name = "No";
|
||||||
|
value = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
class PunishNonSpecialists {
|
|
||||||
displayName = "Punish non-specialists?";
|
|
||||||
description = "Increase the time it takes to complete actions for non-specialists? Default: Yes";
|
|
||||||
typeName = "BOOL";
|
|
||||||
class values {
|
|
||||||
class Yes {
|
|
||||||
default = 1;
|
|
||||||
name = "Yes";
|
|
||||||
value = 1;
|
|
||||||
};
|
|
||||||
class No {
|
|
||||||
name = "No";
|
|
||||||
value = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
@ -1,275 +1,327 @@
|
|||||||
class CfgVehicles {
|
class CfgVehicles {
|
||||||
class Man;
|
class Man;
|
||||||
|
class CAManBase: Man {
|
||||||
class CAManBase: Man {
|
class ACE_SelfActions {
|
||||||
class ACE_SelfActions {
|
class ACE_Explosives {
|
||||||
class ACE_Explosives {
|
displayName = $STR_ACE_Explosives_Menu;
|
||||||
displayName = $STR_ACE_Explosives_Menu;
|
condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
|
||||||
condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
|
statement = "";
|
||||||
statement = "";
|
exceptions[] = {"isNotSwimming", "isNotInside"};
|
||||||
exceptions[] = {"isNotSwimming"};
|
showDisabled = 1;
|
||||||
showDisabled = 1;
|
priority = 4;
|
||||||
priority = 4;
|
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
|
||||||
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
|
hotkey = "X";
|
||||||
hotkey = "X";
|
//Sub-menu items
|
||||||
//Sub-menu items
|
class ACE_Detonate {
|
||||||
class ACE_Detonate {
|
displayName = $STR_ACE_Explosives_Detonate;
|
||||||
displayName = $STR_ACE_Explosives_Detonate;
|
condition = QUOTE([_player] call FUNC(canDetonate));
|
||||||
condition = QUOTE([_player] call FUNC(canDetonate));
|
statement = "";
|
||||||
statement = QUOTE([_player] call FUNC(openTransmitterUI););
|
insertChildren = QUOTE([_player] call FUNC(addTransmitterActions););
|
||||||
exceptions[] = {"isNotSwimming"};
|
exceptions[] = {"isNotSwimming", "isNotInside"};
|
||||||
showDisabled = 1;
|
showDisabled = 1;
|
||||||
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
|
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
|
||||||
priority = 2;
|
priority = 2;
|
||||||
hotkey = "T";
|
hotkey = "T";
|
||||||
|
};
|
||||||
|
class ACE_Place {
|
||||||
|
displayName = $STR_ACE_Explosives_Place;
|
||||||
|
condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)});
|
||||||
|
statement = "";
|
||||||
|
insertChildren = QUOTE([_player] call FUNC(addExplosiveActions););
|
||||||
|
exceptions[] = {"isNotSwimming"};
|
||||||
|
showDisabled = 1;
|
||||||
|
icon = PATHTOF(UI\Place_Explosive_ca.paa);
|
||||||
|
priority = 1;
|
||||||
|
hotkey = "P";
|
||||||
|
};
|
||||||
|
class ACE_Cellphone {
|
||||||
|
displayName = $STR_ACE_Explosives_cellphone_displayName;
|
||||||
|
condition = "('ACE_Cellphone' in (items ace_player))";
|
||||||
|
statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
|
||||||
|
exceptions[] = {"isNotSwimming", "isNotInside"};
|
||||||
|
showDisabled = 0;
|
||||||
|
icon = PATHTOF(Data\UI\Cellphone_UI.paa);
|
||||||
|
priority = 0.8;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class ACE_Place {
|
};
|
||||||
displayName = $STR_ACE_Explosives_Place;
|
|
||||||
condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)});
|
class Items_base_F;
|
||||||
statement = QUOTE([_player] call FUNC(openPlaceUI););
|
class ACE_DefuseObject: Items_base_F {
|
||||||
exceptions[] = {"isNotSwimming"};
|
XEH_ENABLED;
|
||||||
showDisabled = 1;
|
author = "ACE";
|
||||||
icon = PATHTOF(UI\Place_Explosive_ca.paa);
|
_generalMacro = "ACE_DefuseObject";
|
||||||
priority = 1;
|
displayName = "ACE Defuse Helper";
|
||||||
hotkey = "P";
|
mapSize = 0.2;
|
||||||
|
icon = "iconObject_1x2";
|
||||||
|
model = "\A3\Weapons_f\dummyweapon.p3d";
|
||||||
|
scope = 2;
|
||||||
|
scopeCurator = 1;
|
||||||
|
vehicleClass = "Cargo";
|
||||||
|
class ACE_Actions {
|
||||||
|
class ACE_MainActions {
|
||||||
|
selection = "";
|
||||||
|
distance = 5;
|
||||||
|
condition = "true";
|
||||||
|
class ACE_Defuse {
|
||||||
|
displayName = $STR_ACE_Explosives_Defuse;
|
||||||
|
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse));
|
||||||
|
statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse););
|
||||||
|
exceptions[] = {"isNotSwimming"};
|
||||||
|
showDisabled = 0;
|
||||||
|
icon = PATHTOF(UI\Defuse_ca.paa);
|
||||||
|
priority = 0.8;
|
||||||
|
hotkey = "F";
|
||||||
|
distance = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class ACE_Defuse {
|
};
|
||||||
displayName = $STR_ACE_Explosives_Defuse;
|
class ACE_Explosives_Place: Items_base_F {
|
||||||
condition = QUOTE([_player] call FUNC(canDefuse));
|
XEH_ENABLED;
|
||||||
statement = QUOTE([ARR_2(_player,EGVAR(Interaction,Target))] call FUNC(startDefuse););
|
author = "ACE";
|
||||||
exceptions[] = {"isNotSwimming"};
|
_generalMacro = "ACE_Explosives_Place";
|
||||||
showDisabled = 0;
|
displayName = "Multi-meter";
|
||||||
icon = PATHTOF(UI\Defuse_ca.paa);
|
mapSize = 0.2;
|
||||||
priority = 0.8;
|
icon = "iconObject_1x2";
|
||||||
hotkey = "F";
|
model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
|
||||||
|
scope = 2;
|
||||||
|
scopeCurator = 1;
|
||||||
|
vehicleClass = "Cargo";
|
||||||
|
ACE_offset[] = {0,0,0};
|
||||||
|
class ACE_Actions {
|
||||||
|
class ACE_MainActions {
|
||||||
|
selection = "";
|
||||||
|
distance = 5;
|
||||||
|
condition = "true";
|
||||||
|
class ACE_SetTrigger {
|
||||||
|
selection = "";
|
||||||
|
displayName = "$STR_ACE_Explosives_TriggerMenu";
|
||||||
|
distance = 4;
|
||||||
|
condition = "true";
|
||||||
|
statement = "";
|
||||||
|
insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions););
|
||||||
|
showDisabled = 0;
|
||||||
|
exceptions[] = {};
|
||||||
|
priority = 5;
|
||||||
|
icon = QUOTE(PATHTOF(UI\Explosives_Menu_ca.paa));
|
||||||
|
};
|
||||||
|
class ACE_PickUp {
|
||||||
|
selection = "";
|
||||||
|
displayName = "$STR_ACE_Explosives_Pickup";
|
||||||
|
distance = 4;
|
||||||
|
condition = "true";
|
||||||
|
statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;);
|
||||||
|
showDisabled = 0;
|
||||||
|
exceptions[] = {};
|
||||||
|
priority = 5;
|
||||||
|
icon = "\A3\ui_f\data\IGUI\Cfg\Actions\Obsolete\ui_action_takemine_ca.paa";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class ACE_Cellphone {
|
};
|
||||||
displayName = $STR_ACE_Explosives_cellphone_displayName;
|
|
||||||
condition = "('ACE_Cellphone' in (items ace_player))";
|
class ACE_Explosives_Place_DemoCharge:ACE_Explosives_Place {
|
||||||
statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
|
displayName = "Demo Charge";
|
||||||
exceptions[] = {"isNotSwimming"};
|
model = "\A3\Weapons_F\explosives\c4_charge_small_d";
|
||||||
showDisabled = 0;
|
};
|
||||||
icon = PATHTOF(Data\UI\Cellphone_UI.paa);
|
class ACE_Explosives_Place_APERSBoundingMine:ACE_Explosives_Place {
|
||||||
priority = 0.8;
|
displayName = "APERS Bounding Mine";
|
||||||
|
model = "\A3\Weapons_F\explosives\mine_AP_bouncing";
|
||||||
|
};
|
||||||
|
class ACE_Explosives_Place_APERSMine:ACE_Explosives_Place {
|
||||||
|
displayName = "APERS Mine";
|
||||||
|
model = "\A3\Weapons_F\explosives\mine_ap";
|
||||||
|
};
|
||||||
|
class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place {
|
||||||
|
displayName = "APERS Tripwire Mine";
|
||||||
|
model = "\A3\Weapons_F\explosives\mine_AP_tripwire";
|
||||||
|
ACE_offset[] = {1,0,0};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Explosives_Place_ATMine:ACE_Explosives_Place {
|
||||||
|
displayName = "AT Mine";
|
||||||
|
model = "\A3\Weapons_f\Explosives\mine_at";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Explosives_Place_Claymore:ACE_Explosives_Place {
|
||||||
|
displayName = "Claymore";
|
||||||
|
model = "\A3\Weapons_F\explosives\mine_AP_miniclaymore";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Explosives_Place_SatchelCharge:ACE_Explosives_Place {
|
||||||
|
displayName = "Satchel Charge";
|
||||||
|
model = "\A3\Weapons_F\Explosives\satchel";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Explosives_Place_SLAM:ACE_Explosives_Place {
|
||||||
|
displayName = "SLAM";
|
||||||
|
model = "\A3\Weapons_F\Explosives\mine_SLAM_directional";
|
||||||
|
};
|
||||||
|
|
||||||
|
// IEDs
|
||||||
|
class ACE_Explosives_Place_IEDUrbanBig:ACE_Explosives_Place {
|
||||||
|
displayName = "IED Urban Big";
|
||||||
|
model = "\A3\Weapons_F\Explosives\IED_urban_big";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Explosives_Place_IEDLandBig:ACE_Explosives_Place {
|
||||||
|
displayName = "IED Land Big";
|
||||||
|
model = "\A3\Weapons_F\Explosives\IED_land_big";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Explosives_Place_IEDUrbanSmall:ACE_Explosives_Place {
|
||||||
|
displayName = "IED Urban Small";
|
||||||
|
model = "\A3\Weapons_F\Explosives\IED_urban_small";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Explosives_Place_IEDLandSmall:ACE_Explosives_Place {
|
||||||
|
displayName = "IED Land Small";
|
||||||
|
model = "\A3\Weapons_F\Explosives\IED_land_small";
|
||||||
|
};
|
||||||
|
|
||||||
|
class NATO_Box_Base;
|
||||||
|
class EAST_Box_Base;
|
||||||
|
class IND_Box_Base;
|
||||||
|
class FIA_Box_Base_F;
|
||||||
|
class Box_NATO_Support_F;
|
||||||
|
|
||||||
|
class Box_NATO_AmmoOrd_F: NATO_Box_Base {
|
||||||
|
class TransportItems {
|
||||||
|
MACRO_ADDITEM(ACE_Clacker,12);
|
||||||
|
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
||||||
|
MACRO_ADDITEM(ACE_DefusalKit,12);
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class Items_base_F;
|
class Box_East_AmmoOrd_F: EAST_Box_Base {
|
||||||
class ACE_Explosives_Place: Items_base_F {
|
class TransportItems {
|
||||||
author = "ACE";
|
MACRO_ADDITEM(ACE_Clacker,12);
|
||||||
_generalMacro = "ACE_Explosives_Place";
|
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
||||||
displayName = "Multi-meter";
|
MACRO_ADDITEM(ACE_DefusalKit,12);
|
||||||
mapSize = 0.2;
|
};
|
||||||
icon = "iconObject_1x2";
|
|
||||||
model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
|
|
||||||
scope = 2;
|
|
||||||
scopeCurator = 1;
|
|
||||||
vehicleClass = "Cargo";
|
|
||||||
ACE_offset[] = {0,0,0};
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_DemoCharge:ACE_Explosives_Place {
|
|
||||||
displayName = "Demo Charge";
|
|
||||||
model = "\A3\Weapons_F\explosives\c4_charge_small_d";
|
|
||||||
};
|
|
||||||
class ACE_Explosives_Place_APERSBoundingMine:ACE_Explosives_Place {
|
|
||||||
displayName = "APERS Bounding Mine";
|
|
||||||
model = "\A3\Weapons_F\explosives\mine_AP_bouncing";
|
|
||||||
};
|
|
||||||
class ACE_Explosives_Place_APERSMine:ACE_Explosives_Place {
|
|
||||||
displayName = "APERS Mine";
|
|
||||||
model = "\A3\Weapons_F\explosives\mine_ap";
|
|
||||||
};
|
|
||||||
class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place {
|
|
||||||
displayName = "APERS Tripwire Mine";
|
|
||||||
model = "\A3\Weapons_F\explosives\mine_AP_tripwire";
|
|
||||||
ACE_offset[] = {1,0,0};
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_ATMine:ACE_Explosives_Place {
|
|
||||||
displayName = "AT Mine";
|
|
||||||
model = "\A3\Weapons_f\Explosives\mine_at";
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_Claymore:ACE_Explosives_Place {
|
|
||||||
displayName = "Claymore";
|
|
||||||
model = "\A3\Weapons_F\explosives\mine_AP_miniclaymore";
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_SatchelCharge:ACE_Explosives_Place {
|
|
||||||
displayName = "Satchel Charge";
|
|
||||||
model = "\A3\Weapons_F\Explosives\satchel";
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_SLAM:ACE_Explosives_Place {
|
|
||||||
displayName = "SLAM";
|
|
||||||
model = "\A3\Weapons_F\Explosives\mine_SLAM_directional";
|
|
||||||
};
|
|
||||||
|
|
||||||
// IEDs
|
|
||||||
class ACE_Explosives_Place_IEDUrbanBig:ACE_Explosives_Place {
|
|
||||||
displayName = "IED Urban Big";
|
|
||||||
model = "\A3\Weapons_F\Explosives\IED_urban_big";
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_IEDLandBig:ACE_Explosives_Place {
|
|
||||||
displayName = "IED Land Big";
|
|
||||||
model = "\A3\Weapons_F\Explosives\IED_land_big";
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_IEDUrbanSmall:ACE_Explosives_Place {
|
|
||||||
displayName = "IED Urban Small";
|
|
||||||
model = "\A3\Weapons_F\Explosives\IED_urban_small";
|
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Explosives_Place_IEDLandSmall:ACE_Explosives_Place {
|
|
||||||
displayName = "IED Land Small";
|
|
||||||
model = "\A3\Weapons_F\Explosives\IED_land_small";
|
|
||||||
};
|
|
||||||
|
|
||||||
class NATO_Box_Base;
|
|
||||||
class EAST_Box_Base;
|
|
||||||
class IND_Box_Base;
|
|
||||||
class FIA_Box_Base_F;
|
|
||||||
class Box_NATO_Support_F;
|
|
||||||
|
|
||||||
class Box_NATO_AmmoOrd_F: NATO_Box_Base {
|
|
||||||
class TransportItems {
|
|
||||||
MACRO_ADDITEM(ACE_Clacker,12);
|
|
||||||
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
|
||||||
MACRO_ADDITEM(ACE_DefusalKit,12);
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class Box_East_AmmoOrd_F: EAST_Box_Base {
|
class Box_IND_AmmoOrd_F: IND_Box_Base {
|
||||||
class TransportItems {
|
class TransportItems {
|
||||||
MACRO_ADDITEM(ACE_Clacker,12);
|
MACRO_ADDITEM(ACE_Clacker,12);
|
||||||
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
||||||
MACRO_ADDITEM(ACE_DefusalKit,12);
|
MACRO_ADDITEM(ACE_DefusalKit,12);
|
||||||
|
MACRO_ADDITEM(ACE_Deadmanswitch,2);
|
||||||
|
MACRO_ADDITEM(ACE_Cellphone,3);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class Box_IND_AmmoOrd_F: IND_Box_Base {
|
class Box_FIA_Ammo_F: FIA_Box_Base_F {
|
||||||
class TransportItems {
|
class TransportItems {
|
||||||
MACRO_ADDITEM(ACE_Clacker,12);
|
MACRO_ADDITEM(ACE_Clacker,2);
|
||||||
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
MACRO_ADDITEM(ACE_M26_Clacker,2);
|
||||||
MACRO_ADDITEM(ACE_DefusalKit,12);
|
MACRO_ADDITEM(ACE_DefusalKit,2);
|
||||||
MACRO_ADDITEM(ACE_Deadmanswitch,2);
|
MACRO_ADDITEM(ACE_Deadmanswitch,1);
|
||||||
MACRO_ADDITEM(ACE_Cellphone,3);
|
MACRO_ADDITEM(ACE_Cellphone,2);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class Box_FIA_Ammo_F: FIA_Box_Base_F {
|
class ACE_Box_Misc: Box_NATO_Support_F {
|
||||||
class TransportItems {
|
class TransportItems {
|
||||||
MACRO_ADDITEM(ACE_Clacker,2);
|
MACRO_ADDITEM(ACE_Clacker,12);
|
||||||
MACRO_ADDITEM(ACE_M26_Clacker,2);
|
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
||||||
MACRO_ADDITEM(ACE_DefusalKit,2);
|
MACRO_ADDITEM(ACE_DefusalKit,12);
|
||||||
MACRO_ADDITEM(ACE_Deadmanswitch,1);
|
MACRO_ADDITEM(ACE_Deadmanswitch,6);
|
||||||
MACRO_ADDITEM(ACE_Cellphone,2);
|
MACRO_ADDITEM(ACE_Cellphone,10);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Box_Misc: Box_NATO_Support_F {
|
class B_Kitbag_rgr;
|
||||||
class TransportItems {
|
class B_Kitbag_rgr_Exp: B_Kitbag_rgr {
|
||||||
MACRO_ADDITEM(ACE_Clacker,12);
|
class TransportItems {
|
||||||
MACRO_ADDITEM(ACE_M26_Clacker,6);
|
class _xx_ToolKit { // xXToOlKiT420mLgXx
|
||||||
MACRO_ADDITEM(ACE_DefusalKit,12);
|
count = 0;
|
||||||
MACRO_ADDITEM(ACE_Deadmanswitch,6);
|
};
|
||||||
MACRO_ADDITEM(ACE_Cellphone,10);
|
};
|
||||||
};
|
};
|
||||||
};
|
class B_Carryall_ocamo;
|
||||||
|
class B_Carryall_ocamo_Exp: B_Carryall_ocamo {
|
||||||
class B_Kitbag_rgr;
|
class TransportItems {
|
||||||
class B_Kitbag_rgr_Exp: B_Kitbag_rgr {
|
class _xx_ToolKit {
|
||||||
class TransportItems {
|
count = 0;
|
||||||
class _xx_ToolKit { // xXToOlKiT420mLgXx
|
};
|
||||||
count = 0;
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
class B_Carryall_oucamo;
|
||||||
class B_Carryall_ocamo;
|
class B_Carryall_oucamo_Exp: B_Carryall_oucamo {
|
||||||
class B_Carryall_ocamo_Exp: B_Carryall_ocamo {
|
class TransportItems {
|
||||||
class TransportItems {
|
class _xx_ToolKit {
|
||||||
class _xx_ToolKit {
|
count = 0;
|
||||||
count = 0;
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
class B_Carryall_oli;
|
||||||
class B_Carryall_oucamo;
|
class G_Carryall_Exp: B_Carryall_oli {
|
||||||
class B_Carryall_oucamo_Exp: B_Carryall_oucamo {
|
class TransportItems {
|
||||||
class TransportItems {
|
class _xx_ToolKit {
|
||||||
class _xx_ToolKit {
|
count = 0;
|
||||||
count = 0;
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
class I_Carryall_oli_Exp: B_Carryall_oli {
|
||||||
class B_Carryall_oli;
|
class TransportItems {
|
||||||
class G_Carryall_Exp: B_Carryall_oli {
|
class _xx_ToolKit {
|
||||||
class TransportItems {
|
count = 0;
|
||||||
class _xx_ToolKit {
|
};
|
||||||
count = 0;
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
class I_Carryall_oli_Exp: B_Carryall_oli {
|
|
||||||
class TransportItems {
|
|
||||||
class _xx_ToolKit {
|
|
||||||
count = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "CfgModule.hpp"
|
#include "CfgModule.hpp"
|
||||||
|
|
||||||
// Add ACE_Clacker and ACE_DefusalKit to every explosive unit.
|
// Add ACE_Clacker and ACE_DefusalKit to every explosive unit.
|
||||||
#define MACRO_ADDMINEKIT \
|
#define MACRO_ADDMINEKIT \
|
||||||
items[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"}; \
|
items[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"}; \
|
||||||
respawnitems[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"};
|
respawnitems[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"};
|
||||||
|
|
||||||
class B_Soldier_base_F; class B_soldier_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
|
class B_Soldier_base_F; class B_soldier_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class B_Soldier_03_f; class B_engineer_F:B_Soldier_03_f {MACRO_ADDMINEKIT};
|
class B_Soldier_03_f; class B_engineer_F:B_Soldier_03_f {MACRO_ADDMINEKIT};
|
||||||
class B_Soldier_diver_base_F; class B_diver_exp_F:B_Soldier_diver_base_F {MACRO_ADDMINEKIT};
|
class B_Soldier_diver_base_F; class B_diver_exp_F:B_Soldier_diver_base_F {MACRO_ADDMINEKIT};
|
||||||
class B_Soldier_recon_base; class B_recon_exp_F:B_Soldier_recon_base {MACRO_ADDMINEKIT};
|
class B_Soldier_recon_base; class B_recon_exp_F:B_Soldier_recon_base {MACRO_ADDMINEKIT};
|
||||||
class B_CTRG_soldier_engineer_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
|
class B_CTRG_soldier_engineer_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class I_G_Soldier_base_F; class I_G_engineer_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
|
class I_G_Soldier_base_F; class I_G_engineer_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class I_G_Soldier_exp_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
|
class I_G_Soldier_exp_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class B_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
|
class B_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
|
||||||
class O_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
|
class O_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
|
||||||
class B_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
|
class B_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
|
||||||
class O_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
|
class O_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
|
||||||
class I_Soldier_02_F; class I_Soldier_exp_F:I_Soldier_02_F {MACRO_ADDMINEKIT};
|
class I_Soldier_02_F; class I_Soldier_exp_F:I_Soldier_02_F {MACRO_ADDMINEKIT};
|
||||||
class I_Soldier_base_F; class I_engineer_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
|
class I_Soldier_base_F; class I_engineer_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class I_Soldier_diver_base_F; class I_diver_exp_F:I_Soldier_diver_base_F {MACRO_ADDMINEKIT};
|
class I_Soldier_diver_base_F; class I_diver_exp_F:I_Soldier_diver_base_F {MACRO_ADDMINEKIT};
|
||||||
class O_Soldier_base_F; class O_soldier_exp_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
|
class O_Soldier_base_F; class O_soldier_exp_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class O_engineer_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
|
class O_engineer_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class O_Soldier_diver_base_F; class O_diver_exp_F:O_Soldier_diver_base_F {MACRO_ADDMINEKIT};
|
class O_Soldier_diver_base_F; class O_diver_exp_F:O_Soldier_diver_base_F {MACRO_ADDMINEKIT};
|
||||||
class O_Soldier_recon_base; class O_recon_exp_F:O_Soldier_recon_base {MACRO_ADDMINEKIT};
|
class O_Soldier_recon_base; class O_recon_exp_F:O_Soldier_recon_base {MACRO_ADDMINEKIT};
|
||||||
class O_Soldier_Urban_base; class O_soldierU_exp_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
|
class O_Soldier_Urban_base; class O_soldierU_exp_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
|
||||||
class O_engineer_U_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
|
class O_engineer_U_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
|
||||||
class B_Protagonist_VR_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
|
class B_Protagonist_VR_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class O_Protagonist_VR_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
|
class O_Protagonist_VR_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class I_Protagonist_VR_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
|
class I_Protagonist_VR_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
|
||||||
class B_Soldier_F; class b_soldier_universal_f:B_Soldier_F {MACRO_ADDMINEKIT};
|
class B_Soldier_F; class b_soldier_universal_f:B_Soldier_F {MACRO_ADDMINEKIT};
|
||||||
class B_G_Soldier_F; class b_g_soldier_universal_f:B_G_Soldier_F {MACRO_ADDMINEKIT};
|
class B_G_Soldier_F; class b_g_soldier_universal_f:B_G_Soldier_F {MACRO_ADDMINEKIT};
|
||||||
class O_Soldier_F; class o_soldier_universal_f:O_Soldier_F {MACRO_ADDMINEKIT};
|
class O_Soldier_F; class o_soldier_universal_f:O_Soldier_F {MACRO_ADDMINEKIT};
|
||||||
class O_G_Soldier_F; class o_g_soldier_universal_f:O_G_Soldier_F {MACRO_ADDMINEKIT};
|
class O_G_Soldier_F; class o_g_soldier_universal_f:O_G_Soldier_F {MACRO_ADDMINEKIT};
|
||||||
class I_soldier_F; class i_soldier_universal_f:I_soldier_F {MACRO_ADDMINEKIT};
|
class I_soldier_F; class i_soldier_universal_f:I_soldier_F {MACRO_ADDMINEKIT};
|
||||||
class I_G_Soldier_F; class i_g_soldier_universal_f:I_G_Soldier_F {MACRO_ADDMINEKIT};
|
class I_G_Soldier_F; class i_g_soldier_universal_f:I_G_Soldier_F {MACRO_ADDMINEKIT};
|
||||||
|
|
||||||
// Add ACE_Clacker to snipers and spotters for setting off Claymores
|
// Add ACE_Clacker to snipers and spotters for setting off Claymores
|
||||||
#define MACRO_ADDCLAYMOREKIT \
|
#define MACRO_ADDCLAYMOREKIT \
|
||||||
items[] = {"FirstAidKit","ACE_Clacker"}; \
|
items[] = {"FirstAidKit","ACE_Clacker"}; \
|
||||||
respawnitems[] = {"FirstAidKit","ACE_Clacker"};
|
respawnitems[] = {"FirstAidKit","ACE_Clacker"};
|
||||||
|
|
||||||
class B_Soldier_sniper_base_F;
|
class B_Soldier_sniper_base_F;
|
||||||
class B_sniper_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
class B_sniper_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
||||||
class B_spotter_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
class B_spotter_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
||||||
class I_Soldier_sniper_base_F;
|
class I_Soldier_sniper_base_F;
|
||||||
class I_Sniper_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
class I_Sniper_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
||||||
class I_Spotter_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
class I_Spotter_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
||||||
class O_Soldier_sniper_base_F;
|
class O_Soldier_sniper_base_F;
|
||||||
class O_sniper_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
class O_sniper_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
||||||
class O_spotter_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
class O_spotter_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
|
||||||
};
|
};
|
||||||
|
@ -1,69 +1,69 @@
|
|||||||
class CfgWeapons {
|
class CfgWeapons {
|
||||||
class ACE_ItemCore;
|
class ACE_ItemCore;
|
||||||
class InventoryItem_Base_f;
|
class InventoryItem_Base_f;
|
||||||
|
|
||||||
class ACE_ExplosiveItem: InventoryItem_Base_f {
|
class ACE_ExplosiveItem: InventoryItem_Base_f {
|
||||||
allowedSlots[] = {801,701,901};
|
allowedSlots[] = {801,701,901};
|
||||||
//type = 201;
|
//type = 201;
|
||||||
};
|
|
||||||
|
|
||||||
class ACE_Clacker: ACE_ItemCore {
|
|
||||||
scope = 2;
|
|
||||||
displayName = $STR_ACE_Explosives_clacker_displayName;
|
|
||||||
descriptionShort = $STR_ACE_Explosives_clacker_description;
|
|
||||||
picture = PATHTOF(Data\UI\Clacker.paa);
|
|
||||||
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
|
||||||
ACE_Range = 250;
|
|
||||||
ACE_Detonator = 1;
|
|
||||||
|
|
||||||
class ItemInfo: ACE_ExplosiveItem {
|
|
||||||
mass = 3;
|
|
||||||
uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
class ACE_M26_Clacker: ACE_Clacker {
|
|
||||||
displayName = $STR_ACE_Explosives_M26_displayName;
|
|
||||||
picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa);
|
|
||||||
ACE_Range = 5000;
|
|
||||||
};
|
|
||||||
class ACE_DefusalKit: ACE_ItemCore {
|
|
||||||
scope = 2;
|
|
||||||
displayName = $STR_ACE_Explosives_DefusalKit_displayName;
|
|
||||||
descriptionShort = $STR_ACE_Explosives_DefusalKit_description;
|
|
||||||
picture = PATHTOF(Data\UI\Pliers.paa);
|
|
||||||
model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
|
|
||||||
|
|
||||||
class ItemInfo: ACE_ExplosiveItem {
|
class ACE_Clacker: ACE_ItemCore {
|
||||||
mass = 5;
|
scope = 2;
|
||||||
uniformModel = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
|
displayName = $STR_ACE_Explosives_clacker_displayName;
|
||||||
};
|
descriptionShort = $STR_ACE_Explosives_clacker_description;
|
||||||
};
|
picture = PATHTOF(Data\UI\Clacker.paa);
|
||||||
class ACE_DeadManSwitch: ACE_ItemCore {
|
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
||||||
scope = 2;
|
ACE_Range = 250;
|
||||||
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
|
ACE_Detonator = 1;
|
||||||
descriptionShort = $STR_ACE_Explosives_DeadManSwitch_description;
|
|
||||||
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
|
|
||||||
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
|
||||||
ACE_Range = 100;
|
|
||||||
ACE_Detonator = 1;
|
|
||||||
|
|
||||||
class ItemInfo: ACE_ExplosiveItem {
|
class ItemInfo: ACE_ExplosiveItem {
|
||||||
mass = 2;
|
mass = 3;
|
||||||
uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
|
uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
class ACE_M26_Clacker: ACE_Clacker {
|
||||||
class ACE_Cellphone: ACE_ItemCore {
|
displayName = $STR_ACE_Explosives_M26_displayName;
|
||||||
scope = 2;
|
picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa);
|
||||||
displayName = $STR_ACE_Explosives_cellphone_displayName;
|
ACE_Range = 5000;
|
||||||
descriptionShort = $STR_ACE_Explosives_cellphone_description;
|
};
|
||||||
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
|
class ACE_DefusalKit: ACE_ItemCore {
|
||||||
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
scope = 2;
|
||||||
ACE_Range = 15000;
|
displayName = $STR_ACE_Explosives_DefusalKit_displayName;
|
||||||
ACE_Detonator = 1;
|
descriptionShort = $STR_ACE_Explosives_DefusalKit_description;
|
||||||
|
picture = PATHTOF(Data\UI\Pliers.paa);
|
||||||
|
model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
|
||||||
|
|
||||||
class ItemInfo: ACE_ExplosiveItem {
|
class ItemInfo: ACE_ExplosiveItem {
|
||||||
mass = 2;
|
mass = 5;
|
||||||
uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
|
uniformModel = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class ACE_DeadManSwitch: ACE_ItemCore {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
|
||||||
|
descriptionShort = $STR_ACE_Explosives_DeadManSwitch_description;
|
||||||
|
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
|
||||||
|
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
||||||
|
ACE_Range = 100;
|
||||||
|
ACE_Detonator = 1;
|
||||||
|
|
||||||
|
class ItemInfo: ACE_ExplosiveItem {
|
||||||
|
mass = 2;
|
||||||
|
uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class ACE_Cellphone: ACE_ItemCore {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_ACE_Explosives_cellphone_displayName;
|
||||||
|
descriptionShort = $STR_ACE_Explosives_cellphone_description;
|
||||||
|
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
|
||||||
|
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
||||||
|
ACE_Range = 15000;
|
||||||
|
ACE_Detonator = 1;
|
||||||
|
|
||||||
|
class ItemInfo: ACE_ExplosiveItem {
|
||||||
|
mass = 2;
|
||||||
|
uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
@ -14,275 +14,275 @@ class RscPicture;
|
|||||||
class RscEdit;
|
class RscEdit;
|
||||||
|
|
||||||
class Rsc_ACE_CallScreen_Edit:RscEdit {
|
class Rsc_ACE_CallScreen_Edit:RscEdit {
|
||||||
canModify = 1;
|
canModify = 1;
|
||||||
colorBackground[] = {0,0,0,1};
|
colorBackground[] = {0,0,0,1};
|
||||||
colorText[] = {0,0,0,1};
|
colorText[] = {0,0,0,1};
|
||||||
colorDisabled[] = {1,1,1,0.25};
|
colorDisabled[] = {1,1,1,0.25};
|
||||||
colorSelection[] = {
|
colorSelection[] = {
|
||||||
"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])",
|
"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])",
|
||||||
"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])",
|
"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])",
|
||||||
"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",
|
"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",
|
||||||
1
|
1
|
||||||
};
|
};
|
||||||
text = "";
|
text = "";
|
||||||
style = "0x00 + 0x40 + 0x200";
|
style = "0x00 + 0x40 + 0x200";
|
||||||
shadow = 1;
|
shadow = 1;
|
||||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) * 1)";
|
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) * 1)";
|
||||||
x = 0.288594 * safezoneW + safezoneX;
|
x = 0.288594 * safezoneW + safezoneX;
|
||||||
w = 0.0825 * safezoneW;
|
w = 0.0825 * safezoneW;
|
||||||
h = 0.044 * safezoneH;
|
h = 0.044 * safezoneH;
|
||||||
};
|
};
|
||||||
class Rsc_ACE_HiddenButton:RscButton {
|
class Rsc_ACE_HiddenButton:RscButton {
|
||||||
colorText[] = {0, 0, 0, 0};
|
colorText[] = {0, 0, 0, 0};
|
||||||
colorDisabled[] = {0, 0, 0, 0};
|
colorDisabled[] = {0, 0, 0, 0};
|
||||||
colorBackground[] = {0, 0, 0, 0};
|
colorBackground[] = {0, 0, 0, 0};
|
||||||
colorBackgroundDisabled[] = {0, 0, 0, 0};
|
colorBackgroundDisabled[] = {0, 0, 0, 0};
|
||||||
colorBackgroundActive[] = {0, 0, 0, 0};
|
colorBackgroundActive[] = {0, 0, 0, 0};
|
||||||
colorFocused[] = {0, 0, 0, 0};
|
colorFocused[] = {0, 0, 0, 0};
|
||||||
colorShadow[] = {0, 0, 0, 0};
|
colorShadow[] = {0, 0, 0, 0};
|
||||||
colorBorder[] = {0, 0, 0, 0};
|
colorBorder[] = {0, 0, 0, 0};
|
||||||
w = 0.095589;
|
w = 0.095589;
|
||||||
h = 0.039216;
|
h = 0.039216;
|
||||||
shadow = 0;
|
shadow = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Rsc_ACE_Timer_Slider:RscXSliderH {
|
class Rsc_ACE_Timer_Slider:RscXSliderH {
|
||||||
x = 0.4;
|
x = 0.4;
|
||||||
y = 0.2;
|
y = 0.2;
|
||||||
w = 0.3;
|
w = 0.3;
|
||||||
h = "1*((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
h = "1*((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||||
colorBackground[] = {0,0,0,0.5};
|
colorBackground[] = {0,0,0,0.5};
|
||||||
};
|
};
|
||||||
|
|
||||||
class RscACE_SelectTimeUI {
|
class RscACE_SelectTimeUI {
|
||||||
idd = 8854;
|
idd = 8854;
|
||||||
movingEnable = 0;
|
movingEnable = 0;
|
||||||
class controls {
|
class controls {
|
||||||
class back:IGUIBack {
|
class back:IGUIBack {
|
||||||
x = X_OFFSET;
|
x = X_OFFSET;
|
||||||
y = 0;
|
y = 0;
|
||||||
w = 0.5;
|
w = 0.5;
|
||||||
h = 0.2;
|
h = 0.2;
|
||||||
colorBackground[] = {0, 0, 0, 0.5};
|
colorBackground[] = {0, 0, 0, 0.5};
|
||||||
|
};
|
||||||
|
class header: RscText{
|
||||||
|
idc = 8870;
|
||||||
|
x = X_OFFSET + 0.005;
|
||||||
|
y = 0.005;
|
||||||
|
w = 0.49;
|
||||||
|
h = 0.05;
|
||||||
|
style = ST_CENTER;
|
||||||
|
text = "";
|
||||||
|
};
|
||||||
|
class slider: Rsc_ACE_Timer_Slider {
|
||||||
|
idc = 8845;
|
||||||
|
x = X_OFFSET + 0.005;
|
||||||
|
y = 0.06;
|
||||||
|
w = 0.49;
|
||||||
|
h = 0.025;
|
||||||
|
onSliderPosChanged = "private ['_mins', '_secs'];_mins = floor((_this select 1)/60);_secs=floor((_this select 1) - (_mins*60));ctrlSetText [8870, format[localize 'STR_ACE_Explosives_TimerMenu',_mins, _secs]];";
|
||||||
|
};
|
||||||
|
class cancelBtn: RscButton {
|
||||||
|
idc = 8855;
|
||||||
|
x = X_OFFSET + 0.005;
|
||||||
|
w = 0.15;
|
||||||
|
h = 0.1;
|
||||||
|
y = 0.09;
|
||||||
|
style = ST_CENTER;
|
||||||
|
text = $STR_ACE_Explosives_Cancel;
|
||||||
|
action = "closeDialog 0;";
|
||||||
|
};
|
||||||
|
class approveBtn: RscButton {
|
||||||
|
idc = 8860;
|
||||||
|
x = X_OFFSET + 0.345;
|
||||||
|
y = 0.09;
|
||||||
|
h = 0.1;
|
||||||
|
w = 0.15;
|
||||||
|
style = ST_CENTER;
|
||||||
|
text = $STR_ACE_Explosives_SetTime;
|
||||||
|
action = "closeDialog 0;";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class header: RscText{
|
|
||||||
idc = 8870;
|
|
||||||
x = X_OFFSET + 0.005;
|
|
||||||
y = 0.005;
|
|
||||||
w = 0.49;
|
|
||||||
h = 0.05;
|
|
||||||
style = ST_CENTER;
|
|
||||||
text = "";
|
|
||||||
};
|
|
||||||
class slider: Rsc_ACE_Timer_Slider {
|
|
||||||
idc = 8845;
|
|
||||||
x = X_OFFSET + 0.005;
|
|
||||||
y = 0.06;
|
|
||||||
w = 0.49;
|
|
||||||
h = 0.025;
|
|
||||||
onSliderPosChanged = "private ['_mins', '_secs'];_mins = floor((_this select 1)/60);_secs=floor((_this select 1) - (_mins*60));ctrlSetText [8870, format[localize 'STR_ACE_Explosives_TimerMenu',_mins, _secs]];";
|
|
||||||
};
|
|
||||||
class cancelBtn: RscButton {
|
|
||||||
idc = 8855;
|
|
||||||
x = X_OFFSET + 0.005;
|
|
||||||
w = 0.15;
|
|
||||||
h = 0.1;
|
|
||||||
y = 0.09;
|
|
||||||
style = ST_CENTER;
|
|
||||||
text = $STR_ACE_Explosives_Cancel;
|
|
||||||
action = "closeDialog 0;";
|
|
||||||
};
|
|
||||||
class approveBtn: RscButton {
|
|
||||||
idc = 8860;
|
|
||||||
x = X_OFFSET + 0.345;
|
|
||||||
y = 0.09;
|
|
||||||
h = 0.1;
|
|
||||||
w = 0.15;
|
|
||||||
style = ST_CENTER;
|
|
||||||
text = $STR_ACE_Explosives_SetTime;
|
|
||||||
action = "closeDialog 0;";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class Rsc_ACE_NumKeyButton: Rsc_ACE_HiddenButton{};
|
class Rsc_ACE_NumKeyButton: Rsc_ACE_HiddenButton{};
|
||||||
class Rsc_ACE_PhoneInterface {
|
class Rsc_ACE_PhoneInterface {
|
||||||
idd = 8855;
|
idd = 8855;
|
||||||
movingEnable = 1;
|
movingEnable = 1;
|
||||||
onLoad = QUOTE(GVAR(IED_CurrentSpeedDial) = -1);
|
onLoad = QUOTE(GVAR(IED_CurrentSpeedDial) = -1);
|
||||||
class controls {
|
class controls {
|
||||||
class RscPicture_1200: RscPicture {
|
class RscPicture_1200: RscPicture {
|
||||||
idc = 1200;
|
idc = 1200;
|
||||||
text = PATHTOF(Data\UI\Cellphone_Background.paa);
|
text = PATHTOF(Data\UI\Cellphone_Background.paa);
|
||||||
x = 0.231875 * safezoneW + safezoneX;
|
x = 0.231875 * safezoneW + safezoneX;
|
||||||
y = 0.104 * safezoneH + safezoneY;
|
y = 0.104 * safezoneH + safezoneY;
|
||||||
w = 0.195937 * safezoneW;
|
w = 0.195937 * safezoneW;
|
||||||
h = 0.704 * safezoneH;
|
h = 0.704 * safezoneH;
|
||||||
|
};
|
||||||
|
class numkey_1: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1600;
|
||||||
|
x = 0.278281 * safezoneW + safezoneX;
|
||||||
|
y = 0.533 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "1";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '1')];";
|
||||||
|
};
|
||||||
|
class numkey_2: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1601;
|
||||||
|
x = 0.314375 * safezoneW + safezoneX;
|
||||||
|
y = 0.533 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "2";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '2')];";
|
||||||
|
};
|
||||||
|
class numkey_3: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1602;
|
||||||
|
x = 0.350469 * safezoneW + safezoneX;
|
||||||
|
y = 0.533 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "3";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '3')];";
|
||||||
|
};
|
||||||
|
class numkey_4: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1603;
|
||||||
|
x = 0.278281 * safezoneW + safezoneX;
|
||||||
|
y = 0.577 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "4";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '4')];";
|
||||||
|
};
|
||||||
|
class numkey_5: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1604;
|
||||||
|
x = 0.314375 * safezoneW + safezoneX;
|
||||||
|
y = 0.577 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "5";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '5')];";
|
||||||
|
};
|
||||||
|
class numkey_6: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1605;
|
||||||
|
x = 0.350469 * safezoneW + safezoneX;
|
||||||
|
y = 0.577 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "6";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '6')];";
|
||||||
|
};
|
||||||
|
class numkey_7: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1606;
|
||||||
|
x = 0.278281 * safezoneW + safezoneX;
|
||||||
|
y = 0.621 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "7";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '7')];";
|
||||||
|
};
|
||||||
|
class numkey_8: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1607;
|
||||||
|
x = 0.314375 * safezoneW + safezoneX;
|
||||||
|
y = 0.621 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "8";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '8')];";
|
||||||
|
};
|
||||||
|
class numkey_9: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1608;
|
||||||
|
x = 0.350469 * safezoneW + safezoneX;
|
||||||
|
y = 0.621 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "9";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '9')];";
|
||||||
|
};
|
||||||
|
class numkey_0: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1609;
|
||||||
|
x = 0.314375 * safezoneW + safezoneX;
|
||||||
|
y = 0.676 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "0";
|
||||||
|
action = "ctrlSetText [1400,((ctrlText 1400) + '0')];";
|
||||||
|
};
|
||||||
|
class speedDialAdd: Rsc_ACE_NumKeyButton {
|
||||||
|
idc = 1610;
|
||||||
|
x = 0.278281 * safezoneW + safezoneX;
|
||||||
|
y = 0.676 * safezoneH + safezoneY;
|
||||||
|
w = 0.0309375 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "$STR_ACE_Explosives_Phone_AddToSpeedDial";
|
||||||
|
action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial););
|
||||||
|
};
|
||||||
|
class clear: Rsc_ACE_HiddenButton {
|
||||||
|
idc = 1610;
|
||||||
|
x = 0.278281 * safezoneW + safezoneX;
|
||||||
|
y = 0.445 * safezoneH + safezoneY;
|
||||||
|
w = 0.020625 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "$STR_ACE_Explosives_Clear";
|
||||||
|
action = QUOTE(ctrlSetText [ARR_2(1400,'')];[ctrlText 1401] call FUNC(removeFromSpeedDial);ctrlSetText [ARR_2(1401,'')];);
|
||||||
|
};
|
||||||
|
class dial: Rsc_ACE_HiddenButton {
|
||||||
|
idc = 1611;
|
||||||
|
x = 0.309219 * safezoneW + safezoneX;
|
||||||
|
y = 0.445 * safezoneH + safezoneY;
|
||||||
|
w = 0.04125 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "$STR_ACE_Explosives_Phone_Dial";
|
||||||
|
action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone););
|
||||||
|
};
|
||||||
|
class up: Rsc_ACE_HiddenButton {
|
||||||
|
idc = 1612;
|
||||||
|
x = 0.360781 * safezoneW + safezoneX;
|
||||||
|
y = 0.445 * safezoneH + safezoneY;
|
||||||
|
w = 0.020625 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "$STR_ACE_Explosives_Phone_Up";
|
||||||
|
action = QUOTE([true] call FUNC(setSpeedDial));
|
||||||
|
};
|
||||||
|
class down: Rsc_ACE_HiddenButton {
|
||||||
|
idc = 1613;
|
||||||
|
x = 0.345312 * safezoneW + safezoneX;
|
||||||
|
y = 0.485 * safezoneH + safezoneY;
|
||||||
|
w = 0.020625 * safezoneW;
|
||||||
|
h = 0.033 * safezoneH;
|
||||||
|
tooltip = "$STR_ACE_Explosives_Phone_Down";
|
||||||
|
action = QUOTE([false] call FUNC(setSpeedDial));
|
||||||
|
};
|
||||||
|
class speedDial_Text: RscText {
|
||||||
|
idc = 1405;
|
||||||
|
y = 0.302 * safezoneH + safezoneY;
|
||||||
|
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
|
||||||
|
x = 0.288594 * safezoneW + safezoneX;
|
||||||
|
w = 0.0825 * safezoneW;
|
||||||
|
h = 0.044 * safezoneH;
|
||||||
|
text = "Name";
|
||||||
|
};
|
||||||
|
class speedDial_edit: Rsc_ACE_CallScreen_Edit {
|
||||||
|
idc = 1401;
|
||||||
|
y = 0.302 * safezoneH + safezoneY;
|
||||||
|
x = 0.318 * safezoneW + safezoneX;
|
||||||
|
w = 0.1;
|
||||||
|
};
|
||||||
|
class numberEdit_Text: RscText {
|
||||||
|
idc = 1406;
|
||||||
|
y = 0.348 * safezoneH + safezoneY;
|
||||||
|
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
|
||||||
|
x = 0.288594 * safezoneW + safezoneX;
|
||||||
|
w = 0.0825 * safezoneW;
|
||||||
|
h = 0.044 * safezoneH;
|
||||||
|
text = "#";
|
||||||
|
};
|
||||||
|
class number_edit: Rsc_ACE_CallScreen_Edit {
|
||||||
|
canModify = 0;
|
||||||
|
idc = 1400;
|
||||||
|
y = 0.348 * safezoneH + safezoneY;
|
||||||
|
x = 0.3 * safezoneW + safezoneX;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class numkey_1: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1600;
|
|
||||||
x = 0.278281 * safezoneW + safezoneX;
|
|
||||||
y = 0.533 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "1";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '1')];";
|
|
||||||
};
|
|
||||||
class numkey_2: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1601;
|
|
||||||
x = 0.314375 * safezoneW + safezoneX;
|
|
||||||
y = 0.533 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "2";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '2')];";
|
|
||||||
};
|
|
||||||
class numkey_3: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1602;
|
|
||||||
x = 0.350469 * safezoneW + safezoneX;
|
|
||||||
y = 0.533 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "3";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '3')];";
|
|
||||||
};
|
|
||||||
class numkey_4: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1603;
|
|
||||||
x = 0.278281 * safezoneW + safezoneX;
|
|
||||||
y = 0.577 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "4";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '4')];";
|
|
||||||
};
|
|
||||||
class numkey_5: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1604;
|
|
||||||
x = 0.314375 * safezoneW + safezoneX;
|
|
||||||
y = 0.577 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "5";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '5')];";
|
|
||||||
};
|
|
||||||
class numkey_6: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1605;
|
|
||||||
x = 0.350469 * safezoneW + safezoneX;
|
|
||||||
y = 0.577 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "6";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '6')];";
|
|
||||||
};
|
|
||||||
class numkey_7: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1606;
|
|
||||||
x = 0.278281 * safezoneW + safezoneX;
|
|
||||||
y = 0.621 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "7";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '7')];";
|
|
||||||
};
|
|
||||||
class numkey_8: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1607;
|
|
||||||
x = 0.314375 * safezoneW + safezoneX;
|
|
||||||
y = 0.621 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "8";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '8')];";
|
|
||||||
};
|
|
||||||
class numkey_9: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1608;
|
|
||||||
x = 0.350469 * safezoneW + safezoneX;
|
|
||||||
y = 0.621 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "9";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '9')];";
|
|
||||||
};
|
|
||||||
class numkey_0: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1609;
|
|
||||||
x = 0.314375 * safezoneW + safezoneX;
|
|
||||||
y = 0.676 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "0";
|
|
||||||
action = "ctrlSetText [1400,((ctrlText 1400) + '0')];";
|
|
||||||
};
|
|
||||||
class speedDialAdd: Rsc_ACE_NumKeyButton {
|
|
||||||
idc = 1610;
|
|
||||||
x = 0.278281 * safezoneW + safezoneX;
|
|
||||||
y = 0.676 * safezoneH + safezoneY;
|
|
||||||
w = 0.0309375 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "$STR_ACE_Explosives_Phone_AddToSpeedDial";
|
|
||||||
action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial););
|
|
||||||
};
|
|
||||||
class clear: Rsc_ACE_HiddenButton {
|
|
||||||
idc = 1610;
|
|
||||||
x = 0.278281 * safezoneW + safezoneX;
|
|
||||||
y = 0.445 * safezoneH + safezoneY;
|
|
||||||
w = 0.020625 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "$STR_ACE_Explosives_Clear";
|
|
||||||
action = QUOTE(ctrlSetText [ARR_2(1400,'')];[ctrlText 1401] call FUNC(removeFromSpeedDial);ctrlSetText [ARR_2(1401,'')];);
|
|
||||||
};
|
|
||||||
class dial: Rsc_ACE_HiddenButton {
|
|
||||||
idc = 1611;
|
|
||||||
x = 0.309219 * safezoneW + safezoneX;
|
|
||||||
y = 0.445 * safezoneH + safezoneY;
|
|
||||||
w = 0.04125 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "$STR_ACE_Explosives_Phone_Dial";
|
|
||||||
action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone););
|
|
||||||
};
|
|
||||||
class up: Rsc_ACE_HiddenButton {
|
|
||||||
idc = 1612;
|
|
||||||
x = 0.360781 * safezoneW + safezoneX;
|
|
||||||
y = 0.445 * safezoneH + safezoneY;
|
|
||||||
w = 0.020625 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "$STR_ACE_Explosives_Phone_Up";
|
|
||||||
action = QUOTE([true] call FUNC(setSpeedDial));
|
|
||||||
};
|
|
||||||
class down: Rsc_ACE_HiddenButton {
|
|
||||||
idc = 1613;
|
|
||||||
x = 0.345312 * safezoneW + safezoneX;
|
|
||||||
y = 0.485 * safezoneH + safezoneY;
|
|
||||||
w = 0.020625 * safezoneW;
|
|
||||||
h = 0.033 * safezoneH;
|
|
||||||
tooltip = "$STR_ACE_Explosives_Phone_Down";
|
|
||||||
action = QUOTE([false] call FUNC(setSpeedDial));
|
|
||||||
};
|
|
||||||
class speedDial_Text: RscText {
|
|
||||||
idc = 1405;
|
|
||||||
y = 0.302 * safezoneH + safezoneY;
|
|
||||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
|
|
||||||
x = 0.288594 * safezoneW + safezoneX;
|
|
||||||
w = 0.0825 * safezoneW;
|
|
||||||
h = 0.044 * safezoneH;
|
|
||||||
text = "Name";
|
|
||||||
};
|
|
||||||
class speedDial_edit: Rsc_ACE_CallScreen_Edit {
|
|
||||||
idc = 1401;
|
|
||||||
y = 0.302 * safezoneH + safezoneY;
|
|
||||||
x = 0.318 * safezoneW + safezoneX;
|
|
||||||
w = 0.1;
|
|
||||||
};
|
|
||||||
class numberEdit_Text: RscText {
|
|
||||||
idc = 1406;
|
|
||||||
y = 0.348 * safezoneH + safezoneY;
|
|
||||||
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
|
|
||||||
x = 0.288594 * safezoneW + safezoneX;
|
|
||||||
w = 0.0825 * safezoneW;
|
|
||||||
h = 0.044 * safezoneH;
|
|
||||||
text = "#";
|
|
||||||
};
|
|
||||||
class number_edit: Rsc_ACE_CallScreen_Edit {
|
|
||||||
canModify = 0;
|
|
||||||
idc = 1400;
|
|
||||||
y = 0.348 * safezoneH + safezoneY;
|
|
||||||
x = 0.3 * safezoneW + safezoneX;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
@ -22,46 +22,46 @@ GVAR(CurrentSpeedDial) = 0;
|
|||||||
|
|
||||||
[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler);
|
[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler);
|
||||||
player addEventHandler ["Killed", {
|
player addEventHandler ["Killed", {
|
||||||
private "_deadman";
|
private "_deadman";
|
||||||
call FUNC(place_Cancel);
|
call FUNC(place_Cancel);
|
||||||
_deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives);
|
_deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives);
|
||||||
{
|
{
|
||||||
[(_this select 0), -1, _x, true] call FUNC(detonateExplosive);
|
[(_this select 0), -1, _x, true] call FUNC(detonateExplosive);
|
||||||
} count _deadman;
|
} count _deadman;
|
||||||
}];
|
}];
|
||||||
player addEventHandler ["Take", {
|
player addEventHandler ["Take", {
|
||||||
private ["_item", "_getter", "_giver", "_config"];
|
private ["_item", "_getter", "_giver", "_config"];
|
||||||
_item = _this select 2;
|
_item = _this select 2;
|
||||||
_getter = _this select 0;
|
_getter = _this select 0;
|
||||||
_giver = _this select 1;
|
_giver = _this select 1;
|
||||||
|
|
||||||
_config = ConfigFile >> "CfgWeapons" >> _item;
|
_config = ConfigFile >> "CfgWeapons" >> _item;
|
||||||
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
|
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
|
||||||
private ["_clackerItems"];
|
private ["_clackerItems"];
|
||||||
_clackerItems = _giver getVariable [QGVAR(Clackers), []];
|
_clackerItems = _giver getVariable [QGVAR(Clackers), []];
|
||||||
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
|
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
|
||||||
|
|
||||||
_detonators = [_giver] call FUNC(getDetonators);
|
_detonators = [_giver] call FUNC(getDetonators);
|
||||||
if (count _detonators == 0) then {
|
if (count _detonators == 0) then {
|
||||||
_giver setVariable [QGVAR(Clackers), nil, true];
|
_giver setVariable [QGVAR(Clackers), nil, true];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
player addEventHandler ["Put", {
|
player addEventHandler ["Put", {
|
||||||
private ["_item", "_getter", "_giver", "_config"];
|
private ["_item", "_getter", "_giver", "_config"];
|
||||||
_item = _this select 2;
|
_item = _this select 2;
|
||||||
_getter = _this select 1;
|
_getter = _this select 1;
|
||||||
_giver = _this select 0;
|
_giver = _this select 0;
|
||||||
|
|
||||||
_config = ConfigFile >> "CfgWeapons" >> _item;
|
_config = ConfigFile >> "CfgWeapons" >> _item;
|
||||||
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
|
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
|
||||||
private ["_clackerItems"];
|
private ["_clackerItems"];
|
||||||
_clackerItems = _giver getVariable [QGVAR(Clackers), []];
|
_clackerItems = _giver getVariable [QGVAR(Clackers), []];
|
||||||
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
|
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
|
||||||
|
|
||||||
_detonators = [_giver] call FUNC(getDetonators);
|
_detonators = [_giver] call FUNC(getDetonators);
|
||||||
if (count _detonators == 0) then {
|
if (count _detonators == 0) then {
|
||||||
_giver setVariable [QGVAR(Clackers), nil, true];
|
_giver setVariable [QGVAR(Clackers), nil, true];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
|
@ -19,7 +19,11 @@ ADDON = false;
|
|||||||
|
|
||||||
PREP(addCellphoneIED);
|
PREP(addCellphoneIED);
|
||||||
PREP(addClacker);
|
PREP(addClacker);
|
||||||
|
PREP(addDetonateActions);
|
||||||
|
PREP(addExplosiveActions);
|
||||||
PREP(addToSpeedDial);
|
PREP(addToSpeedDial);
|
||||||
|
PREP(addTransmitterActions);
|
||||||
|
PREP(addTriggerActions);
|
||||||
PREP(canDefuse);
|
PREP(canDefuse);
|
||||||
PREP(canDetonate);
|
PREP(canDetonate);
|
||||||
PREP(defuseExplosive);
|
PREP(defuseExplosive);
|
||||||
@ -36,11 +40,9 @@ PREP(getDetonators);
|
|||||||
PREP(getPlacedExplosives);
|
PREP(getPlacedExplosives);
|
||||||
PREP(getSpeedDialExplosive);
|
PREP(getSpeedDialExplosive);
|
||||||
|
|
||||||
PREP(openDetonateUI);
|
PREP(onLanded);
|
||||||
PREP(openPlaceUI);
|
|
||||||
PREP(openTransmitterUI);
|
|
||||||
PREP(openTimerSetUI);
|
PREP(openTimerSetUI);
|
||||||
PREP(openTriggerSelectionUI);
|
|
||||||
|
|
||||||
PREP(place_Approve);
|
PREP(place_Approve);
|
||||||
PREP(place_Cancel);
|
PREP(place_Cancel);
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
class CfgPatches {
|
class CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
units[] = {};
|
units[] = {};
|
||||||
weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch", "ACE_Cellphone"};
|
weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch", "ACE_Cellphone"};
|
||||||
requiredVersion = REQUIRED_VERSION;
|
requiredVersion = REQUIRED_VERSION;
|
||||||
requiredAddons[] = {"ace_common", "ace_interaction"};
|
requiredAddons[] = {"ace_interaction"};
|
||||||
author[] = {"Garth 'L-H' de Wet"};
|
author[] = {"Garth 'L-H' de Wet"};
|
||||||
authorUrl = "http://garth.snakebiteink.co.za/";
|
authorUrl = "http://garth.snakebiteink.co.za/";
|
||||||
VERSION_CONFIG;
|
VERSION_CONFIG;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
@ -22,30 +22,30 @@ class CfgPatches {
|
|||||||
#include "ExplosivesUI.hpp"
|
#include "ExplosivesUI.hpp"
|
||||||
|
|
||||||
class CfgActions {
|
class CfgActions {
|
||||||
class None;
|
class None;
|
||||||
class Deactivate:None {
|
class Deactivate:None {
|
||||||
show = 0;
|
show = 0;
|
||||||
};
|
};
|
||||||
class DeactivateMine:None {
|
class DeactivateMine:None {
|
||||||
show = 0;
|
show = 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class CfgMineTriggers {
|
class CfgMineTriggers {
|
||||||
class RangeTrigger;
|
class RangeTrigger;
|
||||||
class MagneticTrigger: RangeTrigger {
|
class MagneticTrigger: RangeTrigger {
|
||||||
mineMagnetic = 1;
|
mineMagnetic = 1;
|
||||||
mineTriggerRange = 1;
|
mineTriggerRange = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(RequireSpecialist) {
|
class GVAR(RequireSpecialist) {
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(PunishNonSpecialists) {
|
class GVAR(PunishNonSpecialists) {
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -25,23 +25,23 @@ _requiredItems = getArray(_config >> "requires");
|
|||||||
_hasRequired = true;
|
_hasRequired = true;
|
||||||
_detonators = [_unit] call FUNC(getDetonators);
|
_detonators = [_unit] call FUNC(getDetonators);
|
||||||
{
|
{
|
||||||
if !(_x in _detonators) exitWith{
|
if !(_x in _detonators) exitWith{
|
||||||
_hasRequired = false;
|
_hasRequired = false;
|
||||||
};
|
};
|
||||||
} count _requiredItems;
|
} count _requiredItems;
|
||||||
private ["_code", "_count", "_codeSet"];
|
private ["_code", "_count", "_codeSet"];
|
||||||
_codeSet = false;
|
_codeSet = false;
|
||||||
while {!_codeSet} do {
|
while {!_codeSet} do {
|
||||||
_code = str(round (random 9999));
|
_code = str(round (random 9999));
|
||||||
_count = 4 - count (toArray _code);
|
_count = 4 - count (toArray _code);
|
||||||
while {_count > 0} do {
|
while {_count > 0} do {
|
||||||
_code = "0" + _code;
|
_code = "0" + _code;
|
||||||
_count = _count - 1;
|
_count = _count - 1;
|
||||||
};
|
};
|
||||||
_codeSet = (count ([_code] call FUNC(getSpeedDialExplosive))) == 0;
|
_codeSet = (count ([_code] call FUNC(getSpeedDialExplosive))) == 0;
|
||||||
};
|
};
|
||||||
if (isNil QGVAR(CellphoneIEDs)) then {
|
if (isNil QGVAR(CellphoneIEDs)) then {
|
||||||
GVAR(CellphoneIEDs) = [];
|
GVAR(CellphoneIEDs) = [];
|
||||||
};
|
};
|
||||||
_count = GVAR(CellphoneIEDs) pushBack [_explosive,_code,GetNumber(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> "Cellphone" >> "FuseTime")];
|
_count = GVAR(CellphoneIEDs) pushBack [_explosive,_code,GetNumber(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> "Cellphone" >> "FuseTime")];
|
||||||
_count = _count + 1;
|
_count = _count + 1;
|
||||||
|
@ -17,10 +17,8 @@
|
|||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_unit", "_explosive", "_clacker", "_config", "_magazineClass", "_requiredItems", "_hasRequired"];
|
private ["_clacker", "_config", "_requiredItems", "_hasRequired"];
|
||||||
_unit = _this select 0;
|
EXPLODE_3_PVT(_this,_unit,_explosive,_magazineClass);
|
||||||
_explosive = _this select 1;
|
|
||||||
_magazineClass = _this select 2;
|
|
||||||
// Config is the last item in the list of passed in items.
|
// Config is the last item in the list of passed in items.
|
||||||
_config = (_this select 3) select (count (_this select 3) - 1);
|
_config = (_this select 3) select (count (_this select 3) - 1);
|
||||||
|
|
||||||
@ -28,9 +26,9 @@ _requiredItems = getArray(_config >> "requires");
|
|||||||
_hasRequired = true;
|
_hasRequired = true;
|
||||||
_detonators = [_unit] call FUNC(getDetonators);
|
_detonators = [_unit] call FUNC(getDetonators);
|
||||||
{
|
{
|
||||||
if !(_x in _detonators) exitWith{
|
if !(_x in _detonators) exitWith{
|
||||||
_hasRequired = false;
|
_hasRequired = false;
|
||||||
};
|
};
|
||||||
} count _requiredItems;
|
} count _requiredItems;
|
||||||
|
|
||||||
if !(_hasRequired) exitWith {};
|
if !(_hasRequired) exitWith {};
|
||||||
@ -38,7 +36,9 @@ _config = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> co
|
|||||||
|
|
||||||
_clacker = _unit getVariable [QGVAR(Clackers), []];
|
_clacker = _unit getVariable [QGVAR(Clackers), []];
|
||||||
GVAR(PlacedCount) = GVAR(PlacedCount) + 1;
|
GVAR(PlacedCount) = GVAR(PlacedCount) + 1;
|
||||||
|
|
||||||
_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize "STR_ACE_Explosives_DetonateCode",
|
_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize "STR_ACE_Explosives_DetonateCode",
|
||||||
GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))];
|
GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))];
|
||||||
|
|
||||||
_unit setVariable [QGVAR(Clackers), _clacker, true];
|
_unit setVariable [QGVAR(Clackers), _clacker, true];
|
||||||
_unit sideChat format [localize "STR_ACE_Explosives_DetonateCode", GVAR(PlacedCount)];
|
_unit sideChat format [localize "STR_ACE_Explosives_DetonateCode", GVAR(PlacedCount)];
|
||||||
|
49
addons/explosives/functions/fnc_addDetonateActions.sqf
Normal file
49
addons/explosives/functions/fnc_addDetonateActions.sqf
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Author: Garth 'L-H' de Wet
|
||||||
|
* Opens the UI for explosive detonation selection
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Unit <OBJECT>
|
||||||
|
* 1: Trigger classname <STRING>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, "ACE_M26_Clacker"] call ACE_Explosives_fnc_addDetonateActions;
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
private ["_result", "_item", "_children"];
|
||||||
|
call EFUNC(interaction,hideMenu);
|
||||||
|
EXPLODE_2_PVT(_this,_unit,_detonator);
|
||||||
|
_range = GetNumber (ConfigFile >> "CfgWeapons" >> _detonator >> "ACE_Range");
|
||||||
|
|
||||||
|
_result = [_unit] call FUNC(getPlacedExplosives);
|
||||||
|
_children = [];
|
||||||
|
{
|
||||||
|
if (!isNull(_x select 0)) then {
|
||||||
|
_required = getArray (ConfigFile >> "CfgACE_Triggers" >> (_x select 4) >> "requires");
|
||||||
|
if (_detonator in _required) then {
|
||||||
|
_item = ConfigFile >> "CfgMagazines" >> (_x select 3);
|
||||||
|
|
||||||
|
_children pushBack
|
||||||
|
[
|
||||||
|
[
|
||||||
|
format ["Explosive_%1", _forEachIndex],
|
||||||
|
_x select 2,
|
||||||
|
getText(_item >> "picture"),
|
||||||
|
{(_this select 2) call FUNC(detonateExplosive);},
|
||||||
|
{true},
|
||||||
|
{},
|
||||||
|
[ACE_player,_range,_x]
|
||||||
|
] call EFUNC(interact_menu,createAction),
|
||||||
|
[],
|
||||||
|
ACE_Player
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} foreach _result;
|
||||||
|
|
||||||
|
_children
|
56
addons/explosives/functions/fnc_addExplosiveActions.sqf
Normal file
56
addons/explosives/functions/fnc_addExplosiveActions.sqf
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Author: Garth 'L-H' de Wet and CAA-Picard
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Unit <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Actions
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
private ["_mags", "_item", "_index", "_children"];
|
||||||
|
|
||||||
|
EXPLODE_1_PVT(_this,_unit);
|
||||||
|
|
||||||
|
_mags = magazines _unit;
|
||||||
|
_list = [];
|
||||||
|
_itemCount = [];
|
||||||
|
{
|
||||||
|
_item = ConfigFile >> "CfgMagazines" >> _x;
|
||||||
|
if (getNumber(_item >> "ACE_Placeable") == 1) then {
|
||||||
|
_index = _list find _item;
|
||||||
|
if (_index != -1) then {
|
||||||
|
_itemCount set [_index, (_itemCount select _index) + 1];
|
||||||
|
} else {
|
||||||
|
_list pushBack _item;
|
||||||
|
_itemCount pushBack 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} forEach _mags;
|
||||||
|
|
||||||
|
_children = [];
|
||||||
|
|
||||||
|
{
|
||||||
|
private "_name";
|
||||||
|
_name = if(isText(_x >> "displayNameShort") && {getText(_x >> "displayNameShort") != ""}) then
|
||||||
|
{getText (_x >> "displayNameShort")}else{getText(_x >> "displayName")};
|
||||||
|
_children pushBack
|
||||||
|
[
|
||||||
|
[
|
||||||
|
format ["Explosive_%1", _forEachIndex],
|
||||||
|
format [_name + " (%1)", _itemCount select _foreachIndex],
|
||||||
|
getText(_x >> "picture"),
|
||||||
|
{(_this select 2) call FUNC(setupExplosive);},
|
||||||
|
{true},
|
||||||
|
{},
|
||||||
|
[_unit, configName _x]
|
||||||
|
] call EFUNC(interact_menu,createAction),
|
||||||
|
[],
|
||||||
|
_unit
|
||||||
|
];
|
||||||
|
} foreach _list;
|
||||||
|
|
||||||
|
_children
|
@ -22,16 +22,16 @@ _found = false;
|
|||||||
EXPLODE_2_PVT(_this,_name,_code);
|
EXPLODE_2_PVT(_this,_name,_code);
|
||||||
|
|
||||||
if ((_code) == "") ExitWith {
|
if ((_code) == "") ExitWith {
|
||||||
[_name] call FUNC(removeFromSpeedDial);
|
[_name] call FUNC(removeFromSpeedDial);
|
||||||
};
|
};
|
||||||
{
|
{
|
||||||
if ((_x select 0) == _name) exitWith {
|
if ((_x select 0) == _name) exitWith {
|
||||||
_speedDial set [_foreachindex, _this];
|
_speedDial set [_foreachindex, _this];
|
||||||
_found = true;
|
_found = true;
|
||||||
};
|
};
|
||||||
} foreach _speedDial;
|
} foreach _speedDial;
|
||||||
if (!_found) then {
|
if (!_found) then {
|
||||||
_speedDial pushBack _this;
|
_speedDial pushBack _this;
|
||||||
};
|
};
|
||||||
|
|
||||||
ace_player setVariable [QGVAR(SpeedDial), _speedDial];
|
ace_player setVariable [QGVAR(SpeedDial), _speedDial];
|
||||||
|
39
addons/explosives/functions/fnc_addTransmitterActions.sqf
Normal file
39
addons/explosives/functions/fnc_addTransmitterActions.sqf
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* Author: Garth 'L-H' de Wet
|
||||||
|
* Opens the UI for selecting the transmitter
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Unit <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player] call ACE_Explosives_fnc_addTransmitterActions;
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
private ["_items", "_unit", "_children", "_config"];
|
||||||
|
_unit = _this select 0;
|
||||||
|
_detonators = [_unit] call FUNC(getDetonators);
|
||||||
|
_children = [];
|
||||||
|
{
|
||||||
|
_config = ConfigFile >> "CfgWeapons" >> _x;
|
||||||
|
_children pushBack
|
||||||
|
[
|
||||||
|
[
|
||||||
|
format ["Trigger_%1", _forEachIndex],
|
||||||
|
getText(_config >> "displayName"),
|
||||||
|
getText(_config >> "picture"),
|
||||||
|
{},
|
||||||
|
{true},
|
||||||
|
{(_this select 2) call FUNC(addDetonateActions);},
|
||||||
|
[ACE_player,_x]
|
||||||
|
] call EFUNC(interact_menu,createAction),
|
||||||
|
[],
|
||||||
|
ACE_Player
|
||||||
|
];
|
||||||
|
} foreach _detonators;
|
||||||
|
|
||||||
|
_children
|
56
addons/explosives/functions/fnc_addTriggerActions.sqf
Normal file
56
addons/explosives/functions/fnc_addTriggerActions.sqf
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Author: Garth 'L-H' de Wet
|
||||||
|
* Opens the UI for explosive trigger selection
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Explosive Magazine <STRING>
|
||||||
|
* 1: Explosive <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [lbData [8866, lbCurSel 8866], _explosive] call ACE_Explosives_fnc_addTriggerActions;
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
private ["_hasRequiredItems","_triggerTypes", "_children",
|
||||||
|
"_detonators", "_required", "_magTriggers"];
|
||||||
|
EXPLODE_2_PVT(_this,_magazine,_explosive);
|
||||||
|
_detonators = [ACE_player] call FUNC(getDetonators);
|
||||||
|
|
||||||
|
_triggerTypes = [_magazine] call FUNC(triggerType);
|
||||||
|
_magTriggers = ConfigFile >> "CfgMagazines" >> _magazine >> "ACE_Triggers";
|
||||||
|
_children = [];
|
||||||
|
{
|
||||||
|
_required = getArray (_x >> "requires");
|
||||||
|
_hasRequiredItems = true;
|
||||||
|
{
|
||||||
|
if !(_x in _detonators) exitWith {
|
||||||
|
_hasRequiredItems = false;
|
||||||
|
};
|
||||||
|
} count _required;
|
||||||
|
if (_hasRequiredItems) then {
|
||||||
|
_children pushBack
|
||||||
|
[
|
||||||
|
[
|
||||||
|
format ["Trigger_%1", _forEachIndex],
|
||||||
|
if(isText(_magTriggers >> configName _x >> "displayName"))then
|
||||||
|
{getText(_magTriggers >> configName _x >> "displayName")}
|
||||||
|
else{getText(_x >> "displayName")},
|
||||||
|
if(isText(_magTriggers >> configName _x >> "picture"))then
|
||||||
|
{getText(_magTriggers >> configName _x >> "picture")}
|
||||||
|
else{getText(_x >> "picture")},
|
||||||
|
{(_this select 2) call FUNC(selectTrigger);},
|
||||||
|
{true},
|
||||||
|
{},
|
||||||
|
[_explosive, _magazine, configName _x]
|
||||||
|
] call EFUNC(interact_menu,createAction),
|
||||||
|
[],
|
||||||
|
ACE_Player
|
||||||
|
];
|
||||||
|
};
|
||||||
|
} foreach _triggerTypes;
|
||||||
|
|
||||||
|
_children
|
@ -14,25 +14,15 @@
|
|||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private "_unit";
|
private ["_specialist"];
|
||||||
_unit = _this select 0;
|
EXPLODE_2_PVT(_this,_unit,_target);
|
||||||
|
if (isNull(_target getVariable [QGVAR(Explosive),objNull])) exitWith {
|
||||||
|
deleteVehicle _target;
|
||||||
|
false
|
||||||
|
};
|
||||||
if (vehicle _unit != _unit || {!("ACE_DefusalKit" in (items _unit))}) exitWith {false};
|
if (vehicle _unit != _unit || {!("ACE_DefusalKit" in (items _unit))}) exitWith {false};
|
||||||
_isSpecialist = [_unit] call EFUNC(Common,isEOD);
|
_isSpecialist = [_unit] call EFUNC(Common,isEOD);
|
||||||
|
|
||||||
if (GVAR(RequireSpecialist) && {!_isSpecialist}) exitWith {false};
|
if (GVAR(RequireSpecialist) && {!_isSpecialist}) exitWith {false};
|
||||||
|
|
||||||
_timeBombCore = nearestObject [_unit, "TimeBombCore"];
|
true
|
||||||
_mineBase = nearestObject [_unit, "MineBase"];
|
|
||||||
|
|
||||||
_distCore = _unit distance _timeBombCore;
|
|
||||||
_distBase = _unit distance _mineBase;
|
|
||||||
_distance = 10;
|
|
||||||
if (_distCore < _distBase) then {
|
|
||||||
_distance = _distCore;
|
|
||||||
EGVAR(interaction,Target) = _timeBombCore;
|
|
||||||
}else{
|
|
||||||
_distance = _distBase;
|
|
||||||
EGVAR(interaction,Target) = _mineBase;
|
|
||||||
};
|
|
||||||
if (isNil "_distance") exitWith {false};
|
|
||||||
_distance < 4
|
|
||||||
|
@ -15,12 +15,16 @@
|
|||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_unit", "_explosive"];
|
EXPLODE_2_PVT(_this,_unit,_explosive);
|
||||||
_unit = _this select 0;
|
|
||||||
_explosive = _this select 1;
|
|
||||||
|
|
||||||
if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDefuse") == 1) exitWith {
|
if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDefuse") == 1) exitWith {
|
||||||
[_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive);
|
[_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
detach _x;
|
||||||
|
deleteVehicle _x;
|
||||||
|
false
|
||||||
|
} count (attachedObjects (_explosive));
|
||||||
|
|
||||||
_unit action ["Deactivate", _unit, _explosive];
|
_unit action ["Deactivate", _unit, _explosive];
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
* 0: Unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: Max range (-1 to ignore) <NUMBER>
|
* 1: Max range (-1 to ignore) <NUMBER>
|
||||||
* 2: Explosive <ARRAY>
|
* 2: Explosive <ARRAY>
|
||||||
* 0: Explosive <OBJECT>
|
* 0: Explosive <OBJECT>
|
||||||
* 1: Fuse time <NUMBER>
|
* 1: Fuse time <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
@ -19,33 +19,37 @@
|
|||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_item","_result", "_ignoreRange", "_unit", "_range"];
|
private ["_result", "_ignoreRange", "_helper"];
|
||||||
_unit = _this select 0;
|
EXPLODE_3_PVT(_this,_unit,_range,_item);
|
||||||
_range = _this select 1;
|
|
||||||
_item = _this select 2;
|
|
||||||
_ignoreRange = (_range == -1);
|
_ignoreRange = (_range == -1);
|
||||||
_result = true;
|
_result = true;
|
||||||
|
|
||||||
if (!_ignoreRange && {(_unit distance (_item select 0)) > _range}) exitWith {false};
|
if (!_ignoreRange && {(_unit distance (_item select 0)) > _range}) exitWith {false};
|
||||||
|
|
||||||
|
_helper = (attachedTo (_item select 0));
|
||||||
|
if (!isNull(_helper)) then {
|
||||||
|
detach (_item select 0);
|
||||||
|
deleteVehicle _helper;
|
||||||
|
};
|
||||||
|
|
||||||
if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhenDestroyed") == 0) then {
|
if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhenDestroyed") == 0) then {
|
||||||
private ["_exp", "_previousExp"];
|
private ["_exp", "_previousExp"];
|
||||||
_previousExp = _item select 0;
|
_previousExp = _item select 0;
|
||||||
_exp = getText (ConfigFile >> "CfgAmmo" >> typeof (_previousExp) >> "ACE_Explosive");
|
_exp = getText (ConfigFile >> "CfgAmmo" >> typeof (_previousExp) >> "ACE_Explosive");
|
||||||
if (_exp != "") then {
|
if (_exp != "") then {
|
||||||
_exp = createVehicle [_exp, [0,0,15001], [], 0, "NONE"];
|
_exp = createVehicle [_exp, [0,0,15001], [], 0, "NONE"];
|
||||||
_exp setDir (getDir _previousExp);
|
_exp setDir (getDir _previousExp);
|
||||||
_item set [0, _exp];
|
_item set [0, _exp];
|
||||||
_pos = getPosASL _previousExp;
|
_pos = getPosASL _previousExp;
|
||||||
deleteVehicle _previousExp;
|
deleteVehicle _previousExp;
|
||||||
_exp setPosASL _pos;
|
_exp setPosASL _pos;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
[{
|
[{
|
||||||
_explosive = _this;
|
_explosive = _this;
|
||||||
if (!isNull _explosive) then {
|
if (!isNull _explosive) then {
|
||||||
_explosive setDamage 1;
|
_explosive setDamage 1;
|
||||||
};
|
};
|
||||||
}, _item select 0, _item select 1, 0] call EFUNC(common,waitAndExecute);
|
}, _item select 0, _item select 1, 0] call EFUNC(common,waitAndExecute);
|
||||||
|
|
||||||
_result
|
_result
|
||||||
|
@ -24,19 +24,19 @@ _unit setVariable [QGVAR(Dialing), true, true];
|
|||||||
_ran = (ceil(random 8)) + 1;
|
_ran = (ceil(random 8)) + 1;
|
||||||
_arr = [];
|
_arr = [];
|
||||||
for [{_i=0}, {_i<_ran}, {_i=_i+1}] do {
|
for [{_i=0}, {_i<_ran}, {_i=_i+1}] do {
|
||||||
_arr = _arr + ['.','..','...',''];
|
_arr = _arr + ['.','..','...',''];
|
||||||
};
|
};
|
||||||
if (_unit == ace_player) then {
|
if (_unit == ace_player) then {
|
||||||
ctrlSetText [1400,"Calling"];
|
ctrlSetText [1400,"Calling"];
|
||||||
[FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler);
|
[FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler);
|
||||||
} else {
|
} else {
|
||||||
private ["_explosive"];
|
private ["_explosive"];
|
||||||
_explosive = [_code] call FUNC(getSpeedDialExplosive);
|
_explosive = [_code] call FUNC(getSpeedDialExplosive);
|
||||||
if ((count _explosive) > 0) then {
|
if ((count _explosive) > 0) then {
|
||||||
[{
|
[{
|
||||||
playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75];
|
playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75];
|
||||||
(_this select 0) setVariable [QGVAR(Dialing), false, true];
|
(_this select 0) setVariable [QGVAR(Dialing), false, true];
|
||||||
}, [_unit,_explosive select 0], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute);
|
}, [_unit,_explosive select 0], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute);
|
||||||
[_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer);
|
[_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
EXPLODE_4_PVT(_this select 0,_unit,_i,_arr,_code);
|
EXPLODE_4_PVT(_this select 0,_unit,_i,_arr,_code);
|
||||||
if ((_i mod 4) == 0) then {
|
if ((_i mod 4) == 0) then {
|
||||||
playSound3D [QUOTE(PATHTO_R(Data\Audio\DialTone.wss)), objNull, false, (_unit ModelToWorld [0,0.2,2]), 15,1,2.5];
|
playSound3D [QUOTE(PATHTO_R(Data\Audio\DialTone.wss)), objNull, false, (_unit modelToWorldVisual [0,0.2,2]), 15,1,2.5];
|
||||||
};
|
};
|
||||||
ctrlSetText [1400,format["Calling%1",_arr select (_i - 4)]];
|
ctrlSetText [1400,format["Calling%1",_arr select (_i - 4)]];
|
||||||
|
|
||||||
|
@ -20,10 +20,10 @@ _items = (items _unit);
|
|||||||
_result = [];
|
_result = [];
|
||||||
|
|
||||||
{
|
{
|
||||||
_config = ConfigFile >> "CfgWeapons" >> _x;
|
_config = ConfigFile >> "CfgWeapons" >> _x;
|
||||||
if (getNumber (_config >> "ACE_Detonator") == 1) then {
|
if (getNumber (_config >> "ACE_Detonator") == 1) then {
|
||||||
_result pushBack _x;
|
_result pushBack _x;
|
||||||
};
|
};
|
||||||
} forEach _items;
|
} forEach _items;
|
||||||
|
|
||||||
_result
|
_result
|
||||||
|
@ -20,29 +20,29 @@ private ["_unit", "_clackerList", "_adjustedList", "_list", "_filter"];
|
|||||||
_unit = _this select 0;
|
_unit = _this select 0;
|
||||||
_filter = nil;
|
_filter = nil;
|
||||||
if (count _this > 1) then {
|
if (count _this > 1) then {
|
||||||
_filter = ConfigFile >> "CfgACE_Triggers" >> (_this select 1);
|
_filter = ConfigFile >> "CfgACE_Triggers" >> (_this select 1);
|
||||||
};
|
};
|
||||||
_clackerList = [];
|
_clackerList = [];
|
||||||
_adjustedList = false;
|
_adjustedList = false;
|
||||||
_clackerList = _unit getVariable [QGVAR(Clackers), []];
|
_clackerList = _unit getVariable [QGVAR(Clackers), []];
|
||||||
_list = [];
|
_list = [];
|
||||||
{
|
{
|
||||||
if isNull (_x select 0) then {
|
if (isNull (_x select 0)) then {
|
||||||
_clackerList set [_foreachIndex, "X"];
|
_clackerList set [_foreachIndex, "X"];
|
||||||
_adjustedList = true;
|
_adjustedList = true;
|
||||||
} else {
|
} else {
|
||||||
if (isNil "_filter" || {(ConfigFile >> "CfgACE_Triggers" >> (_x select 4)) == _filter}) then {
|
if (isNil "_filter" || {(ConfigFile >> "CfgACE_Triggers" >> (_x select 4)) == _filter}) then {
|
||||||
_list pushBack _x;
|
_list pushBack _x;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} foreach _clackerList;
|
} foreach _clackerList;
|
||||||
if (_adjustedList) then {
|
if (_adjustedList) then {
|
||||||
_clackerList = _clackerList - ["X"];
|
_clackerList = _clackerList - ["X"];
|
||||||
if (count _clackerList == 0) then {
|
if (count _clackerList == 0) then {
|
||||||
_unit SetVariable [QGVAR(Clackers), nil, true];
|
_unit SetVariable [QGVAR(Clackers), nil, true];
|
||||||
} else {
|
} else {
|
||||||
_unit SetVariable [QGVAR(Clackers), _clackerList, true];
|
_unit SetVariable [QGVAR(Clackers), _clackerList, true];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
_list
|
_list
|
||||||
|
@ -19,9 +19,9 @@ private ["_explosive"];
|
|||||||
if (isNil QGVAR(CellphoneIEDs)) exitWith {[]};
|
if (isNil QGVAR(CellphoneIEDs)) exitWith {[]};
|
||||||
_explosive = [];
|
_explosive = [];
|
||||||
{
|
{
|
||||||
if ((_x select 1) == _code) exitWith {
|
if ((_x select 1) == _code) exitWith {
|
||||||
_explosive = _x;
|
_explosive = _x;
|
||||||
};
|
};
|
||||||
false
|
false
|
||||||
} count GVAR(CellphoneIEDs);
|
} count GVAR(CellphoneIEDs);
|
||||||
_explosive
|
_explosive
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_obj"];
|
|
||||||
if (isNull(GVAR(Setup)) || {ACE_Modifier == 0} || !GVAR(pfeh_running)) exitWith {false};
|
if (isNull(GVAR(Setup)) || {ACE_Modifier == 0} || !GVAR(pfeh_running)) exitWith {false};
|
||||||
_this = _this * 5;
|
_this = _this * 5;
|
||||||
GVAR(Setup) setDir ((getDir GVAR(Setup)) + _this);
|
GVAR(Setup) setDir ((getDir GVAR(Setup)) + _this);
|
||||||
|
@ -19,9 +19,9 @@ _result = false;
|
|||||||
_unit = _this select 0;
|
_unit = _this select 0;
|
||||||
_magazines = magazines _unit;
|
_magazines = magazines _unit;
|
||||||
{
|
{
|
||||||
if (getNumber (ConfigFile >> "CfgMagazines" >> _x >> "ACE_Placeable") == 1) exitWith {
|
if (getNumber (ConfigFile >> "CfgMagazines" >> _x >> "ACE_Placeable") == 1) exitWith {
|
||||||
_result = true;
|
_result = true;
|
||||||
};
|
};
|
||||||
} count _magazines;
|
} count _magazines;
|
||||||
|
|
||||||
_result
|
_result
|
||||||
|
@ -20,7 +20,9 @@ _activated = _this select 2;
|
|||||||
|
|
||||||
if !(_activated) exitWith {};
|
if !(_activated) exitWith {};
|
||||||
|
|
||||||
[_logic, QGVAR(RequireSpecialist), "RequireSpecialist" ] call EFUNC(Common,readSettingFromModule);
|
[_logic, QGVAR(RequireSpecialist), "RequireSpecialist"]
|
||||||
[_logic, QGVAR(PunishNonSpecialists), "PunishNonSpecialists" ] call EFUNC(Common,readSettingFromModule);
|
call EFUNC(Common,readSettingFromModule);
|
||||||
|
[_logic, QGVAR(PunishNonSpecialists),"PunishNonSpecialists"]
|
||||||
|
call EFUNC(Common,readSettingFromModule);
|
||||||
|
|
||||||
diag_log text "[ACE]: Explosive Module Initialized.";
|
diag_log text "[ACE]: Explosive Module Initialized.";
|
||||||
|
39
addons/explosives/functions/fnc_onLanded.sqf
Normal file
39
addons/explosives/functions/fnc_onLanded.sqf
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* Author: Garth 'L-H' de Wet
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* object addEventHandler ["EpeContactStart", ACE_explosive_fnc_onLanded];
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
EXPLODE_2_PVT(_this,_explosive,_hitTarget);
|
||||||
|
|
||||||
|
if ((_explosive getVariable [QGVAR(Handled), false])) exitWith {};
|
||||||
|
|
||||||
|
_explosive setVariable [QGVAR(Handled), true];
|
||||||
|
if (!isNull _hitTarget && {_hitTarget isKindOf "AllVehicles"}) then {
|
||||||
|
_explosive attachTo [_hitTarget];
|
||||||
|
private "_dir";
|
||||||
|
_dir = _setup getVariable [QGVAR(Direction), 0];
|
||||||
|
_dir = _dir - (getDir _hitTarget);
|
||||||
|
[[_explosive, _dir, 0], QFUNC(setPosition)] call EFUNC(common,execRemoteFnc);
|
||||||
|
} else {
|
||||||
|
[{
|
||||||
|
EXPLODE_2_PVT(_this,_player,_explosive);
|
||||||
|
private "_pos";
|
||||||
|
_player setVariable [QGVAR(PlantingExplosive), false];
|
||||||
|
if (surfaceIsWater _pos) then {
|
||||||
|
_pos = getPosASL _explosive;
|
||||||
|
_explosive setPosASL _pos;
|
||||||
|
}else{
|
||||||
|
_pos = getPosATL _explosive;
|
||||||
|
_explosive setPosATL _pos;
|
||||||
|
};
|
||||||
|
}, [ACE_player, _explosive], 0.5, 0.1] call EFUNC(common,waitAndExecute);
|
||||||
|
};
|
@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: Garth 'L-H' de Wet
|
|
||||||
* Opens the UI for explosive detonation selection
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* 0: Unit <OBJECT>
|
|
||||||
* 1: Trigger classname <STRING>
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
* [player, "ACE_M26_Clacker"] call ACE_Explosives_fnc_openDetonateUI;
|
|
||||||
*
|
|
||||||
* Public: No
|
|
||||||
*/
|
|
||||||
#include "script_component.hpp"
|
|
||||||
private ["_unit","_result", "_item"];
|
|
||||||
call EFUNC(interaction,hideMenu);
|
|
||||||
_unit = _this select 0;
|
|
||||||
_detonator = _this select 1;
|
|
||||||
_range = GetNumber (ConfigFile >> "CfgWeapons" >> _detonator >> "ACE_Range");
|
|
||||||
|
|
||||||
_result = [_unit] call FUNC(getPlacedExplosives);
|
|
||||||
_actions = [localize "STR_ACE_Explosives_DetonateMenu", localize "STR_ACE_Explosives_Detonate"]
|
|
||||||
call EFUNC(interaction,prepareSelectMenu);
|
|
||||||
_count = 0;
|
|
||||||
{
|
|
||||||
if (!isNull(_x select 0)) then {
|
|
||||||
_required = getArray (ConfigFile >> "CfgACE_Triggers" >> (_x select 4) >> "requires");
|
|
||||||
if (_detonator in _required) then {
|
|
||||||
_item = ConfigFile >> "CfgMagazines" >> (_x select 3);
|
|
||||||
_actions = [
|
|
||||||
_actions,
|
|
||||||
_x select 2,
|
|
||||||
getText(_item >> "picture"),
|
|
||||||
[_foreachIndex, _range]
|
|
||||||
] call EFUNC(interaction,AddSelectableItem);
|
|
||||||
_count = _count + 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
} foreach _result;
|
|
||||||
if (_count > 0) then {
|
|
||||||
[
|
|
||||||
_actions,
|
|
||||||
{
|
|
||||||
[
|
|
||||||
ACE_player,
|
|
||||||
[_this select 1] call EFUNC(common,toNumber),
|
|
||||||
(ACE_player getVariable [QGVAR(Clackers), []]) select ([_this select 0] call EFUNC(common,toNumber)),
|
|
||||||
false
|
|
||||||
] call FUNC(detonateExplosive);
|
|
||||||
call EFUNC(interaction,hideMenu);
|
|
||||||
},
|
|
||||||
{[ACE_player] call FUNC(openTransmitterUI);}
|
|
||||||
] call EFUNC(interaction,openSelectMenu);
|
|
||||||
}else{
|
|
||||||
call EFUNC(interaction,hideMenu);
|
|
||||||
[ACE_player] call FUNC(openTransmitterUI);
|
|
||||||
[localize "STR_ACE_Explosives_NoExplosivesAvailable"] call EFUNC(common,displayTextStructured);
|
|
||||||
};
|
|
@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: Garth 'L-H' de Wet
|
|
||||||
* Opens the UI for explosive placement selection
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* 0: Unit <OBJECT>
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
* [player] call ACE_Explosives_fnc_openPlaceUI;
|
|
||||||
*
|
|
||||||
* Public: No
|
|
||||||
*/
|
|
||||||
#include "script_component.hpp"
|
|
||||||
private ["_unit","_mags", "_item", "_index", "_actions"];
|
|
||||||
_unit = _this select 0;
|
|
||||||
call FUNC(place_Cancel);
|
|
||||||
|
|
||||||
_mags = magazines _unit;
|
|
||||||
_list = [];
|
|
||||||
_itemCount = [];
|
|
||||||
{
|
|
||||||
_item = ConfigFile >> "CfgMagazines" >> _x;
|
|
||||||
if (getNumber(_item >> "ACE_Placeable") == 1) then {
|
|
||||||
_index = _list find _item;
|
|
||||||
if (_index != -1) then {
|
|
||||||
_itemCount set [_index, (_itemCount select _index) + 1];
|
|
||||||
} else {
|
|
||||||
_list pushBack _item;
|
|
||||||
_itemCount pushBack 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
} forEach _mags;
|
|
||||||
_actions = [localize "STR_ACE_Explosives_PlaceMenu", localize "STR_ACE_Explosives_Place"]
|
|
||||||
call EFUNC(interaction,prepareSelectMenu);
|
|
||||||
{
|
|
||||||
_actions = [
|
|
||||||
_actions,
|
|
||||||
format [getText(_x >> "displayName") + " (%1)", _itemCount select _foreachIndex],
|
|
||||||
getText(_x >> "picture"),
|
|
||||||
configName _x
|
|
||||||
] call EFUNC(interaction,AddSelectableItem);
|
|
||||||
} foreach _list;
|
|
||||||
|
|
||||||
[
|
|
||||||
_actions,
|
|
||||||
{
|
|
||||||
[_this] call FUNC(openTriggerSelectionUI);
|
|
||||||
},
|
|
||||||
{
|
|
||||||
call EFUNC(interaction,hideMenu);
|
|
||||||
}
|
|
||||||
] call EFUNC(interaction,openSelectMenu);
|
|
@ -3,24 +3,39 @@
|
|||||||
* Opens the UI for timer setting of an explosive
|
* Opens the UI for timer setting of an explosive
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Magazine <STRING>
|
* 0: Explosive <OBJECT>
|
||||||
|
* 1: Magazine <STRING>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_openTimerSetUI;
|
* [_explosive, "SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_openTimerSetUI;
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_mag"];
|
EXPLODE_2_PVT(_this,_explosive,_mag);
|
||||||
_mag = _this select 0;
|
|
||||||
createDialog "RscACE_SelectTimeUI";
|
createDialog "RscACE_SelectTimeUI";
|
||||||
sliderSetRange [8845, 5, 900]; // 5seconds - 15minutes
|
sliderSetRange [8845, 5, 900]; // 5seconds - 15minutes
|
||||||
sliderSetPosition [8845, 30];
|
sliderSetPosition [8845, 30];
|
||||||
|
|
||||||
buttonSetAction [8860, format[QUOTE([ARR_4(ACE_player,'%1','Timer',floor sliderPosition 8845)] call FUNC(setupExplosive);closeDialog 0;), _mag]];
|
GVAR(explosive) = _explosive;
|
||||||
buttonSetAction [8855, format[QUOTE(['%1'] call FUNC(openTriggerSelectionUI);), _mag]];
|
|
||||||
|
DFUNC(SetTimer) = {
|
||||||
|
[
|
||||||
|
ACE_player,
|
||||||
|
getPosATL GVAR(explosive),
|
||||||
|
GVAR(explosive) getVariable QGVAR(Direction),
|
||||||
|
GVAR(explosive) getVariable QGVAR(class),
|
||||||
|
"Timer",
|
||||||
|
[floor sliderPosition 8845],
|
||||||
|
GVAR(explosive)
|
||||||
|
] call FUNC(placeExplosive);
|
||||||
|
closeDialog 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
buttonSetAction [8860, QUOTE(call DFUNC(SetTimer);)];
|
||||||
|
buttonSetAction [8855, QUOTE(closeDialog 0;)];
|
||||||
|
|
||||||
ctrlSetText [8870, format[localize "STR_ACE_Explosives_TimerMenu",0, 30]];
|
ctrlSetText [8870, format[localize "STR_ACE_Explosives_TimerMenu",0, 30]];
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: Garth 'L-H' de Wet
|
|
||||||
* Opens the UI for selecting the transmitter
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* 0: Unit <OBJECT>
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* Nothing
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
* [player] call ACE_Explosives_fnc_openTransmitterUI;
|
|
||||||
*
|
|
||||||
* Public: No
|
|
||||||
*/
|
|
||||||
#include "script_component.hpp"
|
|
||||||
private ["_items", "_unit", "_count", "_actions", "_config"];
|
|
||||||
_unit = _this select 0;
|
|
||||||
_items = (items _unit);
|
|
||||||
|
|
||||||
_actions = [localize "STR_ACE_Explosives_TriggerMenu", localize "STR_ACE_Explosives_SelectTrigger"]
|
|
||||||
call EFUNC(interaction,prepareSelectMenu);
|
|
||||||
_detonators = [_unit] call FUNC(getDetonators);
|
|
||||||
{
|
|
||||||
_config = ConfigFile >> "CfgWeapons" >> _x;
|
|
||||||
_actions = [
|
|
||||||
_actions,
|
|
||||||
getText(_config >> "displayName"),
|
|
||||||
getText(_config >> "picture"),
|
|
||||||
_x
|
|
||||||
] call EFUNC(interaction,addSelectableItem);
|
|
||||||
} count _detonators;
|
|
||||||
|
|
||||||
if (count _detonators == 0) then {
|
|
||||||
call EFUNC(interaction,hideMenu);
|
|
||||||
"ACE_Explosives" call EFUNC(interaction,openMenuSelf);
|
|
||||||
[format[localize "STR_ACE_Explosives_NoTriggersAvailable", "player"]] call EFUNC(Common,displayTextStructured);
|
|
||||||
}else{
|
|
||||||
[
|
|
||||||
_actions,
|
|
||||||
{
|
|
||||||
[ACE_player, _this] call FUNC(openDetonateUI);
|
|
||||||
},
|
|
||||||
{
|
|
||||||
call EFUNC(interaction,hideMenu);
|
|
||||||
}
|
|
||||||
] call EFUNC(interaction,openSelectMenu);
|
|
||||||
};
|
|
@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: Garth 'L-H' de Wet
|
|
||||||
* Opens the UI for explosive trigger selection
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* 0: Explosive Magazine <STRING>
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
* [lbData [8866, lbCurSel 8866]] call ACE_Explosives_fnc_openTriggerSelectionUI;
|
|
||||||
*
|
|
||||||
* Public: No
|
|
||||||
*/
|
|
||||||
#include "script_component.hpp"
|
|
||||||
private ["_magazine", "_hasRequiredItems","_triggerTypes", "_actions", "_detonators", "_required", "_magTriggers"];
|
|
||||||
_magazine = _this select 0;
|
|
||||||
_detonators = [ACE_player] call FUNC(getDetonators);
|
|
||||||
|
|
||||||
_triggerTypes = [_magazine] call FUNC(triggerType);
|
|
||||||
_magTriggers = ConfigFile >> "CfgMagazines" >> _magazine >> "ACE_Triggers";
|
|
||||||
_actions = [localize "STR_ACE_Explosives_TriggerMenu", localize "STR_ACE_Explosives_SelectTrigger"]
|
|
||||||
call EFUNC(interaction,prepareSelectMenu);
|
|
||||||
_count = 0;
|
|
||||||
{
|
|
||||||
_required = getArray (_x >> "requires");
|
|
||||||
_hasRequiredItems = true;
|
|
||||||
{
|
|
||||||
if !(_x in _detonators) exitWith {
|
|
||||||
_hasRequiredItems = false;
|
|
||||||
};
|
|
||||||
} count _required;
|
|
||||||
if (_hasRequiredItems) then {
|
|
||||||
_actions = [
|
|
||||||
_actions,
|
|
||||||
if(isText(_magTriggers >> configName _x >> "displayName"))then{getText(_magTriggers >> configName _x >> "displayName")}else{getText(_x >> "displayName")},
|
|
||||||
if(isText(_magTriggers >> configName _x >> "picture"))then{getText(_magTriggers >> configName _x >> "picture")}else{getText(_x >> "picture")},
|
|
||||||
[configName _x, _magazine]
|
|
||||||
] call EFUNC(interaction,addSelectableItem);
|
|
||||||
_count = _count + 1;
|
|
||||||
};
|
|
||||||
} count _triggerTypes;
|
|
||||||
|
|
||||||
if (_count == 0) then {
|
|
||||||
[ACE_player] call FUNC(openPlaceUI);
|
|
||||||
[format[localize "STR_ACE_Explosives_NoTriggersAvailable",
|
|
||||||
getText(configFile >> "CfgMagazines" >> _magazine >> "DisplayName")]] call EFUNC(Common,displayTextStructured);
|
|
||||||
}else{
|
|
||||||
[
|
|
||||||
_actions,
|
|
||||||
{
|
|
||||||
[_this select 1, _this select 0] call FUNC(selectTrigger);
|
|
||||||
},
|
|
||||||
{[ACE_player] call FUNC(openPlaceUI);}
|
|
||||||
] call EFUNC(interaction,openSelectMenu);
|
|
||||||
};
|
|
@ -7,55 +7,57 @@
|
|||||||
* 1: Position to place explosive <POSITION>
|
* 1: Position to place explosive <POSITION>
|
||||||
* 2: Rotation <NUMBER>
|
* 2: Rotation <NUMBER>
|
||||||
* 3: Magazine class <STRING>
|
* 3: Magazine class <STRING>
|
||||||
* 4: Config of trigger <CONFIG>
|
* 4: Config of trigger <STRING>
|
||||||
* 5: Variables required for the trigger type <ARRAY>
|
* 5: Variables required for the trigger type <ARRAY>
|
||||||
* 6: Should direction be set <BOOL>
|
* 6: Explosive placeholder <OBJECT> <OPTIONAL>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Placed explosive <OBJECT>
|
* Placed explosive <OBJECT>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* _explosive = [player, player modelToWorld [0,0.5, 0.1], 134,
|
* _explosive = [player, player modelToWorldVisual [0,0.5, 0.1], 134,
|
||||||
* "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_placeExplosive;
|
* "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_placeExplosive;
|
||||||
*
|
*
|
||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_pos", "_dir", "_magazineClass", "_ammo", "_triggerSpecificVars", "_unit", "_triggerConfig", "_explosive"];
|
private ["_ammo", "_explosive"];
|
||||||
_unit = _this select 0;
|
EXPLODE_6_PVT(_this,_unit,_pos,_dir,_magazineClass,_triggerConfig,_triggerSpecificVars);
|
||||||
_pos = _this select 1;
|
|
||||||
_dir = _this select 2;
|
|
||||||
_magazineClass = _this select 3;
|
|
||||||
_triggerConfig = _this select 4;
|
|
||||||
_triggerSpecificVars = _this select 5;
|
|
||||||
_setDir = true;
|
|
||||||
if (count _this > 6) then {
|
if (count _this > 6) then {
|
||||||
_setDir = _this select 6;
|
deleteVehicle (_this select 6);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isNil "_triggerConfig") exitWith {
|
if (isNil "_triggerConfig") exitWith {
|
||||||
diag_log format ["ACE_Explosives: Error config not passed to PlaceExplosive: %1", _this];
|
diag_log format ["ACE_Explosives: Error config not passed to PlaceExplosive: %1", _this];
|
||||||
objNull
|
objNull
|
||||||
};
|
};
|
||||||
|
|
||||||
_magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> _triggerConfig;
|
_magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> _triggerConfig;
|
||||||
_triggerConfig = ConfigFile >> "CfgACE_Triggers" >> _triggerConfig;
|
_triggerConfig = ConfigFile >> "CfgACE_Triggers" >> _triggerConfig;
|
||||||
|
|
||||||
if (isNil "_triggerConfig") exitWith {
|
if (isNil "_triggerConfig") exitWith {
|
||||||
diag_log format ["ACE_Explosives: Error config not found in PlaceExplosive: %1", _this];
|
diag_log format ["ACE_Explosives: Error config not found in PlaceExplosive: %1", _this];
|
||||||
objNull
|
objNull
|
||||||
};
|
};
|
||||||
|
|
||||||
_ammo = getText(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ammo");
|
_ammo = getText(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ammo");
|
||||||
if (isText(_magazineTrigger >> "ammo")) then {
|
if (isText(_magazineTrigger >> "ammo")) then {
|
||||||
_ammo = getText (_magazineTrigger >> "ammo");
|
_ammo = getText (_magazineTrigger >> "ammo");
|
||||||
};
|
};
|
||||||
_triggerSpecificVars pushBack _triggerConfig;
|
_triggerSpecificVars pushBack _triggerConfig;
|
||||||
|
private ["_defuseHelper"];
|
||||||
|
_defuseHelper = createVehicle ["ACE_DefuseObject", _pos, [], 0, "NONE"];
|
||||||
|
_defuseHelper setPosATL _pos;
|
||||||
|
|
||||||
_explosive = createVehicle [_ammo, _pos, [], 0, "NONE"];
|
_explosive = createVehicle [_ammo, _pos, [], 0, "NONE"];
|
||||||
|
_defuseHelper attachTo [_explosive, [0,0,0], ""];
|
||||||
|
_defuseHelper setVariable [QGVAR(Explosive),_explosive,true];
|
||||||
|
|
||||||
|
_expPos = getPosATL _explosive;
|
||||||
|
_defuseHelper setPosATL (((getPosATL _defuseHelper) vectorAdd (_pos vectorDiff _expPos)));
|
||||||
|
_explosive setPosATL _pos;
|
||||||
|
|
||||||
if (isText(_triggerConfig >> "onPlace") && {[_unit,_explosive,_magazineClass,_triggerSpecificVars]
|
if (isText(_triggerConfig >> "onPlace") && {[_unit,_explosive,_magazineClass,_triggerSpecificVars]
|
||||||
call compile (getText (_triggerConfig >> "onPlace"))}) exitWith {_explosive};
|
call compile (getText (_triggerConfig >> "onPlace"))}) exitWith {_explosive};
|
||||||
if (_setDir) then {
|
[[_explosive, _dir, getNumber (_magazineTrigger >> "pitch")], QFUNC(setPosition)] call EFUNC(common,execRemoteFnc);
|
||||||
[[_explosive, _dir, getNumber (_magazineTrigger >> "pitch")], QFUNC(setPosition)]
|
|
||||||
call EFUNC(common,execRemoteFnc);
|
|
||||||
};
|
|
||||||
_explosive
|
_explosive
|
||||||
|
@ -16,90 +16,30 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
if (GVAR(pfeh_running)) then {
|
if (GVAR(pfeh_running)) then {
|
||||||
[QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler);
|
[QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler);
|
||||||
GVAR(pfeh_running) = false;
|
GVAR(pfeh_running) = false;
|
||||||
};
|
};
|
||||||
private ["_mag", "_setup", "_player"];
|
private ["_mag", "_setup", "_player"];
|
||||||
_setup = GVAR(Setup);
|
_setup = GVAR(Setup);
|
||||||
GVAR(Setup) = objNull;
|
GVAR(Setup) = objNull;
|
||||||
[GVAR(placer), "ACE_Explosives", false] call EFUNC(Common,setForceWalkStatus);
|
[GVAR(placer), "ACE_Explosives", false] call EFUNC(Common,setForceWalkStatus);
|
||||||
|
[ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Place), -1]] call EFUNC(Common,removeActionEventHandler);
|
||||||
|
[ACE_player, "MenuBack", ACE_player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler);
|
||||||
GVAR(placer) = objNull;
|
GVAR(placer) = objNull;
|
||||||
_player = ACE_player;
|
_player = ACE_player;
|
||||||
[_player, "DefaultAction", _player getVariable [QGVAR(Place), -1]] call EFUNC(Common,removeActionEventHandler);
|
|
||||||
[_player, "MenuBack", _player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler);
|
|
||||||
call EFUNC(interaction,hideMouseHint);
|
call EFUNC(interaction,hideMouseHint);
|
||||||
if ((_setup getVariable [QGVAR(Class), ""]) == "") exitWith {
|
if ((_setup getVariable [QGVAR(Class), ""]) == "") exitWith {
|
||||||
deleteVehicle _setup;
|
deleteVehicle _setup;
|
||||||
};
|
};
|
||||||
_dir = (getDir _setup);
|
_dir = (getDir _setup);
|
||||||
if (_dir > 180) then {
|
if (_dir > 180) then {
|
||||||
_dir = _dir - 180;
|
_dir = _dir - 180;
|
||||||
} else {
|
} else {
|
||||||
_dir = 180 + _dir;
|
_dir = 180 + _dir;
|
||||||
};
|
};
|
||||||
_setup setVariable [QGVAR(Direction), _dir];
|
_setup setVariable [QGVAR(Direction), _dir];
|
||||||
_player setVariable [QGVAR(PlantingExplosive), true];
|
_player setVariable [QGVAR(PlantingExplosive), true];
|
||||||
_setup addEventHandler ["EpeContactStart", {
|
_setup addEventHandler ["EpeContactStart", FUNC(onLanded)];
|
||||||
if (!((_this select 0) getVariable [QGVAR(Handled), false])) then {
|
|
||||||
private ["_player", "_pos", "_attachTo"];
|
|
||||||
_player = ACE_player;
|
|
||||||
_player setVariable [QGVAR(PlantingExplosive), false];
|
|
||||||
_pos = getPosATL (_this select 0);
|
|
||||||
(_this select 0) enableSimulationGlobal false;
|
|
||||||
if (surfaceIsWater _pos) then {
|
|
||||||
_pos = getPosASL (_this select 0);
|
|
||||||
(_this select 0) setPosASL _pos;
|
|
||||||
}else{
|
|
||||||
(_this select 0) setPosATL _pos;
|
|
||||||
};
|
|
||||||
(_this select 0) setVariable [QGVAR(Handled), true];
|
|
||||||
_attachTo = objNull;
|
|
||||||
if (!isNull (_this select 1) && {(_this select 1) isKindOf "AllVehicles"}) then {
|
|
||||||
_attachTo = (_this select 1);
|
|
||||||
};
|
|
||||||
[(_this select 0),_attachTo, _pos] spawn { // TODO: Change to scheduled delay execution
|
|
||||||
private ["_mag", "_setup", "_dir", "_player"];
|
|
||||||
_setup = _this select 0;
|
|
||||||
_player = ACE_player;
|
|
||||||
_mag = _setup getVariable [QGVAR(Class), ""];
|
|
||||||
_dir = _setup getVariable [QGVAR(Direction), 0];
|
|
||||||
|
|
||||||
sleep getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime");
|
|
||||||
_explosive = [_player, _this select 2, _dir, _mag, _setup getVariable QGVAR(Trigger),
|
|
||||||
[_setup getVariable QGVAR(Timer)], isNull (_this select 1)] call FUNC(placeExplosive);
|
|
||||||
deleteVehicle _setup;
|
|
||||||
if (!isNull(_explosive)) then {
|
|
||||||
_player RemoveMagazine _mag;
|
|
||||||
if (!isNull (_this select 1)) then {
|
|
||||||
_explosive attachTo [(_this select 1)];
|
|
||||||
_dir = _dir - (getDir (_this select 1));
|
|
||||||
[[_explosive, _dir, 0], QFUNC(setPosition)] call EFUNC(common,execRemoteFnc);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
_setup enableSimulationGlobal true;
|
_setup enableSimulationGlobal true;
|
||||||
_player playActionNow "MedicOther";
|
_player playActionNow "MedicOther";
|
||||||
[_setup] spawn { // TODO: Change to scheduled delay execution
|
_player removeMagazine (_setup getVariable [QGVAR(Class), ""]);
|
||||||
private ["_setup", "_player"];
|
|
||||||
_setup = _this select 0;
|
|
||||||
_player = ACE_player;
|
|
||||||
sleep 5;
|
|
||||||
_player setVariable [QGVAR(PlantingExplosive), false];
|
|
||||||
if (!isNull _setup) then {
|
|
||||||
private ["_mag", "_dir", "_delayTime"];
|
|
||||||
_mag = _setup getVariable [QGVAR(Class), ""];
|
|
||||||
_dir = _setup getVariable [QGVAR(Direction), 0];
|
|
||||||
_delayTime = (getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime")) - 5;
|
|
||||||
if (_delayTime > 0) then {
|
|
||||||
sleep _delayTime;
|
|
||||||
};
|
|
||||||
if (!isNull _setup) then {
|
|
||||||
[_player, GetPosATL _setup, _dir, _mag, _setup getVariable QGVAR(Trigger),
|
|
||||||
[_setup getVariable QGVAR(Timer)], true] call FUNC(placeExplosive);
|
|
||||||
deleteVehicle _setup;
|
|
||||||
_player RemoveMagazine _mag;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
@ -15,18 +15,18 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
if (GVAR(pfeh_running)) then {
|
if (GVAR(pfeh_running)) then {
|
||||||
[QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler);
|
[QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler);
|
||||||
GVAR(pfeh_running) = false;
|
GVAR(pfeh_running) = false;
|
||||||
};
|
};
|
||||||
if (!isNull (GVAR(Setup))) then {
|
if (!isNull (GVAR(Setup))) then {
|
||||||
deleteVehicle GVAR(Setup);
|
deleteVehicle GVAR(Setup);
|
||||||
};
|
};
|
||||||
GVAR(Setup) = objNull;
|
GVAR(Setup) = objNull;
|
||||||
if (isNil {GVAR(placer)}) then {
|
if (isNil {GVAR(placer)}) then {
|
||||||
GVAR(placer) = objNull;
|
GVAR(placer) = objNull;
|
||||||
};
|
};
|
||||||
[GVAR(placer), "ACE_Explosives", false] call EFUNC(Common,setForceWalkStatus);
|
[GVAR(placer), "ACE_Explosives", false] call EFUNC(Common,setForceWalkStatus);
|
||||||
GVAR(placer) = objNull;
|
GVAR(placer) = objNull;
|
||||||
call EFUNC(interaction,hideMouseHint);
|
call EFUNC(interaction,hideMouseHint);
|
||||||
[ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Place), -1]] call EFUNC(Common,removeActionEventHandler);
|
[ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Place), -1]] call EFUNC(Common,removeActionEventHandler);
|
||||||
[ACE_player, "MenuBack", ACE_player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler);
|
[ACE_player, "zoomtemp", ACE_player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler);
|
||||||
|
@ -18,9 +18,9 @@ private "_speedDial";
|
|||||||
_speedDial = ace_player getVariable [QGVAR(SpeedDial), []];
|
_speedDial = ace_player getVariable [QGVAR(SpeedDial), []];
|
||||||
if (count _speedDial == 0) exitWith {};
|
if (count _speedDial == 0) exitWith {};
|
||||||
{
|
{
|
||||||
if ((_x select 0) == (_this select 0)) exitWith {
|
if ((_x select 0) == (_this select 0)) exitWith {
|
||||||
_speedDial set [_foreachIndex, "x"];
|
_speedDial set [_foreachIndex, "x"];
|
||||||
_speedDial = _speedDial - ["x"];
|
_speedDial = _speedDial - ["x"];
|
||||||
ace_player setVariable [QGVAR(SpeedDial),_speedDial];
|
ace_player setVariable [QGVAR(SpeedDial),_speedDial];
|
||||||
};
|
};
|
||||||
} foreach _speedDial;
|
} foreach _speedDial;
|
||||||
|
@ -3,26 +3,26 @@
|
|||||||
* Selects a trigger for an explosive.
|
* Selects a trigger for an explosive.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Magazine <STRING>
|
* 0: Explosive <OBJECT>
|
||||||
* 1: Trigger mode <STRING>
|
* 1: Magazine <STRING>
|
||||||
|
* 2: Trigger mode <STRING>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* ["SatchelCharge_Remote_Mag","Timer"] call ACE_Explosives_fnc_selectTrigger;
|
* [_explosive, "SatchelCharge_Remote_Mag","Timer"] call ACE_Explosives_fnc_selectTrigger;
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_magazine","_trigger"];
|
private ["_config"];
|
||||||
closeDialog 0;
|
closeDialog 0;
|
||||||
_magazine = _this select 0;
|
|
||||||
_trigger = _this select 1;
|
|
||||||
_config = ConfigFile >> "CfgACE_Triggers" >> _trigger;
|
|
||||||
call EFUNC(interaction,hideMenu);
|
call EFUNC(interaction,hideMenu);
|
||||||
|
EXPLODE_3_PVT(_this,_explosive,_magazine,_trigger);
|
||||||
|
_config = ConfigFile >> "CfgACE_Triggers" >> _trigger;
|
||||||
|
|
||||||
// If the onSetup function returns true, it is handled elsewhere
|
// If the onSetup function returns true, it is handled elsewhere
|
||||||
if (isText(_config >> "onSetup") && {[_magazine] call compile getText (_config >> "onSetup")}) exitWith {};
|
if (isText(_config >> "onSetup") && {[_explosive,_magazine] call compile getText (_config >> "onSetup")}) exitWith {};
|
||||||
|
|
||||||
[ACE_player, _magazine, _trigger] call FUNC(setupExplosive);
|
[ACE_player, getPosATL _explosive, _explosive getVariable [QGVAR(Direction), 0],_magazine, _trigger, [], _explosive] call ACE_Explosives_fnc_placeExplosive;
|
||||||
|
@ -16,10 +16,8 @@
|
|||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private "_ex";
|
EXPLODE_3_PVT(_this,_explosive,_direction,_pitch);
|
||||||
_ex = _this select 0;
|
_explosive setDir _direction;
|
||||||
_ex setDir (_this select 1);
|
if (_pitch != 0) then {
|
||||||
if ((_this select 2) != 0) then {
|
[_explosive, _pitch, 0] call CALLSTACK(BIS_fnc_setPitchBank);
|
||||||
[_ex, _this select 2, 0] call CALLSTACK(BIS_fnc_setPitchBank);
|
|
||||||
};
|
};
|
||||||
//_ex setVectorUp (surfaceNormal _pos);
|
|
||||||
|
@ -5,60 +5,45 @@
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: Classname of explosive to place. (CfgMagazine class) <STRING>
|
* 1: Classname of explosive to place. (CfgMagazine class) <STRING>
|
||||||
* 2: Trigger Config <CONFIG>
|
|
||||||
* 3: Timer (optional) <NUMBER>
|
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [player, "SatchelCharge_Remote_Mag", "Command"] call ACE_Explosives_fnc_SetupExplosive;
|
* [player, "SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_SetupExplosive;
|
||||||
*
|
*
|
||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_unit", "_class", "_config", "_timer"];
|
closeDialog 0;
|
||||||
_unit = _this select 0;
|
EXPLODE_2_PVT(_this,_unit,_class);
|
||||||
_class = _this select 1;
|
|
||||||
_config = _this select 2;
|
|
||||||
_timer = _this select 3;
|
|
||||||
GVAR(placer) = _unit;
|
GVAR(placer) = _unit;
|
||||||
// Commented out due to the fact there is a distinction between who can deactivate mines and who can plant them in standard configs.
|
// TODO: check MP performance and MP compatible.
|
||||||
// Would require custom config entries (ACE_ExplosiveSpecialist/ACE_Specialist) which excludes custom mods.
|
GVAR(Setup) = createVehicle [getText(ConfigFile >> "CfgMagazines" >> _class >> "ACE_SetupObject"),[0,0,-10000],[], 0, "NONE"];
|
||||||
//if (ACE_Explosives_RequireSpecialist && {!([_unit] call ACE_Core_fnc_isEOD)}) exitWith {};
|
|
||||||
if (isNil "_config") then {
|
|
||||||
_config = getArray(ConfigFile >> "CfgMagazines" >> _class >> "ACE_Triggers" >> "SupportedTriggers") select 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
GVAR(Setup) = getText(ConfigFile >> "CfgMagazines" >> _class >> "ACE_SetupObject") createVehicleLocal [0,0,-10000];
|
|
||||||
|
|
||||||
GVAR(Setup) enableSimulationGlobal false;
|
GVAR(Setup) enableSimulationGlobal false;
|
||||||
GVAR(Setup) setVariable [QGVAR(Class), _class];
|
GVAR(Setup) setVariable [QGVAR(class), _class, true];
|
||||||
GVAR(Setup) setVariable [QGVAR(Trigger), _config];
|
|
||||||
//GVAR(Setup) setVariable [QGVAR(Offset), GetArray(ConfigFile >> "CfgVehicles" >> typeof GVAR(Setup) >> "ACE_Offset")];
|
|
||||||
if (!isNil "_timer") then {
|
|
||||||
GVAR(Setup) setVariable [QGVAR(Timer), _timer];
|
|
||||||
};
|
|
||||||
|
|
||||||
[_unit, "ACE_Explosives", true] call EFUNC(common,setForceWalkStatus);
|
[_unit, "ACE_Explosives", true] call EFUNC(common,setForceWalkStatus);
|
||||||
GVAR(TweakedAngle) = 180;
|
GVAR(TweakedAngle) = 180;
|
||||||
|
|
||||||
[QGVAR(Placement),"OnEachFrame", {
|
[QGVAR(Placement),"OnEachFrame", {
|
||||||
private "_player";
|
private "_player";
|
||||||
_player = ACE_player;
|
_player = ACE_player;
|
||||||
if (GVAR(placer) != _player) exitWith {
|
if (GVAR(placer) != _player) exitWith {
|
||||||
call FUNC(place_Cancel);
|
call FUNC(place_Cancel);
|
||||||
};
|
};
|
||||||
GVAR(pfeh_running) = true;
|
GVAR(pfeh_running) = true;
|
||||||
_pos = (ASLtoATL eyePos _player) vectorAdd (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]);
|
_pos = (ASLtoATL eyePos _player) vectorAdd (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]);
|
||||||
//_pos = _pos vectorAdd ((VectorDir GVAR(Setup)) vectorCrossProduct (GVAR(Setup) getVariable [QGVAR(Offset), [0,0,0]]));
|
GVAR(Setup) setPosATL _pos;
|
||||||
GVAR(Setup) setPosATL _pos;
|
if (ACE_Modifier == 0) then {
|
||||||
if (ACE_Modifier == 0) then {
|
GVAR(Setup) setDir (GVAR(TweakedAngle) + getDir _player);
|
||||||
GVAR(Setup) setDir (GVAR(TweakedAngle) + getDir _player);
|
};
|
||||||
};
|
|
||||||
}] call CALLSTACK(BIS_fnc_addStackedEventHandler);
|
}] call CALLSTACK(BIS_fnc_addStackedEventHandler);
|
||||||
|
|
||||||
[localize "STR_ACE_Explosives_PlaceAction", localize "STR_ACE_Explosives_CancelAction",
|
[localize "STR_ACE_Explosives_PlaceAction", localize "STR_ACE_Explosives_CancelAction",
|
||||||
localize "STR_ACE_Explosives_ScrollAction"] call EFUNC(interaction,showMouseHint);
|
localize "STR_ACE_Explosives_ScrollAction"] call EFUNC(interaction,showMouseHint);
|
||||||
_unit setVariable [QGVAR(Place), [_unit, "DefaultAction",
|
_unit setVariable [QGVAR(Place), [_unit, "DefaultAction",
|
||||||
{GVAR(pfeh_running) AND !isNull (GVAR(Setup))}, {call FUNC(place_Approve);}] call EFUNC(common,AddActionEventHandler)];
|
{GVAR(pfeh_running) AND !isNull (GVAR(Setup))}, {call FUNC(place_Approve);}] call EFUNC(common,AddActionEventHandler)];
|
||||||
_unit setVariable [QGVAR(Cancel), [_unit, "MenuBack",
|
_unit setVariable [QGVAR(Cancel), [_unit, "zoomtemp",
|
||||||
{GVAR(pfeh_running) AND !isNull (GVAR(Setup))}, {call FUNC(place_Cancel);}] call EFUNC(common,AddActionEventHandler)];
|
{GVAR(pfeh_running) AND !isNull (GVAR(Setup))}, {call FUNC(place_Cancel);}] call EFUNC(common,AddActionEventHandler)];
|
||||||
|
@ -15,49 +15,48 @@
|
|||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_unit","_target"];
|
EXPLODE_2_PVT(_this,_unit,_target);
|
||||||
_unit = _this select 0;
|
_target = attachedTo (_target);
|
||||||
_target = _this select 1;
|
|
||||||
|
|
||||||
_fnc_DefuseTime = {
|
_fnc_DefuseTime = {
|
||||||
_target = _this select 1;
|
EXPLODE_2_PVT(_this,_specialist,_target);
|
||||||
|
|
||||||
_defuseTime = 5;
|
_defuseTime = 5;
|
||||||
if (isNumber(ConfigFile >> "CfgAmmo" >> typeOf (_target) >> "ACE_DefuseTime")) then {
|
if (isNumber(ConfigFile >> "CfgAmmo" >> typeOf (_target) >> "ACE_DefuseTime")) then {
|
||||||
_defuseTime = getNumber(ConfigFile >> "CfgAmmo" >> typeOf (_target) >> "ACE_DefuseTime");
|
_defuseTime = getNumber(ConfigFile >> "CfgAmmo" >> typeOf (_target) >> "ACE_DefuseTime");
|
||||||
};
|
};
|
||||||
if (!(_this select 0) && {GVAR(PunishNonSpecialists)}) then {
|
if (!_specialist && {GVAR(PunishNonSpecialists)}) then {
|
||||||
_defuseTime = _defuseTime * 1.5;
|
_defuseTime = _defuseTime * 1.5;
|
||||||
};
|
};
|
||||||
_defuseTime
|
_defuseTime
|
||||||
};
|
};
|
||||||
_actionToPlay = "MedicOther";
|
_actionToPlay = "MedicOther";
|
||||||
if (STANCE _unit == "Prone") then {
|
if (STANCE _unit == "Prone") then {
|
||||||
_actionToPlay = "PutDown";
|
_actionToPlay = "PutDown";
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ACE_player != _unit) then {
|
if (ACE_player != _unit) then {
|
||||||
// If the unit is a player, call the function on the player.
|
// If the unit is a player, call the function on the player.
|
||||||
if (isPlayer _unit) then {
|
if (isPlayer _unit) then {
|
||||||
[[_unit, _target], QFUNC(startDefuse), _unit] call EFUNC(common,execRemoteFnc);
|
[[_unit, _target], QFUNC(startDefuse), _unit] call EFUNC(common,execRemoteFnc);
|
||||||
} else {
|
} else {
|
||||||
// TODO: use scheduled delay execution
|
// TODO: use scheduled delay execution
|
||||||
[_unit, _target, [[_unit] call EFUNC(Common,isEOD), _target] call _fnc_DefuseTime] spawn {
|
[_unit, _target, [[_unit] call EFUNC(Common,isEOD), _target] call _fnc_DefuseTime] spawn {
|
||||||
(_this select 0) playActionNow _actionToPlay;
|
(_this select 0) playActionNow _actionToPlay;
|
||||||
(_this select 0) disableAI "MOVE";
|
(_this select 0) disableAI "MOVE";
|
||||||
(_this select 0) disableAI "TARGET";
|
(_this select 0) disableAI "TARGET";
|
||||||
sleep (_this select 2);
|
sleep (_this select 2);
|
||||||
[(_this select 0), (_this select 1)] call FUNC(defuseExplosive);
|
[(_this select 0), (_this select 1)] call FUNC(defuseExplosive);
|
||||||
(_this select 0) enableAI "MOVE";
|
(_this select 0) enableAI "MOVE";
|
||||||
(_this select 0) enableAI "TARGET";
|
(_this select 0) enableAI "TARGET";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
} else {
|
} else {
|
||||||
_unit playActionNow _actionToPlay;
|
_unit playActionNow _actionToPlay;
|
||||||
private ["_defuseSeconds", "_isEOD"];
|
private ["_defuseSeconds", "_isEOD"];
|
||||||
_isEOD = [_unit] call EFUNC(Common,isEOD);
|
_isEOD = [_unit] call EFUNC(Common,isEOD);
|
||||||
_defuseSeconds = [_isEOD, _target] call _fnc_DefuseTime;
|
_defuseSeconds = [_isEOD, _target] call _fnc_DefuseTime;
|
||||||
if (_isEOD || {!GVAR(RequireSpecialist)}) then {
|
if (_isEOD || {!GVAR(RequireSpecialist)}) then {
|
||||||
[_defuseSeconds, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize "STR_ACE_Explosives_DefusingExplosive")] call EFUNC(common,progressBar);
|
[_defuseSeconds, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize "STR_ACE_Explosives_DefusingExplosive")] call EFUNC(common,progressBar);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -21,6 +21,6 @@ EXPLODE_2_PVT(_this,_explosive,_delay);
|
|||||||
[{
|
[{
|
||||||
_explosive = _this;
|
_explosive = _this;
|
||||||
if (!isNull _explosive) then {
|
if (!isNull _explosive) then {
|
||||||
[_explosive, -1, [_explosive, 0], true] call FUNC(detonateExplosive);
|
[_explosive, -1, [_explosive, 0]] call FUNC(detonateExplosive);
|
||||||
};
|
};
|
||||||
}, _explosive, _delay, 0] call EFUNC(common,waitAndExecute);
|
}, _explosive, _delay, 0] call EFUNC(common,waitAndExecute);
|
||||||
|
@ -20,6 +20,6 @@ _config = getArray (ConfigFile >> "CfgMagazines" >> (_this select 0) >> "ACE_Tri
|
|||||||
_count = count _config;
|
_count = count _config;
|
||||||
|
|
||||||
for "_index" from 0 to (_count - 1) do {
|
for "_index" from 0 to (_count - 1) do {
|
||||||
_result set [_index, ConfigFile >> "CfgACE_Triggers" >> (_config select _index)];
|
_result set [_index, ConfigFile >> "CfgACE_Triggers" >> (_config select _index)];
|
||||||
};
|
};
|
||||||
_result
|
_result
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_EXPLOSIVES
|
#ifdef DEBUG_ENABLED_EXPLOSIVES
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_SETTINGS_EXPLOSIVES
|
#ifdef DEBUG_SETTINGS_EXPLOSIVES
|
||||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_EXPLOSIVES
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_EXPLOSIVES
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
@ -1,494 +1,497 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Edited with tabler - 2014-12-16 -->
|
<!-- Edited with tabler - 2014-12-16 -->
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Explosives">
|
<Package name="Explosives">
|
||||||
<Key ID="STR_ACE_Explosives_Menu">
|
<Key ID="STR_ACE_Explosives_Menu">
|
||||||
<English>Explosives</English>
|
<English>Explosives</English>
|
||||||
<German>Sprengstoffe</German>
|
<German>Sprengstoffe</German>
|
||||||
<Spanish>Explosivos</Spanish>
|
<Spanish>Explosivos</Spanish>
|
||||||
<Polish>Ładunki wybuchowe</Polish>
|
<Polish>Ładunki wybuchowe</Polish>
|
||||||
<French>Explosifs</French>
|
<French>Explosifs</French>
|
||||||
<Czech>Výbušniny</Czech>
|
<Czech>Výbušniny</Czech>
|
||||||
<Italian>Esplosivi</Italian>
|
<Italian>Esplosivi</Italian>
|
||||||
<Hungarian>Robbanóanyagok</Hungarian>
|
<Hungarian>Robbanóanyagok</Hungarian>
|
||||||
<Portuguese>Explosivos</Portuguese>
|
<Portuguese>Explosivos</Portuguese>
|
||||||
<Russian>Взрывчатка</Russian>
|
<Russian>Взрывчатка</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Place">
|
<Key ID="STR_ACE_Explosives_Place">
|
||||||
<English>Place >></English>
|
<English>Place >></English>
|
||||||
<German>Platzieren >></German>
|
<German>Platzieren >></German>
|
||||||
<Spanish>Colocar >></Spanish>
|
<Spanish>Colocar >></Spanish>
|
||||||
<Polish>Umieść >></Polish>
|
<Polish>Umieść >></Polish>
|
||||||
<French>Placer >></French>
|
<French>Placer >></French>
|
||||||
<Czech>Položit >></Czech>
|
<Czech>Položit >></Czech>
|
||||||
<Italian>Piazza >></Italian>
|
<Italian>Piazza >></Italian>
|
||||||
<Hungarian>Lerakás >></Hungarian>
|
<Hungarian>Lerakás >></Hungarian>
|
||||||
<Portuguese>Colocar >></Portuguese>
|
<Portuguese>Colocar >></Portuguese>
|
||||||
<Russian>Установить >></Russian>
|
<Russian>Установить >></Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Detonate">
|
<Key ID="STR_ACE_Explosives_Detonate">
|
||||||
<English>Detonate >></English>
|
<English>Detonate >></English>
|
||||||
<German>Zünden >></German>
|
<German>Zünden >></German>
|
||||||
<Spanish>Detonar >></Spanish>
|
<Spanish>Detonar >></Spanish>
|
||||||
<Polish>Detonuj >></Polish>
|
<Polish>Detonuj >></Polish>
|
||||||
<French>Mise à feu >></French>
|
<French>Mise à feu >></French>
|
||||||
<Czech>Odpálit >></Czech>
|
<Czech>Odpálit >></Czech>
|
||||||
<Italian>Detona >></Italian>
|
<Italian>Detona >></Italian>
|
||||||
<Hungarian>Robbantás >></Hungarian>
|
<Hungarian>Robbantás >></Hungarian>
|
||||||
<Portuguese>Detonar >></Portuguese>
|
<Portuguese>Detonar >></Portuguese>
|
||||||
<Russian>Подрыв >></Russian>
|
<Russian>Подрыв >></Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DetonateCode">
|
<Key ID="STR_ACE_Explosives_DetonateCode">
|
||||||
<English>Explosive code: %1</English>
|
<English>Explosive code: %1</English>
|
||||||
<German>Sprengstoffcode: %1</German>
|
<German>Sprengstoffcode: %1</German>
|
||||||
<Spanish>Código del explosivo: %1</Spanish>
|
<Spanish>Código del explosivo: %1</Spanish>
|
||||||
<Polish>Kod ładunku: %1</Polish>
|
<Polish>Kod ładunku: %1</Polish>
|
||||||
<French>Code explosif: %1</French>
|
<French>Code explosif: %1</French>
|
||||||
<Czech>Kód výbušniny: %1</Czech>
|
<Czech>Kód výbušniny: %1</Czech>
|
||||||
<Italian>Codice dell'esplosivo : %1</Italian>
|
<Italian>Codice dell'esplosivo : %1</Italian>
|
||||||
<Hungarian>Robbanóanyag kódja: %1</Hungarian>
|
<Hungarian>Robbanóanyag kódja: %1</Hungarian>
|
||||||
<Portuguese>Código do explosivo: %1</Portuguese>
|
<Portuguese>Código do explosivo: %1</Portuguese>
|
||||||
<Russian>Взрывная код: %1</Russian>
|
<Russian>Взрывная код: %1</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_PlaceAction">
|
<Key ID="STR_ACE_Explosives_PlaceAction">
|
||||||
<English>Place</English>
|
<English>Place</English>
|
||||||
<German>Platzieren</German>
|
<German>Platzieren</German>
|
||||||
<Spanish>Colocar</Spanish>
|
<Spanish>Colocar</Spanish>
|
||||||
<Polish>Umieść</Polish>
|
<Polish>Umieść</Polish>
|
||||||
<French>Placer</French>
|
<French>Placer</French>
|
||||||
<Czech>Položit</Czech>
|
<Czech>Položit</Czech>
|
||||||
<Italian>Piazza</Italian>
|
<Italian>Piazza</Italian>
|
||||||
<Hungarian>Elhelyezés</Hungarian>
|
<Hungarian>Elhelyezés</Hungarian>
|
||||||
<Portuguese>Colocar</Portuguese>
|
<Portuguese>Colocar</Portuguese>
|
||||||
<Russian>Положить</Russian>
|
<Russian>Положить</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_CancelAction">
|
<Key ID="STR_ACE_Explosives_CancelAction">
|
||||||
<English>Cancel</English>
|
<English>Cancel</English>
|
||||||
<German>Abbrechen</German>
|
<German>Abbrechen</German>
|
||||||
<Spanish>Cancelar</Spanish>
|
<Spanish>Cancelar</Spanish>
|
||||||
<Polish>Anuluj</Polish>
|
<Polish>Anuluj</Polish>
|
||||||
<French>Annuler</French>
|
<French>Annuler</French>
|
||||||
<Czech>Zrušit</Czech>
|
<Czech>Zrušit</Czech>
|
||||||
<Italian>Annulla</Italian>
|
<Italian>Annulla</Italian>
|
||||||
<Hungarian>Mégsem</Hungarian>
|
<Hungarian>Mégsem</Hungarian>
|
||||||
<Portuguese>Cancelar</Portuguese>
|
<Portuguese>Cancelar</Portuguese>
|
||||||
<Russian>Отмена</Russian>
|
<Russian>Отмена</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_ScrollAction">
|
<Key ID="STR_ACE_Explosives_ScrollAction">
|
||||||
<English>+ Modifier, rotates</English>
|
<English>+ Modifier, rotates</English>
|
||||||
<German>+ Modifikator, drehen</German>
|
<German>+ Modifikator, drehen</German>
|
||||||
<Spanish>+ Modificador, girar</Spanish>
|
<Spanish>+ Modificador, girar</Spanish>
|
||||||
<French>+ Modificateur, tourner</French>
|
<French>+ Modificateur, tourner</French>
|
||||||
<Italian>+ Modificatore, rotazione</Italian>
|
<Italian>+ Modificatore, rotazione</Italian>
|
||||||
<Czech>+ Otočit</Czech>
|
<Czech>+ Otočit</Czech>
|
||||||
<Hungarian>+ Változtatás, forgatás</Hungarian>
|
<Hungarian>+ Változtatás, forgatás</Hungarian>
|
||||||
<Polish>+ modyfikator, obracanie</Polish>
|
<Polish>+ modyfikator, obracanie</Polish>
|
||||||
<Portuguese>+ Modificador, rotaciona</Portuguese>
|
<Portuguese>+ Modificador, rotaciona</Portuguese>
|
||||||
<Russian>+ Bращать</Russian>
|
<Russian>+ Bращать</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Jammer_TurnOn">
|
<Key ID="STR_ACE_Explosives_Jammer_TurnOn">
|
||||||
<English>Turn On Thor III</English>
|
<English>Turn On Thor III</English>
|
||||||
<German>Thor III aktivieren</German>
|
<German>Thor III aktivieren</German>
|
||||||
<Spanish>Encender Thor III</Spanish>
|
<Spanish>Encender Thor III</Spanish>
|
||||||
<Polish>Włącz Thor III</Polish>
|
<Polish>Włącz Thor III</Polish>
|
||||||
<French>Allumer Thor III</French>
|
<French>Allumer Thor III</French>
|
||||||
<Czech>Zapnout Thor III</Czech>
|
<Czech>Zapnout Thor III</Czech>
|
||||||
<Italian>Accendi Thor III</Italian>
|
<Italian>Accendi Thor III</Italian>
|
||||||
<Hungarian>Thor III bekapcsolása</Hungarian>
|
<Hungarian>Thor III bekapcsolása</Hungarian>
|
||||||
<Portuguese>Ativar Thor III</Portuguese>
|
<Portuguese>Ativar Thor III</Portuguese>
|
||||||
<Russian>Активировать Thor III</Russian>
|
<Russian>Активировать Thor III</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Jammer_TurnOff">
|
<Key ID="STR_ACE_Explosives_Jammer_TurnOff">
|
||||||
<English>Turn Off Thor III</English>
|
<English>Turn Off Thor III</English>
|
||||||
<German>Thor III deaktivieren</German>
|
<German>Thor III deaktivieren</German>
|
||||||
<Spanish>Apagar Thor III</Spanish>
|
<Spanish>Apagar Thor III</Spanish>
|
||||||
<Polish>Wyłącz Thor III</Polish>
|
<Polish>Wyłącz Thor III</Polish>
|
||||||
<French>Éteindre Thor III</French>
|
<French>Éteindre Thor III</French>
|
||||||
<Czech>Vypnout Thor III</Czech>
|
<Czech>Vypnout Thor III</Czech>
|
||||||
<Italian>Spegni Thor III</Italian>
|
<Italian>Spegni Thor III</Italian>
|
||||||
<Hungarian>Thor III kikapcsolása</Hungarian>
|
<Hungarian>Thor III kikapcsolása</Hungarian>
|
||||||
<Portuguese>Desativar Thor III</Portuguese>
|
<Portuguese>Desativar Thor III</Portuguese>
|
||||||
<Russian>Деактивировать Thor III</Russian>
|
<Russian>Деактивировать Thor III</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_cellphone_displayName">
|
<Key ID="STR_ACE_Explosives_cellphone_displayName">
|
||||||
<English>Cellphone</English>
|
<English>Cellphone</English>
|
||||||
<German>Mobiltelefon</German>
|
<German>Mobiltelefon</German>
|
||||||
<Spanish>Télefono móvil</Spanish>
|
<Spanish>Télefono móvil</Spanish>
|
||||||
<Polish>Telefon komórkowy</Polish>
|
<Polish>Telefon komórkowy</Polish>
|
||||||
<French>Téléphone Portable</French>
|
<French>Téléphone Portable</French>
|
||||||
<Czech>Telefon</Czech>
|
<Czech>Telefon</Czech>
|
||||||
<Italian>Cellulare</Italian>
|
<Italian>Cellulare</Italian>
|
||||||
<Hungarian>Mobil</Hungarian>
|
<Hungarian>Mobil</Hungarian>
|
||||||
<Portuguese>Celular</Portuguese>
|
<Portuguese>Celular</Portuguese>
|
||||||
<Russian>Сотовый телефон</Russian>
|
<Russian>Сотовый телефон</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_cellphone_description">
|
<Key ID="STR_ACE_Explosives_cellphone_description">
|
||||||
<English>Used to remotely trigger explosives</English>
|
<English>Used to remotely trigger explosives</English>
|
||||||
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
||||||
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
||||||
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
||||||
<French>Utilisé pour déclencher des explosifs à distance</French>
|
<French>Utilisé pour déclencher des explosifs à distance</French>
|
||||||
<Czech>Používaný ke vzdálenému odpalování výbušnin</Czech>
|
<Czech>Používaný ke vzdálenému odpalování výbušnin</Czech>
|
||||||
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
||||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||||
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
||||||
<Russian>Используется для удаленного запуска взрывчатку</Russian>
|
<Russian>Используется для удаленного запуска взрывчатку</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_clacker_displayName">
|
<Key ID="STR_ACE_Explosives_clacker_displayName">
|
||||||
<English>M57 Firing Device</English>
|
<English>M57 Firing Device</English>
|
||||||
<German>M57 Zündvorrichtung</German>
|
<German>M57 Zündvorrichtung</German>
|
||||||
<Spanish>Dispositivo de detonación M57</Spanish>
|
<Spanish>Dispositivo de detonación M57</Spanish>
|
||||||
<Polish>Zapalnik M57</Polish>
|
<Polish>Zapalnik M57</Polish>
|
||||||
<French>M57 Dispositif de mise à feu</French>
|
<French>M57 Dispositif de mise à feu</French>
|
||||||
<Czech>M57 Odpalovací Zařízení</Czech>
|
<Czech>M57 Odpalovací Zařízení</Czech>
|
||||||
<Italian>Detonatore M57</Italian>
|
<Italian>Detonatore M57</Italian>
|
||||||
<Hungarian>M57 Detonátor</Hungarian>
|
<Hungarian>M57 Detonátor</Hungarian>
|
||||||
<Portuguese>M57 Dispositivo de Detonação</Portuguese>
|
<Portuguese>M57 Dispositivo de Detonação</Portuguese>
|
||||||
<Russian>Взрыватель M57</Russian>
|
<Russian>Взрыватель M57</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_clacker_description">
|
<Key ID="STR_ACE_Explosives_clacker_description">
|
||||||
<English>Used to remotely trigger explosives</English>
|
<English>Used to remotely trigger explosives</English>
|
||||||
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
<German>Wird benutzt um Sprengstoffe fernzuzünden</German>
|
||||||
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
<Spanish>Usado para detonar remotamente explosivos</Spanish>
|
||||||
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
<Polish>Używany do zdalnego detonowania ładunków wybuchowych</Polish>
|
||||||
<French>Utilisé pour déclencher des explosifs à distance</French>
|
<French>Utilisé pour déclencher des explosifs à distance</French>
|
||||||
<Czech>Použévané ke vzdálenému odpalování výbušnin</Czech>
|
<Czech>Použévané ke vzdálenému odpalování výbušnin</Czech>
|
||||||
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
<Italian>Usato per l'attivazione a distanza degli esplosivi</Italian>
|
||||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||||
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
<Portuguese>Usado para acionar explosivos remotamente</Portuguese>
|
||||||
<Russian>Используется для удаленного запуска взрывчатку</Russian>
|
<Russian>Используется для удаленного запуска взрывчатку</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_M26_displayName">
|
<Key ID="STR_ACE_Explosives_M26_displayName">
|
||||||
<English>M26 Firing Device</English>
|
<English>M26 Firing Device</English>
|
||||||
<German>M26 Zündvorrichtung</German>
|
<German>M26 Zündvorrichtung</German>
|
||||||
<Spanish>Dispositivo de detonación MK26</Spanish>
|
<Spanish>Dispositivo de detonación MK26</Spanish>
|
||||||
<Polish>Zapalnik M26</Polish>
|
<Polish>Zapalnik M26</Polish>
|
||||||
<French>M26 Dispositif de mise à feu</French>
|
<French>M26 Dispositif de mise à feu</French>
|
||||||
<Czech>M26 Odpalovací Zařízení</Czech>
|
<Czech>M26 Odpalovací Zařízení</Czech>
|
||||||
<Italian>Detonatore M26</Italian>
|
<Italian>Detonatore M26</Italian>
|
||||||
<Hungarian>M26 Detonátor</Hungarian>
|
<Hungarian>M26 Detonátor</Hungarian>
|
||||||
<Portuguese>M26 Dispositivo de Detonação</Portuguese>
|
<Portuguese>M26 Dispositivo de Detonação</Portuguese>
|
||||||
<Russian>Взрыватель M26</Russian>
|
<Russian>Взрыватель M26</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_MK16_displayName">
|
<Key ID="STR_ACE_Explosives_MK16_displayName">
|
||||||
<English>M152 RAMS</English>
|
<English>M152 RAMS</English>
|
||||||
<German>M152 RAMS</German>
|
<German>M152 RAMS</German>
|
||||||
<Czech>M152 RAMS</Czech>
|
<Czech>M152 RAMS</Czech>
|
||||||
<French>M152 RAMS</French>
|
<French>M152 RAMS</French>
|
||||||
<Hungarian>M152 RAMS</Hungarian>
|
<Hungarian>M152 RAMS</Hungarian>
|
||||||
<Polish>M152 RAMS</Polish>
|
<Polish>M152 RAMS</Polish>
|
||||||
<Portuguese>M152 RAMS</Portuguese>
|
<Portuguese>M152 RAMS</Portuguese>
|
||||||
<Russian>M152 RAMS</Russian>
|
<Russian>M152 RAMS</Russian>
|
||||||
<Spanish>M152 RAMS</Spanish>
|
<Spanish>M152 RAMS</Spanish>
|
||||||
<Italian>M152 RAMS</Italian>
|
<Italian>M152 RAMS</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DefusalKit_displayName">
|
<Key ID="STR_ACE_Explosives_DefusalKit_displayName">
|
||||||
<English>Defusal Kit</English>
|
<English>Defusal Kit</English>
|
||||||
<German>Entschärfungskit</German>
|
<German>Entschärfungskit</German>
|
||||||
<Spanish>Kit de desactivación</Spanish>
|
<Spanish>Kit de desactivación</Spanish>
|
||||||
<Polish>Zestaw do rozbrajania</Polish>
|
<Polish>Zestaw do rozbrajania</Polish>
|
||||||
<French>Kit de désamorçage</French>
|
<French>Kit de désamorçage</French>
|
||||||
<Czech>Zneškodňovací sada</Czech>
|
<Czech>Zneškodňovací sada</Czech>
|
||||||
<Italian>Kit E.O.D.</Italian>
|
<Italian>Kit E.O.D.</Italian>
|
||||||
<Hungarian>Hatástalanító felszerelés</Hungarian>
|
<Hungarian>Hatástalanító felszerelés</Hungarian>
|
||||||
<Portuguese>Kit de desarme</Portuguese>
|
<Portuguese>Kit de desarme</Portuguese>
|
||||||
<Russian>Разминирование комплект</Russian>
|
<Russian>Разминирование комплект</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DefusalKit_description">
|
<Key ID="STR_ACE_Explosives_DefusalKit_description">
|
||||||
<English>Allows defusing of explosives</English>
|
<English>Allows defusing of explosives</English>
|
||||||
<German>Erlaubt die Entschärfung von Sprengstoffen</German>
|
<German>Erlaubt die Entschärfung von Sprengstoffen</German>
|
||||||
<Spanish>Permite desactivar explosivos</Spanish>
|
<Spanish>Permite desactivar explosivos</Spanish>
|
||||||
<Polish>Umożliwia rozbrajanie ładunków wybuchowych</Polish>
|
<Polish>Umożliwia rozbrajanie ładunków wybuchowych</Polish>
|
||||||
<French>Permet de désamorçer des explosifs</French>
|
<French>Permet de désamorçer des explosifs</French>
|
||||||
<Czech>Dovoluje zneškodňování výbušnin</Czech>
|
<Czech>Dovoluje zneškodňování výbušnin</Czech>
|
||||||
<Italian>Consente la disattivazione degli ordigni esplosivi</Italian>
|
<Italian>Consente la disattivazione degli ordigni esplosivi</Italian>
|
||||||
<Hungarian>Robbanóanyagok hatástalanításához</Hungarian>
|
<Hungarian>Robbanóanyagok hatástalanításához</Hungarian>
|
||||||
<Portuguese>Permite o desarme de explosivos</Portuguese>
|
<Portuguese>Permite o desarme de explosivos</Portuguese>
|
||||||
<Russian>Allows defusing of explosives</Russian>
|
<Russian>Allows defusing of explosives</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Phone_AddToSpeedDial">
|
<Key ID="STR_ACE_Explosives_Phone_AddToSpeedDial">
|
||||||
<English>Add to Speed Dial</English>
|
<English>Add to Speed Dial</English>
|
||||||
<German>Zur Schnellauswahl hinzufügen</German>
|
<German>Zur Schnellauswahl hinzufügen</German>
|
||||||
<Spanish>Agregar a marcado rápido</Spanish>
|
<Spanish>Agregar a marcado rápido</Spanish>
|
||||||
<Polish>Dodaj do szybkiego wybierania</Polish>
|
<Polish>Dodaj do szybkiego wybierania</Polish>
|
||||||
<French>Ajouter à la composition rapide</French>
|
<French>Ajouter à la composition rapide</French>
|
||||||
<Czech>Přidat jako rychlou volbu</Czech>
|
<Czech>Přidat jako rychlou volbu</Czech>
|
||||||
<Italian>Aggiungi alla selezione rapida</Italian>
|
<Italian>Aggiungi alla selezione rapida</Italian>
|
||||||
<Hungarian>Hozzáadás gyorshíváshoz</Hungarian>
|
<Hungarian>Hozzáadás gyorshíváshoz</Hungarian>
|
||||||
<Portuguese>Adicionar à ligação rápida</Portuguese>
|
<Portuguese>Adicionar à ligação rápida</Portuguese>
|
||||||
<Russian>Добавить в ускоренный набор</Russian>
|
<Russian>Добавить в ускоренный набор</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Clear">
|
<Key ID="STR_ACE_Explosives_Clear">
|
||||||
<English>Clear</English>
|
<English>Clear</English>
|
||||||
<German>Löschen</German>
|
<German>Löschen</German>
|
||||||
<Spanish>Borrar</Spanish>
|
<Spanish>Borrar</Spanish>
|
||||||
<Polish>Usuń</Polish>
|
<Polish>Usuń</Polish>
|
||||||
<French>Désamorçé</French>
|
<French>Désamorçé</French>
|
||||||
<Czech>Čistý</Czech>
|
<Czech>Čistý</Czech>
|
||||||
<Italian>Libera</Italian>
|
<Italian>Libera</Italian>
|
||||||
<Hungarian>Törlés</Hungarian>
|
<Hungarian>Törlés</Hungarian>
|
||||||
<Portuguese>Limpar</Portuguese>
|
<Portuguese>Limpar</Portuguese>
|
||||||
<Russian>Pассеиваться</Russian>
|
<Russian>Pассеиваться</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Phone_Dial">
|
<Key ID="STR_ACE_Explosives_Phone_Dial">
|
||||||
<English>Dial</English>
|
<English>Dial</English>
|
||||||
<German>Wählen</German>
|
<German>Wählen</German>
|
||||||
<Spanish>Marcar</Spanish>
|
<Spanish>Marcar</Spanish>
|
||||||
<Polish>Wybierz mumer</Polish>
|
<Polish>Wybierz mumer</Polish>
|
||||||
<French>Composer</French>
|
<French>Composer</French>
|
||||||
<Czech>Vytočit</Czech>
|
<Czech>Vytočit</Czech>
|
||||||
<Italian>Composizione numero</Italian>
|
<Italian>Composizione numero</Italian>
|
||||||
<Hungarian>Tárcsázás</Hungarian>
|
<Hungarian>Tárcsázás</Hungarian>
|
||||||
<Portuguese>Discar</Portuguese>
|
<Portuguese>Discar</Portuguese>
|
||||||
<Russian>Hабрать</Russian>
|
<Russian>Hабрать</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Phone_Up">
|
<Key ID="STR_ACE_Explosives_Phone_Up">
|
||||||
<English>Up</English>
|
<English>Up</English>
|
||||||
<German>Hoch</German>
|
<German>Hoch</German>
|
||||||
<Spanish>Arriba</Spanish>
|
<Spanish>Arriba</Spanish>
|
||||||
<Polish>W górę</Polish>
|
<Polish>W górę</Polish>
|
||||||
<French>Haut</French>
|
<French>Haut</French>
|
||||||
<Czech>Nahoru</Czech>
|
<Czech>Nahoru</Czech>
|
||||||
<Italian>Sopra</Italian>
|
<Italian>Sopra</Italian>
|
||||||
<Hungarian>Fel</Hungarian>
|
<Hungarian>Fel</Hungarian>
|
||||||
<Portuguese>Cima</Portuguese>
|
<Portuguese>Cima</Portuguese>
|
||||||
<Russian>Поднять</Russian>
|
<Russian>Поднять</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Phone_Down">
|
<Key ID="STR_ACE_Explosives_Phone_Down">
|
||||||
<English>Down</English>
|
<English>Down</English>
|
||||||
<German>Runter</German>
|
<German>Runter</German>
|
||||||
<Spanish>Abajo</Spanish>
|
<Spanish>Abajo</Spanish>
|
||||||
<Polish>W dół</Polish>
|
<Polish>W dół</Polish>
|
||||||
<French>Bas</French>
|
<French>Bas</French>
|
||||||
<Czech>Dolu</Czech>
|
<Czech>Dolu</Czech>
|
||||||
<Italian>Sotto</Italian>
|
<Italian>Sotto</Italian>
|
||||||
<Hungarian>Le</Hungarian>
|
<Hungarian>Le</Hungarian>
|
||||||
<Portuguese>Baixo</Portuguese>
|
<Portuguese>Baixo</Portuguese>
|
||||||
<Russian>Опустить</Russian>
|
<Russian>Опустить</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Cancel">
|
<Key ID="STR_ACE_Explosives_Cancel">
|
||||||
<English>Cancel</English>
|
<English>Cancel</English>
|
||||||
<German>Abbrechen</German>
|
<German>Abbrechen</German>
|
||||||
<Spanish>Cancelar</Spanish>
|
<Spanish>Cancelar</Spanish>
|
||||||
<Polish>Anuluj</Polish>
|
<Polish>Anuluj</Polish>
|
||||||
<French>Annuler</French>
|
<French>Annuler</French>
|
||||||
<Czech>Zrušit</Czech>
|
<Czech>Zrušit</Czech>
|
||||||
<Italian>Annulla</Italian>
|
<Italian>Annulla</Italian>
|
||||||
<Hungarian>Mégsem</Hungarian>
|
<Hungarian>Mégsem</Hungarian>
|
||||||
<Portuguese>Cancelar</Portuguese>
|
<Portuguese>Cancelar</Portuguese>
|
||||||
<Russian>Отмена</Russian>
|
<Russian>Отмена</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DetonateMenu">
|
<Key ID="STR_ACE_Explosives_DetonateMenu">
|
||||||
<English>Detonate Menu</English>
|
<English>Detonate Menu</English>
|
||||||
<German>"Zünden"-Menü</German>
|
<German>"Zünden"-Menü</German>
|
||||||
<Spanish>Menú de detonación</Spanish>
|
<Spanish>Menú de detonación</Spanish>
|
||||||
<Polish>Menu detonowania</Polish>
|
<Polish>Menu detonowania</Polish>
|
||||||
<French>Menu de mise à feu</French>
|
<French>Menu de mise à feu</French>
|
||||||
<Czech>Menu Detonace</Czech>
|
<Czech>Menu Detonace</Czech>
|
||||||
<Italian>Menù di detonazione</Italian>
|
<Italian>Menù di detonazione</Italian>
|
||||||
<Hungarian>Robbantás menü</Hungarian>
|
<Hungarian>Robbantás menü</Hungarian>
|
||||||
<Portuguese>Menu de detonação</Portuguese>
|
<Portuguese>Menu de detonação</Portuguese>
|
||||||
<Russian>Меню Подрыв</Russian>
|
<Russian>Меню Подрыв</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_PlaceMenu">
|
<Key ID="STR_ACE_Explosives_PlaceMenu">
|
||||||
<English>Place Menu</English>
|
<English>Place Menu</English>
|
||||||
<German>"Platzieren"-Menü</German>
|
<German>"Platzieren"-Menü</German>
|
||||||
<Spanish>Menú de colocación</Spanish>
|
<Spanish>Menú de colocación</Spanish>
|
||||||
<Polish>Menu umieszczania</Polish>
|
<Polish>Menu umieszczania</Polish>
|
||||||
<French>Menu Placement</French>
|
<French>Menu Placement</French>
|
||||||
<Czech>Menu Umístění</Czech>
|
<Czech>Menu Umístění</Czech>
|
||||||
<Italian>Menù di collocamento</Italian>
|
<Italian>Menù di collocamento</Italian>
|
||||||
<Hungarian>Lerakás menü</Hungarian>
|
<Hungarian>Lerakás menü</Hungarian>
|
||||||
<Portuguese>Menu de posicionamento</Portuguese>
|
<Portuguese>Menu de posicionamento</Portuguese>
|
||||||
<Russian>Меню Установить</Russian>
|
<Russian>Меню Установить</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Defuse">
|
<Key ID="STR_ACE_Explosives_Defuse">
|
||||||
<English>Defuse</English>
|
<English>Defuse</English>
|
||||||
<German>Entschärfen</German>
|
<German>Entschärfen</German>
|
||||||
<Spanish>Desactivar</Spanish>
|
<Spanish>Desactivar</Spanish>
|
||||||
<Polish>Rozbrój</Polish>
|
<Polish>Rozbrój</Polish>
|
||||||
<French>Désamorçer</French>
|
<French>Désamorçer</French>
|
||||||
<Czech>Zneškodnit</Czech>
|
<Czech>Zneškodnit</Czech>
|
||||||
<Italian>Disinnesca</Italian>
|
<Italian>Disinnesca</Italian>
|
||||||
<Hungarian>Hatástalanítás</Hungarian>
|
<Hungarian>Hatástalanítás</Hungarian>
|
||||||
<Portuguese>Desarmar</Portuguese>
|
<Portuguese>Desarmar</Portuguese>
|
||||||
<Russian>Обезвредить</Russian>
|
<Russian>Обезвредить</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DefusingExplosive">
|
<Key ID="STR_ACE_Explosives_DefusingExplosive">
|
||||||
<English>Defusing Explosive...</English>
|
<English>Defusing Explosive...</English>
|
||||||
<German>Entschärfe Sprengstoff...</German>
|
<German>Entschärfe Sprengstoff...</German>
|
||||||
<Spanish>Desactivando explosivo...</Spanish>
|
<Spanish>Desactivando explosivo...</Spanish>
|
||||||
<Polish>Rozbrajanie ładunku...</Polish>
|
<Polish>Rozbrajanie ładunku...</Polish>
|
||||||
<French>Désamorçage des explosifs...</French>
|
<French>Désamorçage des explosifs...</French>
|
||||||
<Czech>Zneškodňuji Výbušninu...</Czech>
|
<Czech>Zneškodňuji Výbušninu...</Czech>
|
||||||
<Italian>Esposivo in fase di disattivazione...</Italian>
|
<Italian>Esposivo in fase di disattivazione...</Italian>
|
||||||
<Hungarian>Robbanóanyag hatástalaníása...</Hungarian>
|
<Hungarian>Robbanóanyag hatástalaníása...</Hungarian>
|
||||||
<Portuguese>Desarmando Explosivo...</Portuguese>
|
<Portuguese>Desarmando Explosivo...</Portuguese>
|
||||||
<Russian>Обезвреживание...</Russian>
|
<Russian>Обезвреживание...</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_timerName">
|
<Key ID="STR_ACE_Explosives_timerName">
|
||||||
<English>Timer</English>
|
<English>Timer</English>
|
||||||
<German>Zeitzünder</German>
|
<German>Zeitzünder</German>
|
||||||
<Spanish>Temporizador</Spanish>
|
<Spanish>Temporizador</Spanish>
|
||||||
<Polish>Czasomierz</Polish>
|
<Polish>Czasomierz</Polish>
|
||||||
<French>Retard</French>
|
<French>Retard</French>
|
||||||
<Czech>Časovač</Czech>
|
<Czech>Časovač</Czech>
|
||||||
<Italian>Cronometro</Italian>
|
<Italian>Cronometro</Italian>
|
||||||
<Hungarian>Időzített</Hungarian>
|
<Hungarian>Időzített</Hungarian>
|
||||||
<Portuguese>Timer</Portuguese>
|
<Portuguese>Timer</Portuguese>
|
||||||
<Russian>Временной</Russian>
|
<Russian>Временной</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_TimerMenu">
|
<Key ID="STR_ACE_Explosives_TimerMenu">
|
||||||
<English>Time: %1m %2s</English>
|
<English>Time: %1m %2s</English>
|
||||||
<German>Zeit: %1m %2s</German>
|
<German>Zeit: %1m %2s</German>
|
||||||
<Spanish>Tiempo: %1m %2s</Spanish>
|
<Spanish>Tiempo: %1m %2s</Spanish>
|
||||||
<Polish>Czas: %1m %2s</Polish>
|
<Polish>Czas: %1m %2s</Polish>
|
||||||
<French>Temps : %1m %2s</French>
|
<French>Temps : %1m %2s</French>
|
||||||
<Czech>Čas: %1m %2s</Czech>
|
<Czech>Čas: %1m %2s</Czech>
|
||||||
<Italian>Tempo : %1m %2s</Italian>
|
<Italian>Tempo : %1m %2s</Italian>
|
||||||
<Hungarian>Idő: %1m %2s</Hungarian>
|
<Hungarian>Idő: %1m %2s</Hungarian>
|
||||||
<Portuguese>Tempo: %1m %2s</Portuguese>
|
<Portuguese>Tempo: %1m %2s</Portuguese>
|
||||||
<Russian>Tемп: %1m %2c</Russian>
|
<Russian>Tемп: %1m %2c</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_SetTime">
|
<Key ID="STR_ACE_Explosives_SetTime">
|
||||||
<English>Set Time</English>
|
<English>Set Time</English>
|
||||||
<German>Zeit einstellen</German>
|
<German>Zeit einstellen</German>
|
||||||
<Spanish>Configurar tiempo</Spanish>
|
<Spanish>Configurar tiempo</Spanish>
|
||||||
<Polish>Ustaw czas</Polish>
|
<Polish>Ustaw czas</Polish>
|
||||||
<French>Régler retard</French>
|
<French>Régler retard</French>
|
||||||
<Czech>Nastavit Čas</Czech>
|
<Czech>Nastavit Čas</Czech>
|
||||||
<Italian>Modifica il conto alla rovescia</Italian>
|
<Italian>Modifica il conto alla rovescia</Italian>
|
||||||
<Hungarian>Idő állítása</Hungarian>
|
<Hungarian>Idő állítása</Hungarian>
|
||||||
<Portuguese>Configurar Tempo</Portuguese>
|
<Portuguese>Configurar Tempo</Portuguese>
|
||||||
<Russian>Xронометр</Russian>
|
<Russian>Xронометр</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_TriggerMenu">
|
<Key ID="STR_ACE_Explosives_TriggerMenu">
|
||||||
<English>Select a Trigger</English>
|
<English>Select a Trigger</English>
|
||||||
<German>Wähle einen Zünder</German>
|
<German>Wähle einen Zünder</German>
|
||||||
<Spanish>Seleccionar un disparador</Spanish>
|
<Spanish>Seleccionar un disparador</Spanish>
|
||||||
<Polish>Wybierz zapalnik</Polish>
|
<Polish>Wybierz zapalnik</Polish>
|
||||||
<French>Sélectionner une mise à feu</French>
|
<French>Sélectionner une mise à feu</French>
|
||||||
<Czech>Zvolit Detonátor</Czech>
|
<Czech>Zvolit Detonátor</Czech>
|
||||||
<Italian>Seleziona un Attivatore</Italian>
|
<Italian>Seleziona un Attivatore</Italian>
|
||||||
<Hungarian>Detonátor kiválasztása</Hungarian>
|
<Hungarian>Detonátor kiválasztása</Hungarian>
|
||||||
<Portuguese>Selecionar um Gatilho</Portuguese>
|
<Portuguese>Selecionar um Gatilho</Portuguese>
|
||||||
<Russian>Выберите</Russian>
|
<Russian>Выберите</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_SelectTrigger">
|
<Key ID="STR_ACE_Explosives_SelectTrigger">
|
||||||
<English>Select</English>
|
<English>Select</English>
|
||||||
<German>Wählen</German>
|
<German>Wählen</German>
|
||||||
<Spanish>Seleccionar</Spanish>
|
<Spanish>Seleccionar</Spanish>
|
||||||
<Polish>Wybierz</Polish>
|
<Polish>Wybierz</Polish>
|
||||||
<French>Sélectionner</French>
|
<French>Sélectionner</French>
|
||||||
<Czech>Zvolit</Czech>
|
<Czech>Zvolit</Czech>
|
||||||
<Italian>Seleziona</Italian>
|
<Italian>Seleziona</Italian>
|
||||||
<Hungarian>Kiválasztás</Hungarian>
|
<Hungarian>Kiválasztás</Hungarian>
|
||||||
<Portuguese>Selecionar</Portuguese>
|
<Portuguese>Selecionar</Portuguese>
|
||||||
<Russian>Выбрать защелка</Russian>
|
<Russian>Выбрать защелка</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_PressurePlate">
|
<Key ID="STR_ACE_Explosives_PressurePlate">
|
||||||
<English>Pressure Plate</English>
|
<English>Pressure Plate</English>
|
||||||
<Polish>Płyta naciskowa</Polish>
|
<Polish>Płyta naciskowa</Polish>
|
||||||
<Spanish>Placa de presión</Spanish>
|
<Spanish>Placa de presión</Spanish>
|
||||||
<German>Druckplatte</German>
|
<German>Druckplatte</German>
|
||||||
<French>Plaque de pression</French>
|
<French>Plaque de pression</French>
|
||||||
<Czech>Nášlapná nástraha</Czech>
|
<Czech>Nášlapná nástraha</Czech>
|
||||||
<Italian>Piastra a Pressione</Italian>
|
<Italian>Piastra a Pressione</Italian>
|
||||||
<Hungarian>Nyomólap</Hungarian>
|
<Hungarian>Nyomólap</Hungarian>
|
||||||
<Portuguese>Placa de pressão</Portuguese>
|
<Portuguese>Placa de pressão</Portuguese>
|
||||||
<Russian>Давление</Russian>
|
<Russian>Давление</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_TripWire">
|
<Key ID="STR_ACE_Explosives_TripWire">
|
||||||
<English>Tripwire</English>
|
<English>Tripwire</English>
|
||||||
<Polish>Linka naciągu</Polish>
|
<Polish>Linka naciągu</Polish>
|
||||||
<Spanish>Cable trampa</Spanish>
|
<Spanish>Cable trampa</Spanish>
|
||||||
<German>Stolperdraht</German>
|
<German>Stolperdraht</German>
|
||||||
<French>Fil de butée</French>
|
<French>Fil de butée</French>
|
||||||
<Czech>Nástražný drát</Czech>
|
<Czech>Nástražný drát</Czech>
|
||||||
<Italian>Filo a Inciampo</Italian>
|
<Italian>Filo a Inciampo</Italian>
|
||||||
<Hungarian>Botlódrót</Hungarian>
|
<Hungarian>Botlódrót</Hungarian>
|
||||||
<Portuguese>Linha de tração</Portuguese>
|
<Portuguese>Linha de tração</Portuguese>
|
||||||
<Russian>Натяжной</Russian>
|
<Russian>Натяжной</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_IRSensor">
|
<Key ID="STR_ACE_Explosives_IRSensor">
|
||||||
<English>IR Sensor</English>
|
<English>IR Sensor</English>
|
||||||
<Polish>Czujnik podczerwieni</Polish>
|
<Polish>Czujnik podczerwieni</Polish>
|
||||||
<Spanish>Sensor IR</Spanish>
|
<Spanish>Sensor IR</Spanish>
|
||||||
<German>Infrarotsensor</German>
|
<German>Infrarotsensor</German>
|
||||||
<French>Capteur IR</French>
|
<French>Capteur IR</French>
|
||||||
<Czech>IR Značkovač</Czech>
|
<Czech>IR Značkovač</Czech>
|
||||||
<Italian>Sensore IR</Italian>
|
<Italian>Sensore IR</Italian>
|
||||||
<Hungarian>IR szenzor</Hungarian>
|
<Hungarian>IR szenzor</Hungarian>
|
||||||
<Portuguese>Sensor IV</Portuguese>
|
<Portuguese>Sensor IV</Portuguese>
|
||||||
<Russian>ИК</Russian>
|
<Russian>ИК</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_NoTriggersAvailable">
|
<Key ID="STR_ACE_Explosives_NoTriggersAvailable">
|
||||||
<English>No triggers available for %1</English>
|
<English>No triggers available for %1</English>
|
||||||
<Polish>Brak dostępnych zapalników dla %1</Polish>
|
<Polish>Brak dostępnych zapalników dla %1</Polish>
|
||||||
<Spanish>No hay detonadores disponibles para %1</Spanish>
|
<Spanish>No hay detonadores disponibles para %1</Spanish>
|
||||||
<German>Keine Auslöser vorhanden für %1</German>
|
<German>Keine Auslöser vorhanden für %1</German>
|
||||||
<French>Pas de mise à feu disponible pour %1</French>
|
<French>Pas de mise à feu disponible pour %1</French>
|
||||||
<Czech>Žádný detonátor k dispozici pro %1</Czech>
|
<Czech>Žádný detonátor k dispozici pro %1</Czech>
|
||||||
<Italian>Nessun attivatore disponibile per %1</Italian>
|
<Italian>Nessun attivatore disponibile per %1</Italian>
|
||||||
<Hungarian>Nincs detonátor a %1</Hungarian>
|
<Hungarian>Nincs detonátor a %1</Hungarian>
|
||||||
<Portuguese>Nenhum gatilho disponível para %1</Portuguese>
|
<Portuguese>Nenhum gatilho disponível para %1</Portuguese>
|
||||||
<Russian>Нет защелка доступны для %1</Russian>
|
<Russian>Нет защелка доступны для %1</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_SLAME_IRSensor">
|
<Key ID="STR_ACE_Explosives_SLAME_IRSensor">
|
||||||
<English>IR Sensor (Side Attack)</English>
|
<English>IR Sensor (Side Attack)</English>
|
||||||
<Polish>Czujnik podczerwieni (wybuch na bok)</Polish>
|
<Polish>Czujnik podczerwieni (wybuch na bok)</Polish>
|
||||||
<Spanish>Sensor IR (ataque lateral)</Spanish>
|
<Spanish>Sensor IR (ataque lateral)</Spanish>
|
||||||
<German>Infrarotsensor (Seitenangriff)</German>
|
<German>Infrarotsensor (Seitenangriff)</German>
|
||||||
<French>Capteur IR (de flanc)</French>
|
<French>Capteur IR (de flanc)</French>
|
||||||
<Czech>IR Značkovač (Výbuch stranou)</Czech>
|
<Czech>IR Značkovač (Výbuch stranou)</Czech>
|
||||||
<Italian>Sensore IR (Attacco laterale)</Italian>
|
<Italian>Sensore IR (Attacco laterale)</Italian>
|
||||||
<Hungarian>IR Sensor (Side Attack)</Hungarian>
|
<Hungarian>IR Sensor (Side Attack)</Hungarian>
|
||||||
<Portuguese>Sensor infravermelho (ataque lateral)</Portuguese>
|
<Portuguese>Sensor infravermelho (ataque lateral)</Portuguese>
|
||||||
<Russian>ИК (боковая атака)</Russian>
|
<Russian>ИК (боковая атака)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_SLAME_Magnetic">
|
<Key ID="STR_ACE_Explosives_SLAME_Magnetic">
|
||||||
<English>Magnetic Influence Sensor (Bottom Attack)</English>
|
<English>Magnetic Influence Sensor (Bottom Attack)</English>
|
||||||
<Polish>Czujnik magnetyczny (wybuch w górę)</Polish>
|
<Polish>Czujnik magnetyczny (wybuch w górę)</Polish>
|
||||||
<Spanish>Sensor IM (ataque inferior)</Spanish>
|
<Spanish>Sensor IM (ataque inferior)</Spanish>
|
||||||
<German>Magnetfeldsensor (Bodenangriff)</German>
|
<German>Magnetfeldsensor (Bodenangriff)</German>
|
||||||
<French>Capteur Magnétique (par le bas)</French>
|
<French>Capteur Magnétique (par le bas)</French>
|
||||||
<Czech>Magnetický Senzor (Výbuch ze spoda)</Czech>
|
<Czech>Magnetický Senzor (Výbuch ze spoda)</Czech>
|
||||||
<Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
|
<Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
|
||||||
<Hungarian>Mágneses (Bottom Attack)</Hungarian>
|
<Hungarian>Mágneses (Bottom Attack)</Hungarian>
|
||||||
<Portuguese>Influência magnética (ataque inferior)</Portuguese>
|
<Portuguese>Influência magnética (ataque inferior)</Portuguese>
|
||||||
<Russian>Магнитный (дно атака)</Russian>
|
<Russian>Магнитный (дно атака)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_NoExplosivesAvailable">
|
<Key ID="STR_ACE_Explosives_NoExplosivesAvailable">
|
||||||
<English>No explosives on trigger.</English>
|
<English>No explosives on trigger.</English>
|
||||||
<German>Keine Sprengladungen auf diesem Auslöser.</German>
|
<German>Keine Sprengladungen auf diesem Auslöser.</German>
|
||||||
<Spanish>Ningún explosivo en el detonador.</Spanish>
|
<Spanish>Ningún explosivo en el detonador.</Spanish>
|
||||||
<French>Pas d'explosif à mettre à feu.</French>
|
<French>Pas d'explosif à mettre à feu.</French>
|
||||||
<Italian>Nessun esplosivo sul sensore.</Italian>
|
<Italian>Nessun esplosivo sul sensore.</Italian>
|
||||||
<Czech>Žádná výbušnina k odpálení.</Czech>
|
<Czech>Žádná výbušnina k odpálení.</Czech>
|
||||||
<Hungarian>Nincs robbanóanyag a detonátorhoz.</Hungarian>
|
<Hungarian>Nincs robbanóanyag a detonátorhoz.</Hungarian>
|
||||||
<Polish>Brak ładunków na zapalnik.</Polish>
|
<Polish>Brak ładunków na zapalnik.</Polish>
|
||||||
<Portuguese>Nenhum explosivo no gatilho.</Portuguese>
|
<Portuguese>Nenhum explosivo no gatilho.</Portuguese>
|
||||||
<Russian>Нет взрывчатки на курок.</Russian>
|
<Russian>Нет взрывчатки на курок.</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_displayName">
|
<Key ID="STR_ACE_Explosives_DeadManSwitch_displayName">
|
||||||
<English>Dead Man's Switch</English>
|
<English>Dead Man's Switch</English>
|
||||||
<German>Totmannschalter</German>
|
<German>Totmannschalter</German>
|
||||||
<French>Mise à feu par relâchement de pression</French>
|
<French>Mise à feu par relâchement de pression</French>
|
||||||
<Czech>Spínač mrtvého muže</Czech>
|
<Czech>Spínač mrtvého muže</Czech>
|
||||||
<Polish>Czuwak</Polish>
|
<Polish>Czuwak</Polish>
|
||||||
<Spanish>Detonador de hombre muerto</Spanish>
|
<Spanish>Detonador de hombre muerto</Spanish>
|
||||||
<Hungarian>Dead Man's Switch</Hungarian>
|
<Hungarian>Dead Man's Switch</Hungarian>
|
||||||
<Russian>Кнопка мертвеца</Russian>
|
<Russian>Кнопка мертвеца</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_description">
|
<Key ID="STR_ACE_Explosives_DeadManSwitch_description">
|
||||||
<English>Used to remotely trigger explosives when released.</English>
|
<English>Used to remotely trigger explosives when released.</English>
|
||||||
<German>Zündet Sprengladungen wenn losgelassen.</German>
|
<German>Zündet Sprengladungen wenn losgelassen.</German>
|
||||||
<French>Déclenche la mise à feu d'un explosif lorsqu'il est libéré.</French>
|
<French>Déclenche la mise à feu d'un explosif lorsqu'il est libéré.</French>
|
||||||
<Czech>Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny</Czech>
|
<Czech>Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny</Czech>
|
||||||
<Polish>Używany w celu zdalnej detonacji ładunków kiedy jego operator zostanie zabity.</Polish>
|
<Polish>Używany w celu zdalnej detonacji ładunków kiedy jego operator zostanie zabity.</Polish>
|
||||||
<Spanish>Utilizado para detonar explosivos remotamente al soltarlo.</Spanish>
|
<Spanish>Utilizado para detonar explosivos remotamente al soltarlo.</Spanish>
|
||||||
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
<Hungarian>Robbanóanyagok távoli robbantásához</Hungarian>
|
||||||
<Russian>Используется для дистанционного подрыва, после смерти оператора.</Russian>
|
<Russian>Используется для дистанционного подрыва, после смерти оператора.</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
<Key ID="STR_ACE_Explosives_Pickup">
|
||||||
|
<English>Pick up</English>
|
||||||
|
</Key>
|
||||||
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -147,6 +147,14 @@ class RscInGameUI {
|
|||||||
MACRO_RANGEFINDER
|
MACRO_RANGEFINDER
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
class Rsc_ACE_Helo_UI_Turret: RscUnitInfo {
|
||||||
|
onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf""";
|
||||||
|
class CA_IGUI_elements_group: RscControlsGroup {
|
||||||
|
class controls {
|
||||||
|
MACRO_RANGEFINDER
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class RscOptics_Heli_Attack_01_gunner: RscUnitInfo {
|
class RscOptics_Heli_Attack_01_gunner: RscUnitInfo {
|
||||||
onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf""";
|
onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf""";
|
||||||
|
@ -5,3 +5,6 @@ GVAR(time) = 0;
|
|||||||
GVAR(position) = [0,0,0];
|
GVAR(position) = [0,0,0];
|
||||||
|
|
||||||
#include "initKeybinds.sqf"
|
#include "initKeybinds.sqf"
|
||||||
|
|
||||||
|
// Register event for global updates
|
||||||
|
[QGVAR(forceUpdate), FUNC(onForceUpdate)] call ace_common_fnc_addEventHandler;
|
@ -10,6 +10,7 @@ PREP(firedEH);
|
|||||||
PREP(getAngle);
|
PREP(getAngle);
|
||||||
PREP(getRange);
|
PREP(getRange);
|
||||||
PREP(handleAirBurstAmmunitionPFH);
|
PREP(handleAirBurstAmmunitionPFH);
|
||||||
|
PREP(onForceUpdate);
|
||||||
PREP(keyDown);
|
PREP(keyDown);
|
||||||
PREP(keyUp);
|
PREP(keyUp);
|
||||||
PREP(reset);
|
PREP(reset);
|
||||||
|
@ -48,7 +48,14 @@ _offset = 0;
|
|||||||
_velocityCorrection = (vectorMagnitude velocity _projectile) -
|
_velocityCorrection = (vectorMagnitude velocity _projectile) -
|
||||||
getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed");
|
getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed");
|
||||||
|
|
||||||
[_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, _velocityCorrection] call EFUNC(common,changeProjectileDirection);
|
[_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, -_velocityCorrection] call EFUNC(common,changeProjectileDirection);
|
||||||
|
|
||||||
|
// Remove the platform velocity
|
||||||
|
if( (vectorMagnitude velocity _vehicle) > 2) then {
|
||||||
|
_sumVelocity = (velocity _projectile) vectorDiff (velocity _vehicle);
|
||||||
|
_projectile setVelocity _sumVelocity;
|
||||||
|
};
|
||||||
|
|
||||||
// Air burst missile
|
// Air burst missile
|
||||||
|
|
||||||
// handle locally only
|
// handle locally only
|
||||||
|
@ -5,7 +5,7 @@ _projectile = _this select 0 select 1;
|
|||||||
_zeroing = _this select 0 select 2;
|
_zeroing = _this select 0 select 2;
|
||||||
|
|
||||||
if (isNull _projectile || {!alive _projectile}) exitWith {
|
if (isNull _projectile || {!alive _projectile}) exitWith {
|
||||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_projectile distance _vehicle < _zeroing) exitWith {};
|
if (_projectile distance _vehicle < _zeroing) exitWith {};
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_vehicle", "_turret", "_turretConfig", "_distance", "_magazines"];
|
private ["_vehicle", "_turret", "_turretConfig", "_distance", "_magazines", "_showHint", "_playSound"];
|
||||||
|
|
||||||
_vehicle = _this select 0;
|
_vehicle = _this select 0;
|
||||||
_turret = _this select 1;
|
_turret = _this select 1;
|
||||||
@ -46,7 +46,9 @@ if (_weaponDirection isEqualTo [0,0,0]) then { // dummy value for non main turr
|
|||||||
_angleTarget = asin (_weaponDirection select 2);
|
_angleTarget = asin (_weaponDirection select 2);
|
||||||
|
|
||||||
if (count _this > 2) then {
|
if (count _this > 2) then {
|
||||||
_distance = _this select 2;
|
if((_this select 2) > -1) then {
|
||||||
|
_distance = _this select 2;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!(isNil QGVAR(backgroundCalculation)) and {!(scriptDone GVAR(backgroundCalculation))}) then {
|
if (!(isNil QGVAR(backgroundCalculation)) and {!(scriptDone GVAR(backgroundCalculation))}) then {
|
||||||
@ -160,4 +162,20 @@ _FCSElevation = [];
|
|||||||
[_vehicle, format ["%1_%2", QGVAR(Elevation), _turret], _FCSElevation] call EFUNC(common,setVariablePublic);
|
[_vehicle, format ["%1_%2", QGVAR(Elevation), _turret], _FCSElevation] call EFUNC(common,setVariablePublic);
|
||||||
[_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], _FCSAzimuth] call EFUNC(common,setVariablePublic);
|
[_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], _FCSAzimuth] call EFUNC(common,setVariablePublic);
|
||||||
|
|
||||||
[format ["%1: %2", localize "STR_ACE_FCS_ZeroedTo", _distance]] call EFUNC(common,displayTextStructured);
|
_showHint = false;
|
||||||
|
if( (count _this) > 3) then {
|
||||||
|
_showHint = _this select 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
_playSound = true;
|
||||||
|
if( (count _this) > 3) then {
|
||||||
|
_playSound = _this select 4;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(_playSound) then {
|
||||||
|
playSound "ACE_Sound_Click";
|
||||||
|
};
|
||||||
|
|
||||||
|
if(_showHint) then {
|
||||||
|
[format ["%1: %2", localize "STR_ACE_FCS_ZeroedTo", _distance]] call EFUNC(common,displayTextStructured);
|
||||||
|
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user