diff --git a/Changelogs/0.5.0.0.txt b/Changelogs/0.5.0.0.txt index ee5be3cd..3e3717b8 100644 --- a/Changelogs/0.5.0.0.txt +++ b/Changelogs/0.5.0.0.txt @@ -36,3 +36,25 @@ [Changed ] Some Cleanups and Script optimization to the service point scripts. @Ignatz-HeMan [Fixed] Toxic Smoke Grenade not making you Toxic thanks to @Ignatz-HeMan [Info] Install script for Mad Arma mod via Steam workshop in the tools/install folder. + +0.5 b757: +[Added] "MeleeRod" (Fishing Rod) to Crafting Menu (1x Rope,1x Stick,1x Metal Scraps) @Ignatz-HeMan +[Added] Vehicle and Loot tables can be set via epochconfig settings (forcedVehicleSpawnTable, forcedLootSpawnTable) to force specific vehicle or loot tables. +[Changed] Removed "Alpha" text from debug monitor. +[Changed] Add flag to enable database unit test. enableUnitTestOnStart = 1 in epochconfig.hpp to enable +[Changed] Delete rest of unused clientside Airdrop Event code. @Ignatz-HeMan +[Changed] further optimized db call for weather script. +[Updated] redis-server.exe to latest version: 3.2.100 from: https://github.com/MSOpenTech/redis/releases +[Fixed] some missing semicolons in CfgPricing. @SPKcoding +[Fixed] Joining and leaving a group and optimize with added usage of params. @Ignatz-HeMan +[Fixed] Group invites from the same Group where not possible until relog. @Ignatz-HeMan +[Fixed] Heal not working when using SafeZones with VehicleGodmode and only HitPoint is damaged. @Ignatz-HeMan +[Fixed] fix deleteVehicle BE kick with sharks +[Fixed] CBA related Battleye kicks with current CBA version. +[Fixed] Static weather settings not working. @82ndab-Bravo17 +[Fixed] Battleye kicks for CUP weapon and attachment BE kicks. +[Fixed] Battleye kicks for towing tractor from CUP. +[Fixed] Fixed / updated and added Trader Missions and ported to run it on Events instead fsm. @Ignatz-HeMan +[Fixed] Several minor fixes, cleanup, and private array updates. +[Fixed] Fix for Weaponholder disappearing while adding loot. @Ignatz-HeMan +[Info] SQF parser analyzer: https://www.reddit.com/r/armadev/comments/681236/released_static_analyzer_for_sqf_and_integration/ Thanks to @LordGolias \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..4acb2aaa --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,15 @@ +pipeline { + agent { + node { + label 'testing' + } + + } + stages { + stage('Release') { + steps { + bat 'C:/GITTEMP/release.cmd' + } + } + } +} \ No newline at end of file diff --git a/Repair_man.paa b/Repair_man.paa deleted file mode 100644 index 8d6e67d9..00000000 Binary files a/Repair_man.paa and /dev/null differ diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server.pbo index d52b6cb9..b905ba9e 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server.pbo differ diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo index 0fc8c875..73e9696c 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo differ diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo index 47f26d9b..b155185e 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo differ diff --git a/Server_Install_Pack/@epochhive/epochconfig.hpp b/Server_Install_Pack/@epochhive/epochconfig.hpp index e7bcd365..f1e2c31c 100644 --- a/Server_Install_Pack/@epochhive/epochconfig.hpp +++ b/Server_Install_Pack/@epochhive/epochconfig.hpp @@ -66,6 +66,9 @@ starterTraderItems[] = { { "ItemSodaBurst", "meatballs_epoch", "MortarBucket", " NPCSlotsLimit = 20; // Max number of traders static or dynamic. Warning! Higher the number lower performance. forceStaticTraders = "true"; // disables traders moving from work to home +forcedVehicleSpawnTable = ""; // leave blank for default. Options: "allowedVehiclesList","allowedVehiclesList_CUP","allowedVehiclesList_MAD","allowedVehiclesList_MADCUP" +forcedLootSpawnTable = ""; // leave blank for default. Options: "CfgLootTable","CfgLootTable_CUP","CfgLootTable_MAD","CfgLootTable_MADCUP" + // Markers showEarthQuakes = "true"; // show mineral viens caused by earthquakes showShippingContainers = "true"; // Show location of events based loots (plants, shipping container, Carnival) @@ -88,3 +91,4 @@ hiveAdminCmdTime = 5; // how many seconds between each command queue call. // DEBUG useOldLoadVehicles = "false"; +enableUnitTestOnStart = 1; // enable extra debug for database calls. 1 = enabled. diff --git a/Server_Install_Pack/DB/redis-server.exe b/Server_Install_Pack/DB/redis-server.exe index d72660cb..5a60dca5 100644 Binary files a/Server_Install_Pack/DB/redis-server.exe and b/Server_Install_Pack/DB/redis-server.exe differ diff --git a/Server_Install_Pack/INSTALL.txt b/Server_Install_Pack/INSTALL.txt index 06775909..db7ee224 100644 --- a/Server_Install_Pack/INSTALL.txt +++ b/Server_Install_Pack/INSTALL.txt @@ -18,7 +18,7 @@ http://www.microsoft.com/en-us/download/details.aspx?id=40784 == NOTES == * You should use a service restarter (like firedaemon) to keep the redis server and Arma 3 server running. -* A3 Server should be restarted every 4 hours. A good option ssing BEC http://ibattle.org/ scheduler and the #shutdown rcon command works well. (Scheduler Example: https://gist.github.com/vbawol/38b2f57d89c2c36106b3) +* A3 Server should be restarted every 4 hours. A good option is using BEC http://ibattle.org/ scheduler and the #shutdown rcon command works well. (Scheduler Example: https://gist.github.com/vbawol/38b2f57d89c2c36106b3) * The log rotator found in tools should only need one path to Arma 3 changed and should be ran just before the Arma 3 server starts. (firedeamon Pre/post service: Before Event) * It is recommended that you use ASM https://github.com/fred41/ASM to monitor your server performance. * Go to http://epochmod.com/forum/ for more help if needed. GLHF! diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index 56f9430a..4ca790ca 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Altis.pbo and b/Server_Install_Pack/mpmissions/epoch.Altis.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Australia.pbo b/Server_Install_Pack/mpmissions/epoch.Australia.pbo index 4707b45a..dcd5b1d5 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Australia.pbo and b/Server_Install_Pack/mpmissions/epoch.Australia.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo index 8b590d11..8d5790b8 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo index 342b7eb3..89bc404a 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo and b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo index d2da9ccc..37bce379 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo and b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo index 518a81a1..44aef0e0 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo and b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo index a56f3a22..52558810 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo and b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index efbab72c..c92fd47f 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo and b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo index e3ab69fb..a4e7be85 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Napf.pbo b/Server_Install_Pack/mpmissions/epoch.Napf.pbo index e80c063a..5ec913e5 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Napf.pbo and b/Server_Install_Pack/mpmissions/epoch.Napf.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Porto.pbo b/Server_Install_Pack/mpmissions/epoch.Porto.pbo index b3917b25..eb08ac05 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Porto.pbo and b/Server_Install_Pack/mpmissions/epoch.Porto.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo index 83ba31bb..402d82b5 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo and b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Sara.pbo b/Server_Install_Pack/mpmissions/epoch.Sara.pbo index f9f9904c..24a4ad1e 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Sara.pbo and b/Server_Install_Pack/mpmissions/epoch.Sara.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo index 6ba29d81..57e6d827 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo and b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo index b6a443d7..f4ad050c 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo and b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo index 808ca6a6..26c9260b 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo and b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo index 58c5530b..36505041 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo and b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index fdd04330..caeda8a0 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo and b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo b/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo index 0ea58df9..1dfde0c7 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo and b/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.VR.pbo b/Server_Install_Pack/mpmissions/epoch.VR.pbo index 91e5b564..59373741 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.VR.pbo and b/Server_Install_Pack/mpmissions/epoch.VR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo index 8d4e0cb4..58655c7f 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo index 8fae3129..5d34f2e4 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo and b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.utes.pbo b/Server_Install_Pack/mpmissions/epoch.utes.pbo index e747c2be..37aff91b 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.utes.pbo and b/Server_Install_Pack/mpmissions/epoch.utes.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo b/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo index a8c76dbe..2d2f1457 100644 Binary files a/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo and b/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo differ diff --git a/Server_Install_Pack/sc/BattlEye/addbackpackcargo.txt b/Server_Install_Pack/sc/battleye/addbackpackcargo.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/addbackpackcargo.txt rename to Server_Install_Pack/sc/battleye/addbackpackcargo.txt diff --git a/Server_Install_Pack/sc/BattlEye/addmagazinecargo.txt b/Server_Install_Pack/sc/battleye/addmagazinecargo.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/addmagazinecargo.txt rename to Server_Install_Pack/sc/battleye/addmagazinecargo.txt diff --git a/Server_Install_Pack/sc/BattlEye/addweaponcargo.txt b/Server_Install_Pack/sc/battleye/addweaponcargo.txt similarity index 95% rename from Server_Install_Pack/sc/BattlEye/addweaponcargo.txt rename to Server_Install_Pack/sc/battleye/addweaponcargo.txt index 5f6e39cd..c1c259a4 100644 --- a/Server_Install_Pack/sc/BattlEye/addweaponcargo.txt +++ b/Server_Install_Pack/sc/battleye/addweaponcargo.txt @@ -1 +1 @@ -5 "" !="H_MM_(Buzzard_Gasmask|Helmet)_01" !="V_MM_Vest_01" !="(V|H)_(F|)[0-9]{1,3}_EPOCH" !="(clown|pkin|wolf)_mask_epoch" !="Item(Map|GPS|Compass|Watch)" !="EpochRadio[0-9]" !="B_UavTerminal" !="(U|G|bipod|acc|muzzle|optic)_[0-9A-Z_]{1,100}" !="(NVG|Defib|Heal|Repair|Elcan(_reflex|))_EPOCH" !="(Binocular|Rangefinder|Hatchet|CrudeHatchet|WoodClub|Melee(Sledge|Maul|Rod|Sword)|ChainSaw|MultiGun|Rollins_F|Plunger)" !="(ruger_pistol|speargun|1911_pistol|akm|m14|M14Grn|m16|m16Red|m107|m107Tan|m249|m249Tan|m4a3|sr25|l85a2|l85a2_(pink|ugl))_epoch" !="SMG_(01|02)_F" !="hgun_(PDW2000|ACPC2|Rook40|P07|Pistol_heavy_0[1-2]|Pistol_Signal)_F" !="LMG_(Mk200|Zafir)_F" !="srifle_(EBR|GM6|LRR|DMR_01)_(camo_|)F" !="arifle_(Katiba|Katiba_C|Katiba_GL|SDAR|TRG21|TRG20|TRG21_GL|Mk20|Mk20C|Mk20C_plain|Mk20_GL|Mk20_plain|Mk20_GL_plain)_F" !="arifle_(MXC|MX|MX_GL|MXM|MXM_Black|MX_GL_Black|MX_Black|MXC_Black|MX_SW|MX_SW_Black)_F" !="srifle_DMR_0[2-6](_(camo|sniper|khaki|tan|multicam|woodland|spotter|blk|hex|olive)_|_)F" !="MMG_0[1-2]_(hex|tan|camo|black|sand)_F" !"CUP_((h|s)gun|(s|a)rifle|(l|s)mg)_" +5 "" !="H_MM_(Buzzard_Gasmask|Helmet)_01" !="V_MM_Vest_01" !="(V|H)_(F|)[0-9]{1,3}_EPOCH" !="(clown|pkin|wolf)_mask_epoch" !="Item(Map|GPS|Compass|Watch)" !="EpochRadio[0-9]" !="B_UavTerminal" !="(U|G|bipod|acc|muzzle|optic)_[0-9A-Z_]{1,100}" !="(NVG|Defib|Heal|Repair|Elcan(_reflex|))_EPOCH" !="(Binocular|Rangefinder|Hatchet|CrudeHatchet|WoodClub|Melee(Sledge|Maul|Rod|Sword)|ChainSaw|MultiGun|Rollins_F|Plunger)" !="(ruger_pistol|speargun|1911_pistol|akm|m14|M14Grn|m16|m16Red|m107|m107Tan|m249|m249Tan|m4a3|sr25|l85a2|l85a2_(pink|ugl))_epoch" !="SMG_(01|02)_F" !="hgun_(PDW2000|ACPC2|Rook40|P07|Pistol_heavy_0[1-2]|Pistol_Signal)_F" !="LMG_(Mk200|Zafir)_F" !="srifle_(EBR|GM6|LRR|DMR_01)_(camo_|)F" !="arifle_(Katiba|Katiba_C|Katiba_GL|SDAR|TRG21|TRG20|TRG21_GL|Mk20|Mk20C|Mk20C_plain|Mk20_GL|Mk20_plain|Mk20_GL_plain)_F" !="arifle_(MXC|MX|MX_GL|MXM|MXM_Black|MX_GL_Black|MX_Black|MXC_Black|MX_SW|MX_SW_Black)_F" !="srifle_DMR_0[2-6](_(camo|sniper|khaki|tan|multicam|woodland|spotter|blk|hex|olive)_|_)F" !="MMG_0[1-2]_(hex|tan|camo|black|sand)_F" !"CUP_((h|s)gun|(s|a)rifle|(l|s)mg)_" !"CUP_(optic|muzzle|acc|bipod)_" !"CUP_(Mxx|SVD)_camo" diff --git a/Server_Install_Pack/sc/BattlEye/attachto.txt b/Server_Install_Pack/sc/battleye/attachto.txt similarity index 96% rename from Server_Install_Pack/sc/BattlEye/attachto.txt rename to Server_Install_Pack/sc/battleye/attachto.txt index 1fca43b2..2a5b85cd 100644 --- a/Server_Install_Pack/sc/BattlEye/attachto.txt +++ b/Server_Install_Pack/sc/battleye/attachto.txt @@ -1 +1 @@ -5 "" !WeaponHolderSimulated !Shot !"(Safe|LockBox|FirePlace|PlotPole|Jack|SolarGen)_EPOCH" !"Jack_SIM_EPOCH" !"LockBox_Ghost_EPOCH" !"CinderWallHalf_Ghost_EPOCH" !"(Tipi|Workbench|StorageShelf|Wood(Floor|LargeWall|Stairs|Ramp|Ladder|Tower)_Ghost_EPOCH" !"(Hesco3|Metal|Foundation)_Ghost_EPOCH" !"Land_Cages_F" !"Epoch_Sapper_F" !"[A-Z]_(G_)?(Offroad|Quadbike|Hatchback|SUV|Rubberboat|Van|Boat_Civil|SDV|MRAP|Truck)_([0-9]+_)?((box|transport|covered|mover|police|rescue|armed)_)?EPOCH" !"([A-Z]_)?[A-Z]+_(Boat|Scooter|Offroad|LSV)_((Transport)_)?[0-9]+_((unarmed|light)_)?F" !"K0(1|2|3|4)" +5 "" !WeaponHolderSimulated !Shot !"(Safe|LockBox|FirePlace|PlotPole|Jack|SolarGen)_EPOCH" !"Jack_SIM_EPOCH" !"LockBox_Ghost_EPOCH" !"CinderWallHalf_Ghost_EPOCH" !"(Tipi|Workbench|StorageShelf|Wood(Floor|LargeWall|Stairs|Ramp|Ladder|Tower)_Ghost_EPOCH" !"(Hesco3|Metal|Foundation)_Ghost_EPOCH" !"Land_Cages_F" !"Epoch_Sapper_F" !"[A-Z]_(G_)?(Offroad|Quadbike|Hatchback|SUV|Rubberboat|Van|Boat_Civil|SDV|MRAP|Truck)_([0-9]+_)?((box|transport|covered|mover|police|rescue|armed)_)?EPOCH" !"([A-Z]_)?[A-Z]+_(Boat|Scooter|Offroad|LSV)_((Transport)_)?[0-9]+_((unarmed|light)_)?F" !"K0(1|2|3|4)" !"CUP_" diff --git a/Server_Install_Pack/sc/BattlEye/createvehicle.txt b/Server_Install_Pack/sc/battleye/createvehicle.txt similarity index 53% rename from Server_Install_Pack/sc/BattlEye/createvehicle.txt rename to Server_Install_Pack/sc/battleye/createvehicle.txt index 36ad5e18..3ca74033 100644 --- a/Server_Install_Pack/sc/BattlEye/createvehicle.txt +++ b/Server_Install_Pack/sc/battleye/createvehicle.txt @@ -1,3 +1,3 @@ -5 "" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|Sapper(B|G)|Cloak)_F" !="EPOCH_RyanZombie_[1-5](|_(C|Sp|B|W|M|P))" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F" !="#smokesource" !="SmokeLauncherAmmo" +5 "" !="Construct_f" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|Sapper(B|G)|Cloak)_F" !="EPOCH_RyanZombie_[1-5](|_(C|Sp|B|W|M|P))" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F" !="#smokesource" !="SmokeLauncherAmmo" 5 "_EPOCH" !="(SapperHead|Jack|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower)_EPOCH" !="(Tipi|Workbench|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH" !="(Tipi|StorageShelf|Safe|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen|Jack|Freezer|Tarp|CinderWallHalf|Bobber)_EPOCH" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(Safe|Workbench|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace|TankTrap)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH" !="(Hesco3|Metal)(_Ghost|_SIM|)_EPOCH" !="(Spike|Metal)_TRAP_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH" 5 SeaGull diff --git a/Server_Install_Pack/sc/BattlEye/deleteVehicle.txt b/Server_Install_Pack/sc/battleye/deleteVehicle.txt similarity index 92% rename from Server_Install_Pack/sc/BattlEye/deleteVehicle.txt rename to Server_Install_Pack/sc/battleye/deleteVehicle.txt index b767fd0e..1e68c34e 100644 --- a/Server_Install_Pack/sc/BattlEye/deleteVehicle.txt +++ b/Server_Install_Pack/sc/battleye/deleteVehicle.txt @@ -1 +1 @@ -5 "" !="[0-9]{1,2}:[0-9]{1,4}" !" GroundWeaponHolder$" !" WeaponHolderSimulated$" !" Epoch_(Sapper|Sapper(B|G)|Cloak|Female_CamoRed)_F$" !" EPOCH_RyanZombie_[1-5](|_(C|Sp|B|W|M|P))$" !" (Land_MPS|Bobber|Rabbit)_EPOCH$" !" (Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH$" !" (Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Cabinet|Freezer|Tarp)_EPOCH$" !" (SapperHead|Jack|SolarGen)_SIM_EPOCH$" !" (Tipi|Workbench|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH$" !" Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH$" !" (Safe|Workbench|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace|TankTrap)_SIM_EPOCH$" !" (Hesco3|Metal|WoodWall[1-4])_(Ghost|SIM)_EPOCH$" !" (Spike|Metal)_TRAP_SIM_EPOCH$" !" (WoodFoundation|Foundation)_Ghost_EPOCH$" !" I_(Soldier[1-3]|Soldier)_EPOCH$" !" I_(helipilot|helicrew)_F$" !" I_UAV_01_F$" !" (I|B|O)_UAV_AI$" !" I_Boat_Armed_01_minigun_F" !" B_Heli_Transport_01_F" !" Land_Cages_F$" +5 "" !="[0-9]{1,2}:[0-9]{1,4}" !" GroundWeaponHolder$" !" WeaponHolderSimulated$" !" Epoch_(Sapper|Sapper(B|G)|Cloak|Female_CamoRed)_F$" !" EPOCH_RyanZombie_[1-5](|_(C|Sp|B|W|M|P))$" !" (Land_MPS|Bobber|Rabbit)_EPOCH$" !" (Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH$" !" (Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Cabinet|Freezer|Tarp)_EPOCH$" !" (SapperHead|Jack|SolarGen)_SIM_EPOCH$" !" (Tipi|Workbench|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH$" !" Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH$" !" (Safe|Workbench|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace|TankTrap)_SIM_EPOCH$" !" (Hesco3|Metal|WoodWall[1-4])_(Ghost|SIM)_EPOCH$" !" (Spike|Metal)_TRAP_SIM_EPOCH$" !" (WoodFoundation|Foundation)_Ghost_EPOCH$" !" I_(Soldier[1-3]|Soldier)_EPOCH$" !" I_(helipilot|helicrew)_F$" !" I_UAV_01_F$" !" (I|B|O)_UAV_AI$" !" I_Boat_Armed_01_minigun_F" !" (B_Heli_Transport_01|GreatWhite)_F" !" Land_Cages_F$" diff --git a/Server_Install_Pack/sc/BattlEye/example-beserver.cfg b/Server_Install_Pack/sc/battleye/example-beserver.cfg similarity index 100% rename from Server_Install_Pack/sc/BattlEye/example-beserver.cfg rename to Server_Install_Pack/sc/battleye/example-beserver.cfg diff --git a/Server_Install_Pack/sc/BattlEye/mpeventhandler.txt b/Server_Install_Pack/sc/battleye/mpeventhandler.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/mpeventhandler.txt rename to Server_Install_Pack/sc/battleye/mpeventhandler.txt diff --git a/Server_Install_Pack/sc/BattlEye/publicvariable.txt b/Server_Install_Pack/sc/battleye/publicvariable.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/publicvariable.txt rename to Server_Install_Pack/sc/battleye/publicvariable.txt diff --git a/Server_Install_Pack/sc/BattlEye/publicvariableval.txt b/Server_Install_Pack/sc/battleye/publicvariableval.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/publicvariableval.txt rename to Server_Install_Pack/sc/battleye/publicvariableval.txt diff --git a/Server_Install_Pack/sc/BattlEye/remotecontrol.txt b/Server_Install_Pack/sc/battleye/remotecontrol.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/remotecontrol.txt rename to Server_Install_Pack/sc/battleye/remotecontrol.txt diff --git a/Server_Install_Pack/sc/BattlEye/remoteexec.txt b/Server_Install_Pack/sc/battleye/remoteexec.txt similarity index 90% rename from Server_Install_Pack/sc/BattlEye/remoteexec.txt rename to Server_Install_Pack/sc/battleye/remoteexec.txt index 741678bc..f50126f2 100644 --- a/Server_Install_Pack/sc/BattlEye/remoteexec.txt +++ b/Server_Install_Pack/sc/battleye/remoteexec.txt @@ -1 +1 @@ -5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_checkplayer \[[A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3}( \(.+\)|) REMOTE\]" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player|(upgrade|updateplayer|create|delete)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(paycrypto|tradeRequest|equippeditem|packJack|create(object|AirDrop)|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer|client_bitePlayer|serverlootobject) \[.+\]" +5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_checkplayer \[[A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3}( \(.+\)|) REMOTE\]" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player|(upgrade|updateplayer|create|delete)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(paycrypto|tradeRequest|equippeditem|packJack|create(object|AirDrop)|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer|client_bitePlayer|serverlootobject) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]" diff --git a/Server_Install_Pack/sc/BattlEye/scripts.txt b/Server_Install_Pack/sc/battleye/scripts.txt similarity index 88% rename from Server_Install_Pack/sc/BattlEye/scripts.txt rename to Server_Install_Pack/sc/battleye/scripts.txt index a8c87592..3b002b7d 100644 --- a/Server_Install_Pack/sc/BattlEye/scripts.txt +++ b/Server_Install_Pack/sc/battleye/scripts.txt @@ -5,7 +5,7 @@ 7 setAmmo 7 enableFatigue 7 setUnitRecoilCoefficient -7 setWeaponReloadingTime +7 setWeaponReloadingTime !="_unit setWeaponReloadingTime [_unit,_weapon,1];" 7 allMissionObjects !="_alljammer = allmissionobjects 'PlotPole_EPOCH';" 7 callExtension 7 showCommandingMenu !="showCommandingMenu '';" !="showCommandingMenu '#USER:" @@ -22,7 +22,7 @@ 7 addMagazineCargo !="_dogHolder addMagazineCargo [\"RabbitCarcass_EPOCH\", 1]" !="_dogHolder addMagazineCargo [\"Pelt_EPOCH\", 1]" !="_dogHolder addMagazineCargo [\"Venom_EPOCH\", 1]" !="_dogHolder addMagazineCargo [\"SnakeCarcass_EPOCH\", 1]" !="_dogHolder addMagazineCargo [\"ChickenCarcass_EPOCH\", 1]" !="_acceptHolder addMagazineCargo [_wAmmo, 1] ;" !="CBA_fnc_addMagazineCargo" !="\\fnc_addMagazineCargo" !="\"addMagazineCargo" !="cba_fAddMagazineCargo" 7 addItem !="{player addItemToVest _x} forEach _vestItems;" !="player addItem _item;" !="_plyr addItemToVest _missionItem;" !="axeVIP addItemToVest _item;" !="_plyr addItemToVest _missionItem;" !="EPOCH_fnc_addItemOverflow" !="CBA_fnc_addItem" !="\\fnc_addItem" !="\"addItem" !="fnc_addItemCargo" 7 addBackPack !="fnc_addBackpackCargo" -7 addMissionEventHandler !="CBA_clientID = [0, 2] select isMultiplayer;\naddMissionEventHandler [\"PlayerConnected\", {\nparams [\"_id\", \"_uid\", \"_name\"" !="addMissionEventHandler [\"EachFrame\", cba_common_fnc_onFrame];" !="addMissionEventHandler [\"HandleDisconnect\"," !="addMissionEventHandler [\"Loaded\"," !="addMissionEventHandler ['Draw3D',_var + \"call Epoch_gui3DCooldownEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dModelPosEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dWorldPosEH;\"];" !="addMissionEventHandler [\n\"ended\",\n{\n\nBIS_fnc_missionHandlers_end = _this;" +7 addMissionEventHandler !="CBA_clientID = [0, 2] select isMultiplayer;\naddMissionEventHandler [\"PlayerConnected\", {\nparams [\"_id\", \"_uid\", \"_name\"" !="addMissionEventHandler [\"EachFrame\", {call cba_common_fnc_onFrame}];" !="addMissionEventHandler [\"HandleDisconnect\"," !="addMissionEventHandler [\"Loaded\"," !="addMissionEventHandler ['Draw3D',_var + \"call Epoch_gui3DCooldownEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dModelPosEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dWorldPosEH;\"];" !="addMissionEventHandler [\n\"ended\",\n{\n\nBIS_fnc_missionHandlers_end = _this;" 7 removeMissionEventHandler !="removeMissionEventHandler [\"Draw3D\", _id];" 7 removeAllWeapons !="removeAllWeapons axeGeneral;" 7 removeAllItems @@ -46,9 +46,9 @@ 7 displaySetEventHandler 7 ctrlSetEventHandler !="_ctrlButtonOK ctrlseteventhandler [\"buttonclick\"," !="ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\"" !="_ctrlBtn ctrlSetEventHandler [\"MouseButtonDblClick\", _verAct];" !="_button_gen ctrlSetEventHandler [\"ButtonClick\",_btn_code + \"(uiNamespace getVariable [\"" 7 addMPEventHandler -7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !="player addeventhandler [\"PostReset\",{BIS_EnginePPReset = true;} ];" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="\"CBA_fnc_addEventHandler\"" !="\\fnc_addEventHandler" !="\"addEventHandler" !="_eventFunc = _eventFunc + \"(_this select 0) addEventHandler ['Respawn', \" + str _eventFunc + \"];\";" !="_unit addEventHandler [\"hitpart\"," !="CBA_fnc_addEventHandler" !="_ship addEventHandler [\"AttributesChanged3DEN\"" !="addEventHandler [\"HandleDamage\",bis_fnc_reviveOnPlayerHandleDamage];" !="_unit addEventHandler [\"FiredNear\"" !="_smokeEH = _plyr addEventHandler [\"FiredNear\", \"airDropHandle setFSMVariable" !="_onContactEH = _currentTarget addEventHandler[\"EpeContactStart"" -7 displayAddEventHandler !="(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !="displayAddEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="_display displayaddeventhandler\n[\n\"mousemoving\"," !="_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'" !="_display displayaddeventhandler [_x,_fnc_animate];" !="Development\") then\n{\n_display displayaddeventhandler [\n\"keydown\"" !="CBA_fnc_addDisplayHandler" !="_display displayAddEventHandler [\"MouseMoving" !="private _handler = _display displayAddEventHandler [_key, _code];" -7 ctrlAddEventHandler !="_control = _display displayctrl 37305; \n_control ctrladdeventhandler" !="_ctrlMap = _display displayctrl 101;\n_ctrlMap ctrladdeventhandler" !="_display displayctrl 21995;\n_assetsButton ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2406; \n_control ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2400;\n_control ctrladdeventhandler [\"buttonclick\"," !="_ctrlTags ctrladdeventhandler [\"lbselchanged\"," !="_ButtonGeneral ctrladdeventhandler [\"buttonclick\"," !="_ctrlExecuteLocal ctrladdeventhandler [\"buttonclick\"," !="_bg ctrlAddEventHandler [\"MouseEnter\"," !="_container ctrlAddEventHandler [\"LBDblClick\",\"_this call EPOCH_itemInteractClick\"];" !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="(_display displayctrl _idc) ctrlAddEventHandler [\"LBSelChanged\"," !="_ctrl ctrlSetEventHandler [\"mouseEnter\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseExit\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseButtonDown\", (format [\"call %1;\",(_buttonSettings select _e select 2)])];" !="_prevButton ctrlAddEventHandler [\"MouseButtonUp\", {_this call cba_diagnostic_fnc_debug" !="BIS_RscRespawnControlsMap_ctrlHeaderRespawnButton ctrlAddEventhandler [\"ButtonDown\"" !="_control = _display displayctrl 105;\n_control ctrladdeventhandler [\"MouseButtonUp\"" +7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !="player addeventhandler [\"PostReset\",{BIS_EnginePPReset = true;} ];" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="\"CBA_fnc_addEventHandler\"" !="\\fnc_addEventHandler" !="\"addEventHandler" !="_eventFunc = _eventFunc + \"(_this select 0) addEventHandler ['Respawn', \" + str _eventFunc + \"];\";" !="_unit addEventHandler [\"hitpart\"," !="CBA_fnc_addEventHandler" !="_unit addEventHandler [_x, format ['call cba_xeh_fnc_%1', _x]];" !="_ship addEventHandler [\"AttributesChanged3DEN\"" !="addEventHandler [\"HandleDamage\",bis_fnc_reviveOnPlayerHandleDamage];" !="_unit addEventHandler [\"FiredNear\"" !="_smokeEH = _plyr addEventHandler [\"FiredNear\", \"airDropHandle setFSMVariable" !="_onContactEH = _currentTarget addEventHandler[\"EpeContactStart"" !="_object addeventhandler [\"local\",{[[_this select 0],\"bis_fnc_objectVar\"" +7 displayAddEventHandler !="(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !="displayAddEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="_display displayaddeventhandler\n[\n\"mousemoving\"," !="_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'" !="_display displayaddeventhandler [_x,_fnc_animate];" !="Development\") then\n{\n_display displayaddeventhandler [\n\"keydown\"" !="CBA_fnc_addDisplayHandler" !="_display displayAddEventHandler [\"MouseMoving" !="private _handler = _display displayAddEventHandler [_key, _code];" !="_display displayAddEventHandler [\"KeyDown\", \"_this call cba_keybinding_fnc_onKeyDown\"" +7 ctrlAddEventHandler !="_control = _display displayctrl 37305; \n_control ctrladdeventhandler" !="_ctrlMap = _display displayctrl 101;\n_ctrlMap ctrladdeventhandler" !="_display displayctrl 21995;\n_assetsButton ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2406; \n_control ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2400;\n_control ctrladdeventhandler [\"buttonclick\"," !="_ctrlTags ctrladdeventhandler [\"lbselchanged\"," !="_ButtonGeneral ctrladdeventhandler [\"buttonclick\"," !="_ctrlExecuteLocal ctrladdeventhandler [\"buttonclick\"," !="_bg ctrlAddEventHandler [\"MouseEnter\"," !="_container ctrlAddEventHandler [\"LBDblClick\",\"_this call EPOCH_itemInteractClick\"];" !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="(_display displayctrl _idc) ctrlAddEventHandler [\"LBSelChanged\"," !="_ctrl ctrlSetEventHandler [\"mouseEnter\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseExit\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseButtonDown\", (format [\"call %1;\",(_buttonSettings select _e select 2)])];" !="_prevButton ctrlAddEventHandler [\"MouseButtonUp\", {_this call cba_diagnostic_fnc_debug" !="BIS_RscRespawnControlsMap_ctrlHeaderRespawnButton ctrlAddEventhandler [\"ButtonDown\"" !="_control = _display displayctrl 105;\n_control ctrladdeventhandler [\"MouseButtonUp\"" !="_ctrlAddonList ctrlAddEventHandler [\"LBSelChanged\", cba_settings_fnc_gui_addonChanged];" 7 removeAllEventHandlers !"ctrlRemoveAllEventHandlers" !"displayRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";" !="_unit removeAllEventHandlers \"Hit\";\n_unit removeAllEventHandlers \"FiredNear\";" !="{_ship removeAllEventHandlers _x;} forEach [\"AttributesChanged3DEN\"" !="_zombie removeAllEventHandlers \"Hit\";" !="_zombie removeAllEventHandlers \"FiredNear\";" 7 displayRemoveAllEventHandlers !="_display displayRemoveAllEventHandlers _x;" !="if !(isMultiplayer) then { { (findDisplay 46) displayRemoveAllEventHandlers _x } forEach [\"KeyUp\", \"KeyDown\"] };" 7 removeAllMissionEventHandlers @@ -58,7 +58,7 @@ 7 remoteControl !="fn_moduleRemoteControl.sqf" !="\"BIS_fnc_moduleRemoteControl\"" 7 drawIcon3D !="EPOCH_drawIcon3dStability" !="EPOCH_drawIcon3d" !="drawIcon3D[\"\x\addons\a3_epoch_code\Data\Member.paa\",_color,_pos,1,1,0,_text,1,0.025,\"PuristaMedium\"];\n}forEach EPOCH_ESP_TARGETS;" !="drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_stability],_color,(getPosATL EPOCH_stabilityTarget),5,5,0,\"\",1,0.05,\"PuristaMedium\"];" !="drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_num],_color,_pos,4,4,0,\"\",1,0.05,\"PuristaMedium\"];" !="if (_condition) then {\ndrawIcon3D [_icon, _color, _position, _sizeX, _sizeY, _angle, _text," !="drawIcon3D [\"\A3\UI_F_MP_Mark\Data\Tasks\Misc\background.paa\"" !="drawIcon3D\n[\n(_x getVariable [\"bis_fnc_reviveGet3dIcons_textures" !="drawIcon3D[\"x\addons\a3_epoch_code\Data\UI\snap_ca.paa\"" 7 drawLine3D !="{\nfor [{_i = 1}, {_i < count _x}, {_i = _i + 1}] do {\ndrawLine3D [_x select (_i - 1), _x select _i, ((BIS_tracedShooter getVari" -7 ctrlCreate !="_parent ctrlcreate [\"RscMessageBox\",2351];" !="_c = _dsp ctrlCreate [\"rmx_drag_RscActivePicture\", call epoch_getIDC];" !="_c = _dsp ctrlCreate [\"rmx_t1\", call epoch_getIDC];" !="ctrlCreate [\"RscProgress\",_idc + 1];" !="ctrlCreate [\"rmx_rscControlsGroup\"" !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\"" !="ctrlCreate [_x,call _getIDC];" !="_mainGrp = _display ctrlCreate [\"Epoch_main_config_group\",_value];" !="ctrlCreate [\"RscControlsGroupNoScrollbars\",call epoch_getIDC];" !="ctrlCreate [\"rmx_rscPicture\",(66600 + _e)];" !="ctrlCreate [\"RscStructuredText\",call epoch_getIDC];" !="_bar = _display ctrlCreate [\"RscCustomProgress\"" !="_group = _dsp ctrlCreate [\"rmx_rscControlsGroup\", call Epoch_getIDC]" !="_control = _display ctrlCreate [\"RscControlsGroupNoScrollbars\", 5678910];" +7 ctrlCreate !="_parent ctrlcreate [\"RscMessageBox\",2351];" !="_c = _dsp ctrlCreate [\"rmx_drag_RscActivePicture\", call epoch_getIDC];" !="_c = _dsp ctrlCreate [\"rmx_t1\", call epoch_getIDC];" !="ctrlCreate [\"RscProgress\",_idc + 1];" !="ctrlCreate [\"rmx_rscControlsGroup\"" !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\"" !="ctrlCreate [_x,call _getIDC];" !="_mainGrp = _display ctrlCreate [\"Epoch_main_config_group\",_value];" !="ctrlCreate !="_prevButton = _display ctrlCreate [\"RscButtonMenu\", 90110, _dbg];" [\"RscControlsGroupNoScrollbars\",call epoch_getIDC];" !="ctrlCreate [\"rmx_rscPicture\",(66600 + _e)];" !="ctrlCreate [\"RscStructuredText\",call epoch_getIDC];" !="_bar = _display ctrlCreate [\"RscCustomProgress\"" !="_group = _dsp ctrlCreate [\"rmx_rscControlsGroup\", call Epoch_getIDC]" !="_control = _display ctrlCreate [\"RscControlsGroupNoScrollbars\", 5678910];" 7 ctrlClassName 7 ctrlModel 7 ctrlModelDirection diff --git a/Server_Install_Pack/sc/BattlEye/selectplayer.txt b/Server_Install_Pack/sc/battleye/selectplayer.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/selectplayer.txt rename to Server_Install_Pack/sc/battleye/selectplayer.txt diff --git a/Server_Install_Pack/sc/BattlEye/setdamage.txt b/Server_Install_Pack/sc/battleye/setdamage.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/setdamage.txt rename to Server_Install_Pack/sc/battleye/setdamage.txt diff --git a/Server_Install_Pack/sc/BattlEye/setpos.txt b/Server_Install_Pack/sc/battleye/setpos.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/setpos.txt rename to Server_Install_Pack/sc/battleye/setpos.txt diff --git a/Server_Install_Pack/sc/BattlEye/setvariable.txt b/Server_Install_Pack/sc/battleye/setvariable.txt similarity index 57% rename from Server_Install_Pack/sc/BattlEye/setvariable.txt rename to Server_Install_Pack/sc/battleye/setvariable.txt index 9c8e75e8..dee38842 100644 --- a/Server_Install_Pack/sc/BattlEye/setvariable.txt +++ b/Server_Install_Pack/sc/battleye/setvariable.txt @@ -1 +1 @@ -5 "" !=(traderName|Offer|Accept|BUILD_SLOT|TRADE_ACTIVE|last_targeter|epoch_(antagobj|antagBomb|gm_enabled)) !="bis_fnc_objectvar_var" !="bis_fnc_selectrespawntemplate_respawned" +5 "" !=(traderName|Offer|Accept|BUILD_SLOT|TRADE_ACTIVE|last_targeter|epoch_(antagobj|antagBomb|gm_enabled)) !="bis_fnc_objectvar_var" !="bis_fnc_selectrespawntemplate_respawned" !="#(rev_enabled|var)" !="cup_tow_towedveh" diff --git a/Server_Install_Pack/sc/BattlEye/setvariableval.txt b/Server_Install_Pack/sc/battleye/setvariableval.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/setvariableval.txt rename to Server_Install_Pack/sc/battleye/setvariableval.txt diff --git a/Server_Install_Pack/sc/BattlEye/teamswitch.txt b/Server_Install_Pack/sc/battleye/teamswitch.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/teamswitch.txt rename to Server_Install_Pack/sc/battleye/teamswitch.txt diff --git a/Server_Install_Pack/sc/BattlEye/waypointcondition.txt b/Server_Install_Pack/sc/battleye/waypointcondition.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/waypointcondition.txt rename to Server_Install_Pack/sc/battleye/waypointcondition.txt diff --git a/Server_Install_Pack/sc/BattlEye/waypointstatement.txt b/Server_Install_Pack/sc/battleye/waypointstatement.txt similarity index 100% rename from Server_Install_Pack/sc/BattlEye/waypointstatement.txt rename to Server_Install_Pack/sc/battleye/waypointstatement.txt diff --git a/Sources/epoch_code/compile/EPOCH_PutHandler.sqf b/Sources/epoch_code/compile/EPOCH_PutHandler.sqf index 96270c38..9756bdba 100644 --- a/Sources/epoch_code/compile/EPOCH_PutHandler.sqf +++ b/Sources/epoch_code/compile/EPOCH_PutHandler.sqf @@ -12,7 +12,7 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_PutHandler.sqf */ -_class = param [2]; +private _class = param [2]; //Radio Check if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _class)) == "ItemRadio") then { if !(_class in(assignedItems player)) then { diff --git a/Sources/epoch_code/compile/EPOCH_consumeItem.sqf b/Sources/epoch_code/compile/EPOCH_consumeItem.sqf index 4d751f9f..b9861600 100644 --- a/Sources/epoch_code/compile/EPOCH_consumeItem.sqf +++ b/Sources/epoch_code/compile/EPOCH_consumeItem.sqf @@ -13,7 +13,7 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_consumeItem.sqf */ //[[[cog import generate_private_arrays ]]] -private ["_buildClass","_buildingCountLimit","_buildingJammerRange","_canCapacity","_cfgBaseBuilding","_cfgItemInteractions","_color","_currentDMG","_currentFuel","_currentHIT","_fuelCapacity","_highestDMG","_interactAttributes","_interactOption","_interactReturnOnUse","_isOk","_isStorage","_magazineSize","_magazineSizeMax","_magazinesAmmoFull","_newDMG","_newFuel","_object","_otherObjects","_output","_paintCanColor","_paintCanIndex","_partCheck","_pos","_removeItem","_transportFuel","_unifiedInteract","_vehicle","_vehicles"]; +private ["_buildClass","_buildingCountLimit","_buildingJammerRange","_canCapacity","_cfgBaseBuilding","_cfgItemInteractions","_color","_currentDMG","_currentFuel","_currentHIT","_fuelCapacity","_highestDMG","_inputCount","_interactAttributes","_interactOption","_interactReturnOnUse","_isOk","_isStorage","_magazineSize","_magazineSizeMax","_magazinesAmmoFull","_newDMG","_newFuel","_object","_otherObjects","_output","_paintCanColor","_paintCanIndex","_partCheck","_pos","_removeItem","_transportFuel","_unifiedInteract","_vehicle","_vehicles"]; //[[[end]]] EPOCH_InteractedItem params ["_text","_item","_pic"]; @@ -129,7 +129,7 @@ switch _interactOption do { else { ["Building Disallowed: Frequency Unstable", 5] call Epoch_message; }; - } + } else { _object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"]; _object setDir ((getDir player) - 180); @@ -286,14 +286,14 @@ switch _interactOption do { _vehicles = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 6]; _vehicle = cursorTarget; if (_vehicle in _vehicles) then { - if (damage _vehicle != 0) then { + if (damage _vehicle != 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then { if (_item call _removeItem) then { [_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; ["Healed other player", 5] call Epoch_message; }; }; } else { - if (damage player != 0) then { + if (damage player != 0 || {_x > 0} count ((getallhitpointsdamage player) select 2) > 0) then { if (_item call _removeItem) then { [player,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; ["Healed yourself", 5] call Epoch_message; diff --git a/Sources/epoch_code/compile/EPOCH_debugMonitor.sqf b/Sources/epoch_code/compile/EPOCH_debugMonitor.sqf index 59a13586..3d2e72cb 100644 --- a/Sources/epoch_code/compile/EPOCH_debugMonitor.sqf +++ b/Sources/epoch_code/compile/EPOCH_debugMonitor.sqf @@ -30,7 +30,7 @@ _customVars = ""; }forEach EPOCH_customVars; hintSilent parseText format [" - Welcome to Epoch Alpha
+ Welcome to Epoch!
Current Version: %1
Build: %2
diff --git a/Sources/epoch_code/compile/EPOCH_niteLight.sqf b/Sources/epoch_code/compile/EPOCH_niteLight.sqf index 9f2d5f4f..62b2ab07 100644 --- a/Sources/epoch_code/compile/EPOCH_niteLight.sqf +++ b/Sources/epoch_code/compile/EPOCH_niteLight.sqf @@ -19,7 +19,8 @@ if (!isNull EP_light) then { deleteVehicle EP_light; }; _config = 'CfgEpochClient' call EPOCH_returnConfig; -_nlSettings = getArray ( _config >> "niteLight") params [["_nlEnabled",1],["_nlBright",1.88],["_nlZ",22]]; +_nlSettings = getArray( _config >> "niteLight"); +_nlSettings params [["_nlEnabled",1],["_nlBright",1.88],["_nlZ",22]]; if (_nlEnabled isEqualTo 1) then { _pos = (getPosATL player); _pos set [2,_nlZ]; diff --git a/Sources/epoch_code/compile/EPOCH_supportCopter.sqf b/Sources/epoch_code/compile/EPOCH_supportCopter.sqf index 45d68316..fadb68fa 100644 --- a/Sources/epoch_code/compile/EPOCH_supportCopter.sqf +++ b/Sources/epoch_code/compile/EPOCH_supportCopter.sqf @@ -12,6 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_supportCopter.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_SpawnTypes","_Spawncounts","_UnitType","_arrUnits","_idx","_maxunitCount","_minunitCount","_unitCount"]; +//[[[end]]] params ["_pos","_copter"]; _arrUnits = getArray (getMissionConfig "CfgEpochUAVSupport" >> "unitTypes"); @@ -36,4 +39,3 @@ for "_i" from 1 to _unitCount do { { [_SpawnTypes select _foreachindex, player, true, _x, _this] call EPOCH_unitSpawn; } forEach _Spawncounts; - diff --git a/Sources/epoch_code/compile/EPOCH_unitSpawn.sqf b/Sources/epoch_code/compile/EPOCH_unitSpawn.sqf index cb401760..65880930 100644 --- a/Sources/epoch_code/compile/EPOCH_unitSpawn.sqf +++ b/Sources/epoch_code/compile/EPOCH_unitSpawn.sqf @@ -13,9 +13,9 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_unitSpawn.sqf */ //[[[cog import generate_private_arrays ]]] -private ["_bomb","_config","_currentLimit","_disableAI","_driver","_grp","_index","_jammerRange","_jammers","_loop","_nonJammer","_nonTrader","_nonTraderAIRange","_restricted","_sapperNum","_spawnLimit","_targetPos","_unit","_units"]; +private ["_aiskill","_arrSkills","_arrUnits","_arrVals","_bomb","_config","_currentLimit","_disableAI","_driver","_grp","_index","_jammerRange","_jammers","_loop","_minAISkill","_nonJammer","_nonTrader","_nonTraderAIRange","_pos","_restricted","_sapperHndl","_sapperNum","_spawnLimit","_targetPos","_unit","_units"]; //[[[end]]] -params ["_unitClass",["_trgt",player],["_doVariable",false],["_unitCount",1],["_extraData",[]]]; +params ["_unitClass",["_trgt",player],["_doVariable",false],["_unitCount",1],["_extraData",[]] ]; _bomb = objNull; @@ -183,7 +183,7 @@ switch _unitClass do { // randomize skill for "_i" from 0 to ((count _arrSkills)-1) do { _aiskill = floor random (_arrVals select _i); - if (_aiskill<_minAISkill) then {_aiskill=_minAISkill}; + if (_aiskill < _minAISkill) then {_aiskill = _minAISkill}; _unit setSkill [_arrSkills select _i,_arrVals select _i]; }; // spawn brains only on leader diff --git a/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf b/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf index f37a7340..3a6e24c8 100644 --- a/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf +++ b/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf @@ -23,7 +23,7 @@ NOTHING */ //[[[cog import generate_private_arrays ]]] -private ["_buildingAllowed","_buildingCountLimit","_buildingJammerRange","_canUpgrade","_canUpgradePartCount","_config","_jammer","_missingCount","_missingParts","_nearestJammer","_ownedJammerExists","_part","_partCheck","_removedPartCount","_req","_return","_stability","_targeter","_upgrade","_upgradeParts","_upgrades"]; +private ["_buildingAllowed","_buildingCountLimit","_buildingJammerRange","_canUpgrade","_canUpgradePartCount","_config","_config2","_countdoors","_countgates","_doors","_gates","_jammer","_maxdoors","_maxgates","_missingCount","_missingParts","_nearestJammer","_ownedJammerExists","_part","_partCheck","_removedPartCount","_req","_return","_stability","_targeter","_upgrade","_upgradeParts","_upgrades","_upgradeto"]; //[[[end]]] params [ ["_object",objNull,[objNull]], @@ -115,7 +115,7 @@ if (_object isKindOf "Constructions_static_F") then { }; _canUpgradePartCount = _canUpgradePartCount + _req; } forEach _upgradeParts; - + _doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH"]; _gates = ["CinderWallGarage_EPOCH"]; if (_canUpgrade) then { diff --git a/Sources/epoch_code/compile/event_handlers/EPOCH_InventoryOpened.sqf b/Sources/epoch_code/compile/event_handlers/EPOCH_InventoryOpened.sqf index 23799717..d0b1eb04 100644 --- a/Sources/epoch_code/compile/event_handlers/EPOCH_InventoryOpened.sqf +++ b/Sources/epoch_code/compile/event_handlers/EPOCH_InventoryOpened.sqf @@ -12,6 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/event_handlers/EPOCH_InventoryOpened.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_blocked","_containerlocked","_seclocked"]; +//[[[end]]] params ["_unit","_container","_sec"]; setMousePosition[0.5, 0.5]; call EPOCH_showStats; @@ -24,11 +27,12 @@ if !(isNull _sec) then { _blocked = (_containerlocked && _seclocked); if (!_blocked && _containerlocked || _seclocked) then { [] spawn { + disableSerialization; waitUntil {!isNull findDisplay 602}; - _d = findDisplay 602; - _cargo = _d displayCtrl 6401; - _ground = _d displayCtrl 6321; + private _d = findDisplay 602; + private _cargo = _d displayCtrl 6401; + private _ground = _d displayCtrl 6321; _cargo ctrlEnable false; ctrlSetFocus _ground; ctrlActivate _ground; diff --git a/Sources/epoch_code/compile/functions/EPOCH_fnc_findRandomPosBehind.sqf b/Sources/epoch_code/compile/functions/EPOCH_fnc_findRandomPosBehind.sqf index 8d6827ea..1853a645 100644 --- a/Sources/epoch_code/compile/functions/EPOCH_fnc_findRandomPosBehind.sqf +++ b/Sources/epoch_code/compile/functions/EPOCH_fnc_findRandomPosBehind.sqf @@ -34,6 +34,6 @@ _rnd = ((180 +_offset) - (_arcIn / 2)) + (random _arcIn); _pos = getPosATL _unitIn; _dist = ((random (_maxIn - _minIn)) + _minIn) max _minIn; _dir = (getDir _unitIn) - _rnd; -if (_dir<0) then {_dir = _dir + 360}; +if (_dir < 0) then {_dir = _dir + 360}; //return [(_pos select 0) + (_dist*(sin _dir)), (_pos select 1) + (_dist*(cos _dir)), _pos select 2] diff --git a/Sources/epoch_code/compile/functions/EPOCH_fnc_findSapperStalkLocation.sqf b/Sources/epoch_code/compile/functions/EPOCH_fnc_findSapperStalkLocation.sqf index 57c82cb9..974f5fce 100644 --- a/Sources/epoch_code/compile/functions/EPOCH_fnc_findSapperStalkLocation.sqf +++ b/Sources/epoch_code/compile/functions/EPOCH_fnc_findSapperStalkLocation.sqf @@ -36,6 +36,6 @@ _rnd = _offset - (random _arcIn); _pos = getPosATL _trgtIn; _dist = ((random (_maxIn - _minIn)) + _minIn) max _minIn; _dir = _dirTo - _rnd; -if (_dir<0) then {_dir = _dir + 360}; +if (_dir < 0) then {_dir = _dir + 360}; // Return [(_pos select 0) + (_dist*(sin _dir)), (_pos select 1) + (_dist*(cos _dir)), _pos select 2] diff --git a/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf b/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf index 9a0ce62a..db26c8d0 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf @@ -3,7 +3,7 @@ By Aaron Clark - Epoch Mod */ //[[[cog import generate_private_arrays ]]] -private ["_activeControl","_bg","_btn_arr","_buffer","_buttonTXT","_button_gen","_button_texts","_cfgItemInteractions","_config","_control","_data","_display","_interactOption","_magCount","_pos","_start_idc","_type","_y2d"]; +private ["_activeControl","_bg","_btn_arr","_buffer","_buttonTXT","_button_gen","_button_texts","_cfgItemInteractions","_config","_control","_data","_display","_interactActions","_interactOption","_magCount","_pos","_start_idc","_type","_y2d"]; //[[[end]]] _button_texts = []; diff --git a/Sources/epoch_code/compile/inventory/EPOCH_selectInventoryItem.sqf b/Sources/epoch_code/compile/inventory/EPOCH_selectInventoryItem.sqf index 5a807e1e..e8950ce2 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_selectInventoryItem.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_selectInventoryItem.sqf @@ -23,7 +23,7 @@ NOTHING */ //[[[cog import generate_private_arrays ]]] -private ["_container","_craftingArray","_craftingArrayNames","_data","_idc","_index","_pic","_text","_weaponsAndItems"]; +private ["_container","_craftingArray","_craftingArrayNames","_data","_idc","_index","_pic","_text","_val","_weaponsAndItems"]; //[[[end]]] params ["_control","_index"]; EPOCH_InteractedItem = []; diff --git a/Sources/epoch_code/compile/looting/EPOCH_spawnLoot.sqf b/Sources/epoch_code/compile/looting/EPOCH_spawnLoot.sqf index 5ade6a41..a0871780 100644 --- a/Sources/epoch_code/compile/looting/EPOCH_spawnLoot.sqf +++ b/Sources/epoch_code/compile/looting/EPOCH_spawnLoot.sqf @@ -24,7 +24,7 @@ BOOL */ //[[[cog import generate_private_arrays ]]] -private ["_cfgBaseBuilding","_class","_color","_colors","_config","_delete","_dir","_item","_lootBias","_lootLimit","_lootType","_loots","_masterConfig","_pos","_positions","_possibleCount","_possibleLoots","_randomIndex","_return","_selectedLoot"]; +private ["_cfgBaseBuilding","_class","_color","_colors","_config","_delete","_dir","_item","_lootBias","_lootLimit","_lootType","_loots","_masterConfig","_pos","_posName","_positions","_possibleCount","_possibleLoots","_randomIndex","_return","_selectedLoot"]; //[[[end]]] params [["_building",objNull,[objNull]], ["_lootCheckBufferLimit",333], ["_lootObjectLimit",33]]; @@ -40,6 +40,7 @@ _lootBias = getNumber(_config >> "lootBias"); _lootType = getText(_config >> "lootType"); _loots = getArray(_config >> _lootType); _lootLimit = ceil random(getNumber(_config >> "limit")); +_posName = ""; EPOCH_LootedBlds pushBackUnique _building; if (count EPOCH_LootedBlds >= _lootCheckBufferLimit) then { @@ -49,7 +50,8 @@ if (count EPOCH_LootedBlds >= _lootCheckBufferLimit) then { if ((random 100) < _lootBias) then { _possibleLoots = []; { - _x params ["_posName","_class","_randomColor"]; + _x params ["_posNameTMP","_class","_randomColor"]; + _posName = _posNameTMP; _positions = getArray(_config >> _posName); { _possibleLoots pushBack [_class,_randomColor,_x]; diff --git a/Sources/epoch_code/compile/missions/EPOCH_mission_accept.sqf b/Sources/epoch_code/compile/missions/EPOCH_mission_accept.sqf index a0d0c302..4a8d5892 100644 --- a/Sources/epoch_code/compile/missions/EPOCH_mission_accept.sqf +++ b/Sources/epoch_code/compile/missions/EPOCH_mission_accept.sqf @@ -13,11 +13,10 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/missions/EPOCH_mission_accept.sqf */ //[[[cog import generate_private_arrays ]]] -private ["_allowTask","_doTask","_fnc_path","_itemCompile","_menuCondition","_miNSTask","_missionAllowed","_missionClasses","_missionIndex","_missionTasks","_nrEnts","_path","_plyrVar","_selectedMission","_simpleTask","_simpleTaskFNC","_simpleTaskFSM","_simpleTaskSQF","_tag","_taskNS","_trader","_uiNSTask"]; +private ["_epochmissionsconfig","_inGameTasksconfig","_menuCondition","_missionAllowed","_missionClasses","_missionIndex","_missionTasks","_missionname","_msg","_newtask","_nexttask","_nrEnts","_selectedMission","_simpleTask","_taskCall","_taskSQF","_taskname","_trader"]; //[[[end]]] _missionIndex = lbCurSel 1500; _missionAllowed = true; -//systemChat format ["Mission Acepted: %1",_missionIndex]; _missionClasses = getArray(getMissionConfig "EpochMissionList" >> "traderMissionClasses"); _nrEnts = player nearEntities ["Man", 20]; @@ -29,90 +28,55 @@ _trader = objNull; }forEach _nrEnts; if !(isNull _trader) then { - -_menuCondition = getText(getMissionConfig "epochMissions" >> (_missionClasses select _missionIndex) >> "missionDeny"); - if!(_menuCondition=="")then{ - if(call compile _menuCondition)then{_missionAllowed = false;}; - }; - - - if(_missionAllowed)then{ _selectedMission = _missionClasses select _missionIndex; - _missionTasks = getArray(getMissionConfig "epochMissions" >> _selectedMission >> "tasksList"); - - _simpleTask = getNumber (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "simpleTask"); - - //systemChat format ["Simple Task: %1 | Mission: %2 from %3",_simpleTask,_selectedMission,_missionTasks]; - - if(_simpleTask > 0)then{//Simple Task - - _simpleTaskFSM = getText (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "initfsm"); - _simpleTaskSQF = getText (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "initsqf"); - _simpleTaskFNC = getText (getMissionConfig "inGameTasks" >> (_missionTasks select 0) >> "initcall"); - - if!(_simpleTaskSQF == "")then{//Compile and store SQF Function - _tag = getText (getMissionConfig "CfgClientFunctions" >> "A3E" >> "tag"); - _path = getText (getMissionConfig "inGameTasks" >> "file"); - _taskNS = _tag + "_" + ((_simpleTaskSQF splitString ".") select 0); - _fnc_path = _path + "\" +_simpleTaskSQF; - - if!((typeName _taskNS)=="CODE")then{ - _itemCompile = compileFinal preprocessFileLineNumbers _fnc_path; - missionNamespace setvariable [_taskNS,_itemCompile]; - }else{ - _itemCompile = missionNamespace getVariable ["_taskNS",""]; - }; - - //Emulating CfgClientFunctions - Is this required ? - [] call _itemCompile; - - }; - - if!(_simpleTaskFSM == "")then{ - _simpleTaskFSM = _path + "\" + _simpleTaskFSM; - epochSimpleTaskHandle = [] execFSM _simpleTaskFSM; - }; - - if!(_simpleTaskFNC == "")then{ - call compile _simpleTaskFNC; - }; - - }else{//Run Task / Mission Monitor - - _doTask = (_missionTasks select 0); - _allowTask = true; - - _plyrVar = missionNamespace getVariable ["EPOCH_playerMissionArray",[]] select {_x find "axeTask" > -1;}; - _uiNSTask = ""; - if(count _plyrVar > 0)then{ - _uiNSTask = _plyrVar select 0 select 1; - }; - _miNSTask = missionNameSpace getVariable ["axeTask",""]; - - //Allow continuation of mission from Cached Task - if!(_uiNSTask == "")then{ - if(_miNSTask == "")then{ - _doTask = _uiNSTask; - }else{ - _allowTask = false; - [format ["Already on a mission - %1",selectRandom ['Chop Chop !','Get on With It !','What are you waiting for ?','No bonuses for tardiness !']], 5] call Epoch_message; - }; - }; - - if(_allowTask)then{ - epochTaskHandle = [_doTask] execFSM "epoch_code\System\task_control.fsm" - }; + _epochmissionsconfig = getMissionConfig "epochMissions"; + _menuCondition = getText (_epochmissionsconfig >> _selectedMission >> "missionDeny"); + if!(_menuCondition == "")then{ + if(call compile _menuCondition) then { + _missionAllowed = false; + }; + }; + if(_missionAllowed)then{ + _missionTasks = getArray (_epochmissionsconfig >> _selectedMission >> "tasksList"); + _missionname = getText (_epochmissionsconfig >> _selectedMission >> "missionName"); + _inGameTasksconfig = getMissionConfig "inGameTasks"; + _taskname = _missionTasks select 0; + _simpleTask = getNumber (_inGameTasksconfig >> _taskname >> "simpleTask"); + if (_selectedMission isequalto "debugResetMission") exitwith { + EPOCH_ResetTraderMission = true; + }; + if !(EPOCH_ActiveTraderMission isequalto []) exitwith { + EPOCH_ActiveTraderMission params ['','',['_missionname','ERROR']]; + _msg = format ['You are already running %1. Finish or cancel it first',_missionname]; + [_msg, 5] call Epoch_message; }; - }else{ - - [format["Mission Not Allowed !",_menuCondition], 5] call Epoch_message; //Not formatting, is this intended? - + if (_simpleTask > 0) then { //Simple Task + _taskSQF = getText ( _inGameTasksconfig >> _taskName >> "initsqf"); + if !(_taskSQF isequalto '') then { + call compile format ["[_taskName,player,_unit,_taskItem] execVM ""%1""",_taskSQF]; + }; + _taskCall = getText ( _inGameTasksconfig >> _taskName >> "initcall"); + if !(_taskCall isequalto '') then { + call compile _taskCall + }; + _nexttask = getArray ( _inGameTasksconfig >> _taskName >> "nextTask"); + if !(_nexttask isequalto []) then { + _newtask = selectrandom _nexttask; + EPOCH_mission_startTime = diag_ticktime; + EPOCH_ActiveTraderMission = [_inGameTasksconfig,_newtask,_missionname]; + }; + } + else { + EPOCH_mission_startTime = diag_ticktime; + EPOCH_ActiveTraderMission = [_inGameTasksconfig,_taskname,_missionname]; + }; + } + else { + [format["Mission Not Allowed !",_menuCondition], 5] call Epoch_message; //Not formatting, is this intended? }; - - -} else { -//systemChat format ["Trader Not Found",""]; -["Trader Lost. Goodbye.", 5] call Epoch_message; +} +else { + ["Trader Lost. Goodbye.", 5] call Epoch_message; }; diff --git a/Sources/epoch_code/compile/missions/EPOCH_spawn_construct.sqf b/Sources/epoch_code/compile/missions/EPOCH_spawn_construct.sqf index 3e8c4c04..5ba72d04 100644 --- a/Sources/epoch_code/compile/missions/EPOCH_spawn_construct.sqf +++ b/Sources/epoch_code/compile/missions/EPOCH_spawn_construct.sqf @@ -12,9 +12,6 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/missions/EPOCH_spawn_construct.sqf */ -//[[[cog import generate_private_arrays ]]] -private ["_unit"]; -//[[[end]]] -_unit = createAgent ["Construct_F", getPos player, [], 520, "FORM"]; +private _unit = createAgent ["Construct_F", getPos player, [], 520, "FORM"]; {_unit disableAI _x}forEach["TARGET","AUTOTARGET","FSM"]; [_unit] execFSM "\x\addons\a3_epoch_code\System\Construct_Brain.fsm"; diff --git a/Sources/epoch_code/compile/missions/tasks/traderDiag_name.sqf b/Sources/epoch_code/compile/missions/tasks/traderDiag_name.sqf index c9020341..9cc0cf17 100644 --- a/Sources/epoch_code/compile/missions/tasks/traderDiag_name.sqf +++ b/Sources/epoch_code/compile/missions/tasks/traderDiag_name.sqf @@ -1,3 +1,6 @@ +//[[[cog import generate_private_arrays ]]] +private ["_nameArr","_newName","_nrMn","_responseArr","_trader","_trdrCurrName"]; +//[[[end]]] _trader = objNull; _nrMn = nearestObjects [player, ["C_Man_1"], 16]; _trader = _nrMn select 0; @@ -12,4 +15,4 @@ _trader setVariable ["traderName",_newName, true]; }; _responseArr = ["I don't know. You can only be regenerated so many times before the memory starts to go..","You again..! Go bother someone else.",format["There was a time when names mattered, call me %1.",name _trader],"My name..? What does it matter.","Hey buddy you rock up here unannounced and suddenly we're friends ? On your bike if you aren't buying or selling.",format["My name.. I am known as %1",name _trader], format["When names mattered I was called %1",name _trader],"I forget.. At least, I try to forget."]; -[selectRandom _responseArr, 5] call Epoch_message; \ No newline at end of file +[selectRandom _responseArr, 5] call Epoch_message; diff --git a/Sources/epoch_code/compile/missions/tasks/traderDiag_nearPlayers.sqf b/Sources/epoch_code/compile/missions/tasks/traderDiag_nearPlayers.sqf index 173193eb..f1032f66 100644 --- a/Sources/epoch_code/compile/missions/tasks/traderDiag_nearPlayers.sqf +++ b/Sources/epoch_code/compile/missions/tasks/traderDiag_nearPlayers.sqf @@ -1,4 +1,6 @@ -private["_plyr","_trdrMsg"]; +//[[[cog import generate_private_arrays ]]] +private ["_plyr","_plyrs","_trdrMsg"]; +//[[[end]]] _trdrMsg = "Do I look like the local Neighbourhood Watch..? No, I do not !"; _plyrs = []; _plyrs = player nearEntities [["Epoch_Man_base_F","Epoch_Female_base_F"], 250]; @@ -9,4 +11,4 @@ if (count _plyrs < 2) then { _plyr = selectRandom _plyrs; _trdrMsg = format["%2 %1.",name _plyr, selectRandom ["The last person picked up by the UAV was","I did spot someone earlier, their name was","I heard there was somebody new in the area, "]]; }; -[_trdrMsg, 5] call Epoch_message; \ No newline at end of file +[_trdrMsg, 5] call Epoch_message; diff --git a/Sources/epoch_code/compile/missions/tasks/traderDiag_nearVehicles.sqf b/Sources/epoch_code/compile/missions/tasks/traderDiag_nearVehicles.sqf index 80ccf515..e9ae7971 100644 --- a/Sources/epoch_code/compile/missions/tasks/traderDiag_nearVehicles.sqf +++ b/Sources/epoch_code/compile/missions/tasks/traderDiag_nearVehicles.sqf @@ -1,8 +1,10 @@ -private["_plyr","_trdrMsg"]; +//[[[cog import generate_private_arrays ]]] +private ["_dist","_plyr","_trdrMsg","_veh","_vehs"]; +//[[[end]]] _trdrMsg = "Hey, there is a garage down the road.. Well, there used to be."; _vehs = []; _plyr = player; -_vehs = nearestObjects [_plyr, ["CAR","AIR"], 1000]; +_vehs = nearestObjects [_plyr, ["CAR","AIR"], 1000]; if (count _vehs < 1) then { _trdrMsg = format["%2 %1.",name _plyr,selectRandom["I haven't seen anything lately, why not buy one","There is nothing around here","The last time the UAV went out it found nothing"]]; } else { @@ -10,4 +12,4 @@ if (count _vehs < 1) then { _dist = _veh distance _plyr; _trdrMsg = format["I know of at least one vehicle within %1m of my current location. It looks like a %2.",_dist, typeof _veh]; }; -[_trdrMsg, 5] call Epoch_message; \ No newline at end of file +[_trdrMsg, 5] call Epoch_message; diff --git a/Sources/epoch_code/compile/missions/tasks/traderDiag_news.sqf b/Sources/epoch_code/compile/missions/tasks/traderDiag_news.sqf index d08b9884..12e7162e 100644 --- a/Sources/epoch_code/compile/missions/tasks/traderDiag_news.sqf +++ b/Sources/epoch_code/compile/missions/tasks/traderDiag_news.sqf @@ -1,3 +1,3 @@ -_newsArr = ["My dog was shot. That made me sad.","Business has been quiet since word got out that sappers are in the area.","Looters are expecting too much crypto for all the junk they bring in.","What do I look like ? A newspaper vendor. Go Away.","The sun came up again this morning.. That's good news I suppose.","Keep your dog fed with raw or cooked carcasses.","Sappers are known to be good for their pelts. Just don't get too close to one","Some very strange rumours that a Construct was seen in the mountains. Those things are just bedtime stories to scare kids with.","UAVs are a good source of components.","Some say the nearby town is haunted by malevolent spirits.","I hear the military are helping survivors with air drops. Your loot is always welcome here if you find one.","Dogs can help you find pelts and animal carcasses","I heard that a new vehicle has been seen, some kind of board that you stand on. I personally don't believe the rumours."]; +private _newsArr = ["My dog was shot. That made me sad.","Business has been quiet since word got out that sappers are in the area.","Looters are expecting too much crypto for all the junk they bring in.","What do I look like ? A newspaper vendor. Go Away.","The sun came up again this morning.. That's good news I suppose.","Keep your dog fed with raw or cooked carcasses.","Sappers are known to be good for their pelts. Just don't get too close to one","Some very strange rumours that a Construct was seen in the mountains. Those things are just bedtime stories to scare kids with.","UAVs are a good source of components.","Some say the nearby town is haunted by malevolent spirits.","I hear the military are helping survivors with air drops. Your loot is always welcome here if you find one.","Dogs can help you find pelts and animal carcasses","I heard that a new vehicle has been seen, some kind of board that you stand on. I personally don't believe the rumours."]; -[selectRandom _newsArr, 5] call Epoch_message; \ No newline at end of file +[selectRandom _newsArr, 5] call Epoch_message; diff --git a/Sources/epoch_code/compile/missions/tasks/traderDiag_timePlease.sqf b/Sources/epoch_code/compile/missions/tasks/traderDiag_timePlease.sqf index 88f5485c..07d16b32 100644 --- a/Sources/epoch_code/compile/missions/tasks/traderDiag_timePlease.sqf +++ b/Sources/epoch_code/compile/missions/tasks/traderDiag_timePlease.sqf @@ -1,4 +1,6 @@ - +//[[[cog import generate_private_arrays ]]] +private ["_hour","_min"]; +//[[[end]]] _hour = str(date select 3); _min = str(date select 4); @@ -10,4 +12,4 @@ if(count _min < 2)then{ _min = "0" + _min; }; -[format ["The time is %1:%2.",_hour, _min], 5] call Epoch_message; \ No newline at end of file +[format ["The time is %1:%2.",_hour, _min], 5] call Epoch_message; diff --git a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Check.sqf b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Check.sqf index 982a4982..e34f8886 100644 --- a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Check.sqf +++ b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Check.sqf @@ -13,7 +13,9 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/servicepoint/EPOCH_SP_Check.sqf */ -private ['_inSP','_vehicle','_vehName','_allRepaired']; +//[[[cog import generate_private_arrays ]]] +private ["_ServicePointClasses","_config","_inSP","_nearClasses","_servicepointDist","_servicepoints","_vehicle"]; +//[[[end]]] _vehicle = vehicle player; if (_vehicle == player) exitwith {false}; @@ -28,11 +30,7 @@ _servicepointDist = ["CfgServicePoint", "ServicePointDist", 40] call EPOCH_fnc _ServicePointClasses = ["CfgServicePoint", "ServicePointClasses", []] call EPOCH_fnc_returnConfigEntryV2; if (_servicepoints isequalto [] && _ServicePointClasses isequalto []) exitwith {false}; -if (_vehicle == player) exitwith {false}; -if !(local _vehicle) exitwith {false}; -if (speed _vehicle > 2 || speed _vehicle < -2) exitwith {false}; -if (((getpos _vehicle) select 2) > 1) exitwith {false}; -if (!(_vehicle iskindof 'ship') && (((getposasl _vehicle) select 2) < 1)) exitwith {false}; + _inSP = false; if (({player distance _x < _servicepointDist} count _servicepoints > 0)) then { _inSP = true; diff --git a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Rearm.sqf b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Rearm.sqf index 91ccff47..4c83e699 100644 --- a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Rearm.sqf +++ b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Rearm.sqf @@ -13,18 +13,20 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/servicepoint/EPOCH_SP_Rearm.sqf */ -private ['_magname','_vehtype','_vehName']; +//[[[cog import generate_private_arrays ]]] +private ["_line","_magname","_vehName","_vehtype"]; +//[[[end]]] params ['_vehicle','_ammotype','_turret','_reloagmags','_ammocount','_costs']; if (!local _vehicle) exitWith { _line = 'Rearm denied - Go in as driver first!'; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; _vehtype = typeof _vehicle; _vehName = getText(configFile >> 'cfgVehicles' >> _vehtype >> 'displayName'); if (EPOCH_playerCrypto < _costs) exitWith { _line = format ['You need %1 Crypto to Rearm %2', _costs,_vehName]; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; if(_costs > 0)then{ [player,(_costs*-1),Epoch_personalToken] remoteexec ['epoch_server_paycrypto',2]; @@ -32,10 +34,10 @@ if(_costs > 0)then{ _vehicle removeMagazinesTurret [_ammotype,_turret]; for '_i' from 1 to _reloagmags do { _vehicle addMagazineTurret [_ammotype, _turret, _ammocount]; -}; +}; _magname = getText (configFile >> 'CfgMagazines' >> _ammotype >> 'displayName'); if (_magname isequalto '') then { _magname = _ammotype; }; _line = format ['%1 rearmed with %2', _vehName, _magname]; -[_line,5] call Epoch_message; +[_line,5] call Epoch_message; diff --git a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Refuel.sqf b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Refuel.sqf index 5c0a1e54..e6b5e4c8 100644 --- a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Refuel.sqf +++ b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Refuel.sqf @@ -19,13 +19,13 @@ _args params [['_costs',0],['_updateInterval',1],['_amount',0.1]]; if (!local _vehicle) exitWith { _line = 'Refuel denied - Go in as driver first!'; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; _vehtype = typeof _vehicle; _vehName = getText(configFile >> 'cfgVehicles' >> _vehtype >> 'displayName'); if (EPOCH_playerCrypto < _costs) exitWith { _line = format ['You need %1 Crypto to Refuel %2', _costs,_vehName]; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; if(_costs > 0)then{ [player,(_costs*-1),Epoch_personalToken] remoteexec ['epoch_server_paycrypto',2]; @@ -34,12 +34,12 @@ _vehicle engineOn false; while {(vehicle player == _vehicle) && (local _vehicle) && (alive player)} do { if (speed _vehicle > 2 || speed _vehicle < -2 ) exitWith { _line = format ['Refueling of %1 stopped', _vehName]; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; _vehicle setFuel ((Fuel _vehicle)+_amount); if (Fuel _vehicle > 0.99) exitWith { _line = format ['%1 Refueled', _vehName]; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; uisleep _updateInterval; }; diff --git a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Repair.sqf b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Repair.sqf index eac299d0..e5bb788b 100644 --- a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Repair.sqf +++ b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Repair.sqf @@ -13,53 +13,55 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/servicepoint/EPOCH_SP_Repair.sqf */ -private ['_vehtype','_vehName','_allRepaired']; -params [['_vehicle',objnull],['_args',[]]]; +//[[[cog import generate_private_arrays ]]] +private ["_allHitPointsDamage","_allRepaired","_line","_partName","_pos","_repaired","_vehName","_vehtype"]; +//[[[end]]] +params [['_vehicle',objnull],['_args',[]] ]; _args params [['_costs',0],['_updateInterval',1.2]]; if (!local _vehicle) exitWith { _line = 'Repair denied - Go in as driver first!'; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; _vehtype = typeOf _vehicle; _vehName = getText(configFile >> 'cfgVehicles' >> _vehtype >> 'displayName'); if (EPOCH_playerCrypto < _costs) exitWith { _line = format ['You need %1 Crypto to Repair %2', _costs,_vehName]; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; if(_costs > 0)then{ [player,(_costs*-1),Epoch_personalToken] remoteexec ['epoch_server_paycrypto',2]; }; _vehicle engineOn false; -_repaired = []; +_repaired = []; _allRepaired = true; _allHitPointsDamage = getAllHitPointsDamage _vehicle; { if ((vehicle player != _vehicle) || (!local _vehicle) || speed _vehicle < -2 || speed _vehicle > 2) exitWith { _allRepaired = false; _line = format ['Repairing of %1 stopped', _vehName]; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; if (!(_x in _repaired) && !(_x isequalto "") && (_allHitPointsDamage select 2 select _foreachindex) > 0) then { - _partName = toarray _x; - _partName set [0,20]; - _partName set [1,45]; - _partName set [2,20]; - _partName = toString _partName; - _vehicle setHitPointDamage [_x,0]; - _line = format ['Repairing%1 ...', _partName]; - [_line,5] call Epoch_message; - _repaired pushback _x; - uisleep _updateInterval; - }; -} foreach (_allHitPointsDamage select 0); + _partName = toarray _x; + _partName set [0,20]; + _partName set [1,45]; + _partName set [2,20]; + _partName = toString _partName; + _vehicle setHitPointDamage [_x,0]; + _line = format ['Repairing%1 ...', _partName]; + [_line,5] call Epoch_message; + _repaired pushback _x; + uisleep _updateInterval; + }; +} foreach (_allHitPointsDamage select 0); if (_allRepaired) then { - if ((damage _vehicle) > 0) then { + if ((damage _vehicle) > 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then { [_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; }; _pos = getposatl _vehicle; _pos set [2,(_pos select 2)+0.25]; _vehicle setposatl _pos; _line = format ['%1 full Repaired', _vehName]; - [_line,5] call Epoch_message; + [_line,5] call Epoch_message; }; diff --git a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Start.sqf b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Start.sqf index c4f26728..4ac0871c 100644 --- a/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Start.sqf +++ b/Sources/epoch_code/compile/servicepoint/EPOCH_SP_Start.sqf @@ -13,7 +13,9 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/servicepoint/EPOCH_SP_Start.sqf */ -private ['_missingammo','_ownedcompletemags','_magname','_actionTitle','_costs','_vehicle','_refuel_costs','_refuel_updateInterval','_refuel_amount','_costsFree','_repair_costs','_fnc_getCosts','_fnc_actionTitle']; +//[[[cog import generate_private_arrays ]]] +private ["_Ignatz_SP_Array","_VehiclesAndAmmo","_actionName","_actionTitle","_ammocount","_ammotype","_cost","_costs","_costsFree","_costsText","_fnc_actionTitle","_fnc_getCosts","_magname","_maxammototal","_maxmags","_missingammo","_ownedcompletemags","_refuel_amount","_refuel_costs","_refuel_updateInterval","_reloagmags","_repairTime","_repair_costs","_totalammocount","_turret","_typeName","_vehicle"]; +//[[[end]]] Ignatz_Refuel = nil; Ignatz_Repair = nil; @@ -96,11 +98,11 @@ _fnc_actionTitle = { _costs = [_vehicle, _refuel_costs] call _fnc_getCosts; _actionTitle = [format['Refuel %1',getText (configFile >> 'Cfgvehicles' >> typeOf _vehicle >> 'displayName')], _costs] call _fnc_actionTitle; -Ignatz_Refuel = [_actionTitle,[_vehicle,[_costs, _refuel_updateInterval,_refuel_amount]]]; +Ignatz_Refuel = [_actionTitle,[_vehicle,[_costs, _refuel_updateInterval,_refuel_amount]] ]; _costs = [_vehicle, _repair_costs] call _fnc_getCosts; _actionTitle = [format['Repair %1',getText (configFile >> 'Cfgvehicles' >> typeOf _vehicle >> 'displayName')], _costs] call _fnc_actionTitle; -Ignatz_Repair = [_actionTitle,[_vehicle,[_costs, _repairTime]]]; +Ignatz_Repair = [_actionTitle,[_vehicle,[_costs, _repairTime]] ]; if (count _Ignatz_SP_Array > 0) then {Ignatz_Rearm0 = _Ignatz_SP_Array select 0;}; if (count _Ignatz_SP_Array > 1) then {Ignatz_Rearm1 = _Ignatz_SP_Array select 1;}; if (count _Ignatz_SP_Array > 2) then {Ignatz_Rearm2 = _Ignatz_SP_Array select 2;}; diff --git a/Sources/epoch_code/compile/setup/masterLoop/Event1.sqf b/Sources/epoch_code/compile/setup/masterLoop/Event1.sqf index 937a8a6f..e1afb736 100644 --- a/Sources/epoch_code/compile/setup/masterLoop/Event1.sqf +++ b/Sources/epoch_code/compile/setup/masterLoop/Event1.sqf @@ -169,3 +169,106 @@ for "_i" from _hudIndex to 9 do { _c ctrlSetText ""; }; missionNamespace setVariable [format["EPOCH_dynHUD_%1","topRight"], nil]; + +// EPOCH TraderMissions +if (!isnil "EPOCH_ResetTraderMission") then { + if (!isNil "EPOCH_taskMarker") then{ + EPOCH_taskMarker params ["_mkrName","_taskMarkerVis"]; + [player,_taskMarkerVis,_mkrName] remoteExec ["EPOCH_server_removeMarker",2]; + EPOCH_taskMarker = nil; + }; + if !(_EPOCH_TraderMissionArray isequalto []) then { + _EPOCH_TraderMissionArray params ["_mainblock"]; + _mainblock params ["","","","","",["_missionCleanUpCall",""]]; + call _missionCleanUpCall; + }; + EPOCH_ActiveTraderMission = []; + _EPOCH_TraderMissionArray = []; + _LastMissionTrigger = 0; + ["Mission sucessfully resettet", 5] call Epoch_message; + EPOCH_ResetTraderMission = nil; +}; + +if !(EPOCH_ActiveTraderMission isequalto []) then { + if (_EPOCH_TraderMissionArray isequalto []) then { + _EPOCH_TraderMissionArray = EPOCH_ActiveTraderMission call _EPOCH_BuildTraderMisson; + }; + _EPOCH_TraderMissionArray params ["_mainblock","_taskDelay","_triggerintervall","_taskDialogues","_taskEvents","_taskFailed","_taskComplete"]; + if (diag_ticktime < _taskDelay) exitwith {}; + if (diag_ticktime < _LastMissionTrigger + _triggerintervall) exitwith {}; + _LastMissionTrigger = diag_ticktime; + _mainblock params ["_inGameTasksconfig","_taskName","_unit","_taskItem","_taskTitle","_missionCleanUpCall","_taskCleanup"]; + _taskComplete params ["_taskCompleteCond","_taskReward","_taskCompleteDiags","_taskCompleteCall","_taskNextTrigger"]; + _taskFailed params ['_taskFailedCond','_taskFailTime','_taskFailedDiags','_taskFailedSQF','_taskFailedCall']; + if (diag_ticktime > _taskFailTime || call _taskFailedCond) exitwith { + if (count _taskFailedDiags > 0) then { + _diag = selectRandom _taskFailedDiags; + [format ["%1",_diag], 5] call Epoch_message; + }; + if !(_taskFailedSQF isequalto '') then { + call compile format ["[_taskName,_plyr,_unit,_taskItem] execVM ""%1""",_taskFailedSQF]; + }; + if !(str(_taskFailedCall) == "{}") then { + call _taskFailedCall; + }; + if (!isNil "EPOCH_taskMarker") then{ + EPOCH_taskMarker params ['_mkrName','_taskMarkerVis']; + [player,_taskMarkerVis,_mkrName] remoteExec ["EPOCH_server_removeMarker",2]; + EPOCH_taskMarker = nil; + }; + call _missionCleanUpCall; + EPOCH_ActiveTraderMission = []; + _EPOCH_TraderMissionArray = []; + _LastMissionTrigger = 0; + }; + if (call _taskCompleteCond) exitwith { + if (count _taskCompleteDiags > 0) then { + _diag = selectrandom _taskCompleteDiags; + [format ["%1",_diag], 5] call Epoch_message; + }; + if(count _taskReward > 0) then { + [player,Epoch_personalToken,_taskReward,[],objNull,false] remoteExec ["EPOCH_Server_createObject",2]; + }; + if !(str(_taskCompleteCall) == "{}") then { + call _taskCompleteCall; + }; + if (_taskCleanup isequalto 1) then { + if (!isNil "EPOCH_taskMarker") then{ + EPOCH_taskMarker params ['_mkrName','_taskMarkerVis']; + [player,_taskMarkerVis,_mkrName] remoteExec ["EPOCH_server_removeMarker",2]; + EPOCH_taskMarker = nil; + }; + call _missionCleanUpCall; + }; + if (count _taskNextTrigger > 0) then { + _nexttask = selectrandom _taskNextTrigger; + _EPOCH_TraderMissionArray = [_inGameTasksconfig,_nexttask] call _EPOCH_BuildTraderMisson; + } + else { + EPOCH_ActiveTraderMission = []; + _EPOCH_TraderMissionArray = []; + }; + _LastMissionTrigger = 0; + }; + { + _x params ["_taskEventCond","_taskEventCALL","_taskEventTasks"]; + if (call _taskEventCond) exitwith { + call _taskEventCALL; + if (count _taskEventTasks > 0) exitwith { + _task = selectrandom _taskEventTasks; + _EPOCH_TraderMissionArray = [_inGameTasksconfig,_task] call _EPOCH_BuildTraderMisson; + }; + _taskEvents deleteat _foreachindex; + }; + } foreach _taskEvents; + { + _x params ['_taskDiagCond','_taskDiag']; + if (call _taskDiagCond) exitwith { + _diag = selectRandom _taskDiag; + if !(_diag isequalto "") then { + [format ["%1",_diag], 5] call Epoch_message; + }; + _taskDialogues deleteat _foreachindex; + }; + } foreach _taskDialogues; +}; diff --git a/Sources/epoch_code/compile/setup/masterLoop/init.sqf b/Sources/epoch_code/compile/setup/masterLoop/init.sqf index 4e2db7c9..744bc874 100644 --- a/Sources/epoch_code/compile/setup/masterLoop/init.sqf +++ b/Sources/epoch_code/compile/setup/masterLoop/init.sqf @@ -133,3 +133,97 @@ _cursorTarget = objNull; // init cfgBaseBuilding config var _cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig; _cfgObjectInteractions = 'CfgObjectInteractions' call EPOCH_returnConfig; + + +_EPOCH_BuildTraderMisson = { + params ['_inGameTasksconfig','_taskName',['_unit',objnull],['_taskItem',objnull]]; + _taskTitle = getText ( _inGameTasksconfig >> _taskName >> "title"); + _taskSQF = getText ( _inGameTasksconfig >> _taskName >> "initsqf"); + if !(_taskSQF isequalto '') then { + call compile format ["[_taskName,player,_unit,_taskItem] execVM ""%1""",_taskSQF]; + }; + _taskCall = getText ( _inGameTasksconfig >> _taskName >> "initcall"); + if !(_taskCall isequalto '') then { + call compile _taskCall; + }; + + _taskDelay = diag_ticktime + (getNumber ( _inGameTasksconfig >> _taskName >> "triggerDelay")); + _triggerintervall = getNumber ( _inGameTasksconfig >> _taskName >> "triggerintervall"); + _taskItems = getArray ( _inGameTasksconfig >> _taskName >> "items"); + if !(_taskItems isequalto []) then { + [player,Epoch_personalToken,_taskItems,[],objNull,false] remoteExec ["EPOCH_Server_createObject",2]; + }; + + _taskMarkerType = getnumber (_inGameTasksconfig >> _taskName >> 'markerType'); + if (_taskMarkerType > 0) then { + _taskMarkerVis = getNumber ( _inGameTasksconfig >> _taskName >> "markerVisible"); + _markerPos = [0,0,0]; + if (isNil "EPOCH_taskMarkerPos") then { + if !(isNull _trgt) then { + _markerPos = getPos _trgt; + }; + if !(isNull _unit) then{ + _markerPos = getPos _unit; + }; + if !(isNull _taskItem) then { + _markerPos = getPos _taskItem; + }; + } + else { + _markerPos = EPOCH_taskMarkerPos; + }; + _mkrName = format ["EPOCHTaskMark%1%2",_taskName,diag_tickTime]; + EPOCH_taskMarker = [_mkrName,_taskMarkerVis]; + _taskMarkerText = getText ( _inGameTasksconfig >> _taskName >> "markerText"); + _taskMarkerRad = getNumber ( _inGameTasksconfig >> _taskName >> "markerRadius"); + if(_taskMarkerType == 2)then{ + _markerPos set [0, (_markerPos select 0) + (floor (random _taskMarkerRad) - (_taskMarkerRad / 2))]; + _markerPos set [1, (_markerPos select 1) + (floor (random _taskMarkerRad) - (_taskMarkerRad / 2))]; + }; + [[_taskMarkerVis,player],_markerPos,"ELLIPSE","mil_dot",_taskMarkerText,"ColorYellow",[_taskMarkerRad,_taskMarkerRad], "SolidBorder", 42, 0.6,_mkrName] remoteExec ["EPOCH_server_makeMarker",2]; + }; + _taskDialogues = []; + { + _x params [["_condition",""],["_dialogue",""]]; + if !(_condition isequalto "" || _dialogue isequalto "") then { + _taskDialogues pushback [compile _condition,_dialogue]; + }; + } foreach (getarray (_inGameTasksconfig >> _taskName >> 'dialogues')); + _taskEvents = []; + { + _x params [["_condition",""],["_taskEventCALL",""],["_taskEventTasks",[]]]; + if !(_condition isequalto "") then { + _taskEvents pushback [compile _condition,compile _taskEventCALL,_taskEventTasks]; + }; + } foreach (getarray (_inGameTasksconfig >> _taskName >> 'callevents')); + _taskFailedCond = compile getText ( _inGameTasksconfig >> _taskName >> "failedCondition"); + _taskFailTime = (getNumber ( _inGameTasksconfig >> _taskName >> "abandonTime")); + if (_taskFailTime < 1) then {_taskFailTime=999999} else {_taskFailTime = _taskFailTime + diag_ticktime}; + _taskFailedDiags = getArray ( _inGameTasksconfig >> _taskName >> "faileddialogues"); + _taskFailedSQF = getText ( _inGameTasksconfig >> _taskName >> "failedSQF"); + _taskFailedCall = compile getText ( _inGameTasksconfig >> _taskName >> "failedCall"); + _nextTask = getArray ( _inGameTasksconfig >> _taskName >> "failedTask"); + + _taskCompleteCond = compile getText ( _inGameTasksconfig >> _taskName >> "completeCondition"); + _taskReward = getArray ( _inGameTasksconfig >> _taskName >> "reward"); + _taskCompleteDiags = getArray ( _inGameTasksconfig >> _taskName >> "completedialogues"); + _taskCompleteCall = compile getText ( _inGameTasksconfig >> _taskName >> "completedCALL"); + _taskNextTrigger = getArray ( _inGameTasksconfig >> _taskName >> "nextTask"); + + _missionCleanUpCall = compile getText ( _inGameTasksconfig >> _taskName >> "cleanUpCall"); + _taskCleanup = getNumber ( _inGameTasksconfig >> _taskName >> "cleanUp"); + _return = [ + [_inGameTasksconfig,_taskName,_unit,_taskItem,_taskTitle,_missionCleanUpCall,_taskCleanup], + _taskDelay, + _triggerintervall, + _taskDialogues, + _taskEvents, + [_taskFailedCond,_taskFailTime,_taskFailedDiags,_taskFailedSQF,_taskFailedCall,_nextTask], + [_taskCompleteCond,_taskReward,_taskCompleteDiags,_taskCompleteCall,_taskNextTrigger] + ]; + EPOCH_task_startTime = diag_ticktime; + _return +}; +_epoch_tradermissionarray = []; +EPOCH_ActiveTraderMission = []; +_LastMissionTrigger = 0; diff --git a/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf b/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf index 991f4b83..5d1f36aa 100644 --- a/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf +++ b/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf @@ -24,7 +24,7 @@ */ disableSerialization; //[[[cog import generate_private_arrays ]]] -private ["_aiItems","_bpck","_config","_filterArray","_filterItems","_filterMagazines","_filterVehicle","_filterWeapons","_index","_isPlayerFilter","_item","_itemCount","_itemIcon","_itemName","_itemOfferCount","_items","_name","_offerArray","_picture","_qty","_qtys","_sizeOut","_slot","_type","_vehicles","_wpn"]; +private ["_FilterArray","_MainCategorie","_MainCategoriearray","_SubCategorieItems","_aiItems","_config","_control","_display","_id","_isPlayerFilter","_item","_itemCount","_itemOfferCount","_items","_name","_offerArray","_picture","_playeritems","_qty","_qtys","_sizeOut","_slot","_sortarray","_subcategories","_type","_vehicles"]; //[[[end]]] params ["_control","_index"]; _config = 'CfgItemSort' call EPOCH_returnConfig; @@ -65,7 +65,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { if (count backpackItems player == 0 && count backpackmagazines player == 0 && backpack player != "") then { _playeritems pushback backpack player; }; - + { _item = _x; if !(_item isequalto "") then { @@ -81,7 +81,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { }; }; } forEach _playeritems; - + _vehicles = player nearEntities [["LandVehicle","Ship","Air","Tank"], 30]; { if (local _x) then { @@ -101,6 +101,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { }; }; } forEach _vehicles; + _display = (findDisplay -8); _control = (_display displayCtrl 41500); lbsort _control; } @@ -123,10 +124,10 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { _sortarray pushback [_x call EPOCH_itemDisplayName,_x,_qtys select _foreachindex]; } foreach _items; _sortarray sort true; - + { _item = _x select 1; - + if !(_item isequalto "") then { if (_index == 0 || (tolower _item) in _FilterArray) then { _qty = ((_x select 2) - ({_x == _item} count _offerArray)); diff --git a/Sources/epoch_code/compile/traders/EPOCH_npcTraderAdd.sqf b/Sources/epoch_code/compile/traders/EPOCH_npcTraderAdd.sqf index 9a36d479..fd938ff7 100644 --- a/Sources/epoch_code/compile/traders/EPOCH_npcTraderAdd.sqf +++ b/Sources/epoch_code/compile/traders/EPOCH_npcTraderAdd.sqf @@ -1,5 +1,5 @@ //[[[cog import generate_private_arrays ]]] -private ["_action","_class","_condition","_disabledDoor","_displayname","_doorIndex","_index","_position","_statement","_uniqueActions","_unlock","_useractions"]; +private ["_aiItems","_allowAdd","_array","_config","_cryptoCount","_index","_item","_itemClasses","_itemQtys","_itemTax","_itemWorth","_limit","_qtyIndex","_sizeOut","_slot","_stockLimit","_tax","_uiItem","_worth"]; //[[[end]]] params ["_control","_selected"]; @@ -17,7 +17,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { // limit adding more if item is over stocked if (_control == 41501) then { _slot = EPOCH_lastNPCtradeTarget getVariable["AI_SLOT", -1]; - _aiItems = EPOCH_lastNPCtradeTarget getVariable["AI_ITEMS", [[], []]]; + _aiItems = EPOCH_lastNPCtradeTarget getVariable["AI_ITEMS", [[], []] ]; _itemClasses = _aiItems select 0; _itemQtys = _aiItems select 1; diff --git a/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf b/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf index 36ff609d..d2ab05ac 100644 --- a/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf +++ b/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf @@ -1,5 +1,5 @@ //[[[cog import generate_private_arrays ]]] -private ["_ok","_slot","_target"]; +private ["_MainCategoriearray","_categorie","_config","_ok","_slot","_target"]; //[[[end]]] _config = 'CfgItemSort' call EPOCH_returnConfig; _MainCategoriearray = getarray (_config >> "MainCategories" >> "Classes"); diff --git a/Sources/epoch_code/gui/scripts/Epoch_showStats.sqf b/Sources/epoch_code/gui/scripts/Epoch_showStats.sqf index 9dffe407..7c0b3ef5 100644 --- a/Sources/epoch_code/gui/scripts/Epoch_showStats.sqf +++ b/Sources/epoch_code/gui/scripts/Epoch_showStats.sqf @@ -13,7 +13,9 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/Epoch_showStats.sqf */ disableSerialization; -private "_display"; +//[[[cog import generate_private_arrays ]]] +private ["_display","_display3"]; +//[[[end]]] 9992 cutRsc["EpochGameUI2", "PLAIN", 2, false]; _display = uiNamespace getVariable "EPOCH_EpochGameUI2"; (_display displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto]; diff --git a/Sources/epoch_code/gui/scripts/group/EPOCH_iGroup_refresh.sqf b/Sources/epoch_code/gui/scripts/group/EPOCH_iGroup_refresh.sqf index 23860e32..ef6328e2 100644 --- a/Sources/epoch_code/gui/scripts/group/EPOCH_iGroup_refresh.sqf +++ b/Sources/epoch_code/gui/scripts/group/EPOCH_iGroup_refresh.sqf @@ -15,7 +15,7 @@ //[[[cog import generate_private_arrays ]]] private ["_index"]; //[[[end]]] -if !(Epoch_invited_GroupUIDs isEqualTo Epoch_invited_GroupUIDsPrev) then { +if !(Epoch_invited_GroupUIDs isEqualTo []) then { Epoch_invited_GroupUIDsPrev = Epoch_invited_GroupUIDs; lbClear 1500; { diff --git a/Sources/epoch_code/gui/scripts/messaging/Epoch_message.sqf b/Sources/epoch_code/gui/scripts/messaging/Epoch_message.sqf index 2b3e7b3a..956543e6 100644 --- a/Sources/epoch_code/gui/scripts/messaging/Epoch_message.sqf +++ b/Sources/epoch_code/gui/scripts/messaging/Epoch_message.sqf @@ -13,7 +13,9 @@ Usage: "TEST" call Epoch_message */ - +//[[[cog import generate_private_arrays ]]] +private ["_bgCol","_c","_c1StartPos","_c1pos","_c2pos","_c3pos","_col","_config","_ctrl","_ctrlArr","_customCol","_dsp","_fade","_fnc_animFirst","_fnc_animShiftCtrl","_fontSize","_msg","_oldCtrl","_pos","_tick","_time","_txtCol","_uniqueID","_yPos","_ySize"]; +//[[[end]]] #include "\A3\ui_f\hpp\defineCommonGrids.inc" _msg = param [0, "No input"]; _time = param [1, 2]; @@ -26,15 +28,15 @@ if(_customCol isEqualTo [])then{ if !(_bgCol isEqualTypeAll 0)then{_bgCol = [0,0,0,0.2]}; if !(_txtCol isEqualTypeAll 0)then{_txtCol = [1,1,1,0.95]}; }else{ - _bgCol = if((_customCol select 0)isEqualTypeAll 0)then[{_customCol select 0},{_bgCol = [0,0,0,0.2]}]; - _txtCol = if((_customCol select 1)isEqualTypeAll 0)then[{_customCol select 1},{_txtCol = [1,1,1,0.95]}]; + _bgCol = if((_customCol select 0)isEqualTypeAll 0) then [{_customCol select 0},{_bgCol = [0,0,0,0.2]}]; + _txtCol = if((_customCol select 1)isEqualTypeAll 0) then [{_customCol select 1},{_txtCol = [1,1,1,0.95]}]; }; _msg = str (parseText str _msg); //Parses and converts text back to small string if !(isNil "rmx_var_msgQueue") exitWith {rmx_var_msgQueue pushBack [_msg, _time, [_bgCol,_txtCol]]}; -rmx_var_msgQueue = [[_msg, _time, [_bgCol,_txtCol]]]; +rmx_var_msgQueue = [[_msg, _time, [_bgCol,_txtCol]] ]; [] spawn { private ["_c1pos","_c2pos","_c3pos","_clr","_dsp"]; diff --git a/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old1.sqf b/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old1.sqf index 3ce22748..a1dd1f0b 100644 --- a/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old1.sqf +++ b/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old1.sqf @@ -15,9 +15,12 @@ Usage: "TEST" call Epoch_message_old1 */ +//[[[cog import generate_private_arrays ]]] +private ["_add","_alreadyEnabled","_arr","_centerX","_centerY","_cnt","_controls","_ctrl","_ctrlGroup","_ctrlText","_del","_display","_height","_input","_scale","_text","_tick","_width","_xPos","_y","_yPos"]; +//[[[end]]] #include "\A3\ui_f\hpp\defineCommonGrids.inc" -private ["_y","_cnt","_ctrl","_alreadyEnabled","_input","_scale","_width","_height","_centerX","_centerY","_display","_ctrlGroup","_controls","_ctrlText","_add"]; -params [["_text","Missing text",["",(text "")]],["_time",5,[1]],["_color","#ffffff",[""]]]; + +params [["_text","Missing text",["",(text "")]],["_time",5,[1]],["_color","#ffffff",[""]] ]; if (_text isEqualType "STRING") then {_text = parseText _text}; diff --git a/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old2.sqf b/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old2.sqf index 8ad04f34..a4362e13 100644 --- a/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old2.sqf +++ b/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old2.sqf @@ -13,6 +13,9 @@ Usage: "TEST" call Epoch_message_old2 */ +//[[[cog import generate_private_arrays ]]] +private ["_c","_c2","_c3","_clr","_cmt","_cnt","_ct","_dsp","_height","_in","_timer","_w2","_width"]; +//[[[end]]] #include "\A3\ui_f\hpp\defineCommonGrids.inc" _in = param [0, "No input given"]; @@ -36,40 +39,40 @@ rmx_var_dtMessageArr pushBack [_in, _timer]; [GUI_GRID_W, GUI_GRID_H] spawn { params ["_gridW","_gridH"]; disableSerialization; - + _dsp = findDisplay 46; - + _c = _dsp ctrlCreate ["rmx_ST2", -8777]; _c2 = _dsp ctrlCreate ["RscText", -8776]; _c3 = _dsp ctrlCreate ["RscText", -8775]; _clr = call Epoch_getColorScheme; - + _c ctrlSetBackgroundColor [_clr select 0, _clr select 1, _clr select 2, 0.5]; _c2 ctrlSetBackgroundColor _clr; _c3 ctrlSetBackgroundColor _clr; - + //first animation _width = 0.2 * _gridW; _height = 2 * _gridH; - + _c ctrlSetPosition [0.5 - _gridW / 2,1,_gridW,_height]; _c2 ctrlSetPosition[0.5 - _gridW / 2,1,_width,_height]; _c3 ctrlSetPosition[0.5 + _gridW / 2,1,_width,_height]; _c ctrlCommit 0; _c2 ctrlCommit 0; _c3 ctrlCommit 0; - + _cmt = 0.25; - + //Main queue - while {!(rmx_var_dtMessageArr isEqualTo [])} do + while {!(rmx_var_dtMessageArr isEqualTo [])} do { - + _in = parseText (rmx_var_dtMessageArr select 0 select 0); _timer = rmx_var_dtMessageArr select 0 select 1; rmx_var_dtMessageArr deleteAt 0; - + _c ctrlSetStructuredText _in; _cnt = 0; @@ -80,18 +83,18 @@ rmx_var_dtMessageArr pushBack [_in, _timer]; } count (toArray str _in); _w2 = ((_cnt max 5) min 80) * _gridW; - + _c ctrlSetPosition [0.5 - _w2 / 2,1,_w2,_height]; _c2 ctrlSetPosition[0.5 - _w2 / 2,1,_width,_height]; _c3 ctrlSetPosition[0.5 + _w2 / 2,1,_width,_height]; - + _c ctrlCommit _cmt; _c2 ctrlCommit _cmt; _c3 ctrlCommit _cmt; - + uiSleep _timer; }; - + //exit with animation _c ctrlSetPosition [0.5 - _gridW / 2,1,_gridW,_height]; _c2 ctrlSetPosition[0.5 - _gridW / 2,1,_width,_height]; @@ -99,12 +102,12 @@ rmx_var_dtMessageArr pushBack [_in, _timer]; _c ctrlCommit _cmt; _c2 ctrlCommit _cmt; _c3 ctrlCommit _cmt; - + uiSleep _cmt; - + ctrlDelete _c; ctrlDelete _c2; ctrlDelete _c3; - + rmx_var_dtEnabled = nil; -}; \ No newline at end of file +}; diff --git a/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_description.sqf b/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_description.sqf index 4d8045b4..e90f9c10 100644 --- a/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_description.sqf +++ b/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_description.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_refresh.sqf */ -private["_index","_missionClasses","_missionDesc"]; +//[[[cog import generate_private_arrays ]]] +private ["_index","_menuCondition","_missionClasses","_missionDesc"]; +//[[[end]]] _missionClasses = getArray(getMissionConfig "EpochMissionList" >> "traderMissionClasses"); _index = lbCurSel 1500; @@ -25,6 +27,6 @@ if!(_menuCondition=="")then{ _missionDesc = "NOT AVAILABLE - " + _missionDesc; lbSetColor [1001, 0, [0.73,0.24,0.11,1] ] ; }; -}; +}; ctrlSetText [1001, _missionDesc]; diff --git a/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_refresh.sqf b/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_refresh.sqf index 34abe7f5..d671fe54 100644 --- a/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_refresh.sqf +++ b/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_refresh.sqf @@ -12,24 +12,19 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/missions/EPOCH_mission_refresh.sqf */ -private ["_lbl","_missionClasses","_missionName","_menuCondition","_toolTip","_plyrVar","_uiNSTask"]; +private ["_lbl","_missionClasses","_missionName","_menuCondition","_toolTip","_uiNSTask"]; params [["_currentTask",""]]; _missionClasses = getArray(getMissionConfig "EpochMissionList" >> "traderMissionClasses"); -_plyrVar = missionNamespace getVariable ["EPOCH_playerMissionArray",[]] select {_x find "axeTask" > -1;}; _uiNSTask = ""; -if(count _plyrVar > 0)then{ -_uiNSTask = _plyrVar select 0 select 1; +if (count EPOCH_ActiveTraderMission > 0) then { + _uiNSTask = EPOCH_ActiveTraderMission select 1; }; - { - _missionName = getText(getMissionConfig "epochMissions" >> _x >> "missionName"); if!(_missionName == "")then{ - _lbl = lbAdd[1500, _missionName]; lbSetValue[1500, _lbl, _forEachIndex]; _toolTip = getText(getMissionConfig "epochMissions" >> _x >> "missionToolTip"); - _menuCondition = getText(getMissionConfig "epochMissions" >> _x >> "missionDeny"); if!(_menuCondition=="")then{ if(call compile _menuCondition)then{ @@ -37,17 +32,10 @@ _uiNSTask = _plyrVar select 0 select 1; _toolTip = getText(getMissionConfig "epochMissions" >> _x >> "missionDenyToolTip"); }; }; - - - if(_uiNSTask in getArray(getMissionConfig "epochMissions" >> _x >> "tasksList"))then{ - lbSetColor [1500, _lbl, [0.98,0.98,0.33,1]] ; - _toolTip = "CONTINUE - " + _toolTip; + lbSetColor [1500, _lbl, [0.98,0.98,0.33,1]] ; + _toolTip = "CONTINUE - " + _toolTip; }; - lbSetTooltip [1500, _lbl, _toolTip]; - }; - - }forEach _missionClasses; diff --git a/Sources/epoch_code/gui/scripts/post_process/Epoch_setRadiation.sqf b/Sources/epoch_code/gui/scripts/post_process/Epoch_setRadiation.sqf index c279ab87..19165510 100644 --- a/Sources/epoch_code/gui/scripts/post_process/Epoch_setRadiation.sqf +++ b/Sources/epoch_code/gui/scripts/post_process/Epoch_setRadiation.sqf @@ -19,8 +19,10 @@ Radiation levels 1-9, 0 to disable To reuse code in a new PP function, adjust _priority so they don't overwrite each other */ -private ["_priority","_fg","_cc"]; -params [["_level",0,[0]],["_speed",0,[0]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cc","_ci","_fg","_priority"]; +//[[[end]]] +params [["_level",0,[0]],["_speed",0,[0]] ]; if (isNil "rmx_var_RadiationHandles") then { diff --git a/Sources/epoch_code/init/client_init.sqf b/Sources/epoch_code/init/client_init.sqf index 544cfab1..e4b10a48 100644 --- a/Sources/epoch_code/init/client_init.sqf +++ b/Sources/epoch_code/init/client_init.sqf @@ -62,12 +62,6 @@ rmx_var_dynamicHUD_groupCTRL = []; ["EPOCH_onEachFrame", "onEachFrame", EPOCH_onEachFrame] call BIS_fnc_addStackedEventHandler; -EPOCH_LastAirDrop = time; -EPOCH_AirDropCheck = getNumber(getMissionConfig "CfgEpochAirDrop" >> "AirDropFreq"); -if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; -EPOCH_AirDropChance = getNumber(getMissionConfig "CfgEpochAirDrop" >> "AirDropChance"); -if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; - EPOCH_droneRndChance = 100; EPOCH_sapperRndChance = 100; EPOCH_zombieRngChance = 50; diff --git a/Sources/epoch_code/init/fn_init.sqf b/Sources/epoch_code/init/fn_init.sqf index c1000eee..059d4390 100644 --- a/Sources/epoch_code/init/fn_init.sqf +++ b/Sources/epoch_code/init/fn_init.sqf @@ -15,7 +15,7 @@ if !(isNil "Epoch_Survival_Started") exitWith { false }; Epoch_Survival_Started = true; -_selectedFunction = "CfgClientFunctions"; +private _selectedFunction = "CfgClientFunctions"; if (isDedicated) then { // dedicated server _selectedFunction = "CfgServerFunctions"; diff --git a/Sources/epoch_config/Configs/CfgEpochClient.hpp b/Sources/epoch_config/Configs/CfgEpochClient.hpp index ab0f61da..848b2dc9 100644 --- a/Sources/epoch_config/Configs/CfgEpochClient.hpp +++ b/Sources/epoch_config/Configs/CfgEpochClient.hpp @@ -144,11 +144,6 @@ class CfgEpochUAVSupport minUnitNum = 2; //Maximum number of units spawned when UAV spots target. maxUnitNum = 4; //Maximum number of units spawned when UAV spots target. }; -class CfgEpochAirDrop -{ - AirDropFreq = 1200; //AirDropChance, to decide if Air drop occurs, will only be checked once per AirDropFreq time period, for each player. Min value = 120. - AirDropChance = 6; //Percentage chance of air drop, for current player. Checked every AirDropFreq and upon antagonists spawn trigger. -1 To disable. -}; class CfgEpochCloak { cRange = 300; //Distance, from target, at which Cloak will dispose. Cloak is also aware of players within this range. (Min: 60 / Max: 600) diff --git a/Sources/epoch_config/Configs/CfgMissions.hpp b/Sources/epoch_config/Configs/CfgMissions.hpp index cbf5dd77..90e3c3e9 100644 --- a/Sources/epoch_config/Configs/CfgMissions.hpp +++ b/Sources/epoch_config/Configs/CfgMissions.hpp @@ -14,14 +14,34 @@ */ class EpochMissionList{ - traderMissionClasses[] = {"missionDelivery","missionEscort","missionUav","missionSapper","missionSkull","missionMilitary","gameCaptureTheJammer","gameCarRace","infoTime","infoName","infoNews","infoVehicles","infoPeople","helpAirDrop","debugResetMission"}; //Exclude from here to remove from menu and trigger +// traderMissionClasses[] = {"missionMonster","missionDelivery","missionEscort","missionUav","missionSapper","missionSkull","missionMilitary","gameCaptureTheJammer","gameCarRace","infoTime","infoName","infoNews","infoVehicles","infoPeople","helpAirDrop","debugResetMission"}; //Exclude from here to remove from menu and trigger + traderMissionClasses[] = {"missionfishing","missionMonster","missionDelivery","missionUav","infoTime","infoName","infoNews","infoVehicles","infoPeople","debugResetMission"}; //Exclude from here to remove from menu and trigger traderMissionActiveNames[] = {}; //Not currently used (WIP) traderMissionLongDesc[] = {}; //Not currently used (WIP) traderMissionActiveLongDesc[] = {}; //Not currently used (WIP) }; class epochMissions { - + class missionfishing{ + missionName = "Bring me a fresh Fish"; //Name of mission as it appears in trader list + missionToolTip= "Bring the Trader a fresh Fish from the Water."; //Tooltip for trader menu + missionDesc = "You must went to the Water and catch a Fish for the Trader and bring it to him."; //Misison description as it appears in trader menu. + missionDeny = "!(""MeleeRod"" in weapons player)"; //Specify a call compile condition. If it returns true the mission will be dis-allowed. Title will be rust coloured and prefixed with NOT ALLOWED. + missionDenyToolTip = "You need a Fishing-Rod for this Mission"; //Provides a tooltip explaining why the mission is denied. prefixed with NOT ALLOWED. + tasksList[] = {"StartFishMission"}; //Must contain a list of tasks used for this mission, in order. Used to control trader menu when mission is active. WIP - To control mission from this array alone. + missionTrigger = ""; //A dynamic trigger that sets off the mission anywhere in-game. e.g. player != vehicle player Not currently used (WIP) + missionTriggerDialog[] = {""}; //Randomly selected dialogue that is shown when mission is dynamically triggered. Not currently used (WIP) + }; + class missionMonster{ + missionName = "Escort my Monster (Experimental)"; //Name of mission as it appears in trader list + missionToolTip= "Escort a Monster."; //Tooltip for trader menu + missionDesc = "You must escort the Traders Monster to another Trader somewhere else on the map."; //Misison description as it appears in trader menu. + missionDeny = ""; //Specify a call compile condition. If it returns true the mission will be dis-allowed. Title will be rust coloured and prefixed with NOT ALLOWED. + missionDenyToolTip = ""; //Provides a tooltip explaining why the mission is denied. prefixed with NOT ALLOWED. + tasksList[] = {"prepForMonsterEscort"}; //Must contain a list of tasks used for this mission, in order. Used to control trader menu when mission is active. WIP - To control mission from this array alone. + missionTrigger = ""; //A dynamic trigger that sets off the mission anywhere in-game. e.g. player != vehicle player Not currently used (WIP) + missionTriggerDialog[] = {""}; //Randomly selected dialogue that is shown when mission is dynamically triggered. Not currently used (WIP) + }; class missionDelivery{ missionName = "Pikes Peak Express"; //Name of mission as it appears in trader list missionToolTip= "Courier."; //Tooltip for trader menu diff --git a/Sources/epoch_config/Configs/CfgMissions/CfgExample.hpp b/Sources/epoch_config/Configs/CfgMissions/CfgExample.hpp index 5c2f8071..de2448ef 100644 --- a/Sources/epoch_config/Configs/CfgMissions/CfgExample.hpp +++ b/Sources/epoch_config/Configs/CfgMissions/CfgExample.hpp @@ -15,185 +15,61 @@ //Built in useful vars that can be used in code based conditions / responses etc. //N.B. Local vars can not be used as they are not in scope when call compiled. // -//EPOCH_task_startTime - task start diag_tickTime | Usage: diag_tickTime - EPOCH_task_startTime > _someDelayTime; -//EPOCH_taskMarkerPos - Will override the built in marker position. Must be set at init stage, i.e. before marker is created. -//EPOCH_taskTitle - As set by title in each task class. -//EPOCH_taskLastLoop - is the diag_tickTime at the last loop start (based on taskCheckTime). Set to start time until loop starts. -//EPOCH_taskItem - Weaponholder object used to hold task item. Is null object until items are spawned in. -//EPOCH_taskMarkerName - Name for the marker generated automatically by the task system. -// -//Stand alone missions can be called by triggering the first task class with: epochTaskHandle = ["myTaskClass"] execFSM "epoch_code\System\task_control.fsm"; -// +// EPOCH_task_startTime - task start diag_tickTime | Usage: diag_tickTime - EPOCH_task_startTime > _someDelayTime; +// EPOCH_mission_starttime - mission start diag_ticktime +// EPOCH_taskMarker - Array for Marker, if set [markername,markerType]. "markerType" see in task description +// EPOCH_taskMarkerPos - Markerposition, if set. - -class taskWithComments{ - //Task Author - author = "axeman"; - //Task Title as appears in (Accept / Decline) dialogue box. Leave as "" to trigger code only. - //title, desc and img are WIP and will be used for future dialogue GUIs. - title = "Find the Backpack."; - //Description on task. For dialogue box. - desc = "Our new friend has lost his backpack. Find it in a nearby house. It will be within 50m and looks like a white package. He needs the contents to continue on his way."; - //Task Image. For dialogue box. - img = "\A3\Characters_F_EPA\Data\ui\Icon_V_plate_carrier_snake_ca.paa"; - //Simple tasks are used for one off calls, e.g. Ask the trader the time. initfsm, initsqf and/or initcall will be triggered and the task will exit with no monitoring. - simpleTask = 0; - //Trigger this task. Use this condition to trigger the task (WIP - Mission and Individual Task Triggers from the Main Loop) - triggerCondition = "count nearestObjects [player,[""house""],250] > 8"; - //Limit the number of times this task can run for player per life or server restart. (WIP - Part of client / server mission & task monitoring) - Leave as default ! - taskLimit = 3; - //Pause time in the task loop. This figure is also applied before triggering completion of mission and again before cleanup / reminder / next task. - taskCheckTime = 16; - //A pause at the start of the task after collecting variables, before anything is created. TODO: maybe remove.. - triggerDelay = 16; - //Spawn helper objects at start of task / mission (e.g. a hatchet for a tree chopping task). Array will accept any object classes which will be positioned appropriately (WIP - Mainly to support vehicle spawning). - items[] = {"ItemSodaOrangeSherbet","itemGPS"}; - //Item Spawn (0 - Do not spawn, 1 - Nearby in House, 2 - Nearby Hidden, 3 - Near Player) - itemSpawn = 1; - - //Call these functions at init of task, after item spawn but before marker creation. Allows setting EPOCH_taskMarkerPos - initfsm = ""; - initsqf = ""; - initcall = "systemChat 'STARTING FROM CONFIG'"; - - //Place a marker on task target (0 = No Marker, 1 = Marker, with text, exactly on target, 2 = radial marker with target somewhere random inside marker) - markerType = 2; - //Set marker radius for radial marker (markerType = 2) - markerRadius = 50; - //Marker Text - Add text to marker, leave "" for no text. No text available for Marker type 2 yet. - markerText = "Last seen here somewhere."; - //task fsm / sqf. Call an sqf or FSM, designed to manage the mission locally. Will trigger at task start (After specified delay) - //All FSM & SQF Calls pass default variables. e.g. [player ,EPOCH_taskItem] execVM "yourSQF.sqf"; - //Both options (SQF or FSM) will be presented when a script call is available. Both will be called if value is not "" - //All sqf, fsm files are stored, by default, in \epoch_code\compile\missions\tasks\ (WIP - Can be edited with the task setting in CfgMissionTasks.hpp) - //TODO - Reduce to just call so these can all be pre-CompileFinaled - - //Call additional functions based on condition, e.g. air drop, antagonist spawn, or custom code. - //Conditions must return a boolean. e.g. player distance player < 12; - callEventBinTask = 0;//If calling another task (callEventTask1 etc.) then bin this task before starting the new one ? - WIP - callEventCondition1 = "true"; - callEventCondition2 = "EPOCH_taskItem distance player < 50"; - callEventCondition3 = ""; - - //All sqf, fsm files are stored, by default, in \epoch_code\compile\missions\tasks\ (WIP - Can be edited with the task setting above) - callEventCALL1 = ""; - callEventFSM1 = ""; - callEventSQF1 = "triggerAirDrop.sqf"; - //Call another task class from the same mission. - callEventTask1 = ""; - - callEventCALL2 = "hint 'You are getting warm'"; - callEventFSM2 = ""; - callEventSQF2 = ""; - callEventTask2 = ""; - - callEventCALL3 = ""; - callEventFSM3 = ""; - callEventSQF3 = ""; - callEventTask3 = ""; - - //dialogues. One of the array will be selected randomly upon each trigger - //Dialogue 1 will trigger only one time upon it's condition, designed to be a welcome message. - diag1Condition = "true"; - dialogue1[] = {"Ok, first thing I need to do is find my rucksack","Help me find my rucksack first.","I need to find my rucksack."}; - - //Delay between triggering dialogue, to stop flooding. - diagSquelch = 60; - //Dialogue 2 and 3 will repeat everytime the condition is met and the squelch time has elapsed. Designed as warnings / hint dialogues. Again, a random message will be chosen from the array. - diag2Condition = "diag_tickTime - EPOCH_task_startTime > 20"; - dialogue2[] = {"I dropped it in one of these buildings. Some.. thing was chasing me.","It is in a house nearby, I have a map that I need in it.","Search the nearby houses until you find it."}; - diag3Condition = "EPOCH_taskItem distance player < 12"; - dialogue3[] = {"Wow, you are really close now.","Keep looking, it is right near you.","Smoking hot, you are practically standing on it."}; - - //FAILED / ABANDONED - //Apply a condition to detect mission failure. e.g. '!alive _unit' if escorting a NPC. Task will bin upon player death anyway. - failedCondition = "!alive player"; - //Abandon Distance - Player moves this far from 'task trigger position' causes abandonment of mission (0 = unlimited) - abandonDist = 100; - //Time Limit - Once time limit is reached, and completed condition is not met, the mission has failed and will be disposed. 0 = No Limit. - abandonTime = 240; - //Failed Message (triggered by timeLimit or abandon distance) - Display random message from array upon task failure. - failed[] = {"You blew it.","Don't give up your day job pal..","That's you finished mate, bring on the pain."}; - //Run a command to punish failure of task (triggered by timeLimit or failure condition). - failedFSM = ""; - failedSQF = ""; - failedCall = "[] call EPOCH_callSapperMigration;"; - //Add failure task. Can be multiple tasks that are picked at random. - failedTask[] = {""}; - //Dispose of task item at failure 0 = No, 1 = Yes. Cleans up any spawned weaponholders. - cleanUp = 1; - //Upon FSM disposal call compile each piece of code. Designed to cleanup namespace(s). - cleanUpCalls[] = {""}; - //COMPLETED - //Condition met to trigger completion of task. - completeCondition = "EPOCH_taskItem distance player < 2"; - //Drop reward for player - Currently always nearby, on the floor. - reward[] = {"ItemSodaOrangeSherbet","ItemSodaPurple","ItemSodaMocha"}; - //Completed dialogues, selected randomly from each array. With pause in-between completed1 and completed2. - completed1[] = {"Well done, that was quick. Let me have it, and here's something for you.","You've found it, good job. I have something in here you can have.","Well found, you're a natural. Here, this is yours, thank you."}; - completed2[] = {"Now let's head out of town, you lead the way !","It's time to leave this area, let's go !","Do you think we should get out of this area now ?"}; - //Remind / hint to the player to get them onto the NEXT task. Displays after longer pause - reminder[] = {"It's about time we headed out of town.","We need to get away from these houses.","Let's move away from these built up areas."}; - //Trigger next task at disposal of this one. Allows tasks to be strung together. If more than one a task is selected at random. Leave blank to end mission and reset menu item at trader. - nextTask[] = {"findHouseItem"}; -}; - -class blankTaskWithDefaults{ - author = "axeman"; - title = ""; - desc = ""; - img = ""; - simpleTask = 0; - triggerCondition = ""; - taskLimit = 3; - taskCheckTime = 16; - triggerDelay = 16; - items[] = {""}; - itemSpawn = 1; - markerType = 2; - markerRadius = 50; - markerText = ""; - initfsm = ""; - initsqf = ""; - initcall = ""; - callEventBinTask = 0; - callEventCondition1 = ""; - callEventCondition2 = ""; - callEventCondition3 = ""; - callEventCALL1 = ""; - callEventFSM1 = ""; - callEventSQF1 = ""; - callEventTask1 = ""; - callEventCALL2 = ""; - callEventFSM2 = ""; - callEventSQF2 = ""; - callEventTask2 = ""; - callEventCALL3 = ""; - callEventFSM3 = ""; - callEventSQF3 = ""; - callEventTask3 = ""; - diag1Condition = ""; - dialogue1[] = {""}; - diagSquelch = 60; - diag2Condition = ""; - dialogue2[] = {""}; - diag3Condition = ""; - dialogue3[] = {""}; - failedCondition = ""; - abandonDist = 100; - abandonTime = 240; - failed[] = {""}; - failedFSM = ""; - failedSQF = ""; - failedCall = ""; - failedTask[] = {""}; - cleanUp = 1; - cleanUpCalls[] = {}; - completeCondition = ""; - reward[] = {""}; - completed1[] = {""}; - completed2[] = {""}; - completedCALL = ""; - reminder[] = {""}; - nextTask[] = {""}; + +class sampletask { + author = "My Name"; + title = "Mission Title"; + simpleTask = 0; + items[] = {"B_UavTerminal"}; // Items will be dropped on the Ground next to Player + triggerDelay = 2; // Before this time (in sec) the task will not Start + taskCheckTime = 3; // Intervall (in sec) for the triggers + markerType = 0; // Place a marker on task target (0 = No Marker, 1 = Marker, with text, exactly on target, 2 = radial marker with target somewhere random inside marker) + markerVisible = 0; // Marker visible for: 0 = Only Player (default), 1 = Group of Player, 2 = Global + markerRadius = 0; // Set marker radius for radial marker (markerType = 2) + markerText = ""; // Marker Text - Add text to marker, leave "" for no text. No text available for Marker type 2 yet. + initcall = ""; // Code to call on task-start + cleanUpCall = ""; // Code to call on task failed or when cleanUp = 1 on finished + dialogues[] = { // Array to make dialogues while task is running + { + "alive player", // Condition 1 + {"Text 1","Text 2","Text 3"} // Array of random dialogues when condition 1 = true + }, + { + "alive player", // Condition 2 + {"Text 1","Text 2","Text 3"} // Array of random dialogues when condition 2 = true + } + }; + callevents[] = { // Array to call codes and / or start a nex task + { + "(diag_tickTime - StartTime > 30)", // Condition 1 + "", // String with code to call when condition 1 = true + {"uavMission1"} // Array of random selected tasks to switch to when condition 1 = true + }, + { + "!alive player", // Condition 2 + "player setdamage 1", // String with code to call when condition 2 = true + {"uavMission2"} // Array of random selected tasks to switch to when condition 2 = true + }, + }; + abandonTime = 240; // Timeout for task + failedCondition = "false"; // Failed Condition for Task + faileddialogues[] = {"Text1","Text2"}; // Array of random dialogues when task failed + completeCondition = "'B_UavTerminal' in assignedItems player"; // Condition to complete the task succesfully + completedialogues[] = {"Text1","Text2"}; // Array of random dialogues when task completed successfully + completedCALL = ""; // Code to call when task completed successfully + reward[] = {}; // Array of items, that spawn next to the Player when completed successfully + cleanUp = 0; // Set to 1 to call cleanupcall on success + nextTask[] = {"doUAVSpawn"}; // Array of next selected random tasks + +// Not used atm + taskLimit = 3; + itemSpawn = 3; + callEventBinTask = 0; + diagSquelch = 30; + abandonDist = 100; }; \ No newline at end of file diff --git a/Sources/epoch_config/Configs/CfgMissions/CfgTraderDiags.hpp b/Sources/epoch_config/Configs/CfgMissions/CfgTraderDiags.hpp index 6ef3141d..05603b52 100644 --- a/Sources/epoch_config/Configs/CfgMissions/CfgTraderDiags.hpp +++ b/Sources/epoch_config/Configs/CfgMissions/CfgTraderDiags.hpp @@ -3,7 +3,7 @@ author = "axeman"; title = "Trader Time"; //Simple task will skip all monitoring and run the provided code (call, fsm, sqf) only. simpleTask = 1; -initsqf = "traderDiag_timePlease.sqf"; +initsqf = "epoch_code\compile\missions\tasks\traderDiag_timePlease.sqf"; initfsm = ""; initcall = ""; //Next task is allowed to trigger a task if required. @@ -14,7 +14,7 @@ class traderDiagNearby{ author = "axeman"; title = "Trader Near By Players"; simpleTask = 1; -initsqf = "traderDiag_nearPlayers.sqf"; +initsqf = "epoch_code\compile\missions\tasks\traderDiag_nearPlayers.sqf"; initfsm = ""; initcall = ""; nextTask[] = {}; @@ -24,7 +24,7 @@ class traderDiagNews{ author = "axeman"; title = "Trader News"; simpleTask = 1; -initsqf = "traderDiag_news.sqf"; +initsqf = "epoch_code\compile\missions\tasks\traderDiag_news.sqf"; initfsm = ""; initcall = ""; nextTask[] = {}; @@ -34,7 +34,7 @@ class traderDiagName{ author = "axeman"; title = "Traders Name"; simpleTask = 1; -initsqf = "traderDiag_name.sqf"; +initsqf = "epoch_code\compile\missions\tasks\traderDiag_name.sqf"; initfsm = ""; initcall = ""; nextTask[] = {}; @@ -44,7 +44,7 @@ class traderNearVehicles{ author = "axeman"; title = "Trader Nearby Vehicles"; simpleTask = 1; -initsqf = "traderDiag_nearVehicles.sqf"; +initsqf = "epoch_code\compile\missions\tasks\traderDiag_nearVehicles.sqf"; initfsm = ""; initcall = ""; nextTask[] = {}; @@ -54,7 +54,7 @@ class traderTriggerAirDrop{ author = "axeman"; title = "Trigger AirDrop"; simpleTask = 1; -initsqf = "traderDiag_triggerAirDrop.sqf"; +initsqf = "epoch_code\compile\missions\tasks\traderDiag_triggerAirDrop.sqf"; initfsm = ""; initcall = ""; nextTask[] = {}; @@ -64,7 +64,7 @@ class traderMissionReset{ author = "axeman"; title = "Reset Missions"; simpleTask = 1; -initsqf = "traderDebug_resetMissions.sqf"; +initsqf = "epoch_code\compile\missions\tasks\traderDebug_resetMissions.sqf"; initfsm = ""; initcall = ""; nextTask[] = {}; diff --git a/Sources/epoch_config/Configs/CfgMissions/CfgmissionDelivery.hpp b/Sources/epoch_config/Configs/CfgMissions/CfgmissionDelivery.hpp index a07b383e..5921faa4 100644 --- a/Sources/epoch_config/Configs/CfgMissions/CfgmissionDelivery.hpp +++ b/Sources/epoch_config/Configs/CfgMissions/CfgmissionDelivery.hpp @@ -1,232 +1,158 @@ -class prepForDelivery{ - author = "axeman"; - title = "Prep for Delivery"; - desc = ""; - img = ""; - simpleTask = 0; - triggerCondition = ""; - taskLimit = 3; - taskCheckTime = 16; - triggerDelay = 0; - items[] = {"ItemDocumentMission"}; - itemSpawn = 3; - markerType = 0; - markerRadius = 0; - markerText = ""; - initfsm = ""; - initsqf = ""; - initcall = "axeDocDeliveryStart = diag_tickTime"; - callEventBinTask = 0; - callEventCondition1 = "(""ItemDocumentMission"" in magazines player)"; - callEventCondition2 = ""; - callEventCondition3 = ""; - callEventCALL1 = "uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]}]"; - callEventFSM1 = ""; - callEventSQF1 = ""; - callEventTask1 = ""; - callEventCALL2 = ""; - callEventFSM2 = ""; - callEventSQF2 = ""; - callEventTask2 = ""; - callEventCALL3 = ""; - callEventFSM3 = ""; - callEventSQF3 = ""; - callEventTask3 = ""; - diag1Condition = "true"; - dialogue1[] = {"Pick up the Document to Start."}; - diagSquelch = 60; - diag2Condition = "!(""ItemDocumentMission"" in magazines player)"; - dialogue2[] = {"Come on Buddy, Pick it up !","It's right next to you on the floor, pick it up to start."}; - diag3Condition = ""; - dialogue3[] = {""}; - failedCondition = ""; - abandonDist = 100; - abandonTime = 240; - failed[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the document. Misison Failed !"}; - failedFSM = ""; - failedSQF = ""; - failedCall = ""; - failedTask[] = {""}; - cleanUp = 1; - cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"}; - completeCondition = "('ItemDocumentMission' in magazines player)"; - reward[] = {}; - completed1[] = {"That's great, let's get out of here.","Good, you have the document, let's move on.","Ok, well done. We can start now."}; - completed2[] = {""}; - reminder[] = {""}; - nextTask[] = {"doDelivery"}; +class prepForDelivery { + author = "axeman"; + title = "Prep for Delivery"; + simpleTask = 0; + items[] = {"ItemDocumentMission"}; + triggerDelay = 2; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "true", + {"Pick up the Document to Start."} + }, + { + "!(""ItemDocumentMission"" in magazines player)", + {"Come on Buddy, Pick it up !","It's right next to you on the floor, pick it up to start."} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime = 240; + failedCondition = "false"; + faileddialogues[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the document. Misison Failed !"}; + completeCondition = "('ItemDocumentMission' in magazines player)"; + completedialogues[] = {"That's great, let's get out of here.","Good, you have the document, let's move on.","Ok, well done. We can start now."}; + completedCALL = "uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]}]"; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"doDelivery"}; + +// Not used atm + taskLimit = 3; + itemSpawn = 3; + callEventBinTask = 0; + diagSquelch = 30; + abandonDist = 100; }; -class doDelivery{ - author = "axeman"; - title = "Do Delivery"; - desc = ""; - img = ""; - simpleTask = 0; - triggerCondition = "(""ItemDocumentMission"" in magazines player)"; - taskLimit = 3; - taskCheckTime = 16; - triggerDelay = 3; - items[] = {""}; - itemSpawn = 0; - markerType = 0; - markerRadius = 0; - markerText = ""; - initfsm = ""; - initsqf = ""; - initcall = ""; - callEventBinTask = 0; - callEventCondition1 = "(axeDocDeliveryStart + 480 < diag_tickTime) && ((player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]]))"; - callEventCondition2 = ""; - callEventCondition3 = ""; - callEventCALL1 = "[""Hey, what are you doing here ? Get on with your task !"", 5] call Epoch_message"; - callEventFSM1 = ""; - callEventSQF1 = ""; - callEventTask1 = ""; - callEventCALL2 = ""; - callEventFSM2 = ""; - callEventSQF2 = ""; - callEventTask2 = ""; - callEventCALL3 = ""; - callEventFSM3 = ""; - callEventSQF3 = ""; - callEventTask3 = ""; - diag1Condition = "(""ItemDocumentMission"" in magazines player)"; - dialogue1[] = {"Ok, head off to another trader, you can't deliver to any nearby.","All set. Now take that document to another trader further away.","Take that message to another trader or trader city."}; - diagSquelch = 40; - diag2Condition = "!('ItemDocumentMission' in magazines player)"; - dialogue2[] = {"Don't leave that document anywhere.","If you lose that document you will fail the mission."}; - diag3Condition = "(count (player nearentities [[""C_Man_1""],42]) > 0) && (count (((player nearentities [[""C_Man_1""],42]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)"; - dialogue3[] = {"Well done, you have a trader nearby, go see him","Looks like you found another trader, well done, deliver the message.","UAV has spotted another trader nearby, go deliver the message."}; - failedCondition = ""; - abandonDist = 0; - abandonTime = 1800; - failed[] = {"Looks like you took too long buddy, Mission Over.","You need to be quicker next time, Mission Over !","Misison Failed - You took too long, better luck next time."}; - failedFSM = ""; - failedSQF = ""; - failedCall = ""; - failedTask[] = {""}; - cleanUp = 0; - cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"}; - completeCondition = "(count (player nearentities [[""C_Man_1""],6]) > 0) && (count (((player nearentities [[""C_Man_1""],6]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)"; - reward[] = {}; - completed1[] = {"Hey there pal, it looks like you have something for me ?","Great Job there. Step into my office traveller.","You made it, time to take a look at that message."}; - completed2[] = {""}; - reminder[] = {""}; - nextTask[] = {"finishDelivery"}; +class doDelivery { + author = "axeman"; + title = "Do Delivery"; + simpleTask = 0; + items[] = {}; + triggerDelay = 8; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "(""ItemDocumentMission"" in magazines player)", + {"Ok, head off to another trader, you can't deliver to any nearby.","All set. Now take that document to another trader further away.","Take that message to another trader or trader city."} + }, + { + "!('ItemDocumentMission' in magazines player)", + {"Don't leave that document anywhere.","If you lose that document you will fail the mission."} + }, + { + "(count (player nearentities [[""C_Man_1""],42]) > 0) && (count (((player nearentities [[""C_Man_1""],42]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)", + {"Well done, you have a trader nearby, go see him","Looks like you found another trader, well done, deliver the message.","UAV has spotted another trader nearby, go deliver the message."} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}} + "(EPOCH_task_startTime + 480 < diag_tickTime) && ((player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]]))", + "[""Hey, what are you doing here ? Get on with your task !"", 5] call Epoch_message", + {} + } + }; + abandonTime = 1800; + failedCondition = "false"; + faileddialogues[] = {"Looks like you took too long buddy, Mission Over.","You need to be quicker next time, Mission Over !","Misison Failed - You took too long, better luck next time."}; + completeCondition = "(count (player nearentities [[""C_Man_1""],6]) > 0) && (count (((player nearentities [[""C_Man_1""],6]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)"; + completedialogues[] = {"Hey there pal, it looks like you have something for me ?","Great Job there. Step into my office traveller.","You made it, time to take a look at that message."}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"finishDelivery"}; }; -class finishDelivery{ - author = "axeman"; - title = "Finish Delivery"; - desc = ""; - img = ""; - simpleTask = 0; - triggerCondition = "(""ItemDocumentMission"" in magazines player)"; - taskLimit = 3; - taskCheckTime = 16; - triggerDelay = 3; - items[] = {""}; - itemSpawn = 0; - markerType = 0; - markerRadius = 0; - markerText = ""; - initfsm = ""; - initsqf = ""; - initcall = "axeRndBadNews = floor random 100"; - callEventBinTask = 1; - callEventCondition1 = "(""ItemDocumentMission"" in magazines player)"; - callEventCondition2 = "axeRndBadNews < 6"; - callEventCondition3 = ""; - callEventCALL1 = "player removeMagazine ""ItemDocumentMission"""; - callEventFSM1 = ""; - callEventSQF1 = ""; - callEventTask1 = ""; - callEventCALL2 = ""; - callEventFSM2 = ""; - callEventSQF2 = ""; - callEventTask2 = "deliveryMissionBadNews"; - callEventCALL3 = ""; - callEventFSM3 = ""; - callEventSQF3 = ""; - callEventTask3 = ""; - diag1Condition = "axeRndBadNews > 5"; - dialogue1[] = {"That's interesting news. Thanks for bringing this.","Great news, you did well to bring this to me."}; - diagSquelch = 60; - diag2Condition = ""; - dialogue2[] = {""}; - diag3Condition = ""; - dialogue3[] = {""}; - failedCondition = ""; - abandonDist = 0; - abandonTime = 240; - failed[] = {""}; - failedFSM = ""; - failedSQF = ""; - failedCall = ""; - failedTask[] = {}; - cleanUp = 0; - cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"}; - completeCondition = "axeRndBadNews > 5"; - reward[] = {}; - completed1[] = {"Take your reward, you have earnt it","Here is your reward, you are a great courier.","Any time you need work, come and see me, great job."}; - completedCALL = "axeRewardWH = createVehicle[""groundWeaponHolder"",getPosATL player,[],0,""CAN_COLLIDE""];[axeRewardWH,""Pelican_EPOCH""] remoteExec [""EPOCH_serverLootObject"",2];"; - reminder[] = {""}; - nextTask[] = {}; +class finishDelivery { + author = "axeman"; + title = "Finish Delivery"; + simpleTask = 0; + items[] = {}; + triggerDelay = 8; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = "axeRndBadNews = floor random 100"; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];axeRndBadNews = nil"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "axeRndBadNews > 5", + {"That's interesting news. Thanks for bringing this.","Great news, you did well to bring this to me."} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}} + "(""ItemDocumentMission"" in magazines player)", + "player removeMagazine ""ItemDocumentMission""", + {} + }, + { // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}} + "axeRndBadNews < 6", + "", + {"deliveryMissionBadNews"} + } + }; + abandonTime = 240; + failedCondition = "false"; + faileddialogues[] = {}; + completeCondition = "diag_ticktime - EPOCH_task_startTime > 16 && axeRndBadNews > 5"; + completedialogues[] = {"Take your reward, you have earnt it","Here is your reward, you are a great courier.","Any time you need work, come and see me, great job."}; + completedCALL = "[objnull,""Pelican_EPOCH"",true,getposatl player] remoteExec [""EPOCH_serverLootObject"",2];"; + reward[] = {}; + cleanUp = 1; + nextTask[] = {}; }; -class deliveryMissionBadNews{ - author = "axeman"; - title = "Delivery Gone Bad"; - desc = ""; - img = ""; - simpleTask = 0; - triggerCondition = ""; - taskLimit = 3; - taskCheckTime = 4; - triggerDelay = 3; - items[] = {""}; - itemSpawn = 0; - markerType = 0; - markerRadius = 50; - markerText = ""; - initfsm = ""; - initsqf = ""; - initcall = "[player,6] call EPOCH_callSapperMigration"; - callEventBinTask = 0; - callEventCondition1 = ""; - callEventCondition2 = ""; - callEventCondition3 = ""; - callEventCALL1 = ""; - callEventFSM1 = ""; - callEventSQF1 = ""; - callEventTask1 = ""; - callEventCALL2 = ""; - callEventFSM2 = ""; - callEventSQF2 = ""; - callEventTask2 = ""; - callEventCALL3 = ""; - callEventFSM3 = ""; - callEventSQF3 = ""; - callEventTask3 = ""; - diag1Condition = "true"; - dialogue1[] = {"Oh my, that's terrible, why did you bring me this news ?","No no no, why would you do this to me, this is awful news."}; - diagSquelch = 60; - diag2Condition = ""; - dialogue2[] = {""}; - diag3Condition = ""; - dialogue3[] = {""}; - failedCondition = ""; - abandonDist = 100; - abandonTime = 240; - failed[] = {""}; - failedFSM = ""; - failedSQF = ""; - failedCall = ""; - failedTask[] = {""}; - cleanUp = 1; - cleanUpCalls[] = {"uiNameSpace setVariable ['axeStartTraders', nil]"}; - completeCondition = "true"; - reward[] = {""}; - completed1[] = {"You are going to pay for that, get out of my sight","Nobody does that to me, go away.","I would run buddy, I am not pleased."}; - completed2[] = {""}; - reminder[] = {""}; - nextTask[] = {}; +class deliveryMissionBadNews { + author = "axeman"; + title = "Delivery Gone Bad"; + simpleTask = 0; + items[] = {}; + triggerDelay = 0; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = "[player,6] call EPOCH_callSapperMigration"; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "true", + {"Oh my, that's terrible, why did you bring me this news ?","No no no, why would you do this to me, this is awful news."} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime =240; + failedCondition = "false"; + faileddialogues[] = {}; + completeCondition = "diag_ticktime - EPOCH_task_startTime > 8"; + completedialogues[] = {"You are going to pay for that, get out of my sight","Nobody does that to me, go away.","I would run buddy, I am not pleased."}; + completedCALL = ""; + reward[] = {}; + cleanUp = 1; + nextTask[] = {}; }; \ No newline at end of file diff --git a/Sources/epoch_config/Configs/CfgMissions/CfgmissionFish.hpp b/Sources/epoch_config/Configs/CfgMissions/CfgmissionFish.hpp new file mode 100644 index 00000000..bdefffe4 --- /dev/null +++ b/Sources/epoch_config/Configs/CfgMissions/CfgmissionFish.hpp @@ -0,0 +1,139 @@ +class StartFishMission { + author = "He-Man"; + title = "Start Fish Mission"; + simpleTask = 0; + items[] = {}; + triggerDelay = 2; + triggerintervall = 5; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = "uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],20]) apply {_x getVariable [""AI_SLOT"",-1]}]; EPOCH_Mission_StartPos = getpos player"; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "true", + {"I really need a fresh Fish. Can you fish me one?","Go to the Water and catch me a fresh Fish. I will reward you"} + }, + { // {"condition",{"Message1","Message2", ...}} + "true", + {"But don't bring me a Fish from this region. Go a bit away","The Fishes from this region are boring. Please go a bit farther"} + }, + { + "!(""MeleeRod"" in weapons player)", + {"Hey, you need your Fishin Rod for fishing! Don't throw it away"} + }, + { + "(surfaceiswater (getpos player) || (surfaceiswater (player modelToWorld[0, 5 + (random 5), 0]))) && player distance EPOCH_Mission_StartPos < 1000", + {"The Fishes in this region taste awful. Go to another Spot.","Don't bring me a fish frome here! They taste terrible..."} + }, + { + "(surfaceiswater (getpos player) || (surfaceiswater (player modelToWorld[0, 5 + (random 5), 0]))) && player distance EPOCH_Mission_StartPos > 1000", + {"Oh nice, here is an excellent spot for fishing...","Use your Fishing-Rod to catch me a fresh Fish"} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime = 1200; + failedCondition = "!alive player"; + faileddialogues[] = {"I guess you have better things to do. - Mission Failed","Mission Failed - Try again later."}; + completeCondition = "player distance (missionNamespace getVariable [""EPOCH_myBobber"", objNull]) < 40 && player distance EPOCH_Mission_StartPos > 900"; + completedialogues[] = {"Okay, now catch a Fish","Let's wait now..."}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"CatchFish"}; + +// Not used atm + taskLimit = 3; + itemSpawn = 3; + callEventBinTask = 0; + diagSquelch = 30; + abandonDist = 100; +}; +class CatchFish { + author = "He-Man"; + title = "Catch the Fish"; + simpleTask = 0; + items[] = {}; + triggerDelay = 8; + triggerintervall = 5; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime = 600; + failedCondition = "!alive player"; + faileddialogues[] = {"I guess you have better things to do. - Mission Failed","Mission Failed - You took to long."}; + completeCondition = "{_x in magazines player} count ([""CfgEpochClient"", ""fishLoots"", [""ItemTuna"",""ItemSeaBass"",""ItemSeaBass"",""ItemSeaBass"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout""]] call EPOCH_fnc_returnConfigEntryV2) > 0"; + completedialogues[] = {"YEAH! You got one. Bring it to me","Wow, bring the Fish to me!"}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"BringTheFish"}; +}; +class BringTheFish { + author = "He-Man"; + title = "Bring the Fish"; + simpleTask = 0; + items[] = {}; + triggerDelay = 8; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "diag_ticktime - EPOCH_task_startTime > 180", + {"Hurry up, I am really hungry.","Hey, where is my Fish? Bring it to me!","Why does it take so long to bring me a Fish?"} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime = 1200; + failedCondition = "!alive player"; + faileddialogues[] = {"I guess you have better things to do. - Mission Failed","Mission Failed - You took to long."}; + completeCondition = "((player nearentities [[""C_Man_1""],20]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]])) && {_x in magazines player} count ([""CfgEpochClient"", ""fishLoots"", [""ItemTuna"",""ItemSeaBass"",""ItemSeaBass"",""ItemSeaBass"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout""]] call EPOCH_fnc_returnConfigEntryV2) > 0"; + completedialogues[] = {"Hey, you bring me my Fish? - THANKS!!!","Great Job there. Step into my office traveller.","You made it, thanks for bringing me the Fish."}; + completedCALL = "{if (_x in magazines player) exitwith {player removeMagazine _x}} foreach ([""CfgEpochClient"", ""fishLoots"", [""ItemTuna"",""ItemSeaBass"",""ItemSeaBass"",""ItemSeaBass"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout"",""ItemTrout""]] call EPOCH_fnc_returnConfigEntryV2)"; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"FinishFishMission"}; +}; +class FinishFishMission { + author = "He-Man"; + title = "Finish Fish Mission"; + simpleTask = 0; + items[] = {}; + triggerDelay = 8; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil];EPOCH_Mission_StartPos = nil"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime = 240; + failedCondition = "false"; + faileddialogues[] = {}; + completeCondition = "true"; + completedialogues[] = {"Take your reward, you have earnt it","Here is your reward, you are a great fisher man.","Any time you need work, come and see me, great job."}; + completedCALL = "[objnull,""Mission_Fishing_Payout"",true,getposatl player] remoteExec [""EPOCH_serverLootObject"",2];"; + reward[] = {}; + cleanUp = 1; + nextTask[] = {}; +}; diff --git a/Sources/epoch_config/Configs/CfgMissions/CfgmissionMonster.hpp b/Sources/epoch_config/Configs/CfgMissions/CfgmissionMonster.hpp new file mode 100644 index 00000000..d9e6d132 --- /dev/null +++ b/Sources/epoch_config/Configs/CfgMissions/CfgmissionMonster.hpp @@ -0,0 +1,134 @@ +class prepForMonsterEscort { + author = "He-Man"; + title = "Prep for Monster Escort"; + simpleTask = 0; + items[] = {}; + triggerDelay = 2; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = "EPOCH_Monster = objnull"; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "true", + {"Hey, thanks for helping me to take my Monster to a friend"} + }, + { + "true", + {"I will call my monster. Bring him to another Trader"} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}} + "true", + "uiNameSpace setVariable ['axeStartTraders',(player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]}]", + {} + }, + { // {"condition",{"Message1","Message2", ...},{"NextTask1","NextTask2", ...}} + "true", + "_animalPos = [getposatl player, 150, 250, 5, 0, 2000, 0] call BIS_fnc_findSafePos;_randomAIClass = ""Construct_F"";_animal = createAgent[_randomAIClass, _animalPos, [], 5, ""NONE""];EPOCH_Monster = _animal;[EPOCH_Monster] remoteExec [""EPOCH_localCleanup"",2]", + {} + } + }; + abandonTime = 240; + failedCondition = "false"; + faileddialogues[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the document. Misison Failed !"}; + completeCondition = "!isnull EPOCH_Monster"; + completedialogues[] = {}; + completedCALL = "[] spawn {_pos = getpos player;_stay = false;while {!isnull EPOCH_Monster && alive EPOCH_Monster && alive player} do {if (EPOCH_Monster distance2d player > 35) then {_stay = false;_pos = getposatl player;}else {if (!_stay) then {_pos = getposatl EPOCH_Monster;_stay = true;};};EPOCH_Monster moveto _pos;_time = diag_ticktime;uisleep 3;waituntil {diag_ticktime - _time > 15 || EPOCH_Monster distance _pos < 25 || isnull EPOCH_Monster};};};"; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"EscortMonster"}; + +// Not used atm + taskLimit = 3; + itemSpawn = 3; + callEventBinTask = 0; + diagSquelch = 30; + abandonDist = 100; +}; +class EscortMonster { + author = "He-Man"; + title = "Escort Monster"; + simpleTask = 0; + items[] = {}; + triggerDelay = 5; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]; deletevehicle EPOCH_Monster"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + { // {"condition",{"Message1","Message2", ...}} + "true", + {"That's great, look for the Monster outside.","Good, now search my Monster outside","Ok, well done. We can start now."} + }, + { + "true", + {"Ok, head off to another trader, you can't deliver to any nearby.","All set. Now take the Monster to another trader further away.","Take that Monster to another trader or trader city."} + }, + { + "EPOCH_task_startTime + 60 < diag_ticktime", + {"Sorrz, he is an old Man and not very fast...","My Monster is very old a bit lazy"} + }, + { + "EPOCH_task_startTime + 120 < diag_ticktime && EPOCH_Monster distance player > 350", + {"Don't go to far away or you loose the Monster","Hey, wait for my Monster!"} + }, + { + "EPOCH_Monster distance player < 20", + {"Go forward, my Monster will follow you!","Hurry up a bit. My Monster is hungry..."} + }, + { + "(count (player nearentities [[""C_Man_1""],42]) > 0) && (count (((player nearentities [[""C_Man_1""],42]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)", + {"Well done, you have a trader nearby, go see him","Looks like you found another trader, well done, deliver the Monster.","UAV has spotted another trader nearby, go deliver the Monster."} + }, + { + "(EPOCH_task_startTime + 480 < diag_tickTime) && ((player nearentities [[""C_Man_1""],500]) apply {_x getVariable [""AI_SLOT"",-1]} isEqualTo (uiNameSpace getVariable [""axeStartTraders"",[]]))", + {"Hey, what are you doing here ? Get on with your task!"} + } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime = 2000; + failedCondition = "!alive EPOCH_Monster || !alive player || EPOCH_Monster distance player > 500"; + faileddialogues[] = {"Oh no, you lost my Monster - Mission Failed","My Monster ist gone, Mission Over!"}; + completeCondition = "player distance EPOCH_Monster < 50 && (count (player nearentities [[""C_Man_1""],20]) > 0) && (count (((player nearentities [[""C_Man_1""],20]) apply {_x getVariable [""AI_SLOT"",-1]}) select {_x in (uiNameSpace getVariable [""axeStartTraders"",[]])}) < 1)"; + completedialogues[] = {"Hey, you bring me my friends Monster?","Great Job there. Step into my office traveller.","You made it, thanks for bringing me the Monster."}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"finishMonsterEscort"}; +}; +class finishMonsterEscort { + author = "He-Man"; + title = "Finish Monster Escort"; + simpleTask = 0; + items[] = {}; + triggerDelay = 8; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "uiNameSpace setVariable ['axeStartTraders', nil]; deletevehicle EPOCH_Monster"; + dialogues[] = { // {{ARRAY1},{ARRAY2},... } + }; + callevents[] = { // {{ARRAY1},{ARRAY2},... } + }; + abandonTime = 240; + failedCondition = "false"; + faileddialogues[] = {}; + completeCondition = "true"; + completedialogues[] = {"Take your reward, you have earnt it","Here is your reward, you are a great courier.","Any time you need work, come and see me, great job."}; + completedCALL = "[objnull,""Mission_Monster_Payout"",true,getposatl player] remoteExec [""EPOCH_serverLootObject"",2];"; + reward[] = {}; + cleanUp = 1; + nextTask[] = {}; +}; diff --git a/Sources/epoch_config/Configs/CfgMissions/CfgmissionUav.hpp b/Sources/epoch_config/Configs/CfgMissions/CfgmissionUav.hpp index 635b7212..cad412f6 100644 --- a/Sources/epoch_config/Configs/CfgMissions/CfgmissionUav.hpp +++ b/Sources/epoch_config/Configs/CfgMissions/CfgmissionUav.hpp @@ -1,166 +1,263 @@ class uavMissionAccepted{ - author = "axeman"; - title = "UAV Mission Accepted"; - simpleTask = 0; - taskLimit = 3; - taskCheckTime = 3; - triggerDelay = 2; - items[] = {"B_UavTerminal"}; - itemSpawn = 3; - markerType = 0; - markerRadius = 0; - callEventBinTask = 0; - diag1Condition = "true"; - dialogue1[] = {"The UAV terminal is at your feet, Equip it !","Pick up the terminal and equip yourself with it.","Grab the UAV terminal and put it in your GPS slot."}; - diagSquelch = 30; - diag2Condition = "!('B_UavTerminal' in assignedItems player)"; - dialogue2[] = {"Hurry it up, pick up and equip the terminal.","Come on, Equip yourself with the terminal.","We don't have all day, get that terminal equipped."}; - abandonDist = 100; - abandonTime = 240; - failed[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the terminal. Misison Failed !"}; - cleanUp = 0; - completeCondition = "'B_UavTerminal' in assignedItems player"; - completed1[] = {"That's great, you have 30 seconds to find a safe position.","Find a hidden spot to operate from, take off in 30 seconds.","Find yourself a concealed position to work from, taking off in half a minute."}; - nextTask[] = {"doUAVSpawn"}; + author = "axeman"; + title = "UAV Mission Accepted"; + simpleTask = 0; + items[] = {}; + triggerDelay = 1; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = ""; + dialogues[] = {}; + callevents[] = {}; + abandonTime = 240; + failedCondition = "missionNameSpace getVariable [""InSafeZone"",false]"; + faileddialogues[] = {"Mission not allowed in Safe Zone"}; + completeCondition = "true"; + completedialogues[] = {}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"uavMissionStart"}; + +// Not used atm + taskLimit = 3; + itemSpawn = 3; + callEventBinTask = 0; + diagSquelch = 30; + abandonDist = 100; +}; +class uavMissionStart{ + author = "axeman"; + title = "UAV Mission Start"; + simpleTask = 0; + items[] = {"B_UavTerminal"}; + triggerDelay = 1; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = ""; + dialogues[] = { + { + "true", + {"The UAV terminal is at your feet, Equip it !","Pick up the terminal and equip yourself with it.","Grab the UAV terminal and put it in your GPS slot."} + }, + { + "!('B_UavTerminal' in assignedItems player)", + {"Hurry it up, pick up and equip the terminal.","Come on, Equip yourself with the terminal.","We don't have all day, get that terminal equipped."} + } + }; + callevents[] = { + { + "missionNameSpace getVariable [""InSafeZone"",false]", + "['Mission not allowed in Safe Zone',5] call Epoch_Message", + {} + } + + + }; + abandonTime = 240; + failedCondition = "false"; + faileddialogues[] = {"I guess you have better things to do.","Try again later.","You didn't pick up the terminal. Misison Failed !"}; + completeCondition = "'B_UavTerminal' in assignedItems player"; + completedialogues[] = {"That's great, you have 30 seconds to find a safe position.","Find a hidden spot to operate from, take off in 30 seconds.","Find yourself a concealed position to work from, taking off in half a minute."}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"doUAVSpawn"}; + +// Not used atm + taskLimit = 3; + itemSpawn = 3; + callEventBinTask = 0; + diagSquelch = 30; + abandonDist = 100; }; class doUAVSpawn{ - author = "axeman"; - title = "UAV Spawn"; - simpleTask = 0; - taskLimit = 3; - taskCheckTime = 8; - triggerDelay = 30; - itemSpawn = 0; - markerType = 0; - markerRadius = 0; - initcall = "axeUAV = objNull"; - callEventBinTask = 0; - callEventCondition1 = "(diag_tickTime - EPOCH_task_startTime) > 6"; - callEventCALL1 = "_targetPos = (getPosATL player) findEmptyPosition [25,250,""I_UAV_01_F""];axeUAV = createVehicle[""I_UAV_01_F"", _targetPos, [], 10, ""CAN_COLLIDE""];axeUAV disableTIEquipment true;_driver = (group player) createUnit[""I_UAV_AI"", position axeUAV, [], 0, ""CAN_COLLIDE""];_driver moveInAny axeUAV;"; - diag1Condition = "true"; - dialogue1[] = {"UAV is ready, get prepared !","Here it comes, connecting you now. 10 seconds..","Nice spot, connecting you to the UAV !"}; - diagSquelch = 60; - failedCondition = "!('B_UavTerminal' in assignedItems player)"; - abandonDist = -1; - abandonTime = 1200; - failed[] = {"Lost it already.. Mission Over","Not a willing pilot eh ? Try again later.","Equipment Lost.. Mission Failed !"}; - cleanUp = 0; - completeCondition = "!(isNull axeUAV)"; - nextTask[] = {"doUAVAttach"}; + author = "axeman"; + title = "UAV Spawn"; + simpleTask = 0; + items[] = {}; + triggerDelay = 30; + triggerintervall = 2; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = "axeUAV = objNull"; + cleanUpCall = ""; + dialogues[] = { + { + "true", + {"UAV is ready, get prepared! Connecting in 10 seconds","Here it comes, connecting you in 10 seconds..","Nice spot, connecting you to the UAV in 10 seconds!"} + } + }; + callevents[] = { + { + "(diag_tickTime - EPOCH_task_startTime) > 40", + "_targetPos = (getPosATL player) findEmptyPosition [25,250,""I_UAV_01_F""];axeUAV = createVehicle[""I_UAV_01_F"", _targetPos, [], 10, ""CAN_COLLIDE""];axeUAV disableTIEquipment true;_driver = (group player) createUnit[""I_UAV_AI"", position axeUAV, [], 0, ""CAN_COLLIDE""];_driver moveInAny axeUAV;[axeUAV] remoteExec [""EPOCH_localCleanup"",2]", + {} + } + }; + abandonTime = 240; + failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive player)"; + faileddialogues[] = {"Lost it already.. Mission Over","Not a willing pilot eh ? Try again later.","Equipment Lost.. Mission Failed !"}; + completeCondition = "!(isNull axeUAV)"; + completedialogues[] = {}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"doUAVAttach"}; }; class doUAVAttach{ - author = "axeman"; - title = "UAV Spawn"; - simpleTask = 0; - taskLimit = 3; - taskCheckTime = 16; - triggerDelay = 6; - itemSpawn = 0; - markerType = 0; - markerRadius = 0; - initcall = "player connectTerminalToUAV axeUAV;player action [""SwitchToUAVDriver"", axeUAV];addToRemainsCollector[axeUAV];"; - callEventBinTask = 0; - diag1Condition = "true"; - dialogue1[] = {"Woohoo, here we go.. Get it in the air.","Get it in the air, no time to waste","You are a natural kid. Let's fly."}; - diagSquelch = 60; - failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)"; - abandonDist = -1; - abandonTime = 1200; - failed[] = {"Lost it already.. Mission Over","Not a natural pilot. Try again later.","Mission Failed !"}; - cleanUp = 0; - completeCondition = "(getPosATL axeUAV select 2) > 10"; - completedCALL = "if(SunOrMoon < 1)then{player action [""lightOn"", axeUAV];};"; - nextTask[] = {"takeOffUAV"}; + author = "axeman"; + title = "UAV Spawn"; + simpleTask = 0; + items[] = {}; + triggerDelay = 2; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = "player action [""SwitchToUAVDriver"", axeUAV];addToRemainsCollector[axeUAV];"; + cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV"; + dialogues[] = { + { + "true", + {"Woohoo, here we go.. Get it in the air.","Get it in the air, no time to waste","You are a natural kid. Let's fly."} + } + }; + callevents[] = {}; + abandonTime = 1200; + failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV"; + faileddialogues[] = {"Lost it already.. Mission Over","Not a natural pilot. Try again later.","Mission Failed !"}; + completeCondition = "(getPosATL axeUAV select 2) > 10"; + completedialogues[] = {}; + completedCALL = "if(SunOrMoon < 1)then{player action [""lightOn"", axeUAV];};"; + reward[] = {}; + cleanUp = 0; + nextTask[] = {"takeOffUAV"}; }; class takeOffUAV{ - author = "axeman"; - title = "Pilot the UAV"; - simpleTask = 0; - taskLimit = 3; - taskCheckTime = 8; - triggerDelay = 6; - itemSpawn = 0; - markerType = 0; - markerRadius = 0; - initcall = "axeUAVRndMission = floor random 2;"; - callEventBinTask = 1; - callEventCondition1 = "(diag_tickTime - EPOCH_task_startTime > 30) && axeUAVRndMission == 0"; - callEventCondition2 = "(diag_tickTime - EPOCH_task_startTime > 30) && axeUAVRndMission == 1"; - callEventTask1 = "uavMission1"; - callEventTask2 = "uavMission2"; - diag1Condition = "alive axeUAV"; - dialogue1[] = {"Great start.. Lets take this thing for a ride.","We're off, get some practice, I am finding you a target.","Get clear of this area, I am calculating your target."}; - diagSquelch = 60; - diag2Condition = "alive axeUAV"; - dialogue2[] = {"Keep it up, you are doing a great job.","Try and find some targets on your way.","Don't get shot down now !"}; - failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)"; - abandonDist = -1; - abandonTime = 1280; - failed[] = {"Oh dear, that didn't go well..","Try again later.","Misison Failed !"}; - cleanUp = 0; - completeCondition = "false"; - completedCALL = "player connectTerminalToUAV objNull;"; - nextTask[] = {}; + author = "axeman"; + title = "Pilot the UAV"; + simpleTask = 0; + items[] = {}; + triggerDelay = 8; + triggerintervall = 8; + markerType = 0; + markerVisible = 0; + markerRadius = 0; + markerText = ""; + initcall = ""; + cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV"; + dialogues[] = { + { + "alive axeUAV", + {"Great start.. Lets take this thing for a ride.","We're off, get some practice, I am finding you a target.","Get clear of this area, I am calculating your target."} + }, + { + "alive axeUAV", + {"Keep it up, you are doing a great job.","Try and find some targets on your way.","Don't get shot down now !"} + } + }; + callevents[] = { + { + "diag_tickTime - EPOCH_task_startTime > 30", + "", + {"uavMission1","uavMission2"} + } + }; + abandonTime = 240; + failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV"; + faileddialogues[] = {"Oh dear, that didn't go well..","Try again later.","Misison Failed !"}; + completeCondition = "false"; + completedialogues[] = {}; + completedCALL = ""; + reward[] = {}; + cleanUp = 0; + nextTask[] = {}; }; class uavMission1{ - author = "axeman"; - title = "Trader House Recon"; - simpleTask = 0; - taskLimit = 3; - taskCheckTime = 16; - triggerDelay = 8; - items[] = {""}; - itemSpawn = 0; - markerType = 2; - markerRadius = 180; - markerText = "Trader House Recon"; - initcall = "[] spawn {uavMission1Obj = selectRandom (nearestObjects [axeUAV,[""HOUSE""],2500]);EPOCH_taskMarkerPos = getPosATL uavMission1Obj;};"; - callEventBinTask = 0; - diag1Condition = "true"; - dialogue1[] = {"I need some recon on a nearby house","We need intelligence on a potential trader location.","Help us gather intel on a trader house !"}; - diagSquelch = 60; - diag2Condition = "EPOCH_taskMarkerPos distance axeUAV > 450"; - dialogue2[] = {"I have marked your map, it will be nearby.","Check you map, there is a marker near a safehouse","Search your map for the landing zone, near a traders safehouse."}; - diag3Condition = "EPOCH_taskMarkerPos distance axeUAV < 450"; - dialogue3[] = {"Land it nearby and switch off the engine.","You need to land by the house, quietly.","Drop the UAV in the marker, then keep quiet."}; - failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)"; - abandonDist = -1; - abandonTime = 2200; - failed[] = {"Oh dear, Mission Over !","Mission Failed !"}; - cleanUp = 1; - completeCondition = "!(isengineOn axeUAV) && EPOCH_taskMarkerPos distance axeUAV < 275"; - reward[] = {"ItemGoldBar","ItemGoldBar"}; - completed1[] = {"Great work, here's your reward."}; - completedCALL = "player connectTerminalToUAV objNull;[(driver axeUAV)] joinSilent grpNull;"; + author = "axeman"; + title = "Trader House Recon"; + simpleTask = 0; + items[] = {}; + triggerDelay = 0; + triggerintervall = 8; + markerType = 2; + markerVisible = 0; + markerRadius = 180; + markerText = "Trader House Recon"; + initcall = "_obj = selectRandom (nearestObjects [axeUAV,[""HOUSE""],2500]);EPOCH_taskMarkerPos = getPosATL _obj;"; + cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV"; + dialogues[] = { + { + "true", + {"I need some recon on a nearby house","We need intelligence on a potential trader location.","Help us gather intel on a trader house !"} + }, + { + "EPOCH_taskMarkerPos distance axeUAV > 450", + {"I have marked your map, it will be nearby.","Check you map, there is a marker near a safehouse","Search your map for the landing zone, near a traders safehouse."} + }, + { + "EPOCH_taskMarkerPos distance axeUAV < 450", + {"Land it nearby and switch off the engine.","You need to land by the house, quietly.","Drop the UAV in the marker, then keep quiet."} + } + }; + callevents[] = {}; + abandonTime = 900; + failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV"; + faileddialogues[] = {"Oh dear, Mission Over !","Mission Failed !"}; + completeCondition = "!(isengineOn axeUAV) && EPOCH_taskMarkerPos distance axeUAV < 275"; + completedialogues[] = {"Great work, here's your reward."}; + completedCALL = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV"; + reward[] = {"ItemGoldBar","ItemGoldBar"}; + cleanUp = 1; + nextTask[] = {}; }; class uavMission2{ - author = "axeman"; - title = "Deliver UAV To Trader"; - simpleTask = 0; - taskLimit = 3; - taskCheckTime = 16; - triggerDelay = 8; - itemSpawn = 0; - markerType = 2; - markerRadius = 220; - markerText = "UAV Trader"; - initcall = "[] spawn {EPOCH_taskUAVTrader = selectRandom (player nearentities [[""C_Man_1""],10500] select {_x getVariable [""AI_SLOT"",-1] > -1 && player distance _x > 50});EPOCH_taskMarkerPos = getPosATL EPOCH_taskUAVTrader;};"; - callEventBinTask = 0; - diag1Condition = "true"; - dialogue1[] = {"I need this UAV delivering to my buddy","Recon a rogue trader, land this near his location.","Land this UAV near the target trader."}; - diagSquelch = 60; - diag2Condition = "EPOCH_taskMarkerPos distance axeUAV > 450"; - dialogue2[] = {"Check your map for his location, you will need to land nearby.","I have marked your map with his location.","Fly to the location marked on your map, then land."}; - diag3Condition = "EPOCH_taskMarkerPos distance axeUAV < 450"; - dialogue3[] = {"Get this thing down and the engine off.","Land in the zone and switch your engine off quickly.","Find a landing spot in the area and keep quiet."}; - failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV)"; - abandonDist = -1; - abandonTime = 2600; - failed[] = {"Oh dear, Mission Over !","Mission Failed !"}; - cleanUp = 1; - cleanUpCalls[] = {"player connectTerminalToUAV objNull"}; - completeCondition = "!(isengineOn axeUAV) && EPOCH_taskMarkerPos distance axeUAV < 275"; - reward[] = {"ItemGoldBar","ItemGoldBar"}; - completed1[] = {"Great work, here's your reward."}; - completedCALL = "player connectTerminalToUAV objNull;[(driver axeUAV)] joinSilent grpNull;"; + author = "axeman"; + title = "Deliver UAV To Trader"; + simpleTask = 0; + items[] = {}; + triggerDelay = 0; + triggerintervall = 8; + markerType = 2; + markerVisible = 0; + markerRadius = 220; + markerText = "UAV Trader"; + initcall = "_obj = selectRandom (player nearentities [[""C_Man_1""],10500] select {_x getVariable [""AI_SLOT"",-1] > -1 && player distance _x > 50});EPOCH_taskMarkerPos = getPosATL _obj;"; + cleanUpCall = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV"; + dialogues[] = { + { + "true", + {"I need this UAV delivering to my buddy","Recon a rogue trader, land this near his location.","Land this UAV near the target trader."} + }, + { + "EPOCH_taskMarkerPos distance axeUAV > 450", + {"Check your map for his location, you will need to land nearby.","I have marked your map with his location.","Fly to the location marked on your map, then land."} + }, + { + "EPOCH_taskMarkerPos distance axeUAV < 450", + {"Get this thing down and the engine off.","Land in the zone and switch your engine off quickly.","Find a landing spot in the area and keep quiet."} + } + }; + callevents[] = {}; + abandonTime = 900; + failedCondition = "!('B_UavTerminal' in assignedItems player) || !(alive axeUAV) || !(alive player) || cameraon != axeUAV"; + faileddialogues[] = {"Oh dear, Mission Over !","Mission Failed !"}; + completeCondition = "!(isengineOn axeUAV) && EPOCH_taskMarkerPos distance axeUAV < 275"; + completedialogues[] = {"Great work, here's your reward."}; + completedCALL = "[(driver axeUAV)] joinSilent grpNull; removeFromRemainsCollector [axeUAV]; deletevehicle axeUAV"; + reward[] = {"ItemGoldBar","ItemGoldBar"}; + cleanUp = 1; + nextTask[] = {}; }; diff --git a/Sources/epoch_config/Configs/CfgMissionsTasks.hpp b/Sources/epoch_config/Configs/CfgMissionsTasks.hpp index f8fa803c..97080357 100644 --- a/Sources/epoch_config/Configs/CfgMissionsTasks.hpp +++ b/Sources/epoch_config/Configs/CfgMissionsTasks.hpp @@ -17,4 +17,6 @@ class inGameTasks { #include "CfgMissions\CfgmissionDelivery.hpp" #include "CfgMissions\CfgmissionUav.hpp" #include "CfgMissions\CfgmissionMilitary.hpp" +#include "CfgMissions\CfgmissionMonster.hpp" +#include "CfgMissions\CfgmissionFish.hpp" }; \ No newline at end of file diff --git a/Sources/epoch_config/Configs/CfgPricing.hpp b/Sources/epoch_config/Configs/CfgPricing.hpp index 4f840b1d..4d965197 100644 --- a/Sources/epoch_config/Configs/CfgPricing.hpp +++ b/Sources/epoch_config/Configs/CfgPricing.hpp @@ -4514,14 +4514,14 @@ class CfgPricing class B_ViperLightHarness_khk_F { price = 20; }; class B_ViperLightHarness_oli_F { price = 20; }; // MAD ARMA - class revolver01 { price = 55 }; - class VG_sawed_off_01 { price = 120 }; - class Devastator_01 { price = 180 }; - class in005_1Rnd_12Gauge_Pellets { price = 5 }; - class in005_1Rnd_12Gauge_Slug { price = 5 }; - class H_MM_Buzzard_Gasmask_01 { price = 65 }; - class H_MM_Helmet_01 { price = 75 }; - class V_MM_Vest_01 { price = 20 }; + class revolver01 { price = 55; }; + class VG_sawed_off_01 { price = 120; }; + class Devastator_01 { price = 180; }; + class in005_1Rnd_12Gauge_Pellets { price = 5; }; + class in005_1Rnd_12Gauge_Slug { price = 5; }; + class H_MM_Buzzard_Gasmask_01 { price = 65; }; + class H_MM_Helmet_01 { price = 75; }; + class V_MM_Vest_01 { price = 20; }; }; /*[[[end]]]*/ diff --git a/Sources/epoch_config/Configs/CfgRemoteExec.hpp b/Sources/epoch_config/Configs/CfgRemoteExec.hpp index e79ff538..99bbfa24 100644 --- a/Sources/epoch_config/Configs/CfgRemoteExec.hpp +++ b/Sources/epoch_config/Configs/CfgRemoteExec.hpp @@ -26,6 +26,11 @@ class CfgRemoteExec { mode = 1; jip = 0; + class bis_fnc_reviveinitaddplayer + { + allowedTargets = 2; + jip = 0; + }; class EPOCH_server_paycrypto { allowedTargets = 2; diff --git a/Sources/epoch_config/Configs/cfgCrafting.hpp b/Sources/epoch_config/Configs/cfgCrafting.hpp index 8bf1d652..30286d99 100644 --- a/Sources/epoch_config/Configs/cfgCrafting.hpp +++ b/Sources/epoch_config/Configs/cfgCrafting.hpp @@ -235,7 +235,7 @@ class CfgCrafting }; class ItemStick : Item { - usedIn[] = {"WoodClub","MeleeMaul","CrudeHatchet","KitFirePlace","KitSpikeTrap","KitMetalTrap"}; + usedIn[] = {"WoodClub","MeleeMaul","CrudeHatchet","KitFirePlace","KitSpikeTrap","KitMetalTrap","MeleeRod"}; recipe[] = {{"WoodLog_EPOCH",1}}; previewPosition[] = {0.8,1,0.25}; previewScale = 0.4; @@ -257,7 +257,7 @@ class CfgCrafting }; class ItemRope : Item { - usedIn[] = {"WoodClub","MeleeMaul","CrudeHatchet"}; + usedIn[] = {"WoodClub","MeleeMaul","CrudeHatchet","MeleeRod"}; nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}}; recipe[] = {{"ItemKiloHemp",1}}; previewPosition[] = {0.8,1,0.35}; @@ -948,6 +948,14 @@ class CfgCrafting previewScale = 0.11; previewVector = 0; }; + class MeleeRod : Kit + { + recipe[] = { { "ItemRope", 1 }, { "ItemStick", 1 }, { "ItemScraps", 1 } }; + descriptionFull = ""; + previewPosition[] = {0.798975,1,0.375}; + previewScale = 0.2; + previewVector = -1.8; + }; }; /*[[[end]]]*/ diff --git a/Sources/epoch_config/build.hpp b/Sources/epoch_config/build.hpp index d0213530..62344aa7 100644 --- a/Sources/epoch_config/build.hpp +++ b/Sources/epoch_config/build.hpp @@ -1 +1 @@ -build=749; +build=757; diff --git a/Sources/epoch_server/build.hpp b/Sources/epoch_server/build.hpp index d0213530..62344aa7 100644 --- a/Sources/epoch_server/build.hpp +++ b/Sources/epoch_server/build.hpp @@ -1 +1 @@ -build=749; +build=757; diff --git a/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_sapperObjs.sqf b/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_sapperObjs.sqf index 068b83e4..37bc42a0 100644 --- a/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_sapperObjs.sqf +++ b/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_sapperObjs.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_sapperObjs.sqf */ -private["_safeUnits"]; +//[[[cog import generate_private_arrays ]]] +private ["_safeBombs","_safeUnits"]; +//[[[end]]] params [["_bomb",objNull], "_player", ["_token","",[""]], "_unit", ["_killUnit",false]]; if !([_player,_token]call EPOCH_server_getPToken)exitWith{}; _safeUnits = ["Epoch_Sapper_F","Epoch_SapperB_F","Epoch_SapperG_F"]; diff --git a/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_say3D.sqf b/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_say3D.sqf index 11480643..3225c8a9 100644 --- a/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_say3D.sqf +++ b/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_say3D.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_say3D.sqf */ -private["_range", "_nearBy", "_sound"]; -params [["_player",objNull,[objNull]],["_target",objNull],["_sound","",[""]], ["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_nearBy","_range","_say3dsoundsConfig","_selectedSound","_target","_targets"]; +//[[[end]]] +params [["_player",objNull,[objNull]],["_target",objNull],["_sound","",[""]], ["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _target) then {_target = _player}; diff --git a/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_switchMove.sqf b/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_switchMove.sqf index 4b54a599..4ae19128 100644 --- a/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_switchMove.sqf +++ b/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_handle_switchMove.sqf @@ -17,7 +17,9 @@ or [_player,"moveName","token"] call EPOCH_server_handle_switchMove; */ -private["_range", "_move", "_nearBy"]; +//[[[cog import generate_private_arrays ]]] +private ["_nearBy","_range","_selectedMove","_switchMovehandlerConfig","_target","_targets"]; +//[[[end]]] params [["_player",objNull,[objNull]],["_move","",[""]],["_token","",[""]],["_target",objNull]]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_saveBuilding.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_saveBuilding.sqf index 9ad4fe21..4dd80be3 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_saveBuilding.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_saveBuilding.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_saveBuilding.sqf */ -private ["_class","_worldspace","_objHiveKey","_animPhases","_VAL","_return","_objSlot"]; +//[[[cog import generate_private_arrays ]]] +private ["_VAL","_animPhases","_cfgBaseBuilding","_class","_objHiveKey","_objSlot","_return","_worldspace"]; +//[[[end]]] _return = false; if !(isNull _this) then { _objSlot = _this getVariable["BUILD_SLOT", -1]; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_changeOwner.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_changeOwner.sqf index a4a58287..09279542 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_changeOwner.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_changeOwner.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_changeOwner.sqf */ -private ["_result","_newOwner"]; +//[[[cog import generate_private_arrays ]]] +private ["_newOwner","_result"]; +//[[[end]]] params ["_object","_newOwnerObj"]; _newOwner = owner _newOwnerObj; _result = false; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf index 57ba3528..038f6b2a 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf */ - +//[[[cog import generate_private_arrays ]]] +private ["_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_VAL","_ammoClass","_ammoObj","_anims","_animsData","_arr","_arrCount","_baseObj","_buildingJammerRange","_cfgBaseBuilding","_cfgEpochClient","_class","_color","_damage","_location","_marker","_maxTTL","_owner","_response","_serverSettingsConfig","_storageSlot","_textureSlot","_ttl","_vehHiveKey","_worldspace"]; +//[[[end]]] _maxTTL = parseNumber EPOCH_expiresBuilding; _serverSettingsConfig = configFile >> "CfgEpochServer"; _UseIndestructible = [_serverSettingsConfig, "UseIndestructible", false] call EPOCH_fnc_returnConfigEntry; @@ -118,7 +120,7 @@ for "_i" from 0 to _this do { // Handle Jammers and create marker if EPOCH_SHOW_JAMMERS set true. if (_class isKindOf "PlotPole_EPOCH") then { if (EPOCH_SHOW_JAMMERS) then { - _marker = createMarker[str(_location), _location]; + _marker = createMarker [str(_location), _location]; _marker setMarkerShape "ICON"; // TODO allow players to change this per base _marker setMarkerType "mil_dot"; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf index f0f17168..1057e147 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_maintBUILD.sqf @@ -25,8 +25,10 @@ Returns: NOTHING */ -private ["_playerUID","_counter","_objSlot","_buildingJammerRange","_current_crypto","_cIndex","_vars","_storSlot","_playerCryptoLimit","_cfgEpochClient"]; -params [["_object",objNull],"_player","_maintCount",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_buildingJammerRange","_cIndex","_cfgEpochClient","_counter","_current_crypto","_objSlot","_playerCryptoLimit","_playerUID","_storSlot","_vars"]; +//[[[end]]] +params [["_object",objNull],"_player","_maintCount",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _object) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_paintBUILD.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_paintBUILD.sqf index 790b6dfe..71ad31d5 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_paintBUILD.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_paintBUILD.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_paintBUILD.sqf */ -private["_cfgBaseBuilding","_color", "_class", "_currentTextureSlot", "_slot", "_worldspace", "_objHiveKey", "_VAL", "_return", "_playerUID", "_objSlot"]; -params [["_object",objNull],"_textureSlot","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cfgBaseBuilding","_class","_color","_currentTextureSlot","_objSlot","_playerUID"]; +//[[[end]]] +params [["_object",objNull],"_textureSlot","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _object) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_removeBUILD.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_removeBUILD.sqf index 8bf6de38..db990bbd 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_removeBUILD.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_removeBUILD.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_removeBUILD.sqf */ -private["_cfgBaseBuilding","_vehSlot", "_gwh", "_wepsItemsCargo", "_magsAmmoCargo", "_objTypes", "_objQty", "_magazine", "_weapon", "_suppressor", "_laser", "_optics", "_arrCount", "_magazineName", "_magazineSize", "_qty", "_objType", "_inventory", "_posWH", "_nearbyWH", "_removeParts", "_isTemporary", "_storageSlot"]; -params ["_building","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_ammoObj","_arrCount","_attachments","_cfgBaseBuilding","_gwh","_inventory","_isTemporary","_magazineName","_magazineSize","_magsAmmoCargo","_nearbyWH","_objQty","_objType","_objTypes","_posWH","_qty","_removeParts","_storageSlot","_vehSlot","_wMags","_wMagsArray","_wepsItemsCargo"]; +//[[[end]]] +params ["_building","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _building) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf index 70762910..522c878e 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf */ -private["_staticClassConfig","_objSlot", "_findnextslot", "_worldspace", "_objHiveKey", "_VAL", "_cfgBaseBuilding", "_slot", "_storageObj", "_pos", "_buildClass", "_newVehicle", "_textureSlot", "_staticClass", "_playerUID", "_oemType"]; -params ["_vehicle", "_player", ["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_cfgBaseBuilding","_findnextslot","_newVehicle","_objSlot","_oemType","_playerUID","_serverSettingsConfig","_slot","_staticClass","_staticClassConfig","_storageObj","_vehiclePos"]; +//[[[end]]] +params ["_vehicle", "_player", ["_token","",[""]] ]; if (isNull _vehicle) exitWith{}; if !([_player,_token] call EPOCH_server_getPToken) exitWith {}; @@ -43,7 +45,7 @@ if (isText _staticClassConfig) then { _vehiclePos = getposATL _vehicle; _storageObj = [_staticClass,_vehicle] call EPOCH_swapBuilding; - + if (_UseIndestructible) then { if ({_storageObj iskindof _x} count _ExceptedBaseObjects == 0) then { { @@ -53,7 +55,7 @@ if (isText _staticClassConfig) then { } foreach _IndestructibleBaseObjects; }; }; - + if (getNumber(_cfgBaseBuilding >> _staticClass >> "isSecureStorage") == 1) then{ _storageObj setVariable["EPOCH_Locked", false, true]; }; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simToStatic.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simToStatic.sqf index b9cd636d..c2df644d 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simToStatic.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simToStatic.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simToStatic.sqf */ -private ["_newObj","_class","_objSlot","_cfgBaseBuilding","_lastPosition","_currentPosition","_entities"]; +//[[[cog import generate_private_arrays ]]] +private ["_cfgBaseBuilding","_class","_currentPosition","_entities","_lastPosition","_newObj","_objSlot","_staticClassConfig"]; +//[[[end]]] _entities = allMissionObjects "Constructions_modular_F"; { _lastPosition = _x getVariable["LAST_POS", []]; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simulSwap.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simulSwap.sqf index 06f5c804..b35e5374 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simulSwap.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simulSwap.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_simulSwap.sqf */ -private["_classConfig","_cfgClass", "_newObj", "_return", "_class", "_oemType", "_cfgBaseBuilding", "_object", "_objSlot", "_damage", "_color", "_textureSlot"]; -params [["_object",objNull,[objNull]],["_static",false,[false]]]; +//[[[cog import generate_private_arrays ]]] +private ["_ammoClass","_ammoObj","_cfgBaseBuilding","_cfgClass","_class","_classConfig","_color","_damage","_newObj","_objSlot","_oemType","_return","_textureSlot","_worldspace"]; +//[[[end]]] +params [["_object",objNull,[objNull]],["_static",false,[false]] ]; _return = _object; _objSlot = _object getVariable ["BUILD_SLOT", -1]; if (_objSlot != -1) then { diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_unsuppported.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_unsuppported.sqf index 6edbd6f3..8d89d00c 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_unsuppported.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_unsuppported.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_unsuppported.sqf */ -private["_simulClassConfig","_worldspace", "_newObj", "_class", "_objSlot", "_cfgBaseBuilding", "_isSupported", "_lastPosition", "_currentPosition", "_objectPos"]; +//[[[cog import generate_private_arrays ]]] +private ["_cfgBaseBuilding","_class","_isSupported","_newObj","_objSlot","_objectPos","_playerUID","_simulClassConfig","_simulatedCount","_slot","_stableCount","_start"]; +//[[[end]]] if !(isNil "EPOCH_unsupportedCheckRunning") exitWith{ diag_log "UnsupportedCheck: Already running aborted"}; EPOCH_unsupportedCheckRunning = true; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_upgradeBUILD.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_upgradeBUILD.sqf index 5af9fc9c..9d7fb5f7 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_upgradeBUILD.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_upgradeBUILD.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_upgradeBUILD.sqf */ -private ["_cfgBaseBuilding","_class","_newObj","_upgrade","_objSlot","_objType","_upgrades"]; -params ["_object","_player",["_index",0],["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cfgBaseBuilding","_class","_newObj","_objSlot","_objType","_upgrade","_upgrades"]; +//[[[end]]] +params ["_object","_player",["_index",0],["_token","",[""]] ]; if (isNull _object) exitWith{}; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_swapBuilding.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_swapBuilding.sqf index e421313b..12b2c0a4 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_swapBuilding.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_swapBuilding.sqf @@ -1,5 +1,7 @@ // _newObj = [_class,_object] call EPOCH_swapBuilding; -private ["_objectPos","_newObj"]; +//[[[cog import generate_private_arrays ]]] +private ["_newObj","_objectPos","_playersNear"]; +//[[[end]]] params [["_class",""],["_object",objNull],["_method",0]]; _newObj = objNull; if (!isNull _object && !(_class isEqualTo "")) then { diff --git a/Sources/epoch_server/compile/epoch_group/EPOCH_server_createGroup.sqf b/Sources/epoch_server/compile/epoch_group/EPOCH_server_createGroup.sqf index 54c83542..f43dd931 100644 --- a/Sources/epoch_server/compile/epoch_group/EPOCH_server_createGroup.sqf +++ b/Sources/epoch_server/compile/epoch_group/EPOCH_server_createGroup.sqf @@ -17,7 +17,10 @@ true = group has been created and / or successfully saved! false = group exist already and hasn't been saved! */ -params ["_leader", "_groupName", ["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cIndex","_contentArray","_current_crypto","_groupID","_groupName","_leaderName","_playerCryptoLimit","_return","_textArr","_upgradePrice","_vars"]; +//[[[end]]] +params ["_leader", "_groupName", ["_token","",[""]] ]; if !([_leader, _token] call EPOCH_server_getPToken) exitWith{}; _return = false; diff --git a/Sources/epoch_server/compile/epoch_group/EPOCH_server_deleteGroup.sqf b/Sources/epoch_server/compile/epoch_group/EPOCH_server_deleteGroup.sqf index 37b47438..9ffe4666 100644 --- a/Sources/epoch_server/compile/epoch_group/EPOCH_server_deleteGroup.sqf +++ b/Sources/epoch_server/compile/epoch_group/EPOCH_server_deleteGroup.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_group/EPOCH_server_deleteGroup.sqf */ +//[[[cog import generate_private_arrays ]]] private ["_groupID","_return"]; -params ["_player",["_token","",[""]]]; +//[[[end]]] +params ["_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_group/EPOCH_server_updatePlayerGroup.sqf b/Sources/epoch_server/compile/epoch_group/EPOCH_server_updatePlayerGroup.sqf index 9bc39d57..78fa5322 100644 --- a/Sources/epoch_server/compile/epoch_group/EPOCH_server_updatePlayerGroup.sqf +++ b/Sources/epoch_server/compile/epoch_group/EPOCH_server_updatePlayerGroup.sqf @@ -12,21 +12,20 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_group/EPOCH_server_updatePlayerGroup.sqf */ -private ["_groupID","_selectedPlayerUID","_addOrRemove","_modOrMember","_modOrMemberRevert","_response","_contentArray","_modArray","_memberArray","_selectedPlayerName","_group","_removePlayerArray","_modOrMemberArray","_found"]; +//[[[cog import generate_private_arrays ]]] +private ["_allPlayers","_contentArray","_found","_group","_memberrange","_modOrMember","_modOrMemberArray","_modOrMemberRevert","_removePlayerArray","_response","_selectedPlayerName"]; +//[[[end]]] +params [["_groupID",""],["_selectedPlayerUID",""],["_addOrRemove",false],["_modOrMemberVar",true],["_player",objnull],["_token",""]]; -if !([_this select 4, _this select 5] call EPOCH_server_getPToken) exitWith {}; +if !([_player, _token] call EPOCH_server_getPToken) exitWith {}; -_groupID = _this select 0; if (_groupID == "") exitWith{ diag_log format["Epoch: GROUP: No Group Selected %1", _this]; }; diag_log format["Epoch: GROUP: Update %1", _this]; -_selectedPlayerUID = _this select 1; -_addOrRemove = _this select 2; //add = true -_modOrMember = if (_this select 3) then [{3},{4}]; -_modOrMemberRevert = if (_this select 3) then [{4},{3}]; +_modOrMember = if (_modOrMemberVar) then [{3},{4}]; +_modOrMemberRevert = if (_modOrMemberVar) then [{4},{3}]; -// [_groupName, _leaderName, _groupSize, _modArray, _memberArray] _response = ["Group", _groupID] call EPOCH_fnc_server_hiveGETRANGE; if ((_response select 0) == 1 && (_response select 1) isEqualType []) then { _contentArray = _response select 1; @@ -39,7 +38,6 @@ if ((_response select 0) == 1 && (_response select 1) isEqualType []) then { { _selectedPlayerName = if (alive _x) then {name _x}; if ((_x getVariable ["GROUP",""]) != _groupID) then { - _x setVariable ["GROUP", _groupID]; _group = grpNull; { if ((_x getVariable["GROUP",""]) == _groupID) exitWith { @@ -50,6 +48,8 @@ if ((_response select 0) == 1 && (_response select 1) isEqualType []) then { if (isNull _group) then { _group = createGroup [west, true]; }; + _x setVariable ["GROUP", _groupID]; + [["groupUidUpdate", _groupID], _x] call EPOCH_sendRemoteExecClient; [_x] joinSilent _group; }; } forEach (_allPlayers select {getPlayerUID _x == _selectedPlayerUID}); @@ -88,7 +88,6 @@ if ((_response select 0) == 1 && (_response select 1) isEqualType []) then { [_x] joinSilent (createGroup [west, true]); [["resetGroup", true], _x] call EPOCH_sendRemoteExecClient; } forEach (_allPlayers select {getPlayerUID _x == _selectedPlayerUID}); - { if (_x select 0 == _selectedPlayerUID) exitWith { _memberArray deleteAt _forEachIndex; diff --git a/Sources/epoch_server/compile/epoch_group/EPOCH_server_upgradeGroup.sqf b/Sources/epoch_server/compile/epoch_group/EPOCH_server_upgradeGroup.sqf index c161a543..d6a206ca 100644 --- a/Sources/epoch_server/compile/epoch_group/EPOCH_server_upgradeGroup.sqf +++ b/Sources/epoch_server/compile/epoch_group/EPOCH_server_upgradeGroup.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_group/EPOCH_server_upgradeGroup.sqf */ -private ["_playerCryptoLimit","_current_crypto","_groupMemberPUID","_return","_newGroupSize","_upgradePrice","_contentArray","_found","_cIndex","_vars","_response"]; -params ["_groupID","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cIndex","_contentArray","_current_crypto","_found","_groupMemberPUID","_newGroupSize","_playerCryptoLimit","_response","_return","_upgradePrice","_vars"]; +//[[[end]]] +params ["_groupID","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; _return = false; diff --git a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_destroyTrash.sqf b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_destroyTrash.sqf index 043bcaf8..a29e3cbb 100644 --- a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_destroyTrash.sqf +++ b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_destroyTrash.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_looting/EPOCH_server_destroyTrash.sqf */ -private["_target", "_eventArray", "_triggerType", "_nearPlayers", "_posWH", "_item", "_config", "_object", "_player", "_payout", "_type"]; -params [["_object",objNull,[objNull]],["_type",0,[0]],["_player",objNull,[objNull]],["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_antagTable","_antagTableArray","_config","_errorMsg","_item","_nearPlayers","_payout","_posWH","_target","_triggerType","_weightedArray"]; +//[[[end]]] +params [["_object",objNull,[objNull]],["_type",0,[0]],["_player",objNull,[objNull]],["_token","",[""]] ]; if (isNull _object) exitWith{}; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_knockDownTree.sqf b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_knockDownTree.sqf index ea0ba80a..4b38ce37 100644 --- a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_knockDownTree.sqf +++ b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_knockDownTree.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_looting/EPOCH_server_knockDownTree.sqf */ -private["_posWH", "_item", "_nearbyWH", "_payout", "_object", "_type", "_player"]; -params ["_object","_type","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_item","_lootType","_nearbyWH","_posWH"]; +//[[[end]]] +params ["_object","_type","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _object) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootAnimal.sqf b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootAnimal.sqf index 331460bd..096d1e39 100644 --- a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootAnimal.sqf +++ b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootAnimal.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootAnimal.sqf */ -private["_item", "_class", "_pos", "_objectClass"]; -params ["_object","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_class","_classOverride","_config","_errorMsg","_item","_objectClass","_pos"]; +//[[[end]]] +params ["_object","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if !(isNull _object) then { diff --git a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootContainer.sqf b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootContainer.sqf index 563558c0..76832fb1 100644 --- a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootContainer.sqf +++ b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootContainer.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_looting/EPOCH_server_lootContainer.sqf */ -private ["_class","_pos","_dir","_object","_whConfig","_type","_lootClasses","_player","_maxLoot","_triggerType","_eventArray","_animated","_config"]; -params ["_object","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_animated","_antagTable","_antagTableArray","_class","_config","_dir","_errorMsg","_lootClasses","_object","_pos","_triggerType","_type","_weightedArray","_whConfig"]; +//[[[end]]] +params ["_object","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _object) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_mineRocks.sqf b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_mineRocks.sqf index 4ffdd3d8..698043bb 100644 --- a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_mineRocks.sqf +++ b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_mineRocks.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_looting/EPOCH_server_mineRocks.sqf */ -private["_posWH", "_item", "_nearbyWH", "_rock"]; -params ["_object","_index","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_item","_lootables","_nearbyWH","_payout","_payoutQty","_posWH","_selectedPayout"]; +//[[[end]]] +params ["_object","_index","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if !(_object isKindOf "All") then { diff --git a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_spawnBoatLoot.sqf b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_spawnBoatLoot.sqf index 015d0a5f..42612fee 100644 --- a/Sources/epoch_server/compile/epoch_looting/EPOCH_server_spawnBoatLoot.sqf +++ b/Sources/epoch_server/compile/epoch_looting/EPOCH_server_spawnBoatLoot.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_looting/EPOCH_server_spawnBoatLoot.sqf */ +//[[[cog import generate_private_arrays ]]] private ["_item","_marker"]; +//[[[end]]] { // 20 percent chance for loot to spawn if ((random 1) <= 0.4) then { diff --git a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_airDropCrate.sqf b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_airDropCrate.sqf index 5f410290..427b7e97 100644 --- a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_airDropCrate.sqf +++ b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_airDropCrate.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_airDropCrate.sqf */ -private ["_pos","_axeCrate","_axeChute","_crateSmoke","_axeLight"]; -params ["_object","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_axeChute","_axeCrate","_axeLight","_crateSmoke","_pos"]; +//[[[end]]] +params ["_object","_player",["_token","",[""]] ]; if !([_player,_token] call EPOCH_server_getPToken)exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createAirDrop.sqf b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createAirDrop.sqf index 15c93c02..9322fcaf 100644 --- a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createAirDrop.sqf +++ b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createAirDrop.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createAirDrop.sqf */ -private ["_playerOwner","_objType","_obj","_grp","_unitPos","_driver","_unit"]; +//[[[cog import generate_private_arrays ]]] +private ["_driver","_drvOwner","_grp","_obj","_objType","_playerOwner","_unit","_unitPos"]; +//[[[end]]] params ["_player",["_token","",[""]],"_pos"]; if (!isNil "axenotSent" && {axenotSent}) exitWith { diff --git a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createObject.sqf b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createObject.sqf index 87b4f353..9a1cc3d1 100644 --- a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createObject.sqf +++ b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createObject.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_createObject.sqf */ -private ["_grp","_driver","_gunner","_commander","_crew","_missionVehList","_obj","_cfgPricing","_objClass","_vehicles","_backpacks","_weapons","_items","_magazines","_vehAllowed"]; +//[[[cog import generate_private_arrays ]]] +private ["_allowedVehicleListName","_allowedVehiclesList","_backpacks","_cfgPricing","_commander","_crew","_driver","_grp","_gunner","_items","_lootTableIndex","_magazines","_obj","_objArr","_pos","_veh","_vehAllowed","_vehicles","_weapons","_wepHolder"]; +//[[[end]]] params ["_player",["_token","",[""]],["_objArr",[]],["_pos",[]],["_wepHolder",objNull],["_clearCargo",true],["_objSpc","CAN_COLLIDE"],["_driverType",""],["_gunnerType",""],["_commanderType",""],["_crewType",""],["_doDamage",false]]; if !([_player,_token]call EPOCH_server_getPToken) exitWith {}; @@ -23,7 +25,10 @@ diag_log format["Epoch: Attempt Create Object: %1 for %2",_objArr, name _player] _cfgPricing = 'CfgPricing' call EPOCH_returnConfig; _lootTableIndex = if (EPOCH_modCUPVehiclesEnabled) then {if (EPOCH_mod_madArma_Enabled) then {3} else {1}} else {if (EPOCH_mod_madArma_Enabled) then {2} else {0}}; -_allowedVehicleListName = ["allowedVehiclesList","allowedVehiclesList_CUP","allowedVehiclesList_MAD","allowedVehiclesList_MADCUP"] select _allowedVehicleIndex; +_allowedVehicleListName = ["allowedVehiclesList","allowedVehiclesList_CUP","allowedVehiclesList_MAD","allowedVehiclesList_MADCUP"] select _lootTableIndex; +if !(EPOCH_forcedVehicleSpawnTable isEqualTo "") then { + _allowedVehicleListName = EPOCH_forcedVehicleSpawnTable; +}; _allowedVehiclesList = getArray(configFile >> "CfgEpoch" >> worldName >> _allowedVehicleListName); //diag_log format ["DEBUG: Allowed Vehs: %1",_allowedVehiclesList]; _vehicles = []; diff --git a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_fillContainer.sqf b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_fillContainer.sqf index 9cdae134..05a9e3a7 100644 --- a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_fillContainer.sqf +++ b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_fillContainer.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_fillContainer.sqf */ -private["_player","_container","_clearFirst","_pos","_chance","_weps","_mags","_items"]; +//[[[cog import generate_private_arrays ]]] +private ["_container","_pos"]; +//[[[end]]] params ["_player",["_token","",[""]],["_container",objNull,[objNull]],["_clearFirst",false],["_chance",25]]; _pos = getPosATL _player; diff --git a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_missionComms.sqf b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_missionComms.sqf index cb44bb47..8adbee9a 100644 --- a/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_missionComms.sqf +++ b/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_missionComms.sqf @@ -12,19 +12,19 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_missions/EPOCH_Server_missionComms.sqf */ -params["_plyr","_token",["_cmd",-1],["_tmpVar", nil],{"_missionIndex",-1],["_item",objNull],["_pos"],[]]; +params["_plyr","_token",["_cmd",-1],["_tmpVar", nil],["_missionIndex",-1],["_item",objNull],["_pos",[]]]; if !([_plyr, _token] call EPOCH_server_getPToken) exitWith{}; if(isNil "missionControlHandle")then{ -missionControlHandle = [] execFSM "x\addons\a3_epoch_server\system\mission_control.fsm"; -diag_log format ["MISSION CONTROL INIT: %1",missionControlHandle]; + missionControlHandle = [] execFSM "x\addons\a3_epoch_server\system\mission_control.fsm"; + diag_log format ["MISSION CONTROL INIT: %1",missionControlHandle]; - //Catch first instant if fsm slow to start - may not be necessary. - ["_clientCmd",[_plyr, _cmd, _missionIndex,_item,_pos]] spawn{ - waitUntil {!(isNil "missionControlHandle")}; - missionControlHandle setFSMVariable [_this select 0, _this select 1]; - }; + //Catch first instant if fsm slow to start - may not be necessary. + ["_clientCmd",[_plyr, _cmd, _missionIndex,_item,_pos]] spawn{ + waitUntil {!(isNil "missionControlHandle")}; + missionControlHandle setFSMVariable [_this select 0, _this select 1]; + }; }else{ -missionControlHandle setFSMVariable ["_clientCmd",[_plyr, _cmd, _missionIndex,_item,_pos]]; + missionControlHandle setFSMVariable ["_clientCmd",[_plyr, _cmd, _missionIndex,_item,_pos]]; }; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_fnc_addItemToX.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_fnc_addItemToX.sqf index 8e27e6ba..727a87b7 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_fnc_addItemToX.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_fnc_addItemToX.sqf @@ -24,10 +24,9 @@ [["yourClass",4],["myClass",3]] // addItemToBackpack ] */ -private ["_itemSlot"]; params ["_player","_slots"]; { - _itemSlot = _forEachIndex; + private _itemSlot = _forEachIndex; _x params ["_items","_itemqtys"]; { for "_i" from 1 to (_itemqtys select _forEachIndex) do { diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_sendRemoteExecClient.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_sendRemoteExecClient.sqf deleted file mode 100644 index 7b924996..00000000 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_sendRemoteExecClient.sqf +++ /dev/null @@ -1,12 +0,0 @@ -// input -/* -1 = _remoteExecClient_NAMES -2 = _rnd_strings_REC -3 = _skn_PVC_INDEX -*/ - -private '_index'; -_index = %1 find (_this select 0 select 0); -if (_index != -1) then { - [%2 select _index, _this select 0 select 1] remoteExec ['EPOCH_%3',(_this select 1)]; -}; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_PayCrypto.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_PayCrypto.sqf index eca79df5..cf47b6c7 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_PayCrypto.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_PayCrypto.sqf @@ -1,4 +1,4 @@ -params [["_player",objNull,[objNull]],["_crypto",0,[0]],["_token","",[""]]]; +params [["_player",objNull,[objNull]],["_crypto",0,[0]],["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (_crypto > 0) exitwith { // This is only for pay Crypto, not for give Crypto ;) diag_log format ['Player %1 (%2) killed for Code hack',name _player, getplayeruid _player]; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf index bbe26f9a..83d2bf36 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf */ -private["_arr", "_dead", "_isMale", "_medical", "_apperance", "_class", "_vars", "_hitpoints", "_deadPlayer", "_response", "_playerUID", "_playerObj"]; +//[[[cog import generate_private_arrays ]]] +private ["_apperance","_arr","_class","_dead","_deadPlayer","_hitpoints","_isMale","_medical","_playerUID","_response","_vars"]; +//[[[end]]] params [["_playerObj",objNull]]; if (_playerObj isEqualType objNull) then { if (!isNull _playerObj) then { diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayer.sqf index 53b970a3..83015509 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayer.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayer.sqf */ -private ["_triggerType","_veh","_bankBalance","_bankData","_response","_playerUID","_pos","_cIndex","_vars","_current_crypto"]; -params ["_playerObj","_killer","_playerName",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_bankBalance","_bankData","_cIndex","_current_crypto","_defaultVars","_playerName","_playerUID","_pos","_response","_triggerType","_vars"]; +//[[[end]]] +params ["_playerObj","_killer","_playerName",["_token","",[""]] ]; // handle token check and isnull for _player if !([_playerObj, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayerDetonate.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayerDetonate.sqf index 8249a271..a6a3957e 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayerDetonate.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_deadPlayerDetonate.sqf @@ -12,6 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_antagonists/EPOCH_server_playerDeathOptions.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_bomb","_pos"]; +//[[[end]]] params ["_player", "_token"]; diag_log format["Epoch: ADMIN: Attempting player detonate on %1.", getPlayerUID _player]; if !([_player,_token]call EPOCH_server_getPToken)exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_equippedItem.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_equippedItem.sqf index 435aa0f2..f9101fa4 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_equippedItem.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_equippedItem.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_equippedItem.sqf */ -private["_channelID", "_selectedChannel"]; +//[[[cog import generate_private_arrays ]]] +private ["_channelID","_config","_selectedChannel"]; +//[[[end]]] params ["_class","_status","_player"]; _selectedChannel = EPOCH_customChannels select 0; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf index 3aa61ea0..26f9e4e2 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf @@ -17,10 +17,7 @@ private ["_allGroupMembers","_alreadyDead","_attachments","_backpack","_canBeRev //[[[end]]] _reject = true; -params [ - ["_player",objNull,[objNull]], - ["_isMale",true] -]; +params [["_player",objNull,[objNull]],["_isMale",true]]; if (!isNull _player) then { @@ -244,7 +241,7 @@ if (!isNull _player) then { if (_weapon != "") then { _newPlyr addWeapon _weapon; }; - switch _type do { + switch (_type) do { case 1: { // primary removeAllPrimaryWeaponItems _newPlyr; { _newPlyr addPrimaryWeaponItem _x } forEach _attachments; @@ -316,6 +313,12 @@ if (!isNull _player) then { //diag_log format["DEBUG (Load Player) Sent Group: %1 %2", _playerGroup, _playerGroupArray]; _newPlyr setVariable["SETUP", true, true]; + + // revive + _newPlyr setVariable ['#rev_enabled', true, true]; + + // [] remoteExec ["bis_fnc_reviveInit",_player]; + }; } else { diag_log format["LOGIN FAILED UNIT NULL: %1 [%2|%3]", _player, _group, count allgroups]; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_makeSP.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_makeSP.sqf index 40338a10..7fca6eac 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_makeSP.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_makeSP.sqf @@ -12,6 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_selectSpawnpoint.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_currentPos","_server_vars"]; +//[[[end]]] params [["_jammer",objNull],["_player",objNull],["_token",""]]; // check token if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_onPlayerDisconnect.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_onPlayerDisconnect.sqf index 75fb8b14..5caedad3 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_onPlayerDisconnect.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_onPlayerDisconnect.sqf @@ -12,12 +12,14 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_onPlayerDisconnect.sqf */ +//[[[cog import generate_private_arrays ]]] private ["_return"]; +//[[[end]]] params ["_player","_id","_uid","_name"]; _return = false; if (!isNull _player) then { if (_player getVariable["SETUP", false]) then { - [_player, _player getVariable["VARS", []]] call EPOCH_server_savePlayer; + [_player, _player getVariable["VARS", []] ] call EPOCH_server_savePlayer; if (alive _player) then { _player setVariable ["VARS", nil]; deleteVehicle _player; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_playerSetVariable.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_playerSetVariable.sqf index e69c9e71..1dea4617 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_playerSetVariable.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_playerSetVariable.sqf @@ -15,4 +15,4 @@ params ["_player","_token","_obj", "_var", "_value", "_local"]; if !([_player,_token]call EPOCH_server_getPToken)exitWith{}; diag_log format["Epoch: ADMIN: Attempting Set variable [%2,%3,%4] on %1.", _obj, _var, _value,_local]; -[_obj, _var,_value,_local] remoteExec ['EPOCH_fnc_playerSetVariable', _obj]; \ No newline at end of file +[_obj, _var,_value,_local] remoteExec ['EPOCH_fnc_playerSetVariable', _obj]; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_respawnPlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_respawnPlayer.sqf index c4fceee6..2d7c6a24 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_respawnPlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_respawnPlayer.sqf @@ -12,10 +12,12 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_respawnPlayer.sqf */ -private["_defaultUniform", "_class", "_vest", "_dir", "_location", "_playerObj"]; -params ["_playerObj",["_token","",[""]],"_isMale"]; +//[[[cog import generate_private_arrays ]]] +private ["_class","_defaultUniform","_dir","_location","_vest"]; +//[[[end]]] +params ["_player",["_token","",[""]],"_isMale"]; -if !([_playerObj, _token] call EPOCH_server_getPToken) exitWith{}; +if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; _defaultUniform = "U_Test_uniform"; _class = "Epoch_Female_F"; @@ -30,16 +32,16 @@ _dir = random 360; _location = getMarkerPos "respawn_west"; _location set[2, 0]; -_playerObj = (group _player) createUnit [_class, _location, [], 0, "CAN_COLLIDE"]; +_player = (group _player) createUnit [_class, _location, [], 0, "CAN_COLLIDE"]; { - _playerObj disableAI _x; + _player disableAI _x; } forEach["FSM", "MOVE", "AUTOTARGET", "TARGET"]; -_playerObj setDir _dir; -_playerObj setPosATL _location; +_player setDir _dir; +_player setPosATL _location; // send player object to player -["_switchPlayer_PVC",_playerObj] remoteExec ['EPOCH_playerGenderInit',_player]; +["_switchPlayer_PVC",_player] remoteExec ['EPOCH_playerGenderInit',_player]; -_playerObj setVariable ["REVIVE", true]; +_player setVariable ["REVIVE", true]; true diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf index 12959c03..33623bd3 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf @@ -12,8 +12,8 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf */ -private["_return", "_pos", "_medical", "_playerUID", "_weapons", "_vars", "_itemsplayer", "_weaponsplayer", "_appearance", "_player", "_dmg", "_allowSave", "_cIndex", "_Svars", "_current_crypto", "_group", "_revive", "_vehiclePlyr","_server_vars"]; -params ["_player", "_vars"]; +private["_return", "_pos", "_medical", "_playerUID", "_weapons", "_itemsplayer", "_weaponsplayer", "_appearance", "_dmg", "_allowSave", "_cIndex", "_Svars", "_current_crypto", "_group", "_revive", "_vehiclePlyr","_server_vars"]; +params [["_player",objNull], ["_vars",[]]]; if (isNull _player) exitWith { diag_log "DEBUG SAVE ABORT null player object"; @@ -43,7 +43,7 @@ _allowSave = _vars isEqualTypeParams EPOCH_defaultVars; if (_allowSave) then{ if !(_vars isEqualTo EPOCH_defaultVars_SEPXVar) then{ - _serverOnly = ["Crypto"]; + private _serverOnly = ["Crypto"]; _Svars = _player getVariable["VARS", call EPOCH_defaultVars_SEPXVar]; { _cIndex = EPOCH_customVars find _x; @@ -66,7 +66,7 @@ if (_allowSave) then{ if (vehicle _player != _player) then { - _staticTraderLocationsDistances = []; + private _staticTraderLocationsDistances = []; { _staticTraderLocationsDistances pushBack [_x distance _player, _x] } forEach EPOCH_staticTraderLocations; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_storeCrypto.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_storeCrypto.sqf index 52b6c2f9..d13eaaf3 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_storeCrypto.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_storeCrypto.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_storeCrypto.sqf */ -private["_bankBalance", "_bankBalanceBefore", "_current_crypto", "_transferBankBalance", "_transferBankBalanceBefore", "_return", "_transferBankData", "_transferTargetUID", "_transferResponse", "_transferAmountIn", "_transferAmountOut", "_transferBalance", "_transferTarget", "_cIndex", "_vars", "_bankData", "_tradeArray", "_playerUID", "_response"]; -params ["_player","_tradeArray",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_bankBalance","_bankBalanceBefore","_bankData","_cIndex","_current_crypto","_playerCryptoLimit","_playerUID","_response","_return","_transferAmountIn","_transferAmountOut","_transferBalance","_transferBankBalance","_transferBankBalanceBefore","_transferBankData","_transferResponse","_transferTarget","_transferTargetUID","_vars"]; +//[[[end]]] +params ["_player","_tradeArray",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf index 1e855625..9b0307a7 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf */ -private ["_wHPos","_wH","_nearByHolder"]; -params ["_item","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_nearByHolder","_wH","_wHPos"]; +//[[[end]]] +params ["_item","_player",["_token","",[""]] ]; if !([_player,_token] call EPOCH_server_getPToken) exitWith {}; if (_item isKindOf "Bag_Base") then { diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf index cb15e0e0..4a4d5db9 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf @@ -12,6 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_playerUID"]; +//[[[end]]] params ["_command","_param1","_param2","_param3"]; switch (_command) do { case 'shutdown': { 'epochserver' callExtension '991' }; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_serverLootObject.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_serverLootObject.sqf index 63e12ba0..df712c37 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_serverLootObject.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_serverLootObject.sqf @@ -12,14 +12,22 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_server/EPOCH_serverLootObject.sqf */ -private["_randomItemArray", "_quan", "_randomLootClass", "_randomItem", "_lootPaid", "_mags", "_lootItemWeightedArray", "_lootItemArray", "_weightedItemArray", "_exit", "_maxPayout", "_lootTable", "_lootTableArray", "_weightedArray"]; -params ["_object","_type",["_forceSpawn",false]]; +//[[[cog import generate_private_arrays ]]] +private ["_config","_debug","_exit","_loop","_lootItemArray","_lootItemWeightedArray","_lootTable","_lootTableClass","_lootTableIndex","_loots","_magazineSize","_mags","_maxLoot","_maxPayout","_minLoot","_pricingConfig","_quan","_randomItem","_randomItemArray","_randomizeMagazineAmmoCount","_weightedItemArray"]; +//[[[end]]] +params ["_object","_type",["_forceSpawn",false],["_pos",[]] ]; _debug = true; _pricingConfig = 'CfgPricing' call EPOCH_returnConfig; _lootTableIndex = if (EPOCH_modCUPVehiclesEnabled) then {if (EPOCH_mod_madArma_Enabled) then {3} else {1}} else {if (EPOCH_mod_madArma_Enabled) then {2} else {0}}; _lootTableClass = ["CfgLootTable","CfgLootTable_CUP","CfgLootTable_MAD","CfgLootTable_MADCUP"] select _lootTableIndex; +if !(EPOCH_forcedLootSpawnTable isEqualTo "") then { + _lootTableClass = EPOCH_forcedLootSpawnTable; +}; _randomizeMagazineAmmoCount = ["CfgEpochClient", "randomizeMagazineAmmoCount", true] call EPOCH_fnc_returnConfigEntryV2; +if (isnull _object && !(_pos isequalto [])) then { + _object = createVehicle ["groundWeaponHolder",_pos,[],0,"CAN_COLLIDE"]; +}; if !(isNull _object) then{ _lootTable = [_type, "CfgMainTable", "tables"] call EPOCH_weightedArray; _lootTable params ["_lootTableArray","_weightedArray"]; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf index 26e2a956..01481498 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf @@ -12,8 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf */ -private ["_class","_debug1","_lightLocation","_light","_deSimulate","_pos","_dir","_ep","_useWorldPos","_pos1","_markerName","_loadBaseTemplateConfig","_pro2","_veh2","_enterClass","_exitClass","_pro1","_veh1","_debugLocation","_debug","_protection","_config","_loadBaseTemplateConfig"]; - +//[[[cog import generate_private_arrays ]]] +private ["_array","_center","_class","_cloneClasses","_config","_deSimulate","_debug","_debug1","_debugLocation","_dir","_enterClass","_ep","_exitClass","_light","_lightLocation","_loadBaseTemplateConfig","_markerName","_part","_partPos","_pos","_pos1","_pro1","_pro2","_protection","_useWorldPos","_veh1","_veh2"]; +//[[[end]]] _loadBaseTemplateConfig = { private ["_partPos","_part","_array","_center","_deSimulate"]; params ["_templateClass","_selectedTemplate","_pos"]; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_server_makeMarker.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_server_makeMarker.sqf index 3ff8053c..4620194c 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_server_makeMarker.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_server_makeMarker.sqf @@ -16,8 +16,11 @@ Github: https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server/compile/epoch_server/EPOCH_server_makeMarker.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_mrkr","_mrkrName","_trgtObj","_trgtType"]; +//[[[end]]] params ["_trgt","_mPos",["_mShape","ICON"],["_mType","mil_dot"],["_mText",""],["_mColor","ColorBlack"],["_mSize",[0.7,0.7]],"_mBrush","_mDir","_mAlpha",["_mrkrName",""]]; -private ["_trgtType","_trgtObj"]; + diag_log format["Epoch: ADMIN: Creating marker at %1 called by %2.", _mPos, _trgt]; if(count _trgt < 2)exitWith{}; _trgtType = _trgt select 0; @@ -39,7 +42,7 @@ switch _trgtType do { }foreach (units group _trgtObj); }; }; - + case 2: { if(_trgtObj == "")then{_trgtObj=diag_tickTime;}; _mrkr = createMarker [_mrkrName, _mPos]; @@ -52,7 +55,7 @@ switch _trgtType do { if!(isNil "_mDir")then{_mrkr setMarkerDir _mDir;}; if!(isNil "_mAlpha")then{_mrkr setMarkerAlpha _mAlpha;}; }; - + case 3: { if(isArray _trgtObj && count _trgtObj > 0)then{ { @@ -61,6 +64,6 @@ switch _trgtType do { }; }; - + default {diag_log format["Epoch: ADMIN: Marker failed at %1 called by %2.", _mPos, _trgt];}; }; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_server_removeMarker.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_server_removeMarker.sqf index 09573f70..59302e34 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_server_removeMarker.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_server_removeMarker.sqf @@ -36,11 +36,11 @@ switch _trgtType do { }foreach (units group _trgtObj); }; }; - + case 2: { deleteMarker _mrkrName; }; - + case 3: { if(isArray _trgtObj && count _trgtObj > 0)then{ { @@ -49,6 +49,6 @@ switch _trgtType do { }; }; - - default {diag_log format["Epoch: ADMIN: Marker delete failed at %1 called by %2.", _mPos, _trgt];}; + + default {diag_log format["Epoch: ADMIN: Marker delete failed at %1 called by %2.", _mrkrName, _trgtObj];}; }; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_server_traderKilled.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_server_traderKilled.sqf index cc541df0..361a7d56 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_server_traderKilled.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_server_traderKilled.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_server/EPOCH_server_traderKilled.sqf */ -private ["_marker","_slot","_objHiveKey"]; +//[[[cog import generate_private_arrays ]]] +private ["_marker","_objHiveKey","_slot"]; +//[[[end]]] params ["_trader","_player"]; if (!isNull _trader) then { _marker = _trader getVariable["MARKER_REF",""]; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_weightedArray.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_weightedArray.sqf index ee7ed8bc..73f32f6e 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_weightedArray.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_weightedArray.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_server/EPOCH_weightedArray.sqf */ -private["_return","_lootTableArray","_weightedArray"]; +//[[[cog import generate_private_arrays ]]] +private ["_lootIndex","_lootTableArray","_return","_weightedArray"]; +//[[[end]]] params ["_keyName","_configName","_arrayName"]; _return = missionNamespace getVariable[format["EPOCH_LT_%1_%2_%3",_configName,_keyName,_arrayName],[]]; if(_return isEqualTo[]) then { diff --git a/Sources/epoch_server/compile/epoch_traders/EPOCH_server_loadTraders.sqf b/Sources/epoch_server/compile/epoch_traders/EPOCH_server_loadTraders.sqf index aebd706b..a9822ecf 100644 --- a/Sources/epoch_server/compile/epoch_traders/EPOCH_server_loadTraders.sqf +++ b/Sources/epoch_server/compile/epoch_traders/EPOCH_server_loadTraders.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_traders/EPOCH_server_loadTraders.sqf */ -private ["_arr","_currentStock","_limit","_toBeRemoved","_marker","_staticTrader","_agent","_class","_pos","_randomAIUniform","_dir","_objHiveKey","_response","_schedule","_home","_work","_traderSlotIndex","_staticTradersArray","_staticTradersArrCount","_aiTables","_serverSettingsConfig","_storedVehicleLimit"]; +//[[[cog import generate_private_arrays ]]] +private ["_agent","_aiTables","_arr","_class","_currentStock","_existingStock","_home","_indexStock","_limit","_marker","_objHiveKey","_pos","_randomAIUniform","_response","_schedule","_serverSettingsConfig","_staticTrader","_staticTradersArrCount","_staticTradersArray","_storedVehicleLimit","_toBeRemoved","_traderSlotIndex","_work"]; +//[[[end]]] params [["_maxTraderLimit",0]]; _staticTradersArray = [] + EPOCH_staticNPCTraderPos; @@ -189,7 +191,7 @@ for "_i" from 0 to _maxTraderLimit do { if (_x isKindOf "Air" || _x isKindOf "Ship" || _x isKindOf "LandVehicle" || _x isKindOf "Tank") then { if (EPOCH_storedVehicleCount <= _storedVehicleLimit) then { EPOCH_storedVehicleCount = EPOCH_storedVehicleCount + _currentStock; - + // Count how many of this vehicle are in stock at any trader. if !(_x in EPOCH_traderStoredVehicles) then { EPOCH_traderStoredVehicles pushBack _x; @@ -200,7 +202,7 @@ for "_i" from 0 to _maxTraderLimit do { _existingStock = EPOCH_traderStoredVehiclesCnt select _indexStock; EPOCH_traderStoredVehiclesCnt set [_indexStock, (_existingStock + _currentStock)]; }; - }; + }; } else { _toBeRemoved pushBack _forEachIndex; }; diff --git a/Sources/epoch_server/compile/epoch_traders/EPOCH_server_spawnTraders.sqf b/Sources/epoch_server/compile/epoch_traders/EPOCH_server_spawnTraders.sqf index 37882762..7b70f9f3 100644 --- a/Sources/epoch_server/compile/epoch_traders/EPOCH_server_spawnTraders.sqf +++ b/Sources/epoch_server/compile/epoch_traders/EPOCH_server_spawnTraders.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_traders/EPOCH_server_spawnTraders.sqf */ -private ["_pos","_marker","_buildingWork","_home","_work","_startTime","_endTime","_schedule","_agent","_slot","_objHiveKey","_buildingHome","_buildings","_randomAIUniform","_aiClass","_homes","_position","_spawnCount","_config","_aiTables","_acceptableBlds","_traderHomes","_usedBuildings","_checkBuilding"]; +//[[[cog import generate_private_arrays ]]] +private ["_acceptableBlds","_agent","_aiClass","_aiTables","_buildingHome","_buildingWork","_buildings","_checkBuilding","_config","_endTime","_home","_homes","_marker","_objHiveKey","_pos","_position","_randomAIUniform","_return","_schedule","_slot","_spawnCount","_startTime","_traderHomes","_usedBuildings","_work"]; +//[[[end]]] _spawnCount = count EPOCH_TraderSlots; _config = (configFile >> "CfgEpoch" >> worldName); _aiTables = getArray(_config >> "traderUniforms"); @@ -63,7 +65,7 @@ for "_i" from 1 to _spawnCount do { if !(EPOCH_forceStaticTraders) then { [_agent, _home, [_work, _schedule]] execFSM "\epoch_server\system\Trader_brain.fsm"; }; - ["AI", _objHiveKey, [_aiClass, _home, [_work, _schedule]]] call EPOCH_fnc_server_hiveSET; + ["AI", _objHiveKey, [_aiClass, _home, [_work, _schedule]] ] call EPOCH_fnc_server_hiveSET; if (EPOCH_SHOW_TRADERS) then { _marker = createMarker[str(_agent), (_pos)]; _marker setMarkerShape "ICON"; diff --git a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_effectCrypto.sqf b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_effectCrypto.sqf index 373e3203..ba8a52d1 100644 --- a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_effectCrypto.sqf +++ b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_effectCrypto.sqf @@ -22,8 +22,10 @@ Returns: MIXED */ -private ["_cIndex","_vars","_current_crypto"]; -params [["_player",objNull,[objNull]],["_crypto",0,[0]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cIndex","_current_crypto","_vars"]; +//[[[end]]] +params [["_player",objNull,[objNull]],["_crypto",0,[0]] ]; if (!isNull _player && isPlayer _player) then { // get index of custom variable _cIndex = EPOCH_customVars find "Crypto"; diff --git a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeNPCTrade.sqf b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeNPCTrade.sqf index 477097c5..4b3af1d9 100644 --- a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeNPCTrade.sqf +++ b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeNPCTrade.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeNPCTrade.sqf */ -private ["_SkipOut","_tradeIn","_tradeOut","_message","_vehicleSold","_vehHiveKey","_VAL","_makeTradeIn","_vehSlot","_playerNetID","_vehicle","_vehicles","_tradeTotal","_current_crypto","_tradeQtyTotal","_currQty","_qtyIndex","_itemWorth","_item","_itemQty","_position","_foundSmoke","_objOwner","_tmpposition","_lockOwner","_helipad","_helipads","_smoke","_vehicleBought","_playerGroup","_vehObj","_final_location","_group","_wp","_wHPos","_wH","_nearByHolder","_itemTax","_tax","_objHiveKey","_playerCryptoLimit","_config","_cIndex","_vars","_current_cryptoRaw","_aiItems","_itemClasses","_itemQtys","_returnIn","_returnOut","_slot"]; -params ["_trader","_itemsIn","_itemsOut","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_MaxBankDebit","_SkipOut","_VAL","_aiItems","_bankBalance","_bankData","_cIndex","_config","_currQty","_current_crypto","_current_cryptoRaw","_errorMsg","_final_location","_foundSmoke","_group","_helipad","_helipads","_item","_itemClasses","_itemQty","_itemQtys","_itemTax","_itemWorth","_itemsIn","_itemsOut","_lockOwner","_makeTradeIn","_message","_nearByHolder","_objHiveKey","_objOwner","_playerCryptoLimit","_playerGroup","_playerNetID","_playerUID","_position","_qtyIndex","_response","_return","_returnIn","_returnOut","_road","_serverSettingsConfig","_slot","_smoke","_tax","_tmpposition","_tradeIn","_tradeOut","_tradeQtyTotal","_tradeTotal","_vars","_vehHiveKey","_vehObj","_vehSlot","_vehicle","_vehicleBought","_vehicleSold","_vehicles","_vehslot","_wH","_wHPos","_wp"]; +//[[[end]]] +params ["_trader","_itemsIn","_itemsOut","_player",["_token","",[""]] ]; _playerUID = getplayeruid _player; @@ -47,7 +49,7 @@ if (_slot != -1) then { _current_cryptoRaw = _current_crypto; // SELL ITEMS TO TRADER - _aiItems = _trader getVariable["AI_ITEMS", [[], []]]; + _aiItems = _trader getVariable["AI_ITEMS", [[], []] ]; _itemClasses = _aiItems select 0; _itemQtys = _aiItems select 1; { @@ -280,7 +282,7 @@ if (_slot != -1) then { } else { _wH = _nearByHolder select 0; }; - _wh addBackpackCargoGlobal [_item,1]; + _wH addBackpackCargoGlobal [_item,1]; }; _returnOut pushBack _item; _itemQtys set[_qtyIndex, (_currQty - _itemQty)]; diff --git a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeTrade.sqf b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeTrade.sqf index 42d9cdb8..d4976a91 100644 --- a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeTrade.sqf +++ b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeTrade.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeTrade.sqf */ -private ["_current_crypto1","_overFlowItems","_playerCryptoLimit","_tradeOffer2","_tradeOffer1","_trade1","_trade2","_cIndex","_player1_vars","_player2_vars","_current_crypto2","_tradeCryptoOffer1","_tradeCryptoOffer2"]; -params ["_player1", "_player2","_array","_tradeOffer",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cIndex","_current_crypto1","_current_crypto2","_overFlowItems","_player1_vars","_player2_vars","_playerCryptoLimit","_trade1","_trade2"]; +//[[[end]]] +params ["_player1", "_player2","_array","_tradeOffer",["_token","",[""]] ]; if (isNull _player2) exitWith{}; if !([_player1, _token] call EPOCH_server_getPToken) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_tradeRequest.sqf b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_tradeRequest.sqf index 57606e29..9f11a13b 100644 --- a/Sources/epoch_server/compile/epoch_trading/EPOCH_server_tradeRequest.sqf +++ b/Sources/epoch_server/compile/epoch_trading/EPOCH_server_tradeRequest.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_trading/EPOCH_server_tradeRequest.sqf */ +//[[[cog import generate_private_arrays ]]] private ["_tradeKey"]; -params ["_target","_source",["_token","",[""]]]; +//[[[end]]] +params ["_target","_source",["_token","",[""]] ]; if !([_source, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _target) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf index 31da38ad..dc3f37cb 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf */ -private ["_inventory","_location","_dir","_textures","_colors","_textureSelectionIndex","_selections","_count","_color","_cfgBaseBuilding","_objTypes","_objQty","_wMags","_wMagsArray","_attachments","_magazineSizeMax","_magazineName","_magazineSize","_qty","_objType","_marker","_class_raw","_damage","_class","_worldspace","_wsCount","_vehicle","_arr","_storageSlotIndex","_vehHiveKey","_response","_diag"]; +//[[[cog import generate_private_arrays ]]] +private ["_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_arr","_attachments","_availableColorsConfig","_cfgBaseBuilding","_class","_class_raw","_color","_colors","_count","_damage","_diag","_dir","_inventory","_location","_magazineName","_magazineSize","_magazineSizeMax","_marker","_objQty","_objType","_objTypes","_qty","_response","_selections","_serverSettingsConfig","_storageSlotIndex","_textureSelectionIndex","_textures","_vehHiveKey","_vehicle","_wMags","_wMagsArray","_worldspace","_wsCount"]; +//[[[end]]] params [["_maxStorageLimit",0]]; _serverSettingsConfig = configFile >> "CfgEpochServer"; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf index 98eb3655..a57682ca 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles.sqf */ -private ["_removeweapons","_removemagazinesturret","_location","_class","_dmg","_actualHitpoints","_hitpoints","_textures","_color","_colors","_textureSelectionIndex","_selections","_count","_objTypes","_objQty","_wMags","_wMagsArray","_attachments","_magazineSizeMax","_magazineName","_magazineSize","_qty","_objType","_marker","_found","_vehicle","_allHitpoints","_config","_worldspace","_damage","_arr","_arrNum","_vehicleSlotIndex","_vehHiveKey","_response","_immuneVehicleSpawnTime","_diag","_dataFormat","_dataFormatCount","_allVehicles","_serverSettingsConfig","_simulationHandler","_immuneVehicleSpawn"]; +//[[[cog import generate_private_arrays ]]] +private ["_actualHitpoints","_allHitpoints","_allVehicles","_arr","_arrNum","_attachments","_class","_color","_colors","_config","_count","_damage","_dataFormat","_dataFormatCount","_diag","_dmg","_found","_hitpoints","_immuneVehicleSpawn","_immuneVehicleSpawnTime","_location","_magazineName","_magazineSize","_magazineSizeMax","_marker","_objQty","_objType","_objTypes","_qty","_removemagazinesturret","_removeweapons","_response","_selections","_serverSettingsConfig","_simulationHandler","_textureSelectionIndex","_textures","_vehHiveKey","_vehicle","_vehicleSlotIndex","_wMags","_wMagsArray","_worldspace"]; +//[[[end]]] params [["_maxVehicleLimit",0]]; _diag = diag_tickTime; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockStorage.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockStorage.sqf index 5cf08ce2..aa85c99e 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockStorage.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockStorage.sqf @@ -12,7 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockStorage.sqf */ -params ["_unit","_lockStatus","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_cfgBaseBuilding","_fnc_lock","_fnc_unlock","_gArray","_owners","_playerGroup","_playerUID","_response","_type"]; +//[[[end]]] +params ["_unit","_lockStatus","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _unit) exitWith{}; if (_player distance _unit > 20) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_packStorage.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_packStorage.sqf index fd579893..1c70c0a3 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_packStorage.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_packStorage.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_packStorage.sqf */ -private ["_wepsItemsCargo","_magsAmmoCargo","_objTypes","_objQty","_wMags","_wMagsArray","_attachments","_arrCount","_magazineName","_magazineSize","_qty","_objType","_posWH","_inventory","_gwh","_returnItems","_owners","_class"]; -params ["_unit","_player",["_token","",[""]]]; +//[[[cog import generate_private_arrays ]]] +private ["_arrCount","_attachments","_class","_config","_gwh","_inventory","_magazineName","_magazineSize","_magsAmmoCargo","_objQty","_objType","_objTypes","_owners","_posWH","_qty","_returnItems","_wMags","_wMagsArray","_wepsItemsCargo"]; +//[[[end]]] +params ["_unit","_player",["_token","",[""]] ]; if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if (isNull _unit) exitWith{}; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedBuilding.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedBuilding.sqf index 5fdfe354..3b3bfea2 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedBuilding.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedBuilding.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedBuilding.sqf */ -private ["_vehSlot","_vehHiveKey","_ammoObj"]; +//[[[cog import generate_private_arrays ]]] +private ["_ammoObj","_vehHiveKey","_vehSlot"]; +//[[[end]]] params ["_building","_killer"]; if (!isNull _building) then { _vehSlot = _building getVariable["BUILD_SLOT", -1]; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedStorage.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedStorage.sqf index 7f39ddd4..a11422bb 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedStorage.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedStorage.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedStorage.sqf */ -private ["_vehSlot","_vehHiveKey"]; +//[[[cog import generate_private_arrays ]]] +private ["_vehHiveKey","_vehSlot"]; +//[[[end]]] params ["_storage","_killer"]; if (!isNull _storage) then { diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedVehicle.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedVehicle.sqf index ba560865..cdfdb274 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedVehicle.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedVehicle.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_killedVehicle.sqf */ -private ["_vehSlot","_vehHiveKey"]; +//[[[cog import generate_private_arrays ]]] +private ["_vehHiveKey","_vehSlot"]; +//[[[end]]] params ["_vehicle","_killer"]; if (!isNull _vehicle) then { _vehSlot = _vehicle getVariable ["VEHICLE_SLOT", "ABORT"]; @@ -20,7 +22,7 @@ if (!isNull _vehicle) then { _vehHiveKey = format ["%1:%2", (call EPOCH_fn_InstanceID), _vehSlot]; ["Vehicle", _vehHiveKey] call EPOCH_fnc_server_hiveDEL; EPOCH_VehicleSlots pushBack _vehSlot; - + missionNamespace setVariable ['EPOCH_VehicleSlotCount', count EPOCH_VehicleSlots, true]; ['VehicleKilled', format["%1 was killed by %2 at %3", typeOf _vehicle, _killer, getPosATL _vehicle]] call EPOCH_fnc_server_hiveLog; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_storage.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_storage.sqf index d78fe13b..ee3ec7b3 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_storage.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_storage.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_storage.sqf */ -private ["_wepsItemsCargo","_magsAmmoCargo","_cargoIndex","_vehHiveKey","_damage","_vehiclePos","_magsAmmoCargoMinimized","_inventory","_colorSlot","_storageOwners","_locked","_worldspace","_VAL","_class","_vehSlot"]; +//[[[cog import generate_private_arrays ]]] +private ["_VAL","_cargo","_cargoIndex","_class","_colorSlot","_damage","_inventory","_locked","_magsAmmoCargo","_magsAmmoCargoMinimized","_magsAmmoCargox","_newComponents","_selectedWeapon","_selectedWeaponComponents","_storageOwners","_vehHiveKey","_vehSlot","_vehiclePos","_weapon","_weaponComponents","_wepsItemsCargo","_wepsItemsCargoNormalized","_wepsItemsCargox","_worldspace"]; +//[[[end]]] params [["_vehicle",objNull]]; if (!isNull _vehicle) then { diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicle.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicle.sqf index 17bdea1e..5f695dfb 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicle.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicle.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicle.sqf */ -private ["_wepsItemsCargo","_magsAmmoCargo","_cargoIndex","_vehHiveKey","_hitpoints","_magsAmmoCargoMinimized","_inventory","_colorSlot","_VAL","_vehSlot"]; +//[[[cog import generate_private_arrays ]]] +private ["_VAL","_cargo","_cargoIndex","_colorSlot","_hitpoints","_inventory","_magsAmmoCargo","_magsAmmoCargoMinimized","_magsAmmoCargox","_newComponents","_selectedWeapon","_selectedWeaponComponents","_startTime","_vehHiveKey","_vehSlot","_weapon","_weaponComponents","_wepsItemsCargo","_wepsItemsCargoNormalized","_wepsItemsCargox"]; +//[[[end]]] params [["_vehicle",objNull]]; if (!isNull _vehicle) then { diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicles.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicles.sqf index 3b72b96c..edede294 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicles.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicles.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_save_vehicles.sqf */ -private ["_vehSlot","_storSlot","_objSlot"]; -params [["_objects",[]]]; +//[[[cog import generate_private_arrays ]]] +private ["_objSlot","_storSlot","_vehSlot"]; +//[[[end]]] +params [["_objects",[]] ]; { if (!isNull _x) then { _vehSlot = _x getVariable ["VEHICLE_SLOT", "ABORT"]; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicle.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicle.sqf index 240cf899..b2df6039 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicle.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicle.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicle.sqf */ -private ["_removeweapons","_removemagazinesturret","_maxDamage","_textures","_textureSelectionIndex","_selections","_colors","_color","_count","_vehLockHiveKey","_marker","_cfgEpochVehicles","_vehObj"]; +//[[[cog import generate_private_arrays ]]] +private ["_availableColorsConfig","_cfgEpochVehicles","_color","_colors","_count","_marker","_maxDamage","_removemagazinesturret","_removeweapons","_selections","_serverSettingsConfig","_textureSelectionIndex","_textures","_vehLockHiveKey","_vehObj"]; +//[[[end]]] params ["_vehClass","_position","_direction","_locked","_slot",["_lockOwner",""],["_can_collide","CAN_COLLIDE"],["_spawnLoot",false],["_spawnDamaged",true]]; if !(isClass (configFile >> "CfgVehicles" >> _vehClass)) exitWith {objNull}; _serverSettingsConfig = configFile >> "CfgEpochServer"; @@ -45,7 +47,7 @@ if !(isNull _vehObj) then{ _vehObj removeMagazinesTurret _x; } foreach _removemagazinesturret; }; - + // Disable Termal Equipment _vehObj disableTIEquipment true; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicles.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicles.sqf index 734e1f73..d16b7472 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicles.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicles.sqf @@ -12,8 +12,10 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_spawn_vehicles.sqf */ -private ["_vehClass","_velimit","_vehicleCount","_limit","_cityPos","_range","_nearBy","_find","_position","_direction","_getRandomPos","_newPosition","_road","_selectedCity","_roads","_isShip","_collide","_marker","_vehObj","_slot","_vehCount","_preferedPos","_allowedVehiclesList","_spawnPositionSizeDefaults","_serverMapConfig","_spawnPositionSize","_allowedTypes","_allCitys","_allCitysDync","_spawnCount"]; -params [["_allowedVehiclesList",[]]]; +//[[[cog import generate_private_arrays ]]] +private ["_allCitys","_allCitysDync","_allowedTypes","_cityPos","_collide","_direction","_find","_getRandomPos","_isShip","_limit","_marker","_nearBy","_newPosition","_position","_preferedPos","_range","_road","_roads","_selectedCity","_serverMapConfig","_slot","_spawnCount","_spawnPositionSize","_spawnPositionSizeDefaults","_vehClass","_vehCount","_vehObj"]; +//[[[end]]] +params [["_allowedVehiclesList",[]] ]; if (_allowedVehiclesList isEqualTo []) exitWith { diag_log "DEBUG: All vehicles over limit"; diff --git a/Sources/epoch_server/init/server_init.sqf b/Sources/epoch_server/init/server_init.sqf index 9b2bcdd8..a51b1adf 100644 --- a/Sources/epoch_server/init/server_init.sqf +++ b/Sources/epoch_server/init/server_init.sqf @@ -12,6 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/init/server_init.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_ReservedSlots","_SideHQ1","_SideHQ2","_SideHQ3","_abortAndError","_allowedVehicleIndex","_allowedVehicleListName","_allowedVehiclesList","_allowedVehiclesListArray","_cfgServerVersion","_channelColor","_channelNumber","_channelTXT","_clientVersion","_config","_configSize","_configVersion","_date","_dateChanged","_epochConfig","_epochWorldPath","_existingStock","_hiveVersion","_index","_indexStock","_instanceID","_marker","_radio","_response","_sapper","_serverConfig","_serverSettingsConfig","_servicepoints","_startTime","_staticDateTime","_timeDifference","_vehicleCount","_vehicleSlotLimit","_worldSize"]; +//[[[end]]] _startTime = diag_tickTime; missionNamespace setVariable ['Epoch_ServerVersion', getText(configFile >> "CfgMods" >> "Epoch" >> "version"), true]; diag_log format["Epoch: Starting ArmA3 Epoch Server, Version %1",Epoch_ServerVersion]; @@ -27,6 +30,7 @@ _abortAndError = { _cfgServerVersion = configFile >> "CfgServerVersion"; _serverSettingsConfig = configFile >> "CfgEpochServer"; +_epochConfig = configFile >> "CfgEpoch"; _clientVersion = getText(_cfgServerVersion >> "client"); _configVersion = getText(_cfgServerVersion >> "config"); @@ -99,7 +103,7 @@ WEST setFriend[EAST, 1]; diag_log format["Epoch: Setup World Settings for %1",worldName]; //World Settings _worldSize = worldSize; -_epochWorldPath = configfile >> "CfgEpoch" >> worldName; +_epochWorldPath = _epochConfig >> worldName; if (isClass _epochWorldPath) then { _configSize = getNumber(_epochWorldPath >> "worldSize"); if (_configSize > 0) then { @@ -140,9 +144,12 @@ diag_log "Epoch: Loading vehicles"; // Vehicle slot limit set to total of all allowed limits _allowedVehicleIndex = if (EPOCH_modCUPVehiclesEnabled) then {if (EPOCH_mod_madArma_Enabled) then {3} else {1}} else {if (EPOCH_mod_madArma_Enabled) then {2} else {0}}; _allowedVehicleListName = ["allowedVehiclesList","allowedVehiclesList_CUP","allowedVehiclesList_MAD","allowedVehiclesList_MADCUP"] select _allowedVehicleIndex; +if !(EPOCH_forcedVehicleSpawnTable isEqualTo "") then { + _allowedVehicleListName = EPOCH_forcedVehicleSpawnTable; +}; // do something here -_allowedVehiclesList = getArray(configFile >> "CfgEpoch" >> worldName >> _allowedVehicleListName); +_allowedVehiclesList = getArray(_epochConfig >> worldName >> _allowedVehicleListName); _vehicleSlotLimit = 0; {_vehicleSlotLimit = _vehicleSlotLimit + (_x select 1)} forEach _allowedVehiclesList; _ReservedSlots = 50; @@ -217,14 +224,14 @@ if (_dateChanged) then { _config = 'CfgServicePoint' call EPOCH_returnConfig; _servicepoints = getArray (_config >> worldname >> 'ServicePoints'); { - _marker = createMarker [('ServicePointMarker'+(str _foreachindex)), _x]; + _marker = createMarker [('ServicePointMarker'+(str _forEachIndex)), _x]; _marker setmarkertype "mil_dot"; _marker setmarkercolor 'ColorBlack'; _marker setMarkerText ("Service Point"); if !(surfaceiswater _x) then { "Land_HelipadCircle_F" createvehicle _x; }; -} forEach _ServicePoints; +} forEach _servicepoints; // set time multiplier @@ -244,4 +251,7 @@ _sapper enableSimulationGlobal false; diag_log format ["Epoch: Server Start Complete: %1 seconds",diag_tickTime-_startTime]; // unit test start -// call EPOCH_fnc_server_hiveUnitTest; +if (EPOCH_enableUnitTestOnStart isEqualTo 1) then { + call EPOCH_fnc_server_hiveUnitTest; + EPOCH_enableUnitTestOnStart = nil; +}; diff --git a/Sources/epoch_server/init/server_variables.sqf b/Sources/epoch_server/init/server_variables.sqf index d8a91bdc..8ee3e104 100644 --- a/Sources/epoch_server/init/server_variables.sqf +++ b/Sources/epoch_server/init/server_variables.sqf @@ -10,7 +10,7 @@ Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike Github: - https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/init/server_init.sqf + https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/init/server_variables.sqf */ EPOCH_BuildingSlots = []; EPOCH_TraderSlots = []; @@ -26,7 +26,7 @@ EPOCH_staticNPCTraderPos = []; EPOCH_traderStoredVehicles = []; EPOCH_traderStoredVehiclesCnt = []; -_configArray = [ +private _configArray = [ ["serverRestart", false], ["forceRestartTime", 14400], ["StorageSlotsLimit",1500], @@ -58,7 +58,10 @@ _configArray = [ ["hiveAdminSavePlayerList", true], ["hiveAdminCmdTime", 5], ["DEBUG_VEH", false], - ["useOldLoadVehicles", false] + ["useOldLoadVehicles", false], + ["enableUnitTestOnStart", 0], + ["forcedVehicleSpawnTable",""], + ["forcedLootSpawnTable",""] ]; EPOCH_fnc_returnConfigEntry = { @@ -80,8 +83,8 @@ EPOCH_fnc_returnConfigEntry = { // Cast default vars to global vars // Note: TODO not all of these should be cast to a global var to save memory. If used only once use config lookup. -_serverSettingsConfig = configFile >> "CfgEpochServer"; +private _serverSettingsConfig = configFile >> "CfgEpochServer"; { - _varData = [_serverSettingsConfig,_x select 0,_x select 1] call EPOCH_fnc_returnConfigEntry; + private _varData = [_serverSettingsConfig,_x select 0,_x select 1] call EPOCH_fnc_returnConfigEntry; missionNamespace setVariable[format["EPOCH_%1", _x select 0], _varData]; }forEach _configArray; diff --git a/Sources/epoch_server/treeView.txt b/Sources/epoch_server/treeView.txt index dbafe87d..56790711 100644 Binary files a/Sources/epoch_server/treeView.txt and b/Sources/epoch_server/treeView.txt differ diff --git a/Sources/epoch_server_core/build.hpp b/Sources/epoch_server_core/build.hpp index d0213530..62344aa7 100644 --- a/Sources/epoch_server_core/build.hpp +++ b/Sources/epoch_server_core/build.hpp @@ -1 +1 @@ -build=749; +build=757; diff --git a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGET.sqf b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGET.sqf index 71047188..129e55dc 100644 --- a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGET.sqf +++ b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGET.sqf @@ -13,7 +13,9 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGET.sqf */ -private ["_hiveResponse","_hiveStatus","_hiveMessage"]; +//[[[cog import generate_private_arrays ]]] +private ["_hiveMessage","_hiveResponse","_hiveStatus"]; +//[[[end]]] params ["_prefix","_key"]; _hiveStatus = -1; diff --git a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETBIT.sqf b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETBIT.sqf index a6673b22..93b6ff37 100644 --- a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETBIT.sqf +++ b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETBIT.sqf @@ -13,7 +13,9 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETBIT.sqf */ -private ["_hiveResponse","_hiveMessage"]; +//[[[cog import generate_private_arrays ]]] +private ["_hiveMessage","_hiveResponse"]; +//[[[end]]] params ["_prefix","_key","_bit"]; _hiveMessage = false; _hiveResponse = "epochserver" callExtension format["240|%1:%2|%3", _prefix, _key, _bit]; diff --git a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETRANGE.sqf b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETRANGE.sqf index 102bdac7..961836f4 100644 --- a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETRANGE.sqf +++ b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETRANGE.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETRANGE.sqf */ -private["_hiveResponse", "_hiveStatus", "_hiveMessage", "_currentIndex", "_hiveMakeCall", "_data"]; +//[[[cog import generate_private_arrays ]]] +private ["_currentIndex","_currentIndexMax","_hiveCharCount","_hiveMakeCall","_hiveMessage","_hiveResponse","_hiveStatus"]; +//[[[end]]] params ["_prefix","_key"]; _hiveMessage = ""; diff --git a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETTTL.sqf b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETTTL.sqf index d1a73550..be5b4c99 100644 --- a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETTTL.sqf +++ b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETTTL.sqf @@ -12,7 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETTTL.sqf */ -private ["_hiveResponse","_hiveStatus","_hiveMessage","_whileCount"]; +//[[[cog import generate_private_arrays ]]] +private ["_hiveMessage","_hiveResponse","_hiveStatus","_hiveTTL","_whileCount"]; +//[[[end]]] params ["_prefix","_key"]; _hiveStatus = -1; diff --git a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveUnitTest.sqf b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveUnitTest.sqf index aebaf1f4..eaf7a720 100644 --- a/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveUnitTest.sqf +++ b/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveUnitTest.sqf @@ -12,6 +12,9 @@ Github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveUnitTest.sqf */ +//[[[cog import generate_private_arrays ]]] +private ["_charCheck","_expires","_payload","_payload_64k","_payload_64k_count","_response","_startTime","_testID"]; +//[[[end]]] _testID = "1234567890"; _payload = "32D1ECB8511569B43A5CC39DF4261CACDA912C798B066EE1E1EE06E2F09D02073C1B3FC638F091D58E7691DA7D0F7E1F01371CB58346572A015F6F93429F3BDC"; _expires = "600"; // 10 minutes diff --git a/Sources/epoch_server_settings/EpochEvents/AirDrop.sqf b/Sources/epoch_server_settings/EpochEvents/AirDrop.sqf index f6b7e199..a7fed7c5 100644 --- a/Sources/epoch_server_settings/EpochEvents/AirDrop.sqf +++ b/Sources/epoch_server_settings/EpochEvents/AirDrop.sqf @@ -6,6 +6,9 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/AirDrop.sqf */ // 50% chance every 45 minutes by default +//[[[cog import generate_private_arrays ]]] +private ["_chance","_player","_players"]; +//[[[end]]] _chance = 50; if (random 100 < _chance) then { diff --git a/Sources/epoch_server_settings/EpochEvents/CarnivalSpawner.sqf b/Sources/epoch_server_settings/EpochEvents/CarnivalSpawner.sqf index 3d6d644c..6d15fb90 100644 --- a/Sources/epoch_server_settings/EpochEvents/CarnivalSpawner.sqf +++ b/Sources/epoch_server_settings/EpochEvents/CarnivalSpawner.sqf @@ -5,7 +5,9 @@ Improvements and or bugfixes and other contributions are welcome via the github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/CarnivalSpawner.sqf */ -private ["_item","_marker","_ferrisPosition"]; +//[[[cog import generate_private_arrays ]]] +private ["_ferrisPosition","_item","_marker"]; +//[[[end]]] _ferrisPosition = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 4000, 0] call BIS_fnc_findSafePos; if ((count _ferrisPosition) == 2) then{ _item = createVehicle["ferrisWheel_EPOCH", _ferrisPosition, [], 0.0, "CAN_COLLIDE"]; diff --git a/Sources/epoch_server_settings/EpochEvents/ChangeWeather.sqf b/Sources/epoch_server_settings/EpochEvents/ChangeWeather.sqf index ddc46bd5..16860603 100644 --- a/Sources/epoch_server_settings/EpochEvents/ChangeWeather.sqf +++ b/Sources/epoch_server_settings/EpochEvents/ChangeWeather.sqf @@ -5,8 +5,9 @@ Improvements and or bugfixes and other contributions are welcome via the github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/ChangeWeather.sqf */ - -private ["_tempOVRD","_rainOVRD","_fogOVRD","_overcastOVRD","_windOVRD","_arr","_response","_windValX","_windValY","_WeatherChangeTime","_force","_temp","_fog","_rain","_overcast"]; +//[[[cog import generate_private_arrays ]]] +private ["_fog","_force","_lightning","_overcast","_rain","_randomDayRainTemp","_randomDayTemp","_randomDirection","_randomFogAfterRainBase","_randomFogAfterRainDecay","_randomFogAfterRainValue","_randomFogBase","_randomFogDecay","_randomFogValue","_randomLightningValue","_randomNightRainTemp","_randomNightTemp","_randomOvercastValue","_randomRainValue","_randomWindStr","_staticWeatherForecast","_temp","_weatherChangeTime","_windVal","_windValX","_windValY"]; +//[[[end]]] // Initalize variable for tracking time between runs. if (isNil "EPOCH_lastWeatherChange") then { @@ -14,7 +15,7 @@ if (isNil "EPOCH_lastWeatherChange") then { }; // get the time between weather change events to use as tranistion time. -_WeatherChangeTime = diag_tickTime - EPOCH_lastWeatherChange; +_weatherChangeTime = diag_tickTime - EPOCH_lastWeatherChange; // increment timer to current time. EPOCH_lastWeatherChange = diag_tickTime; @@ -22,17 +23,17 @@ EPOCH_lastWeatherChange = diag_tickTime; _force = false; // use config static weather if set. +_staticWeatherForecast = []; if !(EPOCH_WeatherStaticForecast isEqualTo []) then { - EPOCH_WeatherStaticForecast params ["_tempOVRD","_rainOVRD","_fogOVRD","_overcastOVRD","_windOVRD","_lightningOVRD"]; + _staticWeatherForecast = EPOCH_WeatherStaticForecast; } else { // Make database call to get "Weather:InstanceID" that can be set in the database to allow for weather controls outside of the game. - _response = ["Weather", (call EPOCH_fn_InstanceID)] call EPOCH_fnc_server_hiveGETRANGE; - if ((_response select 0) == 1 && (_response select 1) isEqualType [] && !((_response select 1) isEqualTo[])) then { - _arr = _response select 1; - _arr params ["_tempOVRD","_rainOVRD","_fogOVRD","_overcastOVRD","_windOVRD","_lightningOVRD"]; + (["Weather", (call EPOCH_fn_InstanceID)] call EPOCH_fnc_server_hiveGETRANGE) params [["_status", 0 ], ["_data", [] ]]; + if (_status == 1 && _data isEqualType [] && !(_data isEqualTo[])) then { + _staticWeatherForecast = _data; }; }; - +_staticWeatherForecast params ["_tempOVRD","_rainOVRD","_fogOVRD","_overcastOVRD","_windOVRD","_lightningOVRD"]; /* New weather configs @@ -95,10 +96,10 @@ _fog = if (isNil "_fogOVRD") then { [random _randomFogValue, random _randomFogDe _overcast = if (isNil "_overcastOVRD") then { random _randomOvercastValue } else { _overcastOVRD }; _lightning = if (isNil "_lightningOVRD") then { random _randomLightningValue } else { _lightningOVRD }; -_WeatherChangeTime setFog _fog; -_WeatherChangeTime setOvercast _overcast; -_WeatherChangeTime setRain _rain; -_WeatherChangeTime setLightnings _lightning; +_weatherChangeTime setFog _fog; +_weatherChangeTime setOvercast _overcast; +_weatherChangeTime setRain _rain; +_weatherChangeTime setLightnings _lightning; setWind[_windValX, _windValY, true]; // push temp to all players and JIP. diff --git a/Sources/epoch_server_settings/EpochEvents/ContainerSpawner.sqf b/Sources/epoch_server_settings/EpochEvents/ContainerSpawner.sqf index 47ab9f32..495e31bb 100644 --- a/Sources/epoch_server_settings/EpochEvents/ContainerSpawner.sqf +++ b/Sources/epoch_server_settings/EpochEvents/ContainerSpawner.sqf @@ -5,7 +5,9 @@ Improvements and or bugfixes and other contributions are welcome via the github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/ContainterSpawner.sqf */ -private ["_marker","_item","_cargoPosition"]; +//[[[cog import generate_private_arrays ]]] +private ["_cargoPosition","_item","_marker"]; +//[[[end]]] _cargoPosition = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 4000, 1] call BIS_fnc_findSafePos; if ((count _cargoPosition) == 2) then{ _item = createVehicle["Cargo_Container", _cargoPosition, [], 0.0, "CAN_COLLIDE"]; diff --git a/Sources/epoch_server_settings/EpochEvents/EarthQuake.sqf b/Sources/epoch_server_settings/EpochEvents/EarthQuake.sqf index f23cc9b2..087ef34d 100644 --- a/Sources/epoch_server_settings/EpochEvents/EarthQuake.sqf +++ b/Sources/epoch_server_settings/EpochEvents/EarthQuake.sqf @@ -5,7 +5,9 @@ Improvements and or bugfixes and other contributions are welcome via the github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/Earthquake.sqf */ -private ["_marker","_minerals","_randomIndex","_item","_playersNearEpicenter","_position","_chance"]; +//[[[cog import generate_private_arrays ]]] +private ["_chance","_item","_marker","_minerals","_playersNearEpicenter","_position"]; +//[[[end]]] _position = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 1000, 0] call BIS_fnc_findSafePos; if ((count _position) == 2) then{ _playersNearEpicenter = _position nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 1000]; diff --git a/Sources/epoch_server_settings/EpochEvents/MessageServer.sqf b/Sources/epoch_server_settings/EpochEvents/MessageServer.sqf index 6010ca22..3c60b3a7 100644 --- a/Sources/epoch_server_settings/EpochEvents/MessageServer.sqf +++ b/Sources/epoch_server_settings/EpochEvents/MessageServer.sqf @@ -10,5 +10,5 @@ _messages = [ */ // Restart time -_restartIn = round((EPOCH_forceRestartTime-diag_tickTime)/60); +private _restartIn = round((EPOCH_forceRestartTime-diag_tickTime)/60); ["message", format["Welcome to Epoch Mod, server wlll restart in %1 minutes",_restartIn]] call EPOCH_serverCommand; diff --git a/Sources/epoch_server_settings/EpochEvents/PlantSpawner.sqf b/Sources/epoch_server_settings/EpochEvents/PlantSpawner.sqf index 9f832ad6..b56af8ec 100644 --- a/Sources/epoch_server_settings/EpochEvents/PlantSpawner.sqf +++ b/Sources/epoch_server_settings/EpochEvents/PlantSpawner.sqf @@ -14,7 +14,9 @@ Improvements and or bugfixes and other contributions are welcome via the github: https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/PlantSpawner.sqf */ -private ["_debug","_jammers","_restricted","_playersNearby","_plant","_position","_plantCount","_scatter","_marker","_nearbyLocations","_plants","_timeStamp","_decayTime","_showPlantMarkers"]; +//[[[cog import generate_private_arrays ]]] +private ["_debug","_decayTime","_jammers","_marker","_nearbyLocations","_plant","_plantCount","_plants","_playersNearby","_position","_restricted","_scatter","_selectedLocation","_showPlantMarkers","_timeStamp"]; +//[[[end]]] // SET THIS TO TRUE TO GET MESSAGES IN LOG. _debug = true; diff --git a/Sources/epoch_server_settings/build.hpp b/Sources/epoch_server_settings/build.hpp index d0213530..62344aa7 100644 --- a/Sources/epoch_server_settings/build.hpp +++ b/Sources/epoch_server_settings/build.hpp @@ -1 +1 @@ -build=749; +build=757; diff --git a/Sources/epoch_server_settings/config.cpp b/Sources/epoch_server_settings/config.cpp index cb674860..120307a7 100644 --- a/Sources/epoch_server_settings/config.cpp +++ b/Sources/epoch_server_settings/config.cpp @@ -68,6 +68,8 @@ class CfgEpoch telePos[] = {}; propsPos[] = {}; staticNpcPos[] = {}; + forcedVehicleSpawnTable = ""; + forcedLootSpawnTable = ""; allowedVehiclesList[] = { {"C_Offroad_01_EPOCH",8}, {"C_Quadbike_01_EPOCH",8}, diff --git a/Sources/epoch_server_settings/configs/CfgMainTable.h b/Sources/epoch_server_settings/configs/CfgMainTable.h index f575acda..3d355811 100644 --- a/Sources/epoch_server_settings/configs/CfgMainTable.h +++ b/Sources/epoch_server_settings/configs/CfgMainTable.h @@ -561,6 +561,62 @@ class CfgMainTable LootMax = 10; tables[] = { "Mission_Payout1" }; }; + class Mission_Monster_Payout + { + lootMin = 12; + LootMax = 20; + tables[] = { + { "Tools", 8 }, + { "BaseBuilding", 6 }, + { "Food", 11 }, + { "Equipment", 5 }, + { "SniperRifle", 5 }, + { "SniperRifleAmmo", 6 }, + { "Rifle", 6 }, + { "RifleAmmo", 8 }, + { "Machinegun", 6 }, + { "MachinegunAmmo", 8 }, + { "Pistols", 5 }, + { "PistolAmmo", 7 }, + { "Scopes", 8 }, + { "Muzzles", 5 }, + { "Hand", 10 }, + { "Explosives", 5 }, + { "Backpack", 7 }, + { "Uniforms", 7 }, + { "Vests", 7 }, + { "HeadgearArmored", 8 }, + { "GenericAuto", 3 } + }; + }; + class Mission_Fishing_Payout + { + lootMin = 8; + LootMax = 16; + tables[] = { + { "Tools", 8 }, + { "BaseBuilding", 6 }, + { "Food", 11 }, + { "Equipment", 5 }, + { "SniperRifle", 5 }, + { "SniperRifleAmmo", 6 }, + { "Rifle", 6 }, + { "RifleAmmo", 8 }, + { "Machinegun", 6 }, + { "MachinegunAmmo", 8 }, + { "Pistols", 5 }, + { "PistolAmmo", 7 }, + { "Scopes", 8 }, + { "Muzzles", 5 }, + { "Hand", 10 }, + { "Explosives", 5 }, + { "Backpack", 7 }, + { "Uniforms", 7 }, + { "Vests", 7 }, + { "HeadgearArmored", 8 }, + { "GenericAuto", 3 } + }; + }; class Sheep_random_EPOCH { lootMin = 2; diff --git a/Sources/mpmissions/epoch.Altis/treeView.txt b/Sources/mpmissions/epoch.Altis/treeView.txt index f86c857c..b14aebcc 100644 Binary files a/Sources/mpmissions/epoch.Altis/treeView.txt and b/Sources/mpmissions/epoch.Altis/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Australia/treeView.txt b/Sources/mpmissions/epoch.Australia/treeView.txt index 7937f6ea..e68453a3 100644 Binary files a/Sources/mpmissions/epoch.Australia/treeView.txt and b/Sources/mpmissions/epoch.Australia/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt b/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt index 022cd328..e96f0ceb 100644 Binary files a/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt and b/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Bornholm/treeView.txt b/Sources/mpmissions/epoch.Bornholm/treeView.txt index faefef93..7f590b73 100644 Binary files a/Sources/mpmissions/epoch.Bornholm/treeView.txt and b/Sources/mpmissions/epoch.Bornholm/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Chernarus/treeView.txt b/Sources/mpmissions/epoch.Chernarus/treeView.txt index a270d2e4..78bbc630 100644 Binary files a/Sources/mpmissions/epoch.Chernarus/treeView.txt and b/Sources/mpmissions/epoch.Chernarus/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt b/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt index 1879054b..3303c0f7 100644 Binary files a/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt and b/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Desert_E/treeView.txt b/Sources/mpmissions/epoch.Desert_E/treeView.txt index 4f8a7ca9..1288a2b4 100644 Binary files a/Sources/mpmissions/epoch.Desert_E/treeView.txt and b/Sources/mpmissions/epoch.Desert_E/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Esseker/treeView.txt b/Sources/mpmissions/epoch.Esseker/treeView.txt index a3bb0e06..f1bfbcef 100644 Binary files a/Sources/mpmissions/epoch.Esseker/treeView.txt and b/Sources/mpmissions/epoch.Esseker/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt b/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt index a1ba7c4c..b6e30441 100644 Binary files a/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt and b/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Napf/treeView.txt b/Sources/mpmissions/epoch.Napf/treeView.txt index 47863581..ec1ce1ef 100644 Binary files a/Sources/mpmissions/epoch.Napf/treeView.txt and b/Sources/mpmissions/epoch.Napf/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Porto/treeView.txt b/Sources/mpmissions/epoch.Porto/treeView.txt index 4d8727b8..8bd8bad7 100644 Binary files a/Sources/mpmissions/epoch.Porto/treeView.txt and b/Sources/mpmissions/epoch.Porto/treeView.txt differ diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt b/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt index 1ee2c081..2f323242 100644 Binary files a/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt and b/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Sara/treeView.txt b/Sources/mpmissions/epoch.Sara/treeView.txt index 7ccbdb20..285ab72e 100644 Binary files a/Sources/mpmissions/epoch.Sara/treeView.txt and b/Sources/mpmissions/epoch.Sara/treeView.txt differ diff --git a/Sources/mpmissions/epoch.SaraLite/treeView.txt b/Sources/mpmissions/epoch.SaraLite/treeView.txt index 626bee41..6cdf003b 100644 Binary files a/Sources/mpmissions/epoch.SaraLite/treeView.txt and b/Sources/mpmissions/epoch.SaraLite/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt b/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt index af5a0ef8..fe37b325 100644 Binary files a/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt and b/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt b/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt index 911cdbf7..71cc2f1c 100644 Binary files a/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt and b/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Stratis/treeView.txt b/Sources/mpmissions/epoch.Stratis/treeView.txt index 0088c375..00811e69 100644 Binary files a/Sources/mpmissions/epoch.Stratis/treeView.txt and b/Sources/mpmissions/epoch.Stratis/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Takistan/treeView.txt b/Sources/mpmissions/epoch.Takistan/treeView.txt index 948dbcfd..7d9327ff 100644 Binary files a/Sources/mpmissions/epoch.Takistan/treeView.txt and b/Sources/mpmissions/epoch.Takistan/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Tanoa/treeView.txt b/Sources/mpmissions/epoch.Tanoa/treeView.txt index 82578ac2..92b5a339 100644 Binary files a/Sources/mpmissions/epoch.Tanoa/treeView.txt and b/Sources/mpmissions/epoch.Tanoa/treeView.txt differ diff --git a/Sources/mpmissions/epoch.VR/treeView.txt b/Sources/mpmissions/epoch.VR/treeView.txt index 9388d898..bae97448 100644 Binary files a/Sources/mpmissions/epoch.VR/treeView.txt and b/Sources/mpmissions/epoch.VR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt b/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt index c1f119dc..5d2df949 100644 Binary files a/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt and b/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Zargabad/treeView.txt b/Sources/mpmissions/epoch.Zargabad/treeView.txt index cce3d92b..87073fe4 100644 Binary files a/Sources/mpmissions/epoch.Zargabad/treeView.txt and b/Sources/mpmissions/epoch.Zargabad/treeView.txt differ diff --git a/Sources/mpmissions/epoch.utes/treeView.txt b/Sources/mpmissions/epoch.utes/treeView.txt index 76cb86c8..87c42cb5 100644 Binary files a/Sources/mpmissions/epoch.utes/treeView.txt and b/Sources/mpmissions/epoch.utes/treeView.txt differ diff --git a/Sources/mpmissions/epoch_RyanZed.Tanoa/treeView.txt b/Sources/mpmissions/epoch_RyanZed.Tanoa/treeView.txt index ed01a75b..2ab74cd8 100644 Binary files a/Sources/mpmissions/epoch_RyanZed.Tanoa/treeView.txt and b/Sources/mpmissions/epoch_RyanZed.Tanoa/treeView.txt differ diff --git a/Tools/Build/ClientReleaseTest.cmd b/Tools/Build/ClientReleaseTest.cmd index 5dbc56bb..d5a23644 100644 --- a/Tools/Build/ClientReleaseTest.cmd +++ b/Tools/Build/ClientReleaseTest.cmd @@ -1,9 +1,11 @@ ::@ECHO OFF - -SET WORKSHOPPATH="G:\SteamLibrary\steamapps\common\Arma 3\@epoch" +SET TOOLSPATH=F:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools +SET WORKSHOPPATH=G:\SteamLibrary\steamapps\common\Arma 3\@epoch +SET CHANGELOG="See Changelogs: https://github.com/EpochModTeam/Epoch/tree/experimental/Changelogs" :: Workshop IDs: :: EpochExperimental = 455221958 :: Normal Epoch = 421839251 +SET WORKSHOPID=455221958 -START "" /WAIT "F:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\Publisher\PublisherCmd.exe" update /id:455221958 /changeNote:"See Changelogs: https://github.com/EpochModTeam/Epoch/tree/experimental/Changelogs" /path:%WORKSHOPPATH% +START "" /WAIT "%TOOLSPATH%\Publisher\PublisherCmd.exe" update /id:%WORKSHOPID% /changeNote:%CHANGELOG% /path:"%WORKSHOPPATH%" diff --git a/build.txt b/build.txt index dc0fabf7..39071e3e 100644 --- a/build.txt +++ b/build.txt @@ -1 +1 @@ -749 +757 diff --git a/version.txt b/version.txt new file mode 100644 index 00000000..2d1c8c89 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.5.0.0 \ No newline at end of file