diff --git a/TO_MERGE/cse/sys_ieds/CfgAddons.h b/TO_MERGE/cse/sys_ieds/CfgAddons.h new file mode 100644 index 0000000000..8a11ab5c62 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/CfgAddons.h @@ -0,0 +1,7 @@ +class CfgAddons { + class PreloadAddons { + class cse_sys_ieds { + list[] = {"cse_sys_ieds"}; + }; + }; +}; diff --git a/TO_MERGE/cse/sys_ieds/CfgFunctions.h b/TO_MERGE/cse/sys_ieds/CfgFunctions.h new file mode 100644 index 0000000000..b6c117dbfb --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/CfgFunctions.h @@ -0,0 +1,24 @@ +class CfgFunctions { + class CSE { + class IEDS { + file = "cse\cse_sys_ieds\functions"; + class module_spawnIED { recompile = 1; }; + class createIEDObject_IEDS { recompile = 1; }; + class checkIEDActivated_IEDS { recompile = 1; }; + class checkPressurePlateActivated_IEDS { recompile = 1; }; + class checkRadioTriggered_IEDS { recompile = 1; }; + class monitorIEDS_IEDS { recompile = 1; }; + class onIEDActivated_IEDS { recompile = 1; }; + class thor3_detection_IEDS { recompile = 1; }; + class playThorIIISound_IEDS { recompile = 1; }; + class triggerManGotVisual_IEDS { recompile = 1; }; + class moduleTriggerMan_IEDS { recompile = 1; }; + class placeDownIED_IEDS { recompile = 1; }; + class monitorPlayerIEDs_IEDS { recompile = 1; }; + + class onCellPhoneOpened_IEDS { recompile = 1; }; + class cellphone_detonateIED_IEDS { recompile = 1; }; + class checkIfJammed_IEDS { recompile = 1; }; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/CfgSounds.h b/TO_MERGE/cse/sys_ieds/CfgSounds.h new file mode 100644 index 0000000000..46e89a6090 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/CfgSounds.h @@ -0,0 +1,9 @@ +class CfgSounds +{ + class cse_thor3_beep1 + { + name = "cse_thor3_beep1"; + sound[] = {"cse\cse_sys_ieds\sounds\beeps\03_Dull_Short_Mid.wav","db-1",1}; + titles[] = {}; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/CfgVehicles.h b/TO_MERGE/cse/sys_ieds/CfgVehicles.h new file mode 100644 index 0000000000..2355fd40e3 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/CfgVehicles.h @@ -0,0 +1,203 @@ +class CfgVehicles { + class Logic; + class Module_F: Logic { + class ArgumentsBaseUnits { + }; + }; + + + class cse_playerSpawnedIED: Logic { + displayName = "Player placed IED"; + }; + + class cseModule_spawnIEDs: Module_F { + scope = 2; + displayName = "Create IED [CSE]"; + icon = "\cse\cse_main\data\cse_explosive_module.paa"; + category = "cseMisc"; + function = "cse_fnc_module_spawnIED"; + functionPriority = 1; + isGlobal = 0; + isTriggerActivated = 0; + class Arguments { + class typeOfIED { + displayName = "Type"; + description = "The Type of the IED"; + typeName = "NUMBER"; + class values { + class land {name="Normal"; value=0; default=1; }; + class urban {name="Urban"; value=1; }; + }; + }; + + class sizeOfIED { + displayName = "Size"; + description = "The size of the IED"; + typeName = "NUMBER"; + class values { + class small {name="Small"; value=1; default=1; }; + class large {name="Large"; value=0; }; + }; + }; + + class heightOfIED { + displayName = "Height"; + description = "The height that the IED is burried"; + typeName = "NUMBER"; + class values { + class Above {name="Above Ground"; value=0; default=1; }; + class slightly {name="Slightly burried"; value=-0.015; }; + class medium {name="Medium burried"; value=-0.025; }; + class almost {name="Almost burried"; value=-0.05; }; + class fully {name="Fully burried"; value=-0.1; }; + }; + }; + + class iedActivationType { + displayName = "Activation Type"; + description = "How is the IED activated"; + typeName = "NUMBER"; + class values { + class None {name="None"; value=-1; }; + class PressurePlate {name="Pressure Plate"; value=0; default=1;}; + class Radio {name="Radio"; value=1; }; + }; + }; + + class activatedForTargets { + displayName = "Activated for"; + description = "What types is the IED activated for"; + typeName = "NUMBER"; + class values { + class None {name="None"; value=-1; }; + class All {name="Any type"; value=0; default=1;}; + class Vehicles {name="Any Vehicle"; value=1; }; + class Land {name="Ground Vehicles"; value=2; }; + class Air {name="Airial Vehicles"; value=3; }; + class Man {name="Man"; value=4; }; + }; + }; + + class activatedForSides { + displayName = "What sides activate this IED"; + description = "What types is the IED activated for"; + typeName = "NUMBER"; + class values { + class None {name="None"; value=-1; }; + class All {name="Any side"; value=0; default=1; }; + class West {name="BLUFOR"; value=1; }; + class East {name="OpFOR"; value=2; }; + class Ind {name="Independant"; value=3; }; + class Civ {name="Civilian"; value=4; }; + }; + }; + }; + + class ModuleDescription { + description = "Create an IED on position."; // Short description, will be formatted as structured text + sync[] = {"cseModule_spawnIEDs"}; + position = 1; // Position is taken into effect + direction = 0; // Direction is taken into effect + optional = 0; // Synced entity is optional + duplicate = 1; // Multiple entities of this type can be synced + + class cseModule_spawnIEDs { + description[] = { // Multi-line descriptions are supported + "Synchronize ieds with other IEDs to create chain ieds.", + "When one of the synchronized ieds is triggered,", + "all other IEDs will explode as well." + }; + position = 1; // Position is taken into effect + direction = 0; // Direction is taken into effect + optional = 1; // Synced entity is optional + duplicate = 1; // Multiple entities of this type can be synced + synced[] = {"cseModule_spawnIEDs"}; // Pre-define entities like "AnyBrain" can be used. See the list below + }; + + }; + }; + class cseModule_triggerManLinkIEDS: Module_F { + scope = 2; + displayName = "Triggerman [CSE]"; + icon = "\cse\cse_main\data\cse_explosive_module.paa"; + category = "cseMisc"; + function = "cse_fnc_moduleTriggerMan_IEDS"; + functionPriority = 1; + isGlobal = 0; + isTriggerActivated = 0; + class Arguments { + class EnableList { + displayName = "List"; + description = "List of unit names that will be able to trigger the radio IED."; + defaultValue = ""; + }; + }; + + class ModuleDescription { + description = "Defines units as triggerman."; // Short description, will be formatted as structured text + sync[] = {"cseModule_spawnIEDs"}; + position = 0; // Position is taken into effect + direction = 0; // Direction is taken into effect + optional = 0; // Synced entity is optional + duplicate = 1; // Multiple entities of this type can be synced + + class cseModule_spawnIEDs { + description[] = { // Multi-line descriptions are supported + "Synchronize module with IEDs to define.", + "which ieds can be triggered by units listed in module," + }; + position = 0; // Position is taken into effect + direction = 0; // Direction is taken into effect + optional = 0; // Synced entity is optional + duplicate = 1; // Multiple entities of this type can be synced + synced[] = {"cseModule_spawnIEDs"}; // Pre-define entities like "AnyBrain" can be used. See the list below + }; + }; + }; + + class B_Kitbag_sgg; + class cse_thorIII_backpack: B_Kitbag_sgg { + scope = 1; + author = "Combat Space Enhancement"; + displayName = "THOR III - Jammer"; + }; + + + // class Items_base_F; + // class cse_ied_pressureplate_small: Items_base_F { + // scope = 2; + // author = "Combat Space Enhancement"; + // displayName = "Pressure Plate IED (Small)"; + // picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + // descriptionShort = "Pressure Plate IED (Small)"; + // descriptionUse = "Pressure Plate IED (Small)"; + // model = "\A3\Weapons_F\Explosives\IED_land_small"; + // }; + // class cse_ied_pressureplate_large: cse_ied_pressureplate_small { + // scope = 2; + // author = "Combat Space Enhancement"; + // displayName = "Pressure Plate IED (Large)"; + // picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + // descriptionShort = "Pressure Plate IED (Large)"; + // descriptionUse = "Pressure Plate IED (Large)"; + // model = "\A3\Weapons_F\Explosives\IED_land_big"; + // }; + // class cse_ied_radio_small: cse_ied_pressureplate_small { + // scope = 2; + // author = "Combat Space Enhancement"; + // displayName = "Radio Triggered IED (Small)"; + // picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + // descriptionShort = "Radio Triggered IED (Small)"; + // descriptionUse = "Radio Triggered IED (Small)"; + // model = "\A3\Weapons_F\Explosives\IED_land_small"; + // }; + // class cse_ied_radio_large: cse_ied_radio_small { + // scope = 2; + // author = "Combat Space Enhancement"; + // displayName = "Radio Triggered IED (Large)"; + // picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + // descriptionShort = "Radio Triggered IED (Large)"; + // descriptionUse = "Radio Triggered IED (Large)"; + // model = "\A3\Weapons_F\Explosives\IED_land_big"; + // }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/CfgWeapons.h b/TO_MERGE/cse/sys_ieds/CfgWeapons.h new file mode 100644 index 0000000000..f5f8ab8adc --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/CfgWeapons.h @@ -0,0 +1,133 @@ +class CfgWeapons { + class ItemCore; + class InventoryItem_Base_F; + class cse_ied_wires: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Wires (IED Material)"; + picture = "\cse_sys_ballistics\basicBallistics\data\weatherMeter.paa"; + descriptionShort = "Necessary material for creating an IED"; + descriptionUse = "Used to connect the detonation device with the explosive"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + class cse_ied_explosive: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Explosive Material (IED Material)"; + picture = "\cse_sys_ballistics\basicBallistics\data\weatherMeter.paa"; + descriptionShort = "Provides the boom."; + descriptionUse = "Makes the IED."; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + class cse_ied_detonator: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Detonator (IED Material)"; + picture = "\cse_sys_ballistics\basicBallistics\data\weatherMeter.paa"; + descriptionShort = "Used to detonate the explosive."; + descriptionUse = "Ensures the explosives goes off when activated."; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + class cse_ied_pressure_plate: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Pressure Plate (IED Material)"; + picture = "\cse_sys_ballistics\basicBallistics\data\weatherMeter.paa"; + descriptionShort = "Pressure plate for creating IEDs"; + descriptionUse = "Pressure plate for creating IEDs"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + class cse_ied_reciever: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Reciever (IED Material)"; + picture = "\cse_sys_ballistics\basicBallistics\data\weatherMeter.paa"; + descriptionShort = "Radio Reciever for creating Radio activated IEDs"; + descriptionUse = "Radio Reciever for creating Radio activated IEDs"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + + + class cse_ied_pressureplate_small: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Pressure Plate IED (Small)"; + picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + descriptionShort = "Pressure Plate IED (Small)"; + descriptionUse = "Pressure Plate IED (Small)"; + model = "\A3\Weapons_F\Explosives\IED_land_small"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + class cse_ied_pressureplate_large: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Pressure Plate IED (Large)"; + picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + descriptionShort = "Pressure Plate IED (Large)"; + descriptionUse = "Pressure Plate IED (Large)"; + model = "\A3\Weapons_F\Explosives\IED_land_big"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + class cse_ied_radio_small: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Radio Triggered IED (Small)"; + picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + descriptionShort = "Radio Triggered IED (Small)"; + descriptionUse = "Radio Triggered IED (Small)"; + model = "\A3\Weapons_F\Explosives\IED_land_small"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + class cse_ied_radio_large: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = "Radio Triggered IED (Large)"; + picture = "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa"; + descriptionShort = "Radio Triggered IED (Large)"; + descriptionUse = "Radio Triggered IED (Large)"; + model = "\A3\Weapons_F\Explosives\IED_land_big"; + class ItemInfo: InventoryItem_Base_F + { + mass=10; + type=201; + }; + }; + +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/Combat_Space_Enhancement.h b/TO_MERGE/cse/sys_ieds/Combat_Space_Enhancement.h new file mode 100644 index 0000000000..1056858eaa --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/Combat_Space_Enhancement.h @@ -0,0 +1,8 @@ +class Combat_Space_Enhancement { + class cfgModules { + class cse_sys_ieds { + init = "call compile preprocessFile 'cse\cse_sys_ieds\init_sys_ieds.sqf';"; + name = "IEDs"; + }; + }; +}; diff --git a/TO_MERGE/cse/sys_ieds/GUI.h b/TO_MERGE/cse/sys_ieds/GUI.h new file mode 100644 index 0000000000..ccb85e5924 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/GUI.h @@ -0,0 +1,2 @@ +#include "ui\define.hpp" +#include "ui\cellphone.hpp" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/config.cpp b/TO_MERGE/cse/sys_ieds/config.cpp new file mode 100644 index 0000000000..ed79dc9966 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/config.cpp @@ -0,0 +1,22 @@ +#define _ARMA_ +class CfgPatches +{ + class cse_sys_ieds + { + units[] = {"cse_thorIII_backpack" /*, "cse_ied_pressureplate_small", "cse_ied_pressureplate_large", "cse_ied_radio_small", "cse_ied_radio_large"*/}; + weapons[] = {}; + requiredVersion = 0.1; + requiredAddons[] = {"cse_f_eh","cse_main"}; + version = "0.10.0_rc"; + author[] = {"Combat Space Enhancement"}; + authorUrl = "http://csemod.com"; + }; +}; + +#include "CfgFunctions.h" +#include "CfgVehicles.h" +#include "CfgWeapons.h" +#include "CfgSounds.h" +#include "Combat_Space_Enhancement.h" +#include "CfgAddOns.h" +#include "GUI.h" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/data/cellphone_background.paa b/TO_MERGE/cse/sys_ieds/data/cellphone_background.paa new file mode 100644 index 0000000000..0570c7d228 Binary files /dev/null and b/TO_MERGE/cse/sys_ieds/data/cellphone_background.paa differ diff --git a/TO_MERGE/cse/sys_ieds/data/icon_cellphone.paa b/TO_MERGE/cse/sys_ieds/data/icon_cellphone.paa new file mode 100644 index 0000000000..01ec6c683a Binary files /dev/null and b/TO_MERGE/cse/sys_ieds/data/icon_cellphone.paa differ diff --git a/TO_MERGE/cse/sys_ieds/functions.sqf b/TO_MERGE/cse/sys_ieds/functions.sqf new file mode 100644 index 0000000000..0ede0250b9 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions.sqf @@ -0,0 +1,23 @@ + +cse_fnc_spawn_ieds_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_spawn_ieds.sqf"; +cse_fnc_spawn_chain_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_spawn_chain.sqf"; +cse_fnc_link_chain_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_link_chain.sqf"; +cse_fnc_thor3_detection_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_thor3_detection.sqf"; +cse_fnc_triggerManGotVisual_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_triggerManGotVisual.sqf"; + + +cse_fnc_checkIEDActivated_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_checkIEDActivated.sqf"; +cse_fnc_checkPressurePlateActivated_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_checkPressurePlateActivated.sqf"; +cse_fnc_checkRadioTriggered_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_checkRadioTriggered.sqf"; + + + +cse_fnc_spotterFlee_IED = compile preprocessFile "cse\cse_sys_ieds\spotter\fnc_spotterFlee.sqf"; +cse_fnc_spotterBehaviour_IED = compile preprocessFile "cse\cse_sys_ieds\spotter\fnc_spotterBehaviour.sqf"; + + +cse_fnc_searchGround_IED = compile preprocessFile "cse\cse_sys_ieds\fnc_searchGround.sqf"; + +cse_fnc_broadcastTHOR3Sound = { + (_this select 0) say3D "beep"; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_cellphone_detonateIED_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_cellphone_detonateIED_IEDS.sqf new file mode 100644 index 0000000000..98a322443f --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_cellphone_detonateIED_IEDS.sqf @@ -0,0 +1,46 @@ +/** + * fn_cellphone_detonateIED_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_display", "_iedInfo"]; +_display = uiNamespace getVariable 'cse_ied_cellphone'; + + +if (isnil "CSE_PLAYER_PLACED_RADIO_IEDS_IEDS") then { + CSE_PLAYER_PLACED_RADIO_IEDS_IEDS = []; +}; + +if (isnil "CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS") then { + CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = 0; +}; + + +if (CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS > count CSE_PLAYER_PLACED_RADIO_IEDS_IEDS) then { + CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = 0; +}; + +if (CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS < 0) then { + CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = (count CSE_PLAYER_PLACED_RADIO_IEDS_IEDS) - 1; +}; + +if !(CSE_PLAYER_PLACED_RADIO_IEDS_IEDS isEqualTo []) then { + _iedInfo = CSE_PLAYER_PLACED_RADIO_IEDS_IEDS select CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS; + _iedLogic = _iedInfo select 0; + + if !([_iedLogic] call cse_fnc_checkIfJammed_IEDS) then { + if (_iedLogic distance player < 3000) then { + [_iedLogic] call cse_fnc_onIEDActivated_IEDS; + CSE_PLAYER_PLACED_RADIO_IEDS_IEDS set [CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS, objNull]; + CSE_PLAYER_PLACED_RADIO_IEDS_IEDS = CSE_PLAYER_PLACED_RADIO_IEDS_IEDS - [objNull]; + CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS - 1; + }; + }; +}; + +[_display] call cse_fnc_onCellPhoneOpened_IEDS; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_checkIEDActivated_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_checkIEDActivated_IEDS.sqf new file mode 100644 index 0000000000..87cee1ec8d --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_checkIEDActivated_IEDS.sqf @@ -0,0 +1,39 @@ +/** + * fn_checkIEDActivated_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_logic","_triggered"]; +_logic = _this select 0; +_triggered = false; + +switch (true) do { + case (_logic getvariable ["iedActivationType",0] == 0): { + if ([_logic] call cse_fnc_checkPressurePlateActivated_IEDS) then { + _triggered = true; + }; + }; + case (_logic getvariable ["iedActivationType",0] == 1): { + if ([_logic] call cse_fnc_checkRadioTriggered_IEDS) then { + _triggered = true; + }; + }; + case (_logic getvariable ["iedActivationType",0] == 2): { + if ([_logic] call cse_fnc_checkPressurePlateActivated_IEDS) then { + _triggered = true; + }; + }; + default { + }; +}; + +if (_triggered) then { + [_logic] call cse_fnc_onIEDActivated_IEDS; +}; + +_triggered \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_checkIfJammed_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_checkIfJammed_IEDS.sqf new file mode 100644 index 0000000000..b458572ce3 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_checkIfJammed_IEDS.sqf @@ -0,0 +1,22 @@ +/** + * fn_checkIfJammed_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_ied", "_radioBlock", "_personsAround"]; +_ied = _this select 0; +_radioBlock = false; +_personsAround = (position _ied) nearEntities [["CaManBase"], 50]; +{ + if ((backpack _x == "cse_thorIII_backpack") && {(_x getvariable ["CSE_THOR_III_PACK_ENABLED_IEDS",false])}) exitwith { + _radioBlock = true; + }; + false; +}count _personsAround; + +_radioBlock \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_checkPressurePlateActivated_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_checkPressurePlateActivated_IEDS.sqf new file mode 100644 index 0000000000..cdca9dc727 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_checkPressurePlateActivated_IEDS.sqf @@ -0,0 +1,34 @@ +/** + * fn_checkPressurePlateActivated_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_pressurePlate","_return","_list","_pos"]; +_pressurePlate = _this select 0; +_return = false; + + _pos = ASLToATL (getPosASL _pressurePlate); + _list = _pos nearEntities [(_pressurePlate getvariable ["activatedForTargets",["Man", "Air", "Car", "Motorcycle", "Tank"]]),3]; + { + if (side _x in (_pressurePlate getvariable ["activatedForSides",[WEST]])) then { + if (_x isKindOf "CaManBase") then { + if (_x distance _pressurePlate < random(1)) then { + _return = true; + }; + } else { + if (_x distance _pressurePlate < (0.5+random(3))) then { + _return = true; + }; + }; + }; + if (_return) exitwith {}; + false; + }count _list; + +_return + diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_checkRadioTriggered_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_checkRadioTriggered_IEDS.sqf new file mode 100644 index 0000000000..c056088b1d --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_checkRadioTriggered_IEDS.sqf @@ -0,0 +1,54 @@ +/** + * fn_checkRadioTriggered_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_ied","_return","_list","_radioBlock","_personsAround","_targetDetected","_triggerMan"]; +_ied = _this select 0; +_return = false; +_targetDetected = false; +_triggerManUnits = _ied getvariable ["cse_ieds_triggerManUnits",[]]; +if ((_triggerManUnits isEqualTo [])) exitwith{false;}; +_list = (position _ied) nearEntities [(_ied getvariable ["activatedForTargets",["CaManBase", "Air", "Car", "Motorcycle", "Tank"]]),5]; +{ + _target = _x; + { + if ([_x, _target] call cse_fnc_triggerManGotVisual_IEDS) then { + if (side _target in (_ied getvariable ["activatedForSides",[WEST]])) then { + _targetDetected = true; + }; + }; + if (_targetDetected) exitwith {}; + }count _triggerManUnits; + if (_targetDetected) exitwith {}; +}count _list; + +if (!(_list isEqualTo []) && _targetDetected) then { + _radioBlock = [_ied] call cse_fnc_checkifJammed_IEDS; + _nearestPerson = _list select 0; + _vehicleNear = false; + { + if (_ied distance _x < (_ied distance _nearestPerson)) then { + _nearestPerson = _x; + }; + if (!(_x iskindof "CaManBase")) then { + _vehicleNear = true; + }; + }foreach _list; + + if (!_radioBlock) then { + if (count _list > 5) then { + _return = true; + } else { + if (((_nearestPerson distance _ied < 1) || _vehicleNear) && random(1) >0.985) then { + _return = true; + }; + }; + }; +}; +_return diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_createIEDObject_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_createIEDObject_IEDS.sqf new file mode 100644 index 0000000000..bb4b8d5179 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_createIEDObject_IEDS.sqf @@ -0,0 +1,31 @@ +/** + * fn_createIEDObject_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define LAND_IEDS ["IEDLandBig_Remote_Ammo", "IEDLandSmall_Remote_Ammo"] +#define URBAN_IEDS ["IEDUrbanBig_Remote_Ammo", "IEDUrbanSmall_Remote_Ammo"] + +private ["_logic","_typeOfIED", "_sizeOfIED", "_heightOfIED", "_iedClass", "_iedCreated"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; + +if (isNull _logic) exitwith { + +}; +_typeOfIED = _logic getvariable ["typeOfIED", 0]; +_sizeOfIED = _logic getvariable ["sizeOfIED", 0]; +_heightOfIED = _logic getvariable ["heightOfIED", 0]; + +_iedClass = switch (_typeOfIED) do { + case 0: { LAND_IEDS select _sizeOfIED}; + case 1: { URBAN_IEDS select _sizeOfIED }; +}; +_iedCreated = _iedClass createVehicle (getPos _logic); +_logic setvariable ["cse_linkedIED_IEDS",_iedCreated, true]; +_iedCreated setPos [getPos _Logic select 0, getPos _Logic select 1, (getPos _Logic select 2) + _heightOfIED]; +[format["CREATED IED: %1", _iedCreated]] call cse_fnc_debug; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_moduleTriggerMan_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_moduleTriggerMan_IEDS.sqf new file mode 100644 index 0000000000..97b9f7c3f7 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_moduleTriggerMan_IEDS.sqf @@ -0,0 +1,16 @@ +/** + * fn_moduleTriggerMan_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_logic", "_units", "_activated", "_totalCollection", "_collection", "_collectObjects"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +_units = [_this,1,[],[[]]] call BIS_fnc_param; +_activated = [_this,2,true,[true]] call BIS_fnc_param; + +if (!local _logic) exitwith {}; diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_module_spawnIED.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_module_spawnIED.sqf new file mode 100644 index 0000000000..be7fa94fdf --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_module_spawnIED.sqf @@ -0,0 +1,84 @@ +/** + * fn_module_spawnIED.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_logic", "_units", "_activated", "_totalCollection", "_collection", "_collectObjects"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +_units = [_this,1,[],[[]]] call BIS_fnc_param; +_activated = [_this,2,true,[true]] call BIS_fnc_param; + +if (!local _logic) exitwith {}; + +_totalCollection = []; +_collectObjects = { + private ["_logic", "_collection"]; + _logic = _this select 0; + _collection = synchronizedObjects _logic; + { + if !(_x in _totalCollection) then { + if (typeOf _x == "cseModule_spawnIEDs") then { + if !(_x getvariable ["cse_master_IED", false]) then { + _x setvariable ["cse_subclass_IED", true]; + _x setvariable ["cse_controlledBy_IED",_logic]; + _totalCollection pushback _x; + [_x] call _collectObjects; + }; + } else { + if (typeOf _x == "cseModule_triggerManLinkIEDS") then { + _list = _x getvariable ["EnableList",""]; + _list = "[" + _list + "]"; + _parsedList = [] call compile _list; + _triggerManList = (_logic getvariable ["cse_ieds_triggerManUnits", []]) + _parsedList; + _logic setvariable ["cse_ieds_triggerManUnits", _triggerManList]; + [format["_triggerManList %1",_triggerManList]] call cse_fnc_debug; + }; + }; + }; + }foreach _collection; +}; + +if !(_logic getvariable ["cse_subclass_IED",false]) then { + _logic setvariable ["cse_master_IED", true]; + [_logic] call _collectObjects; + if (_logic getvariable ["cse_master_IED", false]) then { + _logic setvariable ["cse_iedCollection", (_logic getvariable ["cse_iedCollection",[]]) + _totalCollection]; + [format["%1 I am a master IED. Collection is: %2", _logic, (_logic getvariable ["cse_iedCollection",[]])]] call cse_fnc_debug; + if (isnil "CSE_MASTER_IED_COLLECTION") then { + CSE_MASTER_IED_COLLECTION = []; + }; + CSE_MASTER_IED_COLLECTION pushback _logic; + }; +}; + +[_logic] call cse_fnc_createIEDObject_IEDS; + +_activatedSides = _logic getvariable ["activatedForSides", -1]; +_activatedTargets = _logic getvariable ["activatedForTargets", -1]; + +_activatedTargets = switch (_activatedTargets) do { + case 0: {["CaManBase", "Air", "Car", "Motorcycle", "Tank"]}; + case 1: {["Air", "Car", "Motorcycle", "Tank"]}; + case 2: {["Car", "Motorcycle", "Tank"]}; + case 3: {["Air"]}; + case 4: {["CaManBase"]}; + default {[]}; +}; +_logic setvariable ["activatedForTargets", _activatedTargets]; + +_activatedSides = switch (_activatedSides) do { + case 0: {[west, east, independent, civilian, sideEnemy, sideFriendly]}; + case 1: {[west, sideEnemy]}; + case 2: {[east, sideEnemy]}; + case 3: {[independent, sideEnemy]}; + case 4: {[civilian, sideEnemy]}; + default {[]}; +}; + +_logic setvariable ["activatedForSides", _activatedSides, true]; +_logic setvariable ["iedActivationType", _logic getvariable ["iedActivationType",0], true]; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_monitorIEDs_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_monitorIEDs_IEDS.sqf new file mode 100644 index 0000000000..3b9d63333c --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_monitorIEDs_IEDS.sqf @@ -0,0 +1,40 @@ +/** + * fn_monitorIEDs_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_activated"]; +if !(isnil "CSE_MONITORING_IEDS") exitwith {}; +CSE_MONITORING_IEDS = true; +sleep 1; +if (isnil "CSE_MASTER_IED_COLLECTION") then { + CSE_MASTER_IED_COLLECTION = []; +}; +_code = ' + { + _activated = false; + if !([_x] call cse_fnc_checkIEDActivated_IEDS) then { + { + if ([_x] call cse_fnc_checkIEDActivated_IEDS) exitwith { _activated = true;}; + }foreach (_x getvariable ["cse_iedCollection", []]); + } else { + _activated = true; + }; + if (_activated) exitwith { + CSE_MASTER_IED_COLLECTION deleteAt _foreachIndex; + }; + false; + }count CSE_MASTER_IED_COLLECTION; + + false;'; + +cse_sys_ieds_monitorIEDs_Trigger = createTrigger["EmptyDetector", [0,0,0]]; +cse_sys_ieds_monitorIEDs_Trigger setTriggerActivation ["NONE", "PRESENT", true]; +cse_sys_ieds_monitorIEDs_Trigger setTriggerTimeout [0, 0, 0, false]; +cse_sys_ieds_monitorIEDs_Trigger setTriggerStatements[_code, "", ""]; + diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_monitorPlayerIEDs_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_monitorPlayerIEDs_IEDS.sqf new file mode 100644 index 0000000000..aa55d1203a --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_monitorPlayerIEDs_IEDS.sqf @@ -0,0 +1,40 @@ +/** + * fn_monitorPlayerIEDs_IEDS.sqf + * @Descr: Checks player placed pressure plate IEDs + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + + +private ["_activated"]; +if !(isnil "CSE_MONITORING_PLAYER_IEDS") exitwith {}; +CSE_MONITORING_PLAYER_IEDS = true; +sleep 1; +if (isnil "CSE_PLAYER_PLACED_PRESSURE_IEDS_IEDS") then { + CSE_PLAYER_PLACED_PRESSURE_IEDS_IEDS = []; +}; + +[format["CSE_MONITORING_PLAYER_IEDS"]] call cse_fnc_debug; +_code = ' + { + _activated = false; + if ([_X] call cse_fnc_checkPressurePlateActivated_IEDS) then { + _activated = true; + [_x] call cse_fnc_onIEDActivated_IEDS; + }; + if (_activated || isNull _x) exitwith { + CSE_PLAYER_PLACED_PRESSURE_IEDS_IEDS deleteAt _foreachIndex; + }; + false; + }count CSE_PLAYER_PLACED_PRESSURE_IEDS_IEDS; +'; + + +cse_sys_ieds_monitorPlayerIEDs_Trigger = createTrigger["EmptyDetector", [0,0,0]]; +cse_sys_ieds_monitorPlayerIEDs_Trigger setTriggerActivation ["NONE", "PRESENT", true]; +cse_sys_ieds_monitorPlayerIEDs_Trigger setTriggerTimeout [0, 0, 0, false]; +cse_sys_ieds_monitorPlayerIEDs_Trigger setTriggerStatements[_code, "", ""]; + diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_onCellPhoneOpened_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_onCellPhoneOpened_IEDS.sqf new file mode 100644 index 0000000000..fbd83c30f2 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_onCellPhoneOpened_IEDS.sqf @@ -0,0 +1,53 @@ +/** + * fn_onCellPhoneOpened_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + + +private ["_display"]; +_display = uiNamespace getVariable 'cse_ied_cellphone'; + + +if (isnil "CSE_PLAYER_PLACED_RADIO_IEDS_IEDS") then { + CSE_PLAYER_PLACED_RADIO_IEDS_IEDS = []; +}; + +(_display displayCtrl 10) ctrlSetText "Adres book"; + +if (isnil "CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS") then { + CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = 0; +}; + +if (CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS > count CSE_PLAYER_PLACED_RADIO_IEDS_IEDS) then { + CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = 0; +}; + +if (CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS < 0) then { + CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = (count CSE_PLAYER_PLACED_RADIO_IEDS_IEDS) - 1; +}; +(_display displayCtrl 12) ctrlSetText ""; +(_display displayCtrl 13) ctrlSetText ""; +(_display displayCtrl 14) ctrlSetText ""; + +_ctrlIDC = 12; +_cellphoneBookPointer = CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS; +for [{_EHiterator=0}, {(_EHiterator< 3)}, {_EHiterator=_EHiterator+1}] do { + if (_cellphoneBookPointer >= count CSE_PLAYER_PLACED_RADIO_IEDS_IEDS) then { + _cellphoneBookPointer = 0; + }; + if (_cellphoneBookPointer < 0) then { + _cellphoneBookPointer = (count CSE_PLAYER_PLACED_RADIO_IEDS_IEDS) - 1; + }; + if (_EHiterator < count CSE_PLAYER_PLACED_RADIO_IEDS_IEDS) then { + (_display displayCtrl _ctrlIDC) ctrlSetText format["#%1", ((CSE_PLAYER_PLACED_RADIO_IEDS_IEDS select _cellphoneBookPointer) select 1)]; + _cellphoneBookPointer = _cellphoneBookPointer + 1; + _ctrlIDC = _ctrlIDC + 1; + }; +}; + +(_display displayCtrl 12) ctrlSetbackgroundColor [0,0,0,0.1]; diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_onIEDActivated_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_onIEDActivated_IEDS.sqf new file mode 100644 index 0000000000..2059f50f27 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_onIEDActivated_IEDS.sqf @@ -0,0 +1,46 @@ +/** + * fn_onIEDActivated_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_logic","_chain","_iedLogic", "_trigger", "_getMasterIED"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; + + +_getMasterIED = { + if (_logic getvariable ["cse_subclass_IED",false]) then { + _logic = _logic getvariable ["cse_controlledBy_IED",_logic]; + if (_logic getvariable ["cse_subclass_IED",false]) then { + call _getMasterIED; + }; + }; +}; +call _getMasterIED; + +_chain = _logic getvariable ["cse_iedCollection",[]]; +_chain pushback _logic; +{ + private ["_ied", "_trigger"]; + _iedLogic = _x; + _trigger = _iedLogic getvariable ["cse_linkedIED_IEDS", objNull]; + [_iedLogic,_trigger, _logic] spawn { + _iedLogic = _this select 0; + _trigger = _this select 1; + _master = _this select 2; + if (!isNull _trigger) then { + if (random(1)>0.5 && (_iedLogic != _master)) then { + uisleep (random(2)); + }; + //(_iedLogic getvariable ["explosiveType","R_60mm_HE"]) createVehicle (getPos _iedLogic); + deleteVehicle _iedLogic; + _trigger setDamage 1; + }; + }; +}foreach _chain; + +[format["%1 is triggering ied chain: %1",_logic, _chain]] call cse_fnc_debug; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_placeDownIED_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_placeDownIED_IEDS.sqf new file mode 100644 index 0000000000..67021314d1 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_placeDownIED_IEDS.sqf @@ -0,0 +1,53 @@ +/** + * fn_placeDownIED_IEDS.sqf + * @Descr: Places down an IED (Player side) + * @Author: Glowbal + * + * @Arguments: [type NUMBER (The type of IED.), size NUMBER, activationType NUMBER (1 = radio, 0 = pressure plate)] + * @Return: logic LOGIC Returns the created IED logic + * @PublicAPI: true + */ + +private ["_position", "_logic"]; +_typeOfIED = _this select 0; +_sizeOfIED = _this select 1; +_activationType = _this select 2; +//_position = _this select 3; + + +_position = getPos player; +_logic = (createGroup sideLogic) createUnit ["cse_playerSpawnedIED", _position, [], 0, "FORM"]; +_logic setPos _position; + +_logic setvariable ["typeOfIED", _typeOfIED, true]; +_logic setvariable ["sizeOfIED", _sizeOfIED, true]; +_logic setvariable ["heightOfIED", 0, true]; +_logic setvariable ["iedActivationType", _activationType, true]; + +[_logic] call cse_fnc_createIEDObject_IEDS; + +if (isnil "CSE_PLAYER_PLACED_PRESSURE_IEDS_IEDS") then { + CSE_PLAYER_PLACED_PRESSURE_IEDS_IEDS = []; +}; + +if (isnil "CSE_PLAYER_PLACED_RADIO_IEDS_IEDS") then { + CSE_PLAYER_PLACED_RADIO_IEDS_IEDS = []; +}; +if (isnil "CSE_PLAYER_PLACED_RADIO_IEDS_COUNTER_IEDS") then { + CSE_PLAYER_PLACED_RADIO_IEDS_COUNTER_IEDS = 0; +}; + +if (_activationType != 1) then { + _logic spawn { + hintSilent parseText "You placed down an IED.
IED will be activate in 5 seconds.
"; + uisleep 5; + CSE_PLAYER_PLACED_PRESSURE_IEDS_IEDS pushback _this; + }; +} else { + CSE_PLAYER_PLACED_RADIO_IEDS_COUNTER_IEDS = CSE_PLAYER_PLACED_RADIO_IEDS_COUNTER_IEDS + 1; + CSE_PLAYER_PLACED_RADIO_IEDS_IEDS pushback [_logic, format["IED %1",CSE_PLAYER_PLACED_RADIO_IEDS_COUNTER_IEDS]]; +}; + +[format["fn_placeDownIED_IEDS %1", _logic]] call cse_fnc_debug; + +_logic \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_playThorIIISound_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_playThorIIISound_IEDS.sqf new file mode 100644 index 0000000000..b736c95d9e --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_playThorIIISound_IEDS.sqf @@ -0,0 +1,11 @@ +/** + * fn_playThorIIISound_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +(_this select 0) say3D "cse_thor3_beep1"; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_searchGround_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_searchGround_IEDS.sqf new file mode 100644 index 0000000000..3564f522af --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_searchGround_IEDS.sqf @@ -0,0 +1,46 @@ +/** + * fn_searchGround_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define AVAILABLE_IEDS ["cseModule_spawnIEDs", "cse_playerSpawnedIED"] +#define MAX_SEARCH_DISTANCE 2.5 + +private ["_unit", "_foundIEDS", "_diggedUp", "_pos", "_height"]; +_unit = [_this, 0, objNull, [objNull]] call BIS_fnc_Param; + +_foundIEDS = nearestObjects [_unit, AVAILABLE_IEDS, MAX_SEARCH_DISTANCE]; +_diggedUp = false; +{ + _ied = _x getvariable ["cse_linkedIED_IEDS", objNull]; + if (((getPos _ied) select 2) < 0) then { + if (random(1)>0.1) then { + _diggedUp = true; + }; + }; + if (_diggedUp) exitwith{ + _pos = getPos _ied; + _height = (_pos select 2) + 0.09; + if (_height > 0) then { + _height = 0; + }; + _pos set[2,_height]; + _ied setPos _pos; + }; +}foreach _foundIEDs; + +if (_unit == player) then { + if (_diggedUp) then { + _unit sidechat "You uncover some of an IED"; + _unit sidechat format["Pos: %1",_pos]; + } else { + _unit sidechat "You didn't find anything"; + }; +}; + +true; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_thor3_detection_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_thor3_detection_IEDS.sqf new file mode 100644 index 0000000000..d13c08809c --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_thor3_detection_IEDS.sqf @@ -0,0 +1,28 @@ +if (!isnil "CSE_LAST_TRACKER_THORBEEP_MOMENT") exitwith {}; + +CSE_PLAY_THOR_III_SOUND_IEDS = false; +CSE_THOR_III_PACK_ENABLED_IEDS = true; +player setvariable ["CSE_THOR_III_PACK_ENABLED_IEDS",true,true]; +CSE_LAST_TRACKER_THORBEEP_MOMENT = time; +_code = { + if ((backpack player) == "cse_thorIII_backpack" && {(player getvariable ["CSE_THOR_III_PACK_ENABLED_IEDS", false])}) then { + _foundIEDS = nearestObjects [player, ["cseModule_spawnIEDs", "cse_playerSpawnedIED"], 50]; + { + _distanceToIED = player distance _x; + if (_distanceToIED < 50) exitwith { + if (_X getvariable ["iedActivationType",0] == 1) exitwith { + _timeDifference = (_distanceToIED/50) * 10 * MODIFIER_LOOP_DELAY; + if (time - CSE_LAST_TRACKER_THORBEEP_MOMENT >= (_timeDifference*accTime)) then { + CSE_LAST_TRACKER_THORBEEP_MOMENT = time; + playSound3D ["cse\cse_sys_ieds\sounds\beeps\03_Dull_Short_Mid.wav", player, false, getPos player, 35, 1, 10]; + }; + }; + }; + CSE_LAST_TRACKER_THORBEEP_MOMENT = time; + }count _foundIEDS; + }; +}; + +["cse_thor3TrackerBeeping", [], _code] call cse_fnc_addTaskToPool_f; + +true; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/functions/fn_triggerManGotVisual_IEDS.sqf b/TO_MERGE/cse/sys_ieds/functions/fn_triggerManGotVisual_IEDS.sqf new file mode 100644 index 0000000000..fd400be10b --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/functions/fn_triggerManGotVisual_IEDS.sqf @@ -0,0 +1,22 @@ +/** + * fn_triggerManGotVisual_IEDS.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_triggerMan","_obj","_return"]; +_triggerMan = _this select 0; +_obj = _this select 1; +_return = false; + +if (!(_triggerMan getvariable ["cse_ieds_SpotterFleeing_IEDS",false]) && _triggerMan != _obj && alive _triggerMan) then { + if (_obj distance _triggerMan <350) then { + _triggerMan doWatch _obj; + _return = !(lineIntersects [eyePos _triggerMan, getPos _obj,_triggerMan]); + }; +}; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/icon.paa b/TO_MERGE/cse/sys_ieds/icon.paa new file mode 100644 index 0000000000..976f316c8e Binary files /dev/null and b/TO_MERGE/cse/sys_ieds/icon.paa differ diff --git a/TO_MERGE/cse/sys_ieds/init_sys_ieds.sqf b/TO_MERGE/cse/sys_ieds/init_sys_ieds.sqf new file mode 100644 index 0000000000..a123a5ca36 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/init_sys_ieds.sqf @@ -0,0 +1,37 @@ +/** + * init_sys_ieds.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define IED_ICON "\A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa" + +if (isServer) then { + call cse_fnc_monitorIEDS_IEDS; +}; + +if (hasInterface) then { + CSE_THOR_III_PACK_ENABLED_IEDS = true; + call cse_fnc_thor3_detection_IEDS; + call cse_fnc_monitorPlayerIEDS_IEDS; +}; + +waituntil{!isnil "cse_gui"}; + +_entries = [ + ["Pressure Plate (S)", {([player,"cse_ied_pressureplate_small"] call cse_fnc_hasItem)}, IED_ICON, {closeDialog 0; [0, 1, 0] call cse_fnc_placeDownIED_IEDS; player removeItem "cse_ied_pressureplate_small";}, "Place Pressure plate IED (Small)"], + + ["Pressure Plate (M)", {([player,"cse_ied_pressureplate_large"] call cse_fnc_hasItem)}, IED_ICON, {closeDialog 0; [0, 0, 0] call cse_fnc_placeDownIED_IEDS; player removeItem "cse_ied_pressureplate_large";}, "Place Pressure plate IED (Large)"], + + ["Radio (S)", {([player,"cse_ied_radio_small"] call cse_fnc_hasItem)}, IED_ICON, {closeDialog 0; [0, 1, 1] call cse_fnc_placeDownIED_IEDS; player removeItem "cse_ied_radio_small";}, "Place Radio IED (Small)"], + ["Radio (M)", {([player,"cse_ied_radio_large"] call cse_fnc_hasItem)}, IED_ICON, {closeDialog 0; [0, 0, 1] call cse_fnc_placeDownIED_IEDS; player removeItem "cse_ied_radio_large";}, "Place Radio IED (Large)"], + ["Cell Phone", {([player,"cse_oldphone"] call cse_fnc_hasItem)}, "cse\cse_sys_ieds\data\icon_cellphone.paa", {closeDialog 0; createDialog "cse_ied_cellphone";}, "Use Cell Phone Trigger"] +]; + +["ActionMenu","equipment", _entries ] call cse_fnc_addMultipleEntriesToRadialCategory_F; + +true; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ieds/sounds/beeps/03_Dull_Short_Mid.wav b/TO_MERGE/cse/sys_ieds/sounds/beeps/03_Dull_Short_Mid.wav new file mode 100644 index 0000000000..b8ad2067ba Binary files /dev/null and b/TO_MERGE/cse/sys_ieds/sounds/beeps/03_Dull_Short_Mid.wav differ diff --git a/TO_MERGE/cse/sys_ieds/stringtable.xml b/TO_MERGE/cse/sys_ieds/stringtable.xml new file mode 100644 index 0000000000..0eb106e300 --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/stringtable.xml @@ -0,0 +1,28 @@ + + + + + + + Pressure Plate IED (Small) + IED z zapalnikiem naciskowym (mały) + IED Placa de Presión (Pequeño) + + + Pressure Plate IED (Large) + IED z zapalnikiem naciskowym (duży) + IED Placa de Presión (Grande) + + + Radio IED (Small) + IED z zapalnikiem radiowym (mały) + IED Activación remota (Pequeño) + + + Radio IED (Large) + IED z zapalnikiem radiowym (duży) + IED Activación remota (Grande) + + + + diff --git a/TO_MERGE/cse/sys_ieds/ui/cellphone.hpp b/TO_MERGE/cse/sys_ieds/ui/cellphone.hpp new file mode 100644 index 0000000000..72126be1ca --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/ui/cellphone.hpp @@ -0,0 +1,111 @@ +class cse_ied_cellphone { + idd = 754321; + movingEnable = true; + onLoad = "uiNamespace setVariable ['cse_ied_cellphone', _this select 0]; [_this] call cse_fnc_onCellPhoneOpened_IEDS; ['CSE_RADIAL_MENU', false] call cse_fnc_gui_blurScreen;"; + onUnload = ""; + + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = "0 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "30 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = "cse\cse_sys_ieds\data\cellphone_background.paa"; + }; + }; + class controls { + class labelTextMenu : cse_gui_staticBase { + idc = 10; + x = "5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "18.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "5.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; + text = "SERVICE"; + colorBackground[] = {0,0,0,0.0}; + colorText[] = {0.0, 0.0, 0.0, 1.0}; + style = ST_CENTER; + }; + class labelTextLineOne : labelTextMenu { + idc = 11; + x = "5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "5.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.6)"; + text = ""; + style = ST_LEFT; + }; + class labelTextLineTwo : labelTextLineOne { + idc = 12; + y = "20.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + class labelTextLineThree : labelTextLineOne { + idc = 13; + y = "21 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + class labelTextLineFour : labelTextLineOne { + idc = 14; + y = "21.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + + + class actionCenter : cse_gui_buttonBase { + idc = 30; + text = ""; + x = "6.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "23 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "2.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,0.0)"; + animTextureFocused = "#(argb,8,8,3)color(1,1,1,0.0)"; + animTexturePressed = "#(argb,8,8,3)color(1,1,1,0.0)"; + animTextureDefault = "#(argb,8,8,3)color(1,1,1,0.0)"; + color[] = {1, 1, 1, 1}; + color2[] = {0,0,0, 1}; + colorBackgroundFocused[] = {1,1,1,1}; + colorBackground[] = {1,1,1,1}; + colorbackground2[] = {1,1,1,1}; + colorDisabled[] = {0.5,0.5,0.5,0.8}; + colorFocused[] = {0,0,0,1}; + periodFocus = 1; + periodOver = 1; + action = "[] call cse_fnc_cellphone_detonateIED_IEDS;"; + }; + + class actionButtonLeft : actionCenter { + idc = 31; + text = ""; + x = "5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "24 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "0.9 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + action = ""; + }; + class actionButtonRight_downwards : actionButtonLeft { + idc = 32; + text = ""; + x = "8.3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "24.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "0.9 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + action = "CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS - 1; [_this] call cse_fnc_onCellPhoneOpened_IEDS;"; + }; + class actionButtonRight_up : actionButtonRight_downwards { + idc = 32; + text = ""; + x = "9.3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "23.75 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "0.9 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + action = "CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS = CSE_CELLPHONE_ADRESSBOOK_POINTER_IEDS + 1; [_this] call cse_fnc_onCellPhoneOpened_IEDS;"; + }; + + }; +}; diff --git a/TO_MERGE/cse/sys_ieds/ui/createIED.hpp b/TO_MERGE/cse/sys_ieds/ui/createIED.hpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/TO_MERGE/cse/sys_ieds/ui/define.hpp b/TO_MERGE/cse/sys_ieds/ui/define.hpp new file mode 100644 index 0000000000..c521de470f --- /dev/null +++ b/TO_MERGE/cse/sys_ieds/ui/define.hpp @@ -0,0 +1,797 @@ + +#ifndef CSE_DEFINE_H +#define CSE_DEFINE_H +// define.hpp + +#define true 1 +#define false 0 + +#define CT_STATIC 0 +#define CT_BUTTON 1 +#define CT_EDIT 2 +#define CT_SLIDER 3 +#define CT_COMBO 4 +#define CT_LISTBOX 5 +#define CT_TOOLBOX 6 +#define CT_CHECKBOXES 7 +#define CT_PROGRESS 8 +#define CT_HTML 9 +#define CT_STATIC_SKEW 10 +#define CT_ACTIVETEXT 11 +#define CT_TREE 12 +#define CT_STRUCTURED_TEXT 13 +#define CT_CONTEXT_MENU 14 +#define CT_CONTROLS_GROUP 15 +#define CT_SHORTCUTBUTTON 16 +#define CT_XKEYDESC 40 +#define CT_XBUTTON 41 +#define CT_XLISTBOX 42 +#define CT_XSLIDER 43 +#define CT_XCOMBO 44 +#define CT_ANIMATED_TEXTURE 45 +#define CT_OBJECT 80 +#define CT_OBJECT_ZOOM 81 +#define CT_OBJECT_CONTAINER 82 +#define CT_OBJECT_CONT_ANIM 83 +#define CT_LINEBREAK 98 +#define CT_ANIMATED_USER 99 +#define CT_MAP 100 +#define CT_MAP_MAIN 101 +#define CT_LISTNBOX 102 + +// Static styles +#define ST_POS 0x0F +#define ST_HPOS 0x03 +#define ST_VPOS 0x0C +#define ST_LEFT 0x00 +#define ST_RIGHT 0x01 +#define ST_CENTER 0x02 +#define ST_DOWN 0x04 +#define ST_UP 0x08 +#define ST_VCENTER 0x0c + +#define ST_TYPE 0xF0 +#define ST_SINGLE 0 +#define ST_MULTI 16 +#define ST_TITLE_BAR 32 +#define ST_PICTURE 48 +#define ST_FRAME 64 +#define ST_BACKGROUND 80 +#define ST_GROUP_BOX 96 +#define ST_GROUP_BOX2 112 +#define ST_HUD_BACKGROUND 128 +#define ST_TILE_PICTURE 144 +#define ST_WITH_RECT 160 +#define ST_LINE 176 + +#define ST_SHADOW 0x100 +#define ST_NO_RECT 0x200 // this style works for CT_STATIC in conjunction with ST_MULTI +#define ST_KEEP_ASPECT_RATIO 0x800 + +#define ST_TITLE ST_TITLE_BAR + ST_CENTER + +// Slider styles +#define SL_DIR 0x400 +#define SL_VERT 0 +#define SL_HORZ 0x400 + +#define SL_TEXTURES 0x10 + +// Listbox styles +#define LB_TEXTURES 0x10 +#define LB_MULTI 0x20 +#define FontCSE "PuristaMedium" + +class cse_gui_backgroundBase { + type = CT_STATIC; + idc = -1; + style = ST_PICTURE; + colorBackground[] = {0,0,0,0}; + colorText[] = {1, 1, 1, 1}; + font = FontCSE; + text = ""; + sizeEx = 0.032; +}; +class cse_gui_editBase +{ + access = 0; + type = 2; + x = 0; + y = 0; + h = 0.04; + w = 0.2; + colorBackground[] = + { + 0, + 0, + 0, + 1 + }; + colorText[] = + { + 0.95, + 0.95, + 0.95, + 1 + }; + colorSelection[] = + { + "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", + "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", + "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", + 1 + }; + autocomplete = ""; + text = ""; + size = 0.2; + style = "0x00 + 0x40"; + font = "PuristaMedium"; + shadow = 2; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorDisabled[] = + { + 1, + 1, + 1, + 0.25 + }; +}; + + + +class cse_gui_buttonBase { + idc = -1; + type = 16; + style = ST_LEFT; + text = ""; + action = ""; + x = 0.0; + y = 0.0; + w = 0.25; + h = 0.04; + size = 0.03921; + sizeEx = 0.03921; + color[] = {1.0, 1.0, 1.0, 1}; + color2[] = {1.0, 1.0, 1.0, 1}; + /*colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.5])"}; + colorbackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.4}; + colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25}; + colorFocused[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])", 0.8}; + colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.8}; + */ + + colorBackground[] = {1,1,1,0.95}; + colorbackground2[] = {1,1,1,0.95}; + colorDisabled[] = {1,1,1,0.6}; + colorFocused[] = {1,1,1,1}; + colorBackgroundFocused[] = {1,1,1,1}; + periodFocus = 1.2; + periodOver = 0.8; + default = false; + class HitZone { + left = 0.00; + top = 0.00; + right = 0.00; + bottom = 0.00; + }; + + class ShortcutPos { + left = 0.00; + top = 0.00; + w = 0.00; + h = 0.00; + }; + + class TextPos { + left = 0.002; + top = 0.0004; + right = 0.0; + bottom = 0.00; + }; + textureNoShortcut = ""; + animTextureNormal = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTextureDisabled = "cse\cse_gui\data\buttonDisabled_gradient.paa"; + animTextureOver = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTextureFocused = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTexturePressed = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTextureDefault = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + period = 0.5; + font = FontCSE; + soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; + soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.0,0}; + soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.07,1}; + soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1}; + class Attributes { + font = FontCSE; + color = "#E5E5E5"; + align = "center"; + shadow = "true"; + }; + class AttributesImage { + font = FontCSE; + color = "#E5E5E5"; + align = "left"; + shadow = "true"; + }; +}; + +class cse_gui_RscProgress { + type = 8; + style = 0; + colorFrame[] = {1,1,1,0.7}; + colorBar[] = {1,1,1,0.7}; + texture = "#(argb,8,8,3)color(1,1,1,0.7)"; + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; +}; + + +class cse_gui_staticBase { + idc = -1; + type = CT_STATIC; + x = 0.0; + y = 0.0; + w = 0.183825; + h = 0.104575; + style = ST_LEFT; + font = FontCSE; + sizeEx = 0.03921; + colorText[] = {0.95, 0.95, 0.95, 1.0}; + colorBackground[] = {0, 0, 0, 0}; + text = ""; +}; + +class RscListBox; +class cse_gui_listBoxBase : RscListBox{ + type = CT_LISTBOX; + style = ST_MULTI; + font = FontCSE; + sizeEx = 0.03921; + color[] = {1, 1, 1, 1}; + colorText[] = {0.543, 0.5742, 0.4102, 1.0}; + colorScrollbar[] = {0.95, 0.95, 0.95, 1}; + colorSelect[] = {0.95, 0.95, 0.95, 1}; + colorSelect2[] = {0.95, 0.95, 0.95, 1}; + colorSelectBackground[] = {0, 0, 0, 1}; + colorSelectBackground2[] = {0.543, 0.5742, 0.4102, 1.0}; + colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25}; + period = 1.2; + rowHeight = 0.03; + colorBackground[] = {0, 0, 0, 1}; + maxHistoryDelay = 1.0; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + soundSelect[] = {"",0.1,1}; + soundExpand[] = {"",0.1,1}; + soundCollapse[] = {"",0.1,1}; + class ListScrollBar { + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + autoScrollDelay = 5; + autoScrollEnabled = 0; + autoScrollRewind = 0; + autoScrollSpeed = -1; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + height = 0; + scrollSpeed = 0.06; + shadow = 0; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + width = 0; + }; + class ScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = ""; + arrowFull = ""; + arrowEmpty = ""; + border = ""; + }; +}; + + +class cse_gui_listNBox { + access = 0; + type = CT_LISTNBOX;// 102; + style =ST_MULTI; + w = 0.4; + h = 0.4; + font = FontCSE; + sizeEx = 0.031; + + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + columns[] = {0.0}; + color[] = {1, 1, 1, 1}; + + rowHeight = 0.03; + colorBackground[] = {0, 0, 0, 0.2}; + colorText[] = {1,1, 1, 1.0}; + colorScrollbar[] = {0.95, 0.95, 0.95, 1}; + colorSelect[] = {0.95, 0.95, 0.95, 1}; + colorSelect2[] = {0.95, 0.95, 0.95, 1}; + colorSelectBackground[] = {0, 0, 0, 0.0}; + colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + rows = 1; + + drawSideArrows = 0; + idcLeft = -1; + idcRight = -1; + maxHistoryDelay = 1; + soundSelect[] = {"", 0.1, 1}; + period = 1; + shadow = 2; + class ScrollBar { + arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + border = "#(argb,8,8,3)color(1,1,1,1)"; + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + thumb = "#(argb,8,8,3)color(1,1,1,1)"; + }; + class ListScrollBar { + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + autoScrollDelay = 5; + autoScrollEnabled = 0; + autoScrollRewind = 0; + autoScrollSpeed = -1; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + height = 0; + scrollSpeed = 0.06; + shadow = 0; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + width = 0; + }; +}; + + +class RscCombo; +class cse_gui_comboBoxBase: RscCombo { + idc = -1; + type = 4; + style = "0x10 + 0x200"; + x = 0; + y = 0; + w = 0.3; + h = 0.035; + color[] = {0,0,0,0.6}; + colorActive[] = {1,0,0,1}; + colorBackground[] = {0,0,0,1}; + colorDisabled[] = {1,1,1,0.25}; + colorScrollbar[] = {1,0,0,1}; + colorSelect[] = {0,0,0,1}; + colorSelectBackground[] = {1,1,1,0.7}; + colorText[] = {1,1,1,1}; + + arrowEmpty = ""; + arrowFull = ""; + wholeHeight = 0.45; + font = FontCSE; + sizeEx = 0.031; + soundSelect[] = {"\A3\ui_f\data\sound\RscCombo\soundSelect",0.1,1}; + soundExpand[] = {"\A3\ui_f\data\sound\RscCombo\soundExpand",0.1,1}; + soundCollapse[] = {"\A3\ui_f\data\sound\RscCombo\soundCollapse",0.1,1}; + maxHistoryDelay = 1.0; + class ScrollBar + { + color[] = {0.3,0.3,0.3,0.6}; + colorActive[] = {0.3,0.3,0.3,1}; + colorDisabled[] = {0.3,0.3,0.3,0.3}; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + border = ""; + }; + class ComboScrollBar { + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + autoScrollDelay = 5; + autoScrollEnabled = 0; + autoScrollRewind = 0; + autoScrollSpeed = -1; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + color[] = {0.3,0.3,0.3,0.6}; + colorActive[] = {0.3,0.3,0.3,1}; + colorDisabled[] = {0.3,0.3,0.3,0.3}; + height = 0; + scrollSpeed = 0.06; + shadow = 0; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + width = 0; + }; +}; + + + +class cse_gui_mapBase { + moveOnEdges = 1; + x = "SafeZoneXAbs"; + y = "SafeZoneY + 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "SafeZoneWAbs"; + h = "SafeZoneH - 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + type = 100; // Use 100 to hide markers + style = 48; + shadow = 0; + + ptsPerSquareSea = 5; + ptsPerSquareTxt = 3; + ptsPerSquareCLn = 10; + ptsPerSquareExp = 10; + ptsPerSquareCost = 10; + ptsPerSquareFor = 9; + ptsPerSquareForEdge = 9; + ptsPerSquareRoad = 6; + ptsPerSquareObj = 9; + showCountourInterval = 0; + scaleMin = 0.001; + scaleMax = 1.0; + scaleDefault = 0.16; + maxSatelliteAlpha = 0.85; + alphaFadeStartScale = 0.35; + alphaFadeEndScale = 0.4; + colorBackground[] = {0.969,0.957,0.949,1.0}; + colorSea[] = {0.467,0.631,0.851,0.5}; + colorForest[] = {0.624,0.78,0.388,0.5}; + colorForestBorder[] = {0.0,0.0,0.0,0.0}; + colorRocks[] = {0.0,0.0,0.0,0.3}; + colorRocksBorder[] = {0.0,0.0,0.0,0.0}; + colorLevels[] = {0.286,0.177,0.094,0.5}; + colorMainCountlines[] = {0.572,0.354,0.188,0.5}; + colorCountlines[] = {0.572,0.354,0.188,0.25}; + colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6}; + colorCountlinesWater[] = {0.491,0.577,0.702,0.3}; + colorPowerLines[] = {0.1,0.1,0.1,1.0}; + colorRailWay[] = {0.8,0.2,0.0,1.0}; + colorNames[] = {0.1,0.1,0.1,0.9}; + colorInactive[] = {1.0,1.0,1.0,0.5}; + colorOutside[] = {0.0,0.0,0.0,1.0}; + colorTracks[] = {0.84,0.76,0.65,0.15}; + colorTracksFill[] = {0.84,0.76,0.65,1.0}; + colorRoads[] = {0.7,0.7,0.7,1.0}; + colorRoadsFill[] = {1.0,1.0,1.0,1.0}; + colorMainRoads[] = {0.9,0.5,0.3,1.0}; + colorMainRoadsFill[] = {1.0,0.6,0.4,1.0}; + colorGrid[] = {0.1,0.1,0.1,0.6}; + colorGridMap[] = {0.1,0.1,0.1,0.6}; + colorText[] = {1, 1, 1, 0.85}; +font = "PuristaMedium"; +sizeEx = 0.0270000; +stickX[] = {0.20, {"Gamma", 1.00, 1.50} }; +stickY[] = {0.20, {"Gamma", 1.00, 1.50} }; +onMouseButtonClick = ""; +onMouseButtonDblClick = ""; + + fontLabel = "PuristaMedium"; + sizeExLabel = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + fontGrid = "TahomaB"; + sizeExGrid = 0.02; + fontUnits = "TahomaB"; + sizeExUnits = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + fontNames = "PuristaMedium"; + sizeExNames = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2"; + fontInfo = "PuristaMedium"; + sizeExInfo = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + fontLevel = "TahomaB"; + sizeExLevel = 0.02; + text = "#(argb,8,8,3)color(1,1,1,1)"; + class ActiveMarker { + color[] = {0.30, 0.10, 0.90, 1.00}; + size = 50; + }; + class Legend + { + x = "SafeZoneX + ( ((safezoneW / safezoneH) min 1.2) / 40)"; + y = "SafeZoneY + safezoneH - 4.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "3.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + font = "PuristaMedium"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + colorBackground[] = {1,1,1,0.5}; + color[] = {0,0,0,1}; + }; + class Task + { + icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa"; + iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa"; + iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa"; + iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa"; + iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa"; + color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"}; + colorCreated[] = {1,1,1,1}; + colorCanceled[] = {0.7,0.7,0.7,1}; + colorDone[] = {0.7,1,0.3,1}; + colorFailed[] = {1,0.3,0.2,1}; + size = 27; + importance = 1; + coefMin = 1; + coefMax = 1; + }; + class Waypoint + { + icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa"; + color[] = {0,0,0,1}; + size = 20; + importance = "1.2 * 16 * 0.05"; + coefMin = 0.900000; + coefMax = 4; + }; + class WaypointCompleted + { + icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa"; + color[] = {0,0,0,1}; + size = 20; + importance = "1.2 * 16 * 0.05"; + coefMin = 0.900000; + coefMax = 4; + }; + class CustomMark + { + icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa"; + size = 24; + importance = 1; + coefMin = 1; + coefMax = 1; + color[] = {0,0,0,1}; + }; + class Command + { + icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa"; + size = 18; + importance = 1; + coefMin = 1; + coefMax = 1; + color[] = {1,1,1,1}; + }; + class Bush + { + icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; + color[] = {0.45,0.64,0.33,0.4}; + size = "14/2"; + importance = "0.2 * 14 * 0.05 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class Rock + { + icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa"; + color[] = {0.1,0.1,0.1,0.8}; + size = 12; + importance = "0.5 * 12 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class SmallTree + { + icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; + color[] = {0.45,0.64,0.33,0.4}; + size = 12; + importance = "0.6 * 12 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class Tree + { + icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; + color[] = {0.45,0.64,0.33,0.4}; + size = 12; + importance = "0.9 * 16 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class busstop + { + icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class fuelstation + { + icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class hospital + { + icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class church + { + icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class lighthouse + { + icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class power + { + icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class powersolar + { + icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class powerwave + { + icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class powerwind + { + icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class quay + { + icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class shipwreck + { + icon = "\A3\ui_f\data\map\mapcontrol\shipwreck_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class transmitter + { + icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class watertower + { + icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class Cross + { + icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {0,0,0,1}; + }; + class Chapel + { + icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {0,0,0,1}; + }; + class Bunker + { + icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa"; + size = 14; + importance = "1.5 * 14 * 0.05"; + coefMin = 0.25; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Fortress + { + icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa"; + size = 16; + importance = "2 * 16 * 0.05"; + coefMin = 0.25; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Fountain + { + icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa"; + size = 11; + importance = "1 * 12 * 0.05"; + coefMin = 0.25; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Ruin + { + icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa"; + size = 16; + importance = "1.2 * 16 * 0.05"; + coefMin = 1; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Stack + { + icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa"; + size = 20; + importance = "2 * 16 * 0.05"; + coefMin = 0.9; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Tourism + { + icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa"; + size = 16; + importance = "1 * 16 * 0.05"; + coefMin = 0.7; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class ViewTower + { + icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa"; + size = 16; + importance = "2.5 * 16 * 0.05"; + coefMin = 0.5; + coefMax = 4; + color[] = {0,0,0,1}; + }; +}; + +#endif \ No newline at end of file