mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Merge pull request #751 from EpochModTeam/experimental
Release 0.5 b757
This commit is contained in:
commit
e16ee710ae
@ -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
|
15
Jenkinsfile
vendored
Normal file
15
Jenkinsfile
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
pipeline {
|
||||
agent {
|
||||
node {
|
||||
label 'testing'
|
||||
}
|
||||
|
||||
}
|
||||
stages {
|
||||
stage('Release') {
|
||||
steps {
|
||||
bat 'C:/GITTEMP/release.cmd'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
BIN
Repair_man.paa
BIN
Repair_man.paa
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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.
|
||||
|
Binary file not shown.
@ -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!
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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"
|
@ -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_"
|
@ -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
|
@ -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$"
|
@ -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 \[.+\]"
|
@ -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
|
@ -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"
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -30,7 +30,7 @@ _customVars = "";
|
||||
}forEach EPOCH_customVars;
|
||||
|
||||
hintSilent parseText format ["
|
||||
<t size='1.25' font='puristaLight' align='center'>Welcome to Epoch Alpha</t><br/>
|
||||
<t size='1.25' font='puristaLight' align='center'>Welcome to Epoch!</t><br/>
|
||||
<t size='1.18' font='puristaLight' align='center'>Current Version: %1</t><br/>
|
||||
<t size='1.0' font='puristaLight' align='center'>Build: %2</t><br/>
|
||||
|
||||
|
@ -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];
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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]
|
||||
|
@ -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]
|
||||
|
@ -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 = [];
|
||||
|
||||
|
@ -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 = [];
|
||||
|
@ -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];
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
[selectRandom _responseArr, 5] call Epoch_message;
|
||||
|
@ -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;
|
||||
[_trdrMsg, 5] call Epoch_message;
|
||||
|
@ -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;
|
||||
[_trdrMsg, 5] call Epoch_message;
|
||||
|
@ -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;
|
||||
[selectRandom _newsArr, 5] call Epoch_message;
|
||||
|
@ -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;
|
||||
[format ["The time is %1:%2.",_hour, _min], 5] call Epoch_message;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;};
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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];
|
||||
|
@ -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;
|
||||
{
|
||||
|
@ -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"];
|
||||
|
@ -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};
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
@ -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];
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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 <Mission Folder>\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 <Mission Folder>\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;
|
||||
};
|
@ -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[] = {};
|
||||
|
@ -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[] = {};
|
||||
};
|
139
Sources/epoch_config/Configs/CfgMissions/CfgmissionFish.hpp
Normal file
139
Sources/epoch_config/Configs/CfgMissions/CfgmissionFish.hpp
Normal file
@ -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[] = {};
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user