diff --git a/BIS_AddonInfo.hpp b/BIS_AddonInfo.hpp
new file mode 100644
index 0000000..317162a
--- /dev/null
+++ b/BIS_AddonInfo.hpp
@@ -0,0 +1,5 @@
+class BIS_AddonInfo
+{
+ author="";
+ timepacked="1587257288";
+};
diff --git a/ChangeLog.txt b/ChangeLog.txt
new file mode 100644
index 0000000..9d304a1
--- /dev/null
+++ b/ChangeLog.txt
@@ -0,0 +1,57 @@
+Simple Single Player Cheat Menu by Benargee
+This work is licensed under the Arma Public License Share Alike http://www.bistudio.com/community/licenses/arma-public-license-share-alike
+
+---v1.0
+--March 19, 2015
+-Initial Release
+
+---v1.0.1
+--March 19, 2015
+-Changed All "InitTest" file paths to "SSPCM". Mod no longer broken
+
+---v1.0.2
+--March 20, 2015
+-Added a delay to menu init script. Should hopefully fix the problem a few people have been having
+-Redifined a few functions to proper names BRG_fnc_postInit and BRG_fnc_preInit
+
+---v1.0.3
+--March 22, 2015
+Added: Support for multiple units. When player changes unit, cheat menu will now function properly
+Fixed: Second attempt at fixing the issue where menu will not show up for some users. Mod will check every 4 seconds to see if menu is visible. This will insure it always appears. Wait up to 10 seconds for menu to appear.
+Fixed: Changed some more function definitions using CfgFunctions.
+Known Issue: When player switches unit, old cheat attributes will still be active. This may or may not be an issue for users. Optional solution is planned.
+Known Issue: Cheat menu may not work when loading a game save. Only works reliably in freshly started missions. Thank you nubmarine for pointing that out!
+
+---v1.1.0
+--March 25, 2015
+Added: Bullet Cam
+Added: Bullet Tracing
+Added: Disable fatigue
+Added: Infinite ammo
+Added: Vehicle invincibility (under invincibility)
+Changed: "Ignored by enemy" to "Side relations"
+Added: Friendly to allies and Hostile to everyone
+Added: Spawn in Jet. Player will spawn in jet that is in flight.
+Added: 3D Teleport. Now you can teleport where you look
+
+---v1.1.5
+--June 1, 2015
+Fixed: All addon content should be available with Zeus.
+Added: Button in map screen to manually initialize SSPCM when resuming a mission.
+Fixed: When spawning in flying jet, map is now automatically closed.
+Fixed: When teleporting, player will now be teleported with their vehicle. This can optionally be changed to previous behaviour.
+Added: Link to Zeus field manual in Zeus sub-menu. this is especially helpful for players new to Zeus and Arma.
+Added: Virtual Garage menu option. Thank you tortuosit for laying out the code for me!
+Added: Ability to open debug console in map screen in addition to existing action menu option.
+
+---v1.1.6 (Contact Menu Fix)
+--August 10, 2019
+Added: Experimental UI menu to Contact Only
+Changed: Refactored a lot of code to allow old and new menu to coexist.
+Known bug: Spawn in jet doesn't entirely work. Use at own risk.
+Known bug: Various script errors but nothing that seems to effect functionality
+
+---v1.1.7 (Old Man Hotfix)
+--April 19, 2020
+Changed: Now loads new cheat menu in Old Man, Tanoa mission
+Note: No other changes as this is a quick fix for Old Man. Other fixes will be left for later verisons.
\ No newline at end of file
diff --git a/CheatDiary/CheatInit.sqf b/CheatDiary/CheatInit.sqf
new file mode 100644
index 0000000..9ac406e
--- /dev/null
+++ b/CheatDiary/CheatInit.sqf
@@ -0,0 +1,16 @@
+//Script Created By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+
+//Check if cheat menu enabled. Supports ability for player to switch units.
+BRG_MenuLoop = true;
+
+0 Spawn {
+ while {BRG_MenuLoop} do
+ {
+ if (!(player diarySubjectExists "BRG_CheatMenu")) then {[] spawn BRG_fnc_cheatMenu;
+
+ //if ((!BRG_MPNotified) and (isMultiplayer) and (!serverCommandAvailable "#logout")) then {[] spawn BRG_fnc_MPCheatNotif};//only on multiplayer and if player isnt an admin
+
+ };
+ sleep 4;
+ };
+};
\ No newline at end of file
diff --git a/CheatDiary/CheatMenu.sqf b/CheatDiary/CheatMenu.sqf
new file mode 100644
index 0000000..535ba4e
--- /dev/null
+++ b/CheatDiary/CheatMenu.sqf
@@ -0,0 +1,41 @@
+//Script Created By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+//TODO: Change all BRG to BNRG.
+//--------//Bottom of list//--------//
+
+sleep 1;//test
+
+player createDiarySubject ["BRG_CheatMenu","Cheats!"];
+
+//Info
+ "diary" call BRG_fnc_CMInfo;
+//separator
+ player createDiaryRecord ["BRG_CheatMenu", ["==========","Move along, nothing to see here."]];
+//Zeus
+ "diary" call BRG_fnc_CMZeus;
+//Virtual Garage
+ "diary" call BRG_fnc_CMVGarage;
+//Virtual Arsenal
+ "diary" call BRG_fnc_CMVArsenal;
+//Teleport
+ "diary" call BRG_fnc_CMTeleport;
+//Spawn in Flying Jet
+ "diary" call BRG_fnc_CMFlyingJet;
+//Side relations
+ "diary" call BRG_fnc_CMSideRelations;
+//Invincibility
+ "diary" call BRG_fnc_CMInvincible;
+//Infinite Ammo
+ "diary" call BRG_fnc_CMInfAmmo;
+//Fatigue
+ "diary" call BRG_fnc_CMFatigue;
+//Debug Console
+ "diary" call BRG_fnc_CMDebug;
+//Bullet Tracing
+ "diary" call BRG_fnc_CMBulletTracing;
+//Bullet Cam
+ "diary" call BRG_fnc_CMBulletCam;
+
+//--------//Top of list//--------//
+
+
+
diff --git a/CheatDiary/Options/BulletCam.sqf b/CheatDiary/Options/BulletCam.sqf
new file mode 100644
index 0000000..19c63c6
--- /dev/null
+++ b/CheatDiary/Options/BulletCam.sqf
@@ -0,0 +1,33 @@
+if (isNil "BRG_BulletCam_init") then {
+ BRG_BulletCam_init = true;
+
+ BRG_BulletCamStatus = false;//prevents multiple eventhandler entries
+
+ BRG_BulletCamOn = {
+ if (!BRG_BulletCamStatus) then {
+ BRG_BulletCamStatus = true;
+ BRG_BulletCamID = call BRG_fnc_BulletCamBasic;
+ };
+ hint 'Bullet cam ENABLED';
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 uses BulletCam", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_BulletCamOff = {
+ BRG_BulletCamStatus = false;
+ player removeEventHandler ["fired", BRG_BulletCamID];
+ hint 'Bullet cam DISABLED';
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Bullet Cam", "Bullet Cam Enabled Disabled
+
+ Press the SPACE bar at any time to interrupt the bullet camera and return to player camera.
+
+ Warning: During campaign, bullet camera may stutter.
+ "]];
+ };
+ case "bulletcamon":{[] call BRG_BulletCamOn};
+ case "bulletcamoff":{[] call BRG_BulletCamOff};
+};
diff --git a/CheatDiary/Options/BulletTracing.sqf b/CheatDiary/Options/BulletTracing.sqf
new file mode 100644
index 0000000..9a2ed03
--- /dev/null
+++ b/CheatDiary/Options/BulletTracing.sqf
@@ -0,0 +1,36 @@
+if (isNil "BRG_TraceBullets_init") then {
+ BRG_TraceBullets_init = true;
+
+ BRG_TraceBullets = {
+ [player, 0] spawn BIS_fnc_traceBullets;
+ [player, _this] spawn BIS_fnc_traceBullets;
+ hint format ['Tracing the last %1 bullets at a time',_this];
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 uses BulletTracing", PUB_PN] remoteExec ["systemChat"];
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Bullet Tracing", "
+ Choose the amount of bullets you want traced:
+ Off
+ 1
+ 5
+ 10
+ 30
+ 50
+ 100
+ NOTE: Currently works only for player in a single instance. This is a limitation of an Arma 3 function, not SSPCM.
+ WARNING: Tracing large amounts of bullets may cause performance issues.
+ "]];
+ };
+ default {
+ if (typeName _this == "SCALAR") then {
+ _this spawn BRG_TraceBullets;
+ };
+ };
+};
+
+
+
+
\ No newline at end of file
diff --git a/CheatDiary/Options/Debug.sqf b/CheatDiary/Options/Debug.sqf
new file mode 100644
index 0000000..ace0b7f
--- /dev/null
+++ b/CheatDiary/Options/Debug.sqf
@@ -0,0 +1,32 @@
+if (isNil "BRG_Debug_init") then {
+ BRG_Debug_init = true;
+
+ BRG_debStatus = false;//prevents multiple action menu entries
+ BRG_DebugOpenInMap = {
+ (finddisplay 12) createdisplay 'RscDisplayDebugPublic';
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 uses Console", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_DebugOn = {
+ if (!BRG_debStatus) then {
+ BRG_debStatus = true;
+ BRG_DebugactID = player addAction ["Debug Console", "(finddisplay 46) createdisplay 'RscDisplayDebugPublic';"];
+ };
+ hint 'Debug Console action menu ENABLED';
+ };
+
+ BRG_DebugOff = {
+ BRG_debStatus = false;
+ player removeAction BRG_DebugactID;
+ hint 'Debug Console action menu DISABLED';
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Debug Console", "Debug Console Open Enabled Disabled"]];
+ };
+ case "debug_open":{[] call BRG_DebugOpenInMap};
+ case "debug_enable":{[] call BRG_DebugOn};
+ case "debug_disable":{[] call BRG_DebugOff};
+};
\ No newline at end of file
diff --git a/CheatDiary/Options/Fatigue.sqf b/CheatDiary/Options/Fatigue.sqf
new file mode 100644
index 0000000..6882b78
--- /dev/null
+++ b/CheatDiary/Options/Fatigue.sqf
@@ -0,0 +1,23 @@
+if (isNil "BRG_Fatigue_init") then {
+ BRG_Fatigue_init = true;
+
+ BRG_FatigueOn = {
+ player enableFatigue true;
+ hint 'Player fatigue ENABLED';
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 reenabled stamina", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_FatigueOff = {
+ player enableFatigue false;
+ hint 'Player fatigue DISABLED';
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 disabled stamina", PUB_PN] remoteExec ["systemChat"];
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Fatigue", "Fatigue Enabled Disabled"]];
+ };
+ case "fatigueon":{[] call BRG_FatigueOn};
+ case "fatigueoff":{[] call BRG_FatigueOff};
+};
\ No newline at end of file
diff --git a/CheatDiary/Options/FlyingJet.sqf b/CheatDiary/Options/FlyingJet.sqf
new file mode 100644
index 0000000..5777e2f
--- /dev/null
+++ b/CheatDiary/Options/FlyingJet.sqf
@@ -0,0 +1,39 @@
+//TODO: Make aircraft selection dynamic to support any future addons or user mods.
+//Currently bugged in Contact. Plane switching doesnt work well. Might be from Jet DLC and ejection seats.
+if (isNil "BRG_SIJ_init") then {
+ BRG_SIJ_init = true;
+
+ BRG_SIJetAlt = 300;//default altitude
+ BRG_SIJ_WipeOut = "B_Plane_CAS_01_F";
+ BRG_SIJ_Neophron = "O_Plane_CAS_02_F";
+ BRG_SIJ_Buzzard_CAS = "I_Plane_Fighter_03_CAS_F";
+ BRG_SIJ_Buzzard_AA = "I_Plane_Fighter_03_AA_F";
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Spawn in Jet",
+ "Spawn in a flying Jet. Choose a jet:
+ A-164 WipeOut
+ To-199 Neophron
+ A-143 Buzzard CAS
+ A-143 Buzzard AA
+ Starting Altitude:
+ 100m
+ 300m
+ 500m
+ 1000m
+ 2000m
+
+ "]];
+ };
+ case"wipeout":{[BRG_SIJetAlt,BRG_SIJ_WipeOut] call BRG_fnc_spawnInJet};
+ case"neophron":{[BRG_SIJetAlt,BRG_SIJ_Neophron] call BRG_fnc_spawnInJet};
+ case"buzzardcas":{[BRG_SIJetAlt,BRG_SIJ_Buzzard_CAS] call BRG_fnc_spawnInJet};
+ case"buzzardaa":{[BRG_SIJetAlt,BRG_SIJ_Buzzard_AA] call BRG_fnc_spawnInJet};
+ default{
+ if (typeName _this == "SCALAR") then {
+ BRG_SIJetAlt = _this;
+ };
+ };
+};
diff --git a/CheatDiary/Options/InfAmmo.sqf b/CheatDiary/Options/InfAmmo.sqf
new file mode 100644
index 0000000..5934162
--- /dev/null
+++ b/CheatDiary/Options/InfAmmo.sqf
@@ -0,0 +1,31 @@
+if (isNil "BRG_InfAmmo_init") then {
+ BRG_InfAmmo_init = true;
+
+ BRG_InfAmmo = false;//prevents multiple eventhandler entries
+ BRG_InfAmmoOn = {
+ if (!BRG_InfAmmo) then {
+ BRG_InfAmmo = true;
+ BRG_InfAmmoID = player addeventhandler ["fired", {(_this select 0) setvehicleammo 1}];
+ };
+ hint 'Infinite ammo ENABLED';
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 uses InfiniteAmmo", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_InfAmmoOff = {
+ BRG_InfAmmo = false; player removeEventHandler ["fired", BRG_InfAmmoID];
+ hint 'Infinite ammo DISABLED';
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Infinite Ammo", "Infinite Ammo Enabled Disabled
+ NOTICE: Currently this feature works with handguns and primary weapons only. This is due behaviour of an Arma 3 command. This might be fixed in a future mod update."]];
+ };
+ case "InfAmmoOn":{[] call BRG_InfAmmoOn};
+ case "InfAmmoOff":{[] call BRG_InfAmmoOff};
+
+};
+
+
+
diff --git a/CheatDiary/Options/Info.sqf b/CheatDiary/Options/Info.sqf
new file mode 100644
index 0000000..55aac05
--- /dev/null
+++ b/CheatDiary/Options/Info.sqf
@@ -0,0 +1,20 @@
+BRG_LinkBISForum = {["Click: http://forums.bistudio.com/showthread.php?190017-Simple-Single-Player-Cheat-Menu","Bohemia Interactive Forum page", False, True] spawn BIS_fnc_guiMessage;};
+BRG_LinkArmaholic = {["Click: http://www.armaholic.com/page.php?id=28400","Armaholic page", False, True] spawn BIS_fnc_guiMessage;};
+BRG_LinkSteam = {["Click: http://steamcommunity.com/sharedfiles/filedetails/?id=410206202","Steam Workshop page", False, True] spawn BIS_fnc_guiMessage;};
+BRG_LinkPW6 = {["Click: http://play.withsix.com/arma-3/mods/nFbxvKMmfkissfP66MhBBA/Simple-Single-Player-Cheat-Menu","Play With Six Page", False, True] spawn BIS_fnc_guiMessage;};
+BRG_LinkMyWiki = {["Click: http://wiki.benargee.com/Simple_Single_Player_Cheat_Menu","My Wiki Page", False, True] spawn BIS_fnc_guiMessage;};
+BRG_LinkArmaCheats = {["Click: https://community.bistudio.com/wiki/ArmA:_Cheats","My Wiki Page", False, True] spawn BIS_fnc_guiMessage;};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Information",("
+ SSPCM v" + (gettext (configfile >> "CfgPatches" >> "SSPCM" >> "versionStr")) +"
+ Bohemia Interactive Forum page
+ Armaholic page
+ Steam Workshop page
+ Play With Six Page
+ My Wiki Page
+ Standard Arma 3 cheats
+ ")]];
+ };
+};
\ No newline at end of file
diff --git a/CheatDiary/Options/Invincible.sqf b/CheatDiary/Options/Invincible.sqf
new file mode 100644
index 0000000..011cda5
--- /dev/null
+++ b/CheatDiary/Options/Invincible.sqf
@@ -0,0 +1,78 @@
+if (isNil "BRG_Invicibility_init") then {
+ BRG_Invicibility_init = true;
+
+ BRG_InvincibilityOn =
+ {
+ player allowDamage false;
+ player setdamage 0;
+ hint 'Invincibility ENABLED';
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 uses Invincibility", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_InvincibilityOff =
+ {
+ player allowDamage true;
+ hint 'Invincibility DISABLED'
+ };
+ //---vehicle//
+ BRG_InvincibilityVehOn =
+ {
+ if (!(vehicle player == player)) then
+ {
+ (vehicle player) allowDamage false;
+ (vehicle player) setdamage 0;
+ hint 'Current vehicle invincibility ENABLED'
+ }
+ else
+ {
+ hint "You must be in a vehicle to activate this feature"
+ };
+ };
+ BRG_InvincibilityVehOff =
+ {
+ if (!(vehicle player == player)) then
+ {
+ (vehicle player) allowDamage true;
+ hint 'Current vehicle invincibility DISABLED'
+ }
+ else
+ {
+ hint "You must be in a vehicle to activate this feature"
+ };
+ };
+
+ //group
+ BRG_GroupInvincibilityOn =
+ {
+ hint 'Group invincibility ENABLED';
+ {
+ _x allowDamage false;
+ _x setdamage 0;
+ } foreach ((units (group player)) - [player]);
+ };
+
+ BRG_GroupInvincibilityOff =
+ {
+ hint 'Group invincibility DISABLED';
+ {
+ _x allowDamage true;
+ } foreach ((units (group player)) - [player]);
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Invincibility", "
+ Invincibility Enabled Disabled
+ Current vehicle Enabled Disabled
+ Group Members Enabled Disabled
+ "]];
+ };
+ case "InvincibilityOn":{[] call BRG_InvincibilityOn};
+ case "InvincibilityOff":{[] call BRG_InvincibilityOff};
+ case "InvincibilityVehOn":{[] call BRG_InvincibilityVehOn};
+ case "InvincibilityVehOff":{[] call BRG_InvincibilityVehOff};
+ case "GroupInvincibilityOn":{[] call BRG_GroupInvincibilityOn};
+ case "GroupInvincibilityOff":{[] call BRG_GroupInvincibilityOff};
+
+};
diff --git a/CheatDiary/Options/SideRelations.sqf b/CheatDiary/Options/SideRelations.sqf
new file mode 100644
index 0000000..bbc498f
--- /dev/null
+++ b/CheatDiary/Options/SideRelations.sqf
@@ -0,0 +1,34 @@
+if (isNil "BRG_SideRelations_init") then {
+ BRG_SideRelations_init = true;
+
+ BRG_IgnoreOn = {
+ player setCaptive true;hint 'Player ignored by enemy ENABLED'
+ };
+
+ BRG_IgnoreOff = {
+ player setCaptive false;hint 'Player ignored by enemy DISABLED'
+ };
+
+ BRG_ratingNeg = {
+ [-100000,player] call BRG_fnc_setRating; hint 'Player is HOSTILE to allies'
+ };
+
+ BRG_ratingPos = {
+ [100000,player] call BRG_fnc_setRating; hint 'Player is FRIENDLY to everyone'
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Side Relations", "
+ Friendly to everybody Enabled Disabled
+ Friendly to allies Activate
+ Hostile to everybody Activate
+ "]];
+ };
+ case "sr_ignore_enable":{[] call BRG_IgnoreOn};
+ case "sr_ignore_disable":{[] call BRG_IgnoreOff};
+ case "sr_allies_friendly":{[] call BRG_ratingPos};
+ case "sr_all_hostile":{[] call BRG_ratingNeg};
+};
+
diff --git a/CheatDiary/Options/Teleport.sqf b/CheatDiary/Options/Teleport.sqf
new file mode 100644
index 0000000..688c2b7
--- /dev/null
+++ b/CheatDiary/Options/Teleport.sqf
@@ -0,0 +1,73 @@
+
+if (isNil "BRG_Teleport_init") then {
+ BRG_Teleport_init = true;
+
+ BRG_TPStatus = false;
+ BRG_fnc_TelePort = {
+ if (!_shift and _alt) then {(call compile BRG_TPObj) setpos _pos};
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 teleported", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_TPOn = {
+ if (!BRG_TPStatus) then {
+ BRG_TPStatus = true;
+ ["BRG_TP", "onMapSingleClick", BRG_fnc_TelePort, 0] call BIS_fnc_addStackedEventHandler;
+ };
+ hint 'Map teleport ENABLED\nClick anywhere on the map while pressing the Alt key to teleport to that location';
+ };
+
+ BRG_TPOff = {
+ BRG_TPStatus = false;
+ ["BRG_TP", "onMapSingleClick"] call BIS_fnc_removeStackedEventHandler;hint 'Map teleport DISABLED';
+ };
+
+ ////target
+ BRG_TPTargetStatus = false;//prevents multiple action menu entries
+
+ BRG_TPTargetGO = {
+ (call compile BRG_TPObj) setpos (screenToWorld [0.5, 0.5]);
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 teleported", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_TPTargetOn = {
+ if (!BRG_TPTargetStatus) then {
+ BRG_TPTargetStatus = true;
+ BRG_TPTargetID = player addAction ["3D Teleport", "[] call BRG_TPTargetGO;"];
+ };
+ hint '3D teleport action menu ENABLED\n Using the action menu option, look where you want to go and activate it to go there.';
+ };
+
+ BRG_TPTargetOff = {
+ BRG_TPTargetStatus = false;
+ player removeAction BRG_TPTargetID;
+ hint '3D teleport action menu Disabled';
+ };
+
+ BRG_TPObj = "vehicle player";
+
+ BRG_TPObjPlayer = {
+ BRG_TPObj = 'player';
+ hint "Vehicle teleporting Disabled";
+ };
+
+ BRG_TPObjVehicle = {
+ BRG_TPObj = 'vehicle player';
+ hint "Vehicle teleporting Enabled";
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Teleport", "
+ Map Teleport Enabled Disabled
+ 3D Teleport Enabled Disabled
+ Teleport Vehicle Enabled Disabled"]];
+ };
+ case "teleport_map_enable":{[] call BRG_TPOn};
+ case "teleport_map_disable":{[] call BRG_TPOff};
+ case "teleport_3d_enable":{[] call BRG_TPTargetOn};
+ case "teleport_3d_disable":{[] call BRG_TPTargetOff};
+ case "teleport_veh_enable":{[] call BRG_TPObjVehicle};
+ case "teleport_veh_disable":{[] call BRG_TPObjPlayer};
+};
+
diff --git a/CheatDiary/Options/VArsenal.sqf b/CheatDiary/Options/VArsenal.sqf
new file mode 100644
index 0000000..8429c21
--- /dev/null
+++ b/CheatDiary/Options/VArsenal.sqf
@@ -0,0 +1,32 @@
+if (isNil "BRG_VArsenal_init") then {
+ BRG_VArsenal_init = true;
+
+ BRG_VAStatus = false;//prevents multiple action menu entries
+ BRG_VAOpen = {
+ ["Open",true] spawn BIS_fnc_arsenal;
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 uses PA!", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_VAOn = {
+ if (!BRG_VAStatus) then {
+ BRG_VAStatus = true;
+ BRG_VAactID = player addAction ["Virtual Arsenal", "[] call BRG_VAOpen;"];
+ };
+ hint 'Virtual Arsenal action menu ENABLED';
+ };
+
+ BRG_VAOff = {
+ BRG_VAStatus = false;
+ player removeAction BRG_VAactID;
+ hint 'Virtual Arsenal action menu DISABLED';
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Virtual Arsenal", "Virtual Arsenal Open Enabled Disabled"]];
+ };
+ case "varsenal_open":{[] call BRG_VAOpen};
+ case "varsenal_enable":{[] call BRG_VAOn};
+ case "varsenal_disable":{[] call BRG_VAOff};
+};
\ No newline at end of file
diff --git a/CheatDiary/Options/VGarage.sqf b/CheatDiary/Options/VGarage.sqf
new file mode 100644
index 0000000..e7b9450
--- /dev/null
+++ b/CheatDiary/Options/VGarage.sqf
@@ -0,0 +1,42 @@
+//Thanks to tortuosit (http://forums.bistudio.com/member.php?93551-tortuosit) for adapting my VA script to this VG script!
+//Virtual Garage
+if (isNil "BRG_VGarage_init") then {
+ BRG_VGarage_init = true;
+
+ BRG_VGStatus = false;//prevents multiple action menu entries
+ BRG_VGOpen = {
+ ["Open",true] spawn BIS_fnc_garage;
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 uses DCON", PUB_PN] remoteExec ["systemChat"];
+ };
+
+ BRG_VGOn = {
+ if (!BRG_VGStatus) then {
+ BRG_VGStatus = true;
+ BRG_VGactID = player addAction ["Virtual Garage", "[] call BRG_VGOpen;"]
+ };
+ hint 'Virtual Garage action menu ENABLED';
+ };
+
+ BRG_VGOff = {
+ BRG_VGStatus = false;
+ player removeAction BRG_VGactID;
+ hint 'Debug Console action menu DISABLED';
+ };
+
+ BRG_VGReset = {
+ BIS_fnc_garage_center allowDamage true;
+ BIS_fnc_garage_center = nil;
+ hint "Previous Virtual Garage vehicle has been removed from Virtual Garage. New vehicle will be spawned when using Virtual Garage again";
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Virtual Garage", "Virtual Garage Open Enabled Disabled
+ Reset Vehicle"]];
+ };
+ case "vgarage_open":{[] call BRG_VGOpen};
+ case "vgarage_Enable":{[] call BRG_VGOn};
+ case "vgarage_Disable":{[] call BRG_VGOff};
+ case "vgarage_Reset":{[] call BRG_VGReset};
+};
\ No newline at end of file
diff --git a/CheatDiary/Options/Zeus.sqf b/CheatDiary/Options/Zeus.sqf
new file mode 100644
index 0000000..eeeaae6
--- /dev/null
+++ b/CheatDiary/Options/Zeus.sqf
@@ -0,0 +1,59 @@
+if (isNil "BRG_Zeus_init") then {
+ BRG_Zeus_init = true;
+
+ BRG_ZeusStatus = false;
+ BRG_ZeusOn = {
+ if (!BRG_ZeusStatus or !(getAssignedCuratorunit CheatCurator == player)) then {
+ BRG_ZeusStatus = true;
+ unassignCurator CheatCurator;
+ player assignCurator CheatCurator;
+ CheatCurator addCuratorEditableObjects [[player],true];
+ PUB_PN = name player;publicVariable "PUB_PN";format ["%1 enabled zeus", PUB_PN] remoteExec ["systemChat"];
+ };
+ hint ('Zeus ENABLED\n Press the ' + (actionKeysNames "curatorInterface") + " key to open interface");
+ };
+
+ BRG_ZeusOff = {
+ BRG_ZeusStatus = false;
+ unassignCurator CheatCurator;
+ objnull assignCurator CheatCurator;
+ CheatCurator removeCuratorEditableObjects [[player],false];
+ hint 'Zeus DISABLED';
+ };
+
+ BRG_ZeusAllStatus = false;
+ BRG_ZeusAddAll = {
+ if (!BRG_ZeusAllStatus) then {
+ BRG_ZeusAllStatus = true;
+ CheatCurator addCuratorEditableObjects [allMissionObjects "all",true ];
+ };
+ hint 'All objects ADDED to Zeus editor';
+ };
+
+ BRG_ZeusRemoveAll = {
+ BRG_ZeusAllStatus = false;
+ CheatCurator removeCuratorEditableObjects [allMissionObjects "all",false];
+ CheatCurator addCuratorEditableObjects [[player],true];
+ hint 'All objects REMOVED from Zeus editor';
+ };
+
+ BRG_ZeusHowTo = {
+ ["curator", "curator"] call BIS_fnc_openFieldManual;
+ };
+};
+
+switch (_this) do {
+ case "diary":{
+ player createDiaryRecord ["BRG_CheatMenu", ["Zeus",
+ "Zeus Editor Enabled Disabled
+
+
All objects editable Add Remove
+
+
How to use Zeus"]];
+ };
+ case "zeus_enable":{[] call BRG_ZeusOn};
+ case "zeus_disable":{[] call BRG_ZeusOff};
+ case "zeus_add":{[] call BRG_ZeusAddAll};
+ case "zeus_remove":{[] call BRG_ZeusRemoveAll};
+ case "howto":{[] call BRG_ZeusHowTo};
+};
diff --git a/CheatUI/CheatUIInit.sqf b/CheatUI/CheatUIInit.sqf
new file mode 100644
index 0000000..4fa8349
--- /dev/null
+++ b/CheatUI/CheatUIInit.sqf
@@ -0,0 +1 @@
+createDialog "RscDialogCheatMenu";
\ No newline at end of file
diff --git a/Functions/BulletCamBasic.sqf b/Functions/BulletCamBasic.sqf
new file mode 100644
index 0000000..347fc42
--- /dev/null
+++ b/Functions/BulletCamBasic.sqf
@@ -0,0 +1,30 @@
+//Bullet cam original work by Killzone Kid http://killzonekid.com/arma-scripting-tutorials-a-simple-bullet-cam/
+//Script Edited By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+
+//Todo:add cam cancel (space)
+
+//(findDisplay 46) displayAddEventHandler ["KeyDown","hint str (_this select 1);false;"];
+if (isnil "BRNG_BulletCamDeEh") then {
+BRNG_BulletCamDeEh = (findDisplay 46) displayAddEventHandler ["KeyDown","if ((_this select 1) == 57) then {BRNG_CamStatus = false;};false;"];
+};
+BRNG_CamStatus = true;
+
+_EHIndex = player addEventHandler ["Fired", {
+ _null = _this spawn {
+ BRNG_CamStatus = true;
+ _missile = _this select 6;
+ _cam = "camera" camCreate (position player);
+ _cam cameraEffect ["External", "Back"];
+ waitUntil {
+ if ((isNull _missile) or !BRNG_CamStatus) exitWith {true};//(speed _missile < 1) dont wait on stuff like smoke grenades
+ _cam camSetTarget _missile;
+ _cam camSetRelPos [0,-3,0];
+ _cam camCommit 0;
+ };
+ uiSleep 0.4; //Slo-mo
+ _cam cameraEffect ["Terminate", "Back"];
+ camDestroy _cam;
+ };
+}];
+
+_EHIndex;
\ No newline at end of file
diff --git a/Functions/MPCheatNotif.sqf b/Functions/MPCheatNotif.sqf
new file mode 100644
index 0000000..1ec865d
--- /dev/null
+++ b/Functions/MPCheatNotif.sqf
@@ -0,0 +1,67 @@
+//Script Created By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+
+//Yes! This lets everyone in multiplayer know you are a cheater! Deal with it!
+//In the event that you use this addon while joining a multi-player game, this will notify everyone in the game that you are using a cheat menu. I Would like everyone to be aware of that.
+//At that point players can choose whether or not to kick you. I do not condone malicious cheating online. If you want this script changed, you will have to do it yourself.
+//In the event that this script is changed and used for online cheating, I remove any responsibility from myself for anything that may occur onwards.
+
+//Spawn this script only?
+
+//http://wiki.benargee.com/BNRG_fnc_getOwnerFromClient
+
+if (getPlayerUID player == "76561198001656851") then {hint "MPNote"};//debug
+BRG_MPNotified = true;
+
+BNRG_GetOwnerFromClient = {
+
+ _requestedObject = [_this, 0, player,[player]] call BIS_fnc_param;
+ _requestor = [_this, 1, player,[player]] call BIS_fnc_param;
+ call Compile format ["BNRG_fnc_ClientGetOwner_ID_%1 = nil",getplayeruid _requestor];
+BNRG_GetOwnerFromClient_RETURN = nil;
+
+ [[[_requestedObject,_requestor], {
+ if (isServer) then {
+ _BNRG_fnc_SendOwnerToClient = compile format['
+ BNRG_fnc_ClientGetOwner_ID_%1 = owner (_this select 0);
+ _BNRG_fnc_ClientGetOwner_ID_Requestor = owner (_this select 1);
+ _BNRG_fnc_ClientGetOwner_ID_Requestor publicVariableClient "BNRG_fnc_ClientGetOwner_ID_%1";
+ BNRG_fnc_ClientGetOwner_ID_%1 = nil;
+ ',getplayeruid (_this select 0)];
+
+ [_this select 0, _this select 1] call _BNRG_fnc_SendOwnerToClient;
+ };
+}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
+
+BNRG_GetOwnerFromClient_RETURN = call Compile format ["waitUntil {!isNil 'BNRG_fnc_ClientGetOwner_ID_%1'}; BNRG_fnc_ClientGetOwner_ID_%1;",getplayeruid _requestor];
+waitUntil {!isNil 'BNRG_GetOwnerFromClient_RETURN'}
+call Compile format ["BNRG_fnc_ClientGetOwner_ID_%1 = nil",getplayeruid _requestor];
+};
+
+
+
+scriptID = [player,player] spawn BNRG_GetOwnerFromClient;
+waitUntil {scriptDone scriptID};
+
+
+
+
+//Notify all other players that this user is cheating.
+[[[profileName,BNRG_GetOwnerFromClient_RETURN,player], {
+
+if (hasInterface and ((_this select 2) != player)) then {
+
+ _BRG_popuptext = "" + "WARNING " + (_this select 0) + " is using SSPCM to cheat" + "";
+ _BRG_popuptext2 = "" + "Type in chat '#kick " + str (_this select 1) + "' if you dont want " + (_this select 0) + " in the game" + "";
+ _BRG_value1 =[_BRG_popuptext,0.01,(safeZoneY + 0.05),0.5,0,0,90]spawn bis_fnc_dynamicText;
+ playsound "Hint";
+ sleep 2;
+ _BRG_value1 =[_BRG_popuptext,0.01,(safeZoneY + 0.05),0.5,0,0,90]spawn bis_fnc_dynamicText;
+ sleep 2;
+ _BRG_value1 =[_BRG_popuptext,0.01,(safeZoneY + 0.05),5,0,0,90]spawn bis_fnc_dynamicText;
+ sleep 5;
+ _BRG_value1 =[_BRG_popuptext2,0.01,(safeZoneY + 0.05),15,0,0,90]spawn bis_fnc_dynamicText;
+ playsound "Hint";
+ };
+
+
+}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
diff --git a/Functions/SpawnInJet.sqf b/Functions/SpawnInJet.sqf
new file mode 100644
index 0000000..be8bbe8
--- /dev/null
+++ b/Functions/SpawnInJet.sqf
@@ -0,0 +1,37 @@
+//Script Created By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+//Spawn in flying jet of choice, works on default jets only for now.
+//[altitude,class] call BRG_fnc_spawnInJet;
+
+
+//player action ["Eject",vehicle player]; sleep
+// !((typeof (vehicle player) ) isKindOf "man");
+
+
+_altitude = _this select 0;
+_class = _this select 1;
+
+
+_playerpos = (getpos player);
+_playerposAlt = [(getpos player) select 0, (getpos player) select 1, _altitude] ;
+_plane = createVehicle [_class, _playerpos, [], 0, "FLY"];
+_plane setpos _playerposAlt;
+[_plane, getdir player] call KK_fnc_setDirFLY;
+
+_plane spawn {
+_plane = _this;
+if (!((typeof (vehicle player) ) isKindOf "man")) then {
+player action ["Eject",vehicle player];
+WaitUntil {((typeof (vehicle player) ) isKindOf "man")};
+
+player moveInDriver _plane;
+} else {player moveInDriver _plane;};
+
+
+
+};
+
+BRNG_plane = _plane; //debug
+
+openMap false;
+
+_plane;
\ No newline at end of file
diff --git a/Functions/setRating.sqf b/Functions/setRating.sqf
new file mode 100644
index 0000000..8e747d2
--- /dev/null
+++ b/Functions/setRating.sqf
@@ -0,0 +1,10 @@
+//Script Created By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+//[100000,player] call BRNG_fnc_setRating
+
+_setRating = _this select 0;//number
+_unit = _this select 1;//object
+_getRating = rating _unit;
+_addVal = _setRating - _getRating;
+_unit addRating _addVal;
+
+_getRating; //return old rating
\ No newline at end of file
diff --git a/Functions/setdirfly.sqf b/Functions/setdirfly.sqf
new file mode 100644
index 0000000..8c658fe
--- /dev/null
+++ b/Functions/setdirfly.sqf
@@ -0,0 +1,13 @@
+//Script Created By Killzone Kid http://killzonekid.com/arma-scripting-tutorials-kk_fnc_setdirfly/
+
+
+ private ["_veh","_dir","_v"];
+ _veh = _this select 0;
+ _dir = _this select 1;
+ _v = velocity _veh;
+ _veh setDir _dir;
+ _veh setVelocity [
+ (_v select 1) * sin _dir - (_v select 0) * cos _dir,
+ (_v select 0) * sin _dir + (_v select 1) * cos _dir,
+ _v select 2
+ ];
\ No newline at end of file
diff --git a/UI/Script/CheatUI_List_onLBSelChanged.sqf b/UI/Script/CheatUI_List_onLBSelChanged.sqf
new file mode 100644
index 0000000..326d2a8
--- /dev/null
+++ b/UI/Script/CheatUI_List_onLBSelChanged.sqf
@@ -0,0 +1,22 @@
+
+
+params ["_control", "_selectedIndex"];
+
+_display = ctrlParent _control;
+//_contentCtrl = _display displayCtrl 1004;
+_subTitleCtrl = _display displayCtrl 1002;
+_text = _control lbText _selectedIndex;
+
+_subTitleCtrl ctrlSetText _text;
+systemChat format["selected: %1",_text];
+
+
+_content = "Zeus Editor ";
+
+
+//_contentCtrl ctrlSetText _content;
+_oldGroupCtrl = _display displayCtrl 1234;
+ctrlDelete _oldGroupCtrl;
+_ctrlClass = _control lbData _selectedIndex;
+_display ctrlCreate [_ctrlClass, 1234];
+//CMGroupZeus
\ No newline at end of file
diff --git a/UI/Script/CheatUI_onLoad.sqf b/UI/Script/CheatUI_onLoad.sqf
new file mode 100644
index 0000000..8bfd5dd
--- /dev/null
+++ b/UI/Script/CheatUI_onLoad.sqf
@@ -0,0 +1,26 @@
+systemChat "onLoad";
+
+params["_display"];
+
+_listBoxCtrl = _display displayCtrl 1500;
+
+_optionArray = [
+ ["Bullet Cam", "Rsc_CtrlGrp_BRG_BulletCam"],
+ ["Bullet Tracing", "Rsc_CtrlGrp_BRG_BulletTracing"],
+ ["Debug Console", "Rsc_CtrlGrp_BRG_DebugConsole"],
+ ["Fatigue", "Rsc_CtrlGrp_BRG_Fatigue"],
+ ["Infinite Ammo", "Rsc_CtrlGrp_BRG_InfiniteAmmo"],
+ ["Invincibility", "Rsc_CtrlGrp_BRG_Invincibility"],
+ ["Side Relatations", "Rsc_CtrlGrp_BRG_SideRelatations"],
+ ["Spawn in Jet", "Rsc_CtrlGrp_BRG_SpawnInJet"],
+ ["Teleport", "Rsc_CtrlGrp_BRG_Teleport"],
+ ["Virtual Arsenal", "Rsc_CtrlGrp_BRG_VirtualArsenal"],
+ ["Virtual Garage", "Rsc_CtrlGrp_BRG_VirtualGarage"],
+ ["Zeus", "Rsc_CtrlGrp_BRG_Zeus"]
+];
+
+{
+ _listBoxCtrl lbAdd (_x select 0);
+ _listBoxCtrl lbSetData [_forEachIndex, (_x select 1)]
+
+} forEach _optionArray;
\ No newline at end of file
diff --git a/UI/config.cpp b/UI/config.cpp
new file mode 100644
index 0000000..7566eee
--- /dev/null
+++ b/UI/config.cpp
@@ -0,0 +1,983 @@
+
+class CfgPatches
+{
+ class SSPCM_UI
+ {
+ units[] = {};
+ weapons[] = {};
+ requiredVersion = 1.0;
+ requiredAddons[] = {"A3_Data_F","A3_UI_F_Bootcamp"};
+ };
+};
+
+
+class RscButtonMenu;
+class RscButton;
+class RscBackgroundGUI;
+class RscListBox;
+class RscText;
+class RscStructuredText;
+class RscHTML;
+class RscControlsGroup;
+
+class BNRG_SSPCM_buttonLoad_s: RscButtonMenu
+{
+ idc = 914492;
+
+ text = "Debug Console";
+ action = "(finddisplay 49) createdisplay 'RscDisplayDebugPublic'";
+
+ x = "SafezoneX + SafezoneW - (11 * (((safezoneW / safezoneH) min 1.2) / 40))";
+ y = "21.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))";
+ w = "9.975 * (((safezoneW / safezoneH) min 1.2) / 40)";
+ h = "0.85 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+
+ class Attributes
+ {
+ font = "PuristaLight";
+ color = "#E5E5E5";
+ align = "middle";
+ shadow = "false";
+ size = 0.85;
+ };
+};
+
+/*class RscDisplayInterrupt
+{
+ class controls
+ {
+ class BNRG_SSPCM_buttonLoad: BNRG_SSPCM_buttonLoad_s {};
+ };
+};
+*/
+
+class RscDisplayDiary
+{
+ class controls
+ {
+ class BNRG_SSPCM_buttonLoad: BNRG_SSPCM_buttonLoad_s
+ {
+ action = "0 call (uiNamespace getVariable 'BRG_fnc_manaulInit'); hint 'SSPCM loading...';";
+ idc = 923467;
+ text = "Load SSPCM"; //--- ToDo: Localize;
+ x = "17.904033 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)";//original 1.1
+ y = "0.33333 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY)";
+ w = "5.1978 * (((safezoneW / safezoneH) min 1.2) / 40)";
+ h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+ tooltip = "Press this button to load Simple Single Player Cheat Menu"; //--- ToDo: Localize;
+ };
+ };
+};
+
+
+
+class RscDisplayMainMap
+{
+ class controls
+ {
+ class BNRG_SSPCM_buttonLoad: BNRG_SSPCM_buttonLoad_s
+ {
+ action = "0 call (uiNamespace getVariable 'BRG_fnc_manaulInit'); hint 'SSPCM loading...';";
+ idc = 923465;
+ text = "Load SSPCM"; //--- ToDo: Localize;
+ x = "17.904033 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)";//original 1.1
+ y = "0.33333 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY)";
+ w = "5.1978 * (((safezoneW / safezoneH) min 1.2) / 40)";
+ h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+ tooltip = "Press this button to load Simple Single Player Cheat Menu"; //--- ToDo: Localize;
+ };
+ };
+};
+
+
+
+
+class RscDialogCheatMenu
+{
+ idd = -1;
+ movingenable = false;
+ enablesimulation = 1;
+ onLoad = "_this call BRG_fnc_CMUI_onLoad";//fill listbox with options
+
+ class controls
+ {
+ class BRG_CM_UI_Back: RscBackgroundGUI
+ {
+ idc = 2200;
+
+ x = 0.314375 * safezoneW + safezoneX;
+ y = 0.258 * safezoneH + safezoneY;
+ w = 0.103125 * safezoneW;
+ h = 0.462 * safezoneH;
+ colorBackground[] = {0,0,0,0.5};
+ };
+ class BRG_CM_UI_List: RscListBox
+ {
+ idc = 1500;
+ onLBSelChanged = "_this call BRG_fnc_CMUI_List_onLBSelChanged";// when changed load content into BRG_CM_UI_Content_Text
+ x = 0.319531 * safezoneW + safezoneX;
+ y = 0.302 * safezoneH + safezoneY;
+ w = 0.0928125 * safezoneW;
+ h = 0.407 * safezoneH;
+ };
+ class IGUIBack_2200: RscBackgroundGUI
+ {
+ idc = 2200;
+ x = 0.422656 * safezoneW + safezoneX;
+ y = 0.258 * safezoneH + safezoneY;
+ w = 0.262969 * safezoneW;
+ h = 0.462 * safezoneH;
+ };
+ class BRG_CM_UI_Title: RscText
+ {
+ idc = 1003;
+ text = "SSPCM"; //--- ToDo: Localize;
+ x = 0.350469 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class BRG_CM_UI_SubTitle: RscText
+ {
+ idc = 1002;
+ text = "Title goes here"; //--- ToDo: Localize;
+ x = 0.427812 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.149531 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ };
+};
+
+
+
+
+class CMCtrlgroup: RscControlsGroup
+{
+ x = 0.427812 * safezoneW + safezoneX;
+ y = 0.302 * safezoneH + safezoneY;
+ w = 0.252656 * safezoneW;
+ h = 0.407 * safezoneH;
+};
+
+
+class Rsc_CtrlGrp_BRG_BulletCam: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Bullet Cam "; //--- ToDo: Localize;
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.0464063 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """bulletcamon"" call BRG_fnc_CMBulletCam;";
+ x = 0.355625 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.04125 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """bulletcamoff"" call BRG_fnc_CMBulletCam;";
+ x = 0.402031 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.04125 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscStructuredText_1100: RscStructuredText
+ {
+ idc = 1100;
+ text = "Press the SPACE bar at any time to interrupt the bullet camera and return to player camera.
Warning: During campaign, bullet camera may stutter."; //--- ToDo: Localize;
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.291 * safezoneH + safezoneY;
+ w = 0.257813 * safezoneW;
+ h = 0.11 * safezoneH;
+ colorBackground[] = {0,0,0,0};
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_BulletTracing: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Choose the amount of bullets you want traced:"; //--- ToDo: Localize;
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.180469 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Off"; //--- ToDo: Localize;
+ action = "0 call BRG_fnc_CMBulletTracing;";
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0154688 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "1"; //--- ToDo: Localize;
+ action = "1 call BRG_fnc_CMBulletTracing;";
+ x = 0.324687 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0154688 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "5"; //--- ToDo: Localize;
+ action = "5 call BRG_fnc_CMBulletTracing;";
+ x = 0.345312 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0154688 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1603: RscButton
+ {
+ idc = 1603;
+ text = "10"; //--- ToDo: Localize;
+ action = "10 call BRG_fnc_CMBulletTracing;";
+ x = 0.365937 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0154688 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1604: RscButton
+ {
+ idc = 1604;
+ text = "30"; //--- ToDo: Localize;
+ action = "30 call BRG_fnc_CMBulletTracing;";
+ x = 0.386562 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0154688 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1605: RscButton
+ {
+ idc = 1605;
+ text = "50"; //--- ToDo: Localize;
+ action = "50 call BRG_fnc_CMBulletTracing;";
+ x = 0.407187 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0154688 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1606: RscButton
+ {
+ idc = 1606;
+ text = "100"; //--- ToDo: Localize;
+ action = "100 call BRG_fnc_CMBulletTracing;";
+ x = 0.427812 * safezoneW + safezoneX;
+ y = 0.269 * safezoneH + safezoneY;
+ w = 0.0154688 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscStructuredText_1100: RscStructuredText
+ {
+ idc = 1100;
+ text = "NOTE: Currently works only for player in a single instance. This is a limitation of an Arma 3 function, not SSPCM.
WARNING: Tracing large amounts of bullets may cause performance issues. "; //--- ToDo: Localize;
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.324 * safezoneH + safezoneY;
+ w = 0.211406 * safezoneW;
+ h = 0.132 * safezoneH;
+ colorBackground[] = {0,0,0,0};
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_DebugConsole: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Debug Console"; //--- ToDo: Localize;
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.0567187 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Open"; //--- ToDo: Localize;
+ action = """debug_open"" call BRG_fnc_CMDebug;";
+ x = 0.365937 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """debug_enable"" call BRG_fnc_CMDebug;";
+ x = 0.402031 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.0360937 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """debug_disable"" call BRG_fnc_CMDebug;";
+ x = 0.443281 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.0360937 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_Fatigue: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Fatigue"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.075;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """fatigueon"" call BRG_fnc_CMFatigue;";
+ x = 0.112499;
+ y = 0.04;
+ w = 0.0874999;
+ h = 0.04;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """fatigueoff"" call BRG_fnc_CMFatigue;";
+ x = 0.212499;
+ y = 0.04;
+ w = 0.0874999;
+ h = 0.04;
+ };
+
+ };
+};
+
+class Rsc_CtrlGrp_BRG_InfiniteAmmo: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Infinite Ammo"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.1375;
+ h = 0.04;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """InfAmmoOn"" call BRG_fnc_CMInfAmmo;";
+ x = 0.175;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """InfAmmoOff"" call BRG_fnc_CMInfAmmo;";
+ x = 0.2875;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscStructuredText_1100: RscStructuredText
+ {
+ idc = 1100;
+ text = "NOTICE: Currently this feature works with handguns and primary weapons only. This is due behaviour of an Arma 3 command. This might be fixed in a future mod update."; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.12;
+ w = 0.475;
+ h = 0.18;
+ colorBackground[] = {0,0,0,0};
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_Invincibility: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Infinite Ammo"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.1375;
+ h = 0.04;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """InvincibilityOn"" call BRG_fnc_CMInvincible;";
+ x = 0.175;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """InvincibilityOff"" call BRG_fnc_CMInvincible;";
+ x = 0.2875;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscText_1001: RscText
+ {
+ idc = 1001;
+ text = "Current vehicle"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.1;
+ w = 0.1375;
+ h = 0.04;
+ };
+ class RscText_1002: RscText
+ {
+ idc = 1002;
+ text = "Group Members"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.16;
+ w = 0.1375;
+ h = 0.04;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """InvincibilityVehOn"" call BRG_fnc_CMInvincible;";
+ x = 0.175;
+ y = 0.1;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1603: RscButton
+ {
+ idc = 1603;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """GroupInvincibilityOn"" call BRG_fnc_CMInvincible;";
+ x = 0.175;
+ y = 0.16;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1604: RscButton
+ {
+ idc = 1604;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """InvincibilityVehOff"" call BRG_fnc_CMInvincible;";
+ x = 0.2875;
+ y = 0.1;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1605: RscButton
+ {
+ idc = 1605;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """GroupInvincibilityOff"" call BRG_fnc_CMInvincible;";
+ x = 0.2875;
+ y = 0.16;
+ w = 0.1;
+ h = 0.04;
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_SideRelatations: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Friendly to everybody"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.1875;
+ h = 0.04;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """sr_ignore_enable"" call BRG_fnc_CMSideRelations;";
+ x = 0.225;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """sr_ignore_disable"" call BRG_fnc_CMSideRelations;";
+ x = 0.3375;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscText_1001: RscText
+ {
+ idc = 1001;
+ text = "Friendly to allies"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.1;
+ w = 0.15;
+ h = 0.04;
+ };
+ class RscText_1002: RscText
+ {
+ idc = 1002;
+ text = "Hostile to everybody"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.16;
+ w = 0.1875;
+ h = 0.04;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Activate"; //--- ToDo: Localize;
+ action = """sr_allies_friendly"" call BRG_fnc_CMSideRelations;";
+ x = 0.1875;
+ y = 0.1;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1603: RscButton
+ {
+ idc = 1603;
+ text = "Activate"; //--- ToDo: Localize;
+ action = """sr_all_hostile"" call BRG_fnc_CMSideRelations;";
+ x = 0.225;
+ y = 0.16;
+ w = 0.1;
+ h = 0.04;
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_SpawnInJet: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Spawn in a flying Jet. Choose a jet:"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.3125;
+ h = 0.04;
+ };
+ class RscText_1001: RscText
+ {
+ idc = 1001;
+ text = "Starting Altitude:"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.34;
+ w = 0.15;
+ h = 0.04;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "A-164 Wipeout"; //--- ToDo: Localize;
+ action = """wipeout"" call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.1;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "To-199 Neophron"; //--- ToDo: Localize;
+ action = """neophron"" call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.16;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "A-143 Buzzard CAS"; //--- ToDo: Localize;
+ action = """buzzardcas"" call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.22;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1603: RscButton
+ {
+ idc = 1603;
+ text = "A-143 Buzzard AA"; //--- ToDo: Localize;
+ action = """buzzardaa"" call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.28;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1604: RscButton
+ {
+ idc = 1604;
+ text = "100m"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.4;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1605: RscButton
+ {
+ idc = 1605;
+ text = "300m"; //--- ToDo: Localize;
+ action = "300 call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.46;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1606: RscButton
+ {
+ idc = 1606;
+ text = "500m"; //--- ToDo: Localize;
+ action = "500 call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.52;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1607: RscButton
+ {
+ idc = 1607;
+ text = "1000m"; //--- ToDo: Localize;
+ action = "1000 call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.58;
+ w = 0.175;
+ h = 0.04;
+ };
+ class RscButton_1608: RscButton
+ {
+ idc = 1608;
+ text = "2000m"; //--- ToDo: Localize;
+ action = "2000 call BRG_fnc_CMFlyingJet;";
+ x = 0.025;
+ y = 0.64;
+ w = 0.175;
+ h = 0.04;
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_Teleport: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Map teleport"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.125;
+ h = 0.04;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """teleport_map_enable"" call BRG_fnc_CMTeleport;";
+ x = 0.1625;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """teleport_map_disable"" call BRG_fnc_CMTeleport;";
+ x = 0.275;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscText_1001: RscText
+ {
+ idc = 1001;
+ text = "3D teleport"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.1;
+ w = 0.125;
+ h = 0.04;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """teleport_3d_enable"" call BRG_fnc_CMTeleport;";
+ x = 0.1625;
+ y = 0.1;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1603: RscButton
+ {
+ idc = 1603;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """teleport_3d_disable"" call BRG_fnc_CMTeleport;";
+ x = 0.275;
+ y = 0.1;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscText_1002: RscText
+ {
+ idc = 1002;
+ text = "Teleport Vehicle"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.2;
+ w = 0.15;
+ h = 0.04;
+ };
+ class RscButton_1604: RscButton
+ {
+ idc = 1604;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """teleport_veh_enable"" call BRG_fnc_CMTeleport;";
+ x = 0.2;
+ y = 0.2;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1605: RscButton
+ {
+ idc = 1605;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """teleport_veh_disable"" call BRG_fnc_CMTeleport;";
+ x = 0.3125;
+ y = 0.2;
+ w = 0.1;
+ h = 0.04;
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_VirtualArsenal: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Virtual Arsenal"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.1375;
+ h = 0.04;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Open"; //--- ToDo: Localize;
+ action = """varsenal_open"" call BRG_fnc_CMVArsenal;";
+ x = 0.175;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """varsenal_enable"" call BRG_fnc_CMVArsenal;";
+ x = 0.2875;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """varsenal_disable"" call BRG_fnc_CMVArsenal;";
+ x = 0.4;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_VirtualGarage: CMCtrlgroup
+{
+ class Controls
+ {
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ text = "Virtual Garage"; //--- ToDo: Localize;
+ x = 0.025;
+ y = 0.04;
+ w = 0.1375;
+ h = 0.04;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Open"; //--- ToDo: Localize;
+ action = """vgarage_open"" call BRG_fnc_CMVGarage;";
+ x = 0.175;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """vgarage_Enable"" call BRG_fnc_CMVGarage;";
+ x = 0.2875;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """vgarage_Disable"" call BRG_fnc_CMVGarage;";
+ x = 0.4;
+ y = 0.04;
+ w = 0.1;
+ h = 0.04;
+ };
+ };
+};
+
+class Rsc_CtrlGrp_BRG_Zeus: CMCtrlgroup
+{
+ class Controls
+ {
+
+
+ class RscText_1000: RscText
+ {
+ idc = 1000;
+ action = "";
+ text = "Zeus Editor"; //--- ToDo: Localize;
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.0464063 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscText_1001: RscText
+ {
+ idc = 1001;
+ text = "All objects editable"; //--- ToDo: Localize;
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.291 * safezoneH + safezoneY;
+ w = 0.0721875 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1600: RscButton
+ {
+ idc = 1600;
+ text = "Enabled"; //--- ToDo: Localize;
+ action = """zeus_enable"" call BRG_fnc_CMZeus;";
+ x = 0.355625 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.04125 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1601: RscButton
+ {
+ idc = 1601;
+ text = "Disabled"; //--- ToDo: Localize;
+ action = """zeus_disable"" call BRG_fnc_CMZeus;";
+ x = 0.402031 * safezoneW + safezoneX;
+ y = 0.247 * safezoneH + safezoneY;
+ w = 0.04125 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1602: RscButton
+ {
+ idc = 1602;
+ text = "Add"; //--- ToDo: Localize;
+ action = """zeus_add"" call BRG_fnc_CMZeus;";
+ x = 0.381406 * safezoneW + safezoneX;
+ y = 0.291 * safezoneH + safezoneY;
+ w = 0.04125 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1603: RscButton
+ {
+ idc = 1603;
+ text = "Remove"; //--- ToDo: Localize;
+ action = """zeus_remove"" call BRG_fnc_CMZeus;";
+ x = 0.427812 * safezoneW + safezoneX;
+ y = 0.291 * safezoneH + safezoneY;
+ w = 0.04125 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+ class RscButton_1604: RscButton
+ {
+ idc = 1604;
+ text = "How to use Zeus"; //--- ToDo: Localize;
+ action = """howto"" call BRG_fnc_CMZeus;";
+ x = 0.304062 * safezoneW + safezoneX;
+ y = 0.335 * safezoneH + safezoneY;
+ w = 0.0670312 * safezoneW;
+ h = 0.022 * safezoneH;
+ };
+
+ };
+};
+
+
+
diff --git a/config.cpp b/config.cpp
new file mode 100644
index 0000000..3544d46
--- /dev/null
+++ b/config.cpp
@@ -0,0 +1,175 @@
+#include "BIS_AddonInfo.hpp"
+class CfgPatches
+{
+ class SSPCM
+ {
+ units[] = {};
+ weapons[] = {};
+ requiredAddons[] = {"A3_Data_F"};
+ requiredVersion = 0.1;
+ //CBA Credits start
+ author[]= {"benargee", "Xelantro"};
+ authorUrl = "http://wiki.benargee.com/Simple_Single_Player_Cheat_Menu";
+ version = "1.1.7";
+ versionAr[] = {1,1,7};
+ versionStr = "1.1.7";
+ mail = "benargeez@gmail.com";
+ fileName = "SSPCM.pbo";
+ //CBA Credits end
+ };
+};
+
+
+class CfgFunctions
+{
+ class BRG
+ {
+ class SSPCM
+ {
+ class preInit
+ {
+ file = "\SSPCM\preinit.sqf";
+ preInit = 1;
+ };
+
+ class postInit
+ {
+ file = "\SSPCM\postinit.sqf";
+ postInit = 1;
+ };
+
+ class manaulInit
+ {
+ file = "\SSPCM\manualInit.sqf";
+ };
+ //General functions START
+ class cheatMenu
+ {
+ file = "\SSPCM\CheatDiary\CheatMenu.sqf";
+ };
+
+ class cheatInit
+ {
+ file = "\SSPCM\CheatDiary\CheatInit.sqf";
+ };
+
+ class MPCheatNotif
+ {
+ file = "\SSPCM\Functions\MPCheatNotif.sqf";
+ };
+
+ class BulletCamBasic
+ {
+ file = "\SSPCM\Functions\BulletCamBasic.sqf";
+ };
+
+ class spawnInJet
+ {
+ file = "\SSPCM\Functions\spawnInJet.sqf";
+ };
+
+ class setRating
+ {
+ file = "\SSPCM\Functions\setRating.sqf";
+ };
+ //General functions END
+ //Cheat menu options START
+ class CMInfo
+ {
+ file = "\SSPCM\CheatDiary\Options\Info.sqf";
+ };
+
+ class CMZeus
+ {
+ file = "\SSPCM\CheatDiary\Options\Zeus.sqf";
+ };
+
+ class CMVArsenal
+ {
+ file = "\SSPCM\CheatDiary\Options\VArsenal.sqf";
+ };
+
+ class CMVGarage
+ {
+ file = "\SSPCM\CheatDiary\Options\VGarage.sqf";
+ };
+
+ class CMTeleport
+ {
+ file = "\SSPCM\CheatDiary\Options\Teleport.sqf";
+ };
+
+ class CMFlyingJet
+ {
+ file = "\SSPCM\CheatDiary\Options\FlyingJet.sqf";
+ };
+
+ class CMSideRelations
+ {
+ file = "\SSPCM\CheatDiary\Options\SideRelations.sqf";
+ };
+
+ class CMInvincible
+ {
+ file = "\SSPCM\CheatDiary\Options\Invincible.sqf";
+ };
+
+ class CMInfAmmo
+ {
+ file = "\SSPCM\CheatDiary\Options\InfAmmo.sqf";
+ };
+
+ class CMFatigue
+ {
+ file = "\SSPCM\CheatDiary\Options\Fatigue.sqf";
+ };
+
+ class CMDebug
+ {
+ file = "\SSPCM\CheatDiary\Options\Debug.sqf";
+ };
+
+ class CMBulletTracing
+ {
+ file = "\SSPCM\CheatDiary\Options\BulletTracing.sqf";
+ };
+
+ class CMBulletCam
+ {
+ file = "\SSPCM\CheatDiary\Options\BulletCam.sqf";
+ };
+ //Cheat menu options END
+
+ class CMUIInit
+ {
+ file = "\SSPCM\CheatUI\CheatUIInit.sqf";
+ };
+
+ class CMUI_onLoad
+ {
+ file = "\SSPCM\UI\Script\CheatUI_onLoad.sqf";
+ };
+
+ class CMUI_List_onLBSelChanged
+ {
+ file = "\SSPCM\UI\Script\CheatUI_List_onLBSelChanged.sqf";
+ };
+ };
+ };
+
+
+ class KK //http://killzonekid.com/
+ {
+ class SSPCM
+ {
+ class setDirFLY
+ {
+ file = "\SSPCM\Functions\setDirFLY.sqf";
+ };
+
+ };
+ };
+};
+
+
+enableDebugConsole = 2;//test!!
\ No newline at end of file
diff --git a/description.ext b/description.ext
new file mode 100644
index 0000000..b552eff
--- /dev/null
+++ b/description.ext
@@ -0,0 +1 @@
+//null
\ No newline at end of file
diff --git a/manualInit.sqf b/manualInit.sqf
new file mode 100644
index 0000000..3443484
--- /dev/null
+++ b/manualInit.sqf
@@ -0,0 +1,43 @@
+//
+
+//Load all UI namespace functions to mission namespace
+
+systemChat "SSPCM Loading functions";
+
+if (isNil "KK_fnc_setDirFLY") then {KK_fnc_setDirFLY = (uiNamespace getVariable "KK_fnc_setDirFLY")};
+
+
+_functionConfigArray = ("true" configClasses (configFile >> "CfgFunctions" >> "BRG" >> "SSPCM"));
+{
+ _functionClass = configName _x;
+ call compile format["if (isNil 'BRG_fnc_%1') then {BRG_fnc_%1 = (uiNamespace getVariable 'BRG_fnc_%1')};",_functionClass];
+} forEach _functionConfigArray;
+
+
+
+
+if (isNil "CheatCurator") then
+ {
+ systemChat "SSPCM Loading Zeus";
+ 0 call BRG_fnc_preInit;
+
+ };
+
+systemChat "SSPCM Loading Menu";
+BRG_MenuLoop = false;
+
+if (("a3_ui_f_contact" in activatedAddons) or (missionName == "Oldman" && worldName == "tanoa")) then
+{
+ //loads new menu
+ 0 spawn BRG_fnc_CMUIInit;
+} else {
+ //loads legacy menu
+ 0 spawn {
+ sleep 1;
+ BRG_ManInit = 0 spawn BRG_fnc_CheatInit;
+ waitUntil {scriptDone BRG_ManInit};
+ hint "SSPCM Loading Done";
+ if ((!BRG_MPNotified) and (isMultiplayer) and !((serverCommandAvailable "#logout") or (isserver))) then {[] spawn BRG_fnc_MPCheatNotif};//only on multiplayer and if player isnt an admin
+
+ };
+};
\ No newline at end of file
diff --git a/postinit.sqf b/postinit.sqf
new file mode 100644
index 0000000..a470338
--- /dev/null
+++ b/postinit.sqf
@@ -0,0 +1,20 @@
+//Script Created By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+
+//CheatCurator addCuratorEditableObjects [[player],true];
+[CheatCurator,[-2,-1,0,1]] spawn BIS_fnc_setCuratorVisionModes;
+BRG_MPNotified = false;
+
+
+//Cheat Menu
+/*//temp disable auto load, manual init only
+if (!isMultiplayer) then {//mp
+
+ [] spawn {
+ waitUntil {!isNull player};
+ [] spawn BRG_fnc_CheatInit;
+ };
+
+} ;//mp
+/*
+
+
diff --git a/preinit.sqf b/preinit.sqf
new file mode 100644
index 0000000..676ffc3
--- /dev/null
+++ b/preinit.sqf
@@ -0,0 +1,45 @@
+//Script Created By Benargee, 2015. http://wiki.benargee.com http://www.benargee.com http://steamcommunity.com/id/Benargee/
+//Todo: Alot of this is unnecessary and redundant. Need to trim some fat in this file
+
+//Zeus Module
+CuratorLogicGroup = creategroup sideLogic;
+CheatCurator = CuratorLogicGroup createunit ["ModuleCurator_F", [0, 90, 90],[],0.5,"NONE"];
+CheatCurator setvariable ["text","CheatCurator"];
+CheatCurator setvariable ["Addons",3,true];//3: allow all addons with proper use of CfgPatches
+CheatCurator setvariable ["owner","objnull"];
+CheatCurator setvariable ["vehicleinit","_this setvariable ['Addons',3,true]; _this setvariable ['owner','objnull'];"];
+unassignCurator CheatCurator;
+objnull assignCurator CheatCurator;
+
+
+
+
+
+//Player attributes module
+CheatCuratorPlayerAttributes = CuratorLogicGroup createunit ["ModuleCuratorSetAttributesPlayer_F", [2, 91, 91],[],0.5,"NONE"];
+CheatCuratorPlayerAttributes setvariable ["curator","CheatCurator"];
+CheatCuratorPlayerAttributes setvariable ["unitpos",true];
+CheatCuratorPlayerAttributes setvariable ['fuel',true];
+CheatCuratorPlayerAttributes setvariable ['respawnposition',true];
+CheatCuratorPlayerAttributes setvariable ['respawnvehicle',true];
+CheatCuratorPlayerAttributes setvariable ['skill',true];
+CheatCuratorPlayerAttributes setvariable ['rank',true];
+CheatCuratorPlayerAttributes setvariable ['damage',true];
+CheatCuratorPlayerAttributes setvariable ['exec',true];
+CheatCuratorPlayerAttributes setvariable ['lock',true];
+
+CheatCuratorPlayerAttributes setvariable [
+ "vehicleinit","
+ _this setvariable ['curator','CheatCurator'];
+ _this setvariable ['unitpos',true];
+ _this setvariable ['fuel',true];
+ _this setvariable ['respawnposition',true];
+ _this setvariable ['respawnvehicle',true];
+ _this setvariable ['skill',true];
+ _this setvariable ['rank',true];
+ _this setvariable ['damage',true];
+ _this setvariable ['exec',true];
+ _this setvariable ['lock',true];
+ "];
+
+