mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
commit
38f8539d60
29
README.md
29
README.md
@ -16,3 +16,32 @@ http://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
Credits:
|
||||
=====
|
||||
https://github.com/EpochModTeam/Epoch/blob/release/CREDITS.md
|
||||
|
||||
Instructions:
|
||||
=====
|
||||
- Server Install: https://epochmod.com/forum/topic/44751-dec2017-arma-3-epochmod-server-installation-and-setup/
|
||||
- If your wanted Map is currently not supported, use the "epoch._ChangeMe.pbo" and rename it to "epoch.MapName.pbo" to use a fallback config
|
||||
|
||||
FAQ:
|
||||
=====
|
||||
Starting a FAQ here. Can get expanded later
|
||||
- How to increase / reduce the Loot?
|
||||
- There are 3 files, where you can adjust the Loot:
|
||||
- @epochhive\epochconfig.hpp
|
||||
- lootmultiplier -> (description is in the config)
|
||||
- missionfile\epoch_config\CfgBuildingLootPos.hpp -> (description is in the config)
|
||||
- EpochLootChance
|
||||
- GroundSpawnChance
|
||||
- MinGroundContainers
|
||||
- MaxGroundContainers
|
||||
- @epochhove\addons\epoch_server_settings\configs\CfgMainTable.h -> Change the Loot for each Container / Buildingtype
|
||||
- lootMin
|
||||
- lootMax
|
||||
- I have added an item to the loot, but it will not spawn (rpt log say "have no price")
|
||||
- You also have to add new items to CfgPricing.hpp and CfgItemSort.hpp within your mission file
|
||||
- I am running a 3rd parties script, but some functions are not working (e.g. Infistar)
|
||||
- We have disabled some commands by default for better security.
|
||||
- Check CfgDisabledCommands.hpp within your missionfile, if there are needed functions disabled (if so, remove it)
|
||||
- Want to add a function to the DynaMenu / E-Pad
|
||||
- For the DynaMenu, check missioonfile\epoch_config\Configs\CfgActionMenu\EXAMPLE.hpp
|
||||
- For E-Pad, check the "FullExample" in missioonfile\epoch_config\CfgEPad.hpp
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -69,6 +69,7 @@ adminMenu_cryptoCfg[] = {2500,1000,500,100,50,-1000};
|
||||
//You can find the Key Codes here: https://community.bistudio.com/wiki/DIK_KeyCodes#F1..15
|
||||
adminMenu_menuKey = 0x3B;
|
||||
adminMenu_infrontTeleport = 0x06;
|
||||
adminMenu_JumpUp = 0x05;
|
||||
|
||||
/*
|
||||
AH CONFIG README
|
||||
|
@ -5,14 +5,17 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
StaticDateTime[] = {}; // {0,0,0,8,0} would forces the server to start at 8am each time it is started while allowing the year, month and day to stay real time. Any values left at 0 will result in no change.
|
||||
timeDifference = 0; // Server uses real time this will allow you to offset just the hour.
|
||||
timeMultiplier = 4; // Sets a time multiplier for in-game time. The command range is now capped at 0.1 - 120 to avoid performance problems.
|
||||
lootMultiplier = 0.5; // 1 = max loot bias. This controls how much loot can payout per Epoch loot container.
|
||||
|
||||
// Loot (Check CfgBuildingLootPos.hpp in mission file for more settings)
|
||||
lootMultiplier = 1; // 1 = normal loot multiplier. This controls how much loot can payout per loot container.
|
||||
UseLootHelper = "true"; // GroundLoot will get a visible sphere for better loot identification
|
||||
|
||||
// Events
|
||||
WeatherChances[] = {
|
||||
0.5, // Sun
|
||||
0.3, // Mid
|
||||
0.1, // Rain
|
||||
0.1 // Rain+
|
||||
0.7, // Sun
|
||||
0.2, // Mid
|
||||
0.05, // Rain
|
||||
0.05 // Rain+
|
||||
};
|
||||
events[] = {
|
||||
{
|
||||
@ -26,6 +29,8 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
},
|
||||
// { 1800, "PaydayEvent", 0, 2},
|
||||
// { 1200, "MessageServer", 0, 2},
|
||||
{ 120, "FastNights", 0 , 2, -1, {48,4} ,{"VR"}}, // TimeMulti Nighttime = 48 / TimeMulti Daytime = 4
|
||||
{ 1200, "HeliCrash", 0 , 2, -1, {} ,{"VR"}},
|
||||
{ 2700, "AirDrop", 0 , 2, -1, {} ,{"VR"}},
|
||||
{ 2400, "EarthQuake", 0 , 2, -1, {} ,{"VR"}},
|
||||
{ 2700, "Satellite", 0 , 2, -1, {} ,{"VR"}},
|
||||
@ -68,6 +73,8 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
"" // "NVG_EPOCH" or "radiation_mask_epoch"
|
||||
};
|
||||
|
||||
UseCustomTextures = "false"; // if true, Vehicles and Building parts textures will be saved and loaded to the DB (Paintshop)
|
||||
|
||||
// vehicles - Max vehicle slots is calculated from per vehicle limits below. Warning! Higher the number lower the performance.
|
||||
immuneIfStartInBase = "true"; // Protect vehicles from damage in bases until first unlocked after restart
|
||||
ReservedVehSlots = 50; // Reserved Vehicle Slots (only needed, if you manually spawn in additional Vehicles - AdminTool / Blackmarket...)
|
||||
@ -84,6 +91,8 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
{"200Rnd_40mm_G_belt",{0}}
|
||||
};
|
||||
disableVehicleTIE = "true";
|
||||
ReplaceCarService = "true"; // Replace all "Land_CarService_F" with "paintshop" on the Map on Server Start
|
||||
PaintShopIcons = "false"; // Create MapIcons for PaintShops
|
||||
|
||||
// BaseBuilding
|
||||
StorageSlotsLimit = 1500; // Max storage slots allowed. Warning! Higher the number lower performance.
|
||||
@ -144,10 +153,26 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
|
||||
// Traders
|
||||
taxRate = 0.1; // controls the price increase for purchases
|
||||
/*
|
||||
starterTraderItems[] = { // Starter Items for fresh spawned trader first array is classnames second is quantity.
|
||||
{"ItemSodaBurst","meatballs_epoch","MortarBucket","CinderBlocks","VehicleRepair","CircuitParts","ItemCorrugated","PartPlankPack","ItemRock","ItemRope","ItemStick"},
|
||||
{5,5,5,5,5,5,5,5,5,5,5}
|
||||
};
|
||||
*/
|
||||
starterTraderItems[] = { // Starter Items for fresh spawned trader (old / above variant is also still working!)
|
||||
{"ItemSodaBurst",5},
|
||||
{"meatballs_epoch",5},
|
||||
{"MortarBucket",5},
|
||||
{"CinderBlocks",5},
|
||||
{"VehicleRepair",5},
|
||||
{"CircuitParts",5},
|
||||
{"ItemCorrugated",5},
|
||||
{"PartPlankPack",5},
|
||||
{"ItemRock",5},
|
||||
{"ItemRope",5},
|
||||
{"ItemStick",5}
|
||||
};
|
||||
|
||||
NPCSlotsLimit = 30; // Max number of traders static or dynamic. Warning! Higher the number lower performance.
|
||||
forceStaticTraders = "true"; // disables traders moving from work to home
|
||||
TraderGodMode = "false"; // If true, Trader can not be killed by Players
|
||||
@ -182,13 +207,15 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
DEBUG_VEH = "false"; // DEBUG ONLY used to debug spawing of vehicles
|
||||
|
||||
// Hive Related
|
||||
vehicleLockTime = "1800"; // Controls how many seconds it takes to allow another person/group to unlock vehicle.
|
||||
vehicleLockTime = "1800"; // Controls how many seconds it takes to allow another person/group to unlock vehicle (outside your own PlotPole Range).
|
||||
vehicleLockTimeHome = "259200"; // Controls how many seconds it takes to allow another person/group to unlock vehicle (inside your own PlotPole Range).
|
||||
expiresBuilding = "604800"; // expiration date in seconds for buildings
|
||||
expiresPlayer = "2592000"; // expiration date in seconds for players
|
||||
expiresBank = "7776000"; // expiration date in seconds for players bank
|
||||
expiresVehicle = "604800"; // expiration date in seconds for vehicles
|
||||
expiresAIdata = "604800"; // expiration date in seconds for NPC Trader inventory
|
||||
expiresCommunityStats = "7776000"; // expiration date in seconds for players community stats
|
||||
expiresPlayerTopStats = "604800"; // expiration date in seconds for players listed in TopStats - remove inactive players from TopStats, but will get in again on next login
|
||||
|
||||
// Admin Features
|
||||
hiveAdminCmdExec = "false"; // true = enables extra (To Be Released) feature to allow execution of code via hive.
|
||||
|
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.
BIN
Server_Install_Pack/mpmissions/epoch.Enoch.pbo
Normal file
BIN
Server_Install_Pack/mpmissions/epoch.Enoch.pbo
Normal file
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.
BIN
Server_Install_Pack/mpmissions/epoch._ChangeMe.pbo
Normal file
BIN
Server_Install_Pack/mpmissions/epoch._ChangeMe.pbo
Normal file
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|radiation|hockey|plague|ghostface|skull|witch|thor|iron)_mask_epoch" !="Item(Map|GPS|Compass|Watch|GeigerCounter_EPOCH)|Power_Sword" !="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|05)_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-7](_(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" !"a2_(ak47s_gold|AK107|bizon|dmr|fnfal|G36_C|Mg36|leeenfield|m110|mk16|mk17|svd|VSS_vintorez|aks74un)" !="SMG_03(|_TR|C|C_TR)_(black|camo|khaki|hex)"
|
||||
5 "" !="H_MM_(Buzzard_Gasmask|Helmet)_01" !="V_MM_Vest_01" !="(V|H)_(F|)[0-9]{1,3}_EPOCH" !="(clown|pkin|wolf|radiation|hockey|plague|ghostface|skull|witch|thor|iron)_mask_epoch" !="Item(Map|GPS|Compass|Watch|GeigerCounter_EPOCH)|Power_Sword" !="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|05)_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|ARX_ghex)_F" !="srifle_DMR_0[2-7](_(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" !"a2_(ak47s_gold|AK107|bizon|dmr|fnfal|G36_C|Mg36|leeenfield|m110|mk16|mk17|svd|VSS_vintorez|aks74un)" !="SMG_03(|_TR|C|C_TR)_(black|camo|khaki|hex)" !="pvcrifle_01_F" !="nl_(Shotgun|auto_xbow)" !="hgun_Pistol_tranq_01"
|
||||
|
@ -1,3 +1,3 @@
|
||||
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_" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="(SatchelCharge|DemoCharge|ClaymoreDirectionalMine)_Remote_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" !"B_Bergen_(mcamo|dgtl|hex|tna)" !"B_AssaultPack_(khk|dgtl|rgr|sgg|cbr|mcamo|ocamo|blk|tna_F)" !"B_Kitbag_(rgr|mcamo|sgg|cbr)" !"B_TacticalPack_(rgr|mcamo|ocamo|blk|oli)" !"B_FieldPack_(khk|ocamo|oucamo|cbr|blk|oli|ghex)" !"B_Carryall_(ocamo|oucamo|mcamo|khk|cbr|oli|ghex)" !"B_Viper(Light|)Harness_(oli|blk|ghex|hex|khk|oli)" !="B_Parachute" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo"
|
||||
5 "_EPOCH" !="BarrelBomb(2|)_EPOCH_Remote_Ammo" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf)_EPOCH" !="(ToolRack|Shoebox|Bunk|Rabbit|Cabinet|toilet|KitchenSink)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !=".+_(SIM|Ghost)_EPOCH" !="smallbackpack_(red|green|teal|pink)_epoch" !="(FirePlace|FirePlaceOn|Jack|Freezer|Tarp|Bobber)_EPOCH" !="Br82nd_(StorageBoxLarge|StorageBox|StorageBoxSmall|WeaponsBox)_(SIM|Ghost)_EPOCH" !"(Patrol_Pack|TK_RPG_Backpack|CZ_VestPouch|civil_assault_pack|S_Gunbag|ALICE_Pack|US_Backpack|CZ_Backpack|L_Gunbag)_Epoch"
|
||||
5 "_EPOCH" !="BarrelBomb(2|)_EPOCH_Remote_Ammo" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf)_EPOCH" !="(ToolRack|Shoebox|Bunk|Rabbit|Cabinet|toilet|KitchenSink)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !=".+_(SIM|Ghost)_EPOCH" !="smallbackpack_(red|green|teal|pink)_epoch" !="(FirePlace|FirePlaceOn|Jack|Freezer|Tarp|Bobber)_EPOCH" !="Br82nd_(StorageBoxLarge|StorageBox|StorageBoxSmall|WeaponsBox)_(SIM|Ghost)_EPOCH" !"(Patrol_Pack|TK_RPG_Backpack|CZ_VestPouch|civil_assault_pack|Assault_Pack|S_Gunbag|ALICE_Pack|US_Backpack|CZ_Backpack|L_Gunbag)_Epoch"
|
||||
5 SeaGull
|
||||
|
@ -1 +1 @@
|
||||
5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_(checkplayer|save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player) \[.+\]" !="epoch_server_((upgrade|updateplayer|inviteplayer|create|delete)(Temp|)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(upgrade_vehicle|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|fnc_updateplayerstats) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]" !="epoch_server_(setfinalplayerpos|defusebomb|putcrypto) \[.+\]"
|
||||
5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_(checkplayer|save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player) \[.+\]" !="epoch_server_((upgrade|updateplayer|inviteplayer|create|delete)(Temp|)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(upgrade_vehicle|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|fnc_updateplayerstats) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]" !="epoch_server_(setfinalplayerpos|defusebomb|putcrypto|paintvehicle|spawnLoot) \[.+\]"
|
||||
|
@ -4,17 +4,17 @@
|
||||
5 setWeaponReloadingTime !="_unit setWeaponReloadingTime [_unit,_weapon,1];" !="_unit setWeaponReloadingTime [_unit,_weapon,1];" !="player fire [_muzzle, _muzzle, _item];\nplayer setWeaponReloadingTime [player, _muzzle, 0];"
|
||||
5 allMissionObjects !="[\"Epoch_Plotpoles\",allmissionobjects 'PlotPole_EPOCH']" !="allMissionObjects \"Timeline_F\"" !="_allplots append (allmissionobjects _x)"
|
||||
5 showCommandingMenu !="showCommandingMenu '';" !="showCommandingMenu '#USER:"
|
||||
5 setvelocity !="setVelocityTarget" !="_bolt setPosATL _pos;\n_bolt setVelocity [0, 0, -10];" !="EPOCH_target setvelocitytransformation" !="_currentTarget setVelocity [0,0,-0.01];" !="_head setVelocity [\n(sin _dir * _speed), \n(cos _dir * _speed)" !="_vel = velocity this; _dir = getDir player; this setVelocity[(_vel select 0)+(sin _dir * 2),(_vel select 1)+(cos _dir * 2),(_vel select 2)];" !="_head setVelocity [random 2,random 2,10];" !="_bobber setVelocity [0,-1,-10];" !="_x setvelocity [0,0,0.1];" !="_veh setVelocity [0,0,0];" !="_this select 0 setvelocity (_this select 1)" !="_zombie setVelocityTransformation [_aslPos,_aslPos,_unitV,_unitV,_unitvDir,_vDir,_unitvUp,_unitvUp,2];" !="_smokeg setVelocity _Gvel;"
|
||||
5 setvelocity !="setVelocityTarget" !="_bolt setPosATL _pos;\n_bolt setVelocity [0, 0, -10];" !="EPOCH_target setvelocitytransformation" !="_currentTarget setVelocity [0,0,-0.01];" !="_head setVelocity [\n(sin _dir * _speed), \n(cos _dir * _speed)" !="_vel = velocity this; _dir = getDir player; this setVelocity[(_vel select 0)+(sin _dir * 2),(_vel select 1)+(cos _dir * 2),(_vel select 2)];" !="_head setVelocity [random 2,random 2,10];" !="_bobber setVelocity [0,-1,-10];" !="_x setvelocity [0,0,0.1];" !="_veh setVelocity [0,0,0];" !="_this select 0 setvelocity (_this select 1)" !="_zombie setVelocityTransformation [_aslPos,_aslPos,_unitV,_unitV,_unitvDir,_vDir,_unitvUp,_unitvUp,2];" !="_smokeg setVelocity _Gvel;" !="player setVelocity _skn_velo;"
|
||||
5 assignAs !"assignAsCargo" !="_unit assignAsGunner _axeCopter;" !="_driver assignAsDriver _axeCopter;" !="axeVIP assignAsDriver vehicle axeVIP;"
|
||||
5 assignAsCargo !="_x assignAsCargo axeGeneralsBoat;" !="axeVIP assignAsCargo vehicle player;" !="axeVIP assignAsCargo vehicle axeVIP;"
|
||||
5 allowDamage !="_unit allowDamage false;" !="_unit allowDamage true;" !="player allowDamage true;" !="vehicle player allowDamage true;" !="player allowDamage false;" !="_target allowDamage true;" !="_cargo allowDamage false;" !="if (_god) then {_vehicle allowdamage"
|
||||
5 addWeaponCargo !="_acceptHolder addWeaponCargo [_wWeapon, 1] ;" !="CBA_fnc_addWeaponCargo" !="\\fnc_addWeaponCargo" !="\"addWeaponCargo" !="cba_fAddWeaponCargo"
|
||||
5 onMapSingleClick !="onMapSingleClick '';" !="\"onmapsingleclick\""
|
||||
5 addMagazine !"addMagazineCargo" !="player addMagazine [_item,_count];" !="player addMagazine \"sledge_swing\";" !="player addMagazine \"Hatchet_swing\";" !="player addMagazine \"stick_swing\";" !="_wh addMagazineAmmoCargo[_item, 1, _count];" !="CBA_fnc_addMagazine" !="\\fnc_addMagazine" !="\"addMagazine" !="vehicle player addMagazineTurret" !="vehicle player addMagazineTurret" !="EPOCH_fnc_addMagazineOverflow" !="_vehicle addMagazineTurret [_ammotype, _turret, _ammocount]"
|
||||
5 addMagazine !"addMagazineCargo" !="player addMagazine [_item,_count];" !="player addMagazine \"sledge_swing\";" !="player addMagazine \"Hatchet_swing\";" !="player addMagazine \"stick_swing\";" !="_wh addMagazineAmmoCargo[_item, 1, _count];" !="CBA_fnc_addMagazine" !="\\fnc_addMagazine" !="\"addMagazine" !="vehicle player addMagazineTurret" !="vehicle player addMagazineTurret" !="EPOCH_fnc_addMagazineOverflow" !="_vehicle addMagazineTurret [_ammotype, _turret, _ammocount]" !="_container addMagazineAmmoCargo _x;"
|
||||
5 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"
|
||||
5 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" !="wH = _nearByHolder select 0;\n};\nif !(isNull _wh) then {\n_wh addItemCargoGlobal [_item,1];\n};\n};\n};\n\n_fnc_findItemInContainers = " !="player addItem 'ItemRope';"
|
||||
5 addBackPack !="fnc_addBackpackCargo"
|
||||
5 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;" !="private _ehId = addMissionEventHandler [_event select [2], _code];" !="addMissionEventHandler [\"PlayerViewChanged\", {if (cameraView isEqualTo \"GROUP\") then {vehicle player switchCamera \"Internal\";};}];" !="addMissionEventHandler [\"EachFrame\",\n{\n\nmissionNamespace setVariable [\"BIS_"
|
||||
5 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" !="wH = _nearByHolder select 0;\n};\nif !(isNull _wh) then {\n_wh addItemCargoGlobal [_item,1];\n};\n};\n};\n\n_fnc_findItemInContainers = " !="player addItem 'ItemRope';" !="_container addItemCargoGlobal [_type,_cnt];"
|
||||
5 addBackPack !="fnc_addBackpackCargo" !="_newPlyr addBackpack _bpack;"
|
||||
5 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;" !="private _ehId = addMissionEventHandler [_event select [2], _code];" !="addMissionEventHandler [\"PlayerViewChanged\", {if (cameraView isEqualTo \"GROUP\") then {vehicle player switchCamera \"Internal\";};}];" !="addMissionEventHandler [\"EachFrame\",\n{\n;\n\n\nmissionNamespace setVariable [\"BIS_"
|
||||
5 removeMissionEventHandler !="removeMissionEventHandler [\"Draw3D\", _id];" !="removeMissionEventHandler [_event select [2], _x select 1];"
|
||||
5 removeAllWeapons !="removeAllWeapons axeGeneral;"
|
||||
5 setViewDistance !="setViewDistance 1600"
|
||||
@ -23,7 +23,7 @@
|
||||
5 createVehicleLocal !="\"Sign_Arrow_Direction_Yellow_F\" createVehicleLocal" !="\"#particlesource\" createVehicleLocal" !="\"#lightpoint\" createVehicleLocal" !="\"BloodSplat\" createVehicleLocal" !="[\"lightning1_F\", \"lightning2_F\"] call BIS_fnc_selectRandom;\n_lighting = _class createVehicleLocal" !="SLX_XEH_DUMMY createVehicleLocal [0, 0, 0];" !="CBA_eventHandlers = \"Logic\" createVehicleLocal [0, 0];"
|
||||
5 createUnit !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit [\"I_officer_F\", axeGeneralPos, [], 1, \"CAN_COLLIDE\"];" !="bis_functions_mainscope = _grpLogic createunit [\"Logic\",[9,9,9],[],0,\"none\"];" !="_unit = _grp createUnit[selectRandom _arrUnits, _pos, [], 0, \"FORM\"];" !="_driver = (group player) createUnit[\"I_UAV_AI\", position axeUAV, [], 0, \"CAN_COLLIDE\"];"
|
||||
5 createAgent !="bis_revive_ratioLethal = createAgent [\"Logic\", [10,10,0], [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent[_unitClass, _targetPos, [], 256, \"FORM\"];" !="_unit = createAgent [_unitClass, _targetPos, [], 120, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 5, \"NONE\"];" !="_unit = createAgent [\"Epoch_Cloak_F\", _pos, [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent [\"Epoch_Sapper_F\", _targetPos, [], 180, \"FORM\"];" !="_sapper = createAgent [\"Epoch_Sapper_F\", getPos _cage2, [], 0, \"FORM\"];" !="_unit = createAgent[_unitClass, position player, [], _zRange, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 0, \"CAN_COLLIDE\"];" !="_axeSapper = createAgent [\"Epoch_Sapper_F\", _pos, [], 12, \"FORM\"];" !="_nestMate = createAgent [\"Epoch_Sapper_F\", _garrPos, [], 0, \"FORM\"];"
|
||||
5 createDialog !="createDialog 'server_info_picture'" !="createdialog 'epoch_tablet_gui'" !="createdialog 'Epoch_CamDialog'" !="createDialog \"rmx_dynamenu\";" !="createDialog \"rmx_craftingUI\";" !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog _tapDiag;" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';" !="createDialog \"Epoch_myTempGroup\";" !="createDialog (if ((Epoch_my_tempGroupUID == \"\") && (Epoch_my_tempGroup isEqualTo [])) then {\"EPOCH_createTempGrp\"} else {\"Epoch_myTempGroup\"});" !="createDialog \"tempGroupRequests\";" !="createdialog 'EPOCH_SimpleInput';"
|
||||
5 createDialog !="createDialog 'server_info_picture'" !="createdialog 'epoch_tablet_gui'" !="createdialog 'Epoch_CamDialog'" !="createDialog \"rmx_dynamenu\";" !="createDialog \"rmx_craftingUI\";" !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog _tapDiag;" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';" !="createDialog \"Epoch_myTempGroup\";" !="createDialog (if ((Epoch_my_tempGroupUID == \"\") && (Epoch_my_tempGroup isEqualTo [])) then {\"EPOCH_createTempGrp\"} else {\"Epoch_myTempGroup\"});" !="createDialog \"tempGroupRequests\";" !="createdialog 'EPOCH_SimpleInput';" !="createdialog 'PlayerStatsDialog'" !="'ServerStatsDialog'"
|
||||
5 createDisplay !="createDisplay \"rmx_dynamenu\";" !="createDisplay \"rmx_moveDynamicHUD\";" !="_parent createdisplay _displayClass;" !="finddisplay 151 createdisplay 'RscDisplayOptionsLayout'" !="_display createdisplay \"RscDisplayDLCPreview\";"
|
||||
5 deleteMarker !="deleteMarkerLocal _mName;"
|
||||
5 setMarker !="CBA_fnc_setMarkerPersistent\"" !="\\fnc_setMarkerPersistent" !="\"setMarkerPersistent" !="_mName setMarkerShapeLocal _mShape;" !="_mName setMarkerTypeLocal _mType;" !="(_x select 0) setMarkerPosLocal (position player);" !="_zoomMarker setMarkerSizeLocal"
|
||||
@ -44,4 +44,6 @@
|
||||
5 drawLine3D !="{\nfor [{_i = 1}, {_i < count _x}, {_i = _i + 1}] do {\ndrawLine3D [_x select (_i - 1), _x select _i, ((BIS_tracedShooter getVari" !="drawLine3D [ASLToAGL (getposasl _SnapObj1),ASLToAGL (getposasl _SnapObj2), [1,0,0,1]];"
|
||||
5 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];"
|
||||
5 deleteVehicleCrew !="fn_deleteVehicleCrew.sqf" !="\"BIS_fnc_deleteVehicleCrew\""
|
||||
5 selectPlayer !="selectPlayer _playerObject;"
|
||||
5 selectPlayer !="selectPlayer _playerObject;"
|
||||
5 playSound3D !="playSound3D [_soundEffectFinal, _unit, false, getPosASL _unit, 1, 1, _soundEffectRange];" !="playSound3D ['a3\sounds_f\air\heli_attack_02\alarm.wss', player, false,getposasl _object, 1, 1, 300];" !="playSound3D [\"a3\Sounds_F\environment\animals\Goats\Goat_\" + selectRandom"
|
||||
5 setUnitLoadout !="Epoch_SetUnitLoadout" !="_newPlyr setunitloadout _loadout;"
|
||||
|
@ -602,6 +602,7 @@ class FSM
|
||||
itemno = 27;
|
||||
init = /*%FSM<STATEINIT""">*/"_ply = player;" \n
|
||||
"_group = group player;" \n
|
||||
"_goggles = goggles _playerObject;" \n
|
||||
"" \n
|
||||
"selectPlayer _playerObject;" \n
|
||||
"" \n
|
||||
@ -896,7 +897,12 @@ class FSM
|
||||
{
|
||||
name = "Setup_EH_s_and_H";
|
||||
itemno = 50;
|
||||
init = /*%FSM<STATEINIT""">*/"{" \n
|
||||
init = /*%FSM<STATEINIT""">*/"" \n
|
||||
"if (!_newChar || !(_goggles isEqualTo """")) then {" \n
|
||||
" removeGoggles player;" \n
|
||||
" player addGoggles _goggles" \n
|
||||
"};" \n
|
||||
"{" \n
|
||||
" player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n
|
||||
"} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n
|
||||
"" \n
|
||||
@ -1076,7 +1082,7 @@ class FSM
|
||||
"if (_playerCheck) then {" \n
|
||||
" _PlayerPosCheck = !((_playerObject getVariable [""FinalDest"",[]]) isequalto []);" \n
|
||||
" if (_PlayerPosCheck) then {" \n
|
||||
" _playerCheckMass = ((_loadabs toFixed 2) isEqualTo ((loadabs _playerObject) toFixed 2));" \n
|
||||
" _playerCheckMass = ((abs(_loadabs - (loadabs _playerObject))) < 1);" \n
|
||||
" if (_playerCheckMass) then {" \n
|
||||
" _state = true;" \n
|
||||
" };" \n
|
||||
@ -1289,7 +1295,12 @@ class FSM
|
||||
{
|
||||
name = "Open_Gender_Selection";
|
||||
itemno = 78;
|
||||
init = /*%FSM<STATEINIT""">*/"createdialog ""SelectGender"";"/*%FSM</STATEINIT""">*/;
|
||||
init = /*%FSM<STATEINIT""">*/"_forcegender = [""CfgEpochClient"", ""ForceGender"", """"] call EPOCH_fnc_returnConfigEntryV2;" \n
|
||||
"switch (tolower _forcegender) do {" \n
|
||||
" case ""male"": {EPOCH_PlayerIsMale = true;};" \n
|
||||
" case ""female"": {EPOCH_PlayerIsMale = false;};" \n
|
||||
" default {createdialog ""SelectGender"";}" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
|
@ -13,5 +13,10 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_EnterBuilding.sqf
|
||||
*/
|
||||
if !(isNull _this) then{
|
||||
if (!isnil "HALV_senddeftele") exitwith {
|
||||
if (isnull (finddisplay 7777)) then {
|
||||
[] execVM "addons\halv_spawn\opendialog.sqf";
|
||||
};
|
||||
};
|
||||
[player,_this,Epoch_personalToken] remoteExec ["EPOCH_server_teleportPlayer",2];
|
||||
};
|
||||
|
33
Sources/epoch_code/compile/EPOCH_PlayerStatsDialog.sqf
Normal file
33
Sources/epoch_code/compile/EPOCH_PlayerStatsDialog.sqf
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Fill Player Stats Dialog
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_PlayerStatsDialog.sqf
|
||||
*/
|
||||
private ["_display","_UsedStats","_ctrlNo","_txt","_value"];
|
||||
disableSerialization;
|
||||
_display = findDisplay -1200;
|
||||
if (isnull _display) exitwith {};
|
||||
_UsedStats = ["CfgEpochClient", "PlayerStatsDialogEntries", []] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_ctrlNo = 1100;
|
||||
{
|
||||
_ctrl = _display displayCtrl _ctrlNo;
|
||||
_txt = '';
|
||||
{
|
||||
_x params ["_stattype","_entrytext",["_calc","%1"]];
|
||||
_value = missionNamespace getVariable [format ['EPOCH_total%1',_stattype],0];
|
||||
_value = format [_calc,_value];
|
||||
_value = call compile _value;
|
||||
_txt = _txt + format ['<t color=''#ffff00''> %1:</t> %2 <br />',_entrytext,_value];
|
||||
} foreach _x;
|
||||
_ctrl ctrlSetStructuredText parseText _txt;
|
||||
_ctrlNo = _ctrlNo + 1;
|
||||
} foreach _UsedStats;
|
207
Sources/epoch_code/compile/EPOCH_ServerStatsDialog.sqf
Normal file
207
Sources/epoch_code/compile/EPOCH_ServerStatsDialog.sqf
Normal file
@ -0,0 +1,207 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Fill Server Stats Dialog
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_ServerStatsDialog.sqf
|
||||
*/
|
||||
|
||||
private [
|
||||
"_display","_UsedStats","_Stat1Pos","_MainDistX","_MainDistY","_SubDistX1","_SubDistX2","_SubDistY1","_SubDistY2","_MainWidth","_SubWidth1","_SubWidth2","_SubWidth3",
|
||||
"_MainHeight","_SubHeight","_ZeroX","_ZeroY","_c","_posX","_posY","_ListedStats","_ctrl","_SubPosY","_ImIn","_SubPosX"
|
||||
];
|
||||
|
||||
disableSerialization;
|
||||
_display = findDisplay -1200;
|
||||
if (isnull _display) exitwith {};
|
||||
_UsedStats = ["CfgEpochClient", "TopStatsDialogEntries", []] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_Stat1Pos = [
|
||||
0.0720312 * safezoneW + safezoneX,
|
||||
0.071 * safezoneH + safezoneY,
|
||||
0.134062 * safezoneW,
|
||||
0.033 * safezoneH
|
||||
];
|
||||
_MainDistX = 0.216406-0.0720312;
|
||||
_MainDistY = 0.489-0.071;
|
||||
_SubDistX1 = 0.0926562-0.0720312;
|
||||
_SubDistX2 = 0.175156-0.0926562;
|
||||
_SubDistY1 = 0.115-0.071;
|
||||
_SubDistY2 = 0.148-0.115-0.002;
|
||||
_MainWidth = 0.134062;
|
||||
_SubWidth1 = 0.0154688;
|
||||
_SubWidth2 = 0.0773437;
|
||||
_SubWidth3 = 0.0309375;
|
||||
_MainHeight = 0.033;
|
||||
_SubHeight = 0.022;
|
||||
|
||||
_ZeroX = 0.0720312;
|
||||
_ZeroY = 0.071;
|
||||
|
||||
|
||||
_c = 1;
|
||||
_posX = _ZeroX;
|
||||
_posY = _ZeroY;
|
||||
_ListedStats = [];
|
||||
{
|
||||
_x params ["_stattype","_entrytext",["_calc","%1"]];
|
||||
_ctrl = _display ctrlCreate['RscText', -1];
|
||||
_ctrl ctrlSetPosition [
|
||||
-_MainWidth * safezoneW + safezoneX,
|
||||
_posY * safezoneH + safezoneY,
|
||||
_MainWidth * safezoneW,
|
||||
_MainHeight * safezoneH
|
||||
];
|
||||
_ctrl ctrlSetText _entrytext;
|
||||
_ctrl ctrlsetbackgroundcolor [0.02,0,0.03,0.6];
|
||||
_ctrl ctrlsetTextColor [1,1,0,1];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetPosition [
|
||||
_posX * safezoneW + safezoneX,
|
||||
_posY * safezoneH + safezoneY
|
||||
];
|
||||
_ctrl ctrlCommit 0.02;
|
||||
_SubPosY = _posY+_SubDistY1;
|
||||
_ImIn = false;
|
||||
{
|
||||
_x params ["_value","_UID","_name"];
|
||||
_SubPosX = _posX;
|
||||
_ctrl = _display ctrlCreate['RscText', -1];
|
||||
_ctrl ctrlSetPosition [
|
||||
-_MainWidth * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY,
|
||||
_SubWidth1 * safezoneW,
|
||||
_SubHeight * safezoneH
|
||||
];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetText str (_foreachindex + 1);
|
||||
_ctrl ctrlsetbackgroundcolor [0.02,0,0.03,0.6];
|
||||
_ctrl ctrlSetPosition [
|
||||
_SubPosX * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY
|
||||
];
|
||||
_ctrl ctrlCommit 0.02;
|
||||
_SubPosX = _SubPosX + _SubDistX1;
|
||||
_ctrl = _display ctrlCreate['RscText', -1];
|
||||
_ctrl ctrlSetPosition [
|
||||
-_MainWidth * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY,
|
||||
_SubWidth2 * safezoneW,
|
||||
_SubHeight * safezoneH
|
||||
];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetText _name;
|
||||
if ((_x select 1) isequalto (getplayeruid player)) then {
|
||||
_ctrl ctrlsetTextColor [0,1,0,1];
|
||||
_ImIn = true;
|
||||
};
|
||||
_ctrl ctrlsetbackgroundcolor [0.02,0,0.03,0.6];
|
||||
_ctrl ctrlSetPosition [
|
||||
_SubPosX * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY
|
||||
];
|
||||
_ctrl ctrlCommit 0.02;
|
||||
_SubPosX = _SubPosX + _SubDistX2;
|
||||
_ctrl = _display ctrlCreate['RscText', -1];
|
||||
_ctrl ctrlSetPosition [
|
||||
-_MainWidth * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY,
|
||||
_SubWidth3 * safezoneW,
|
||||
_SubHeight * safezoneH
|
||||
];
|
||||
_value = format [_calc,_value];
|
||||
_value = call compile _value;
|
||||
if (_value isEqualType "") then {
|
||||
_ctrl ctrlSetText _value;
|
||||
}
|
||||
else {
|
||||
_ctrl ctrlSetText str _value;
|
||||
};
|
||||
_ctrl ctrlsetbackgroundcolor [0.02,0,0.03,0.6];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetPosition [
|
||||
_SubPosX * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY
|
||||
];
|
||||
_ctrl ctrlCommit 0.015;
|
||||
waituntil {ctrlCommitted _ctrl};
|
||||
_SubPosY = _SubPosY+_SubDistY2;
|
||||
} foreach (EPOCH_Topstats select _foreachindex);
|
||||
if (!_ImIn) then {
|
||||
_SubPosX = _posX;
|
||||
_ctrl = _display ctrlCreate['RscText', -1];
|
||||
_ctrl ctrlSetPosition [
|
||||
-_MainWidth * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY,
|
||||
_SubWidth1 * safezoneW,
|
||||
_SubHeight * safezoneH
|
||||
];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetText '#';
|
||||
_ctrl ctrlsetbackgroundcolor [0.02,0,0.03,0.6];
|
||||
_ctrl ctrlSetPosition [
|
||||
_SubPosX * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY
|
||||
];
|
||||
_ctrl ctrlCommit 0.02;
|
||||
_SubPosX = _SubPosX + _SubDistX1;
|
||||
_ctrl = _display ctrlCreate['RscText', -1];
|
||||
_ctrl ctrlSetPosition [
|
||||
-_MainWidth * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY,
|
||||
_SubWidth2 * safezoneW,
|
||||
_SubHeight * safezoneH
|
||||
];
|
||||
_ctrl ctrlCommit 0;
|
||||
_txt = name player;
|
||||
_ctrl ctrlSetText _txt;
|
||||
_ctrl ctrlsetTextColor [0,1,0,1];
|
||||
_ctrl ctrlsetbackgroundcolor [0.02,0,0.03,0.6];
|
||||
_ctrl ctrlSetPosition [
|
||||
_SubPosX * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY
|
||||
];
|
||||
_ctrl ctrlCommit 0.02;
|
||||
_SubPosX = _SubPosX + _SubDistX2;
|
||||
_ctrl = _display ctrlCreate['RscText', -1];
|
||||
_ctrl ctrlSetPosition [
|
||||
-_MainWidth * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY,
|
||||
_SubWidth3 * safezoneW,
|
||||
_SubHeight * safezoneH
|
||||
];
|
||||
_value = missionNamespace getVariable [format ['Epoch_total%1',_stattype],0];
|
||||
_value = format [_calc,_value];
|
||||
_value = call compile _value;
|
||||
if (_value isEqualType "") then {
|
||||
_ctrl ctrlSetText _value;
|
||||
}
|
||||
else {
|
||||
_ctrl ctrlSetText str _value;
|
||||
};
|
||||
_ctrl ctrlsetbackgroundcolor [0.02,0,0.03,0.6];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetPosition [
|
||||
_SubPosX * safezoneW + safezoneX,
|
||||
_SubPosY * safezoneH + safezoneY
|
||||
];
|
||||
_ctrl ctrlCommit 0.02;
|
||||
waituntil {ctrlCommitted _ctrl};
|
||||
_SubPosY = _SubPosY+_SubDistY2;
|
||||
};
|
||||
_c = _c + 1;
|
||||
if (_c > 6) then {
|
||||
_posX = _ZeroX;
|
||||
_posY = _posY+_MainDistY;
|
||||
_c = 1;
|
||||
}
|
||||
else {
|
||||
_posX = _posX+_MainDistX;
|
||||
};
|
||||
} foreach _UsedStats;
|
@ -13,16 +13,20 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_interact.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_storSlot","_vehSlot"];
|
||||
private ["_storSlot","_vehSlot","_buildSlot"];
|
||||
//[[[end]]]
|
||||
0 call EPOCH_refeshUI;
|
||||
if (!isNull _this) then {
|
||||
_vehSlot = _this getVariable ["VEHICLE_SLOT", "ABORT"];
|
||||
if (_vehSlot != "ABORT") then {
|
||||
if !(_vehSlot isEqualTo "ABORT") then {
|
||||
EPOCH_arr_interactedObjs pushBackUnique _this;
|
||||
};
|
||||
_storSlot = _this getVariable["STORAGE_SLOT", "ABORT"];
|
||||
if (_storSlot != "ABORT") then {
|
||||
if !(_storSlot isEqualTo "ABORT") then {
|
||||
EPOCH_arr_interactedObjs pushBackUnique _this;
|
||||
};
|
||||
_buildSlot = _this getVariable["BUILD_SLOT", "ABORT"];
|
||||
if !(_buildSlot isEqualTo "ABORT") then {
|
||||
EPOCH_arr_interactedObjs pushBackUnique _this;
|
||||
};
|
||||
};
|
||||
|
@ -13,7 +13,7 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_unitSpawn.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_aiskill","_arrSkills","_arrUnits","_arrVals","_bomb","_config","_currentLimit","_disableAI","_driver","_grp","_index","_jammers","_loop","_minAISkill","_missionConfig","_nonJammer","_nonTrader","_nonTraderAIRange","_playerSpawnArray","_playerSpawnArrayKeyFinal","_pos","_restricted","_sapperHndl","_sapperNum","_spawnLimit","_targetPos","_unit","_units"];
|
||||
private ["_aiskill","_arrSkills","_arrUnits","_arrVals","_bomb","_config","_currentLimit","_disableAI","_driver","_grp","_index","_jammers","_loop","_minspawndist","_maxspawndist","_minAISkill","_missionConfig","_nonJammer","_nonTrader","_nonTraderAIRange","_playerSpawnArray","_playerSpawnArrayKeyFinal","_pos","_restricted","_sapperHndl","_sapperNum","_spawnLimit","_targetPos","_unit","_units"];
|
||||
//[[[end]]]
|
||||
params ["_unitClass",["_trgt",player],["_doVariable",false],["_unitCount",1],["_extraData",[]] ];
|
||||
|
||||
@ -159,14 +159,16 @@ switch _unitClass do {
|
||||
};
|
||||
case "I_Soldier_EPOCH": {
|
||||
_extraData params [["_pos",[]],["_copter",objnull]];
|
||||
_missionConfig = getMissionConfig "CfgEpochSoldier";
|
||||
_minspawndist = getNumber (_missionConfig >> "minspawndist");
|
||||
_maxspawndist = getNumber (_missionConfig >> "maxspawndist");
|
||||
if (_pos isEqualTo []) then {
|
||||
_pos = [_targetPos,80,150,1,true] call EPOCH_fnc_findSafePos;
|
||||
_pos = [_targetPos,_minspawndist,_maxspawndist,1,true] call EPOCH_fnc_findSafePos;
|
||||
};
|
||||
_pos set [2,0];
|
||||
_grp = createGroup [RESISTANCE, true];
|
||||
_grp setBehaviour "COMBAT";
|
||||
_grp setCombatMode "RED";
|
||||
_missionConfig = getMissionConfig "CfgEpochSoldier";
|
||||
_minAISkill = getNumber (_missionConfig >> "minAISkill");
|
||||
_arrUnits = getArray (_missionConfig >> "unitTypes");
|
||||
_arrSkills = ["aimingAccuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding","general"];
|
||||
|
@ -25,7 +25,7 @@
|
||||
private ["_jammed","_jammer"];
|
||||
//[[[end]]]
|
||||
|
||||
_jammer = (nearestObjects[player, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {player distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))};
|
||||
_jammer = (nearestObjects[cameraon, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {cameraon distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))};
|
||||
_jammed = false;
|
||||
if !(_jammer isEqualTo[]) then {
|
||||
{
|
||||
|
@ -27,7 +27,7 @@ private ["_buildingJammerRange","_maintainCount","_rnd"];
|
||||
|
||||
if !(isNil "EPOCH_maintainLockout") exitWith {["Already Maintaining a base.", 5] call Epoch_message;};
|
||||
if (EPOCH_playerCrypto > 0) then {
|
||||
_buildingJammerRange = getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _this) >> "buildingJammerRange");;
|
||||
_buildingJammerRange = getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _this) >> "buildingJammerRange");
|
||||
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
|
||||
|
||||
_maintainCount = {(damage _x) > 0} count nearestObjects[_this, ["Constructions_static_F","Constructions_foundation_F","Buildable_Storage","Constructions_lockedstatic_F"], _buildingJammerRange];
|
||||
|
@ -36,7 +36,7 @@ _isSnap = false;
|
||||
|
||||
_playerEnergyKeyFinal = "EPOCH_playerEnergy";
|
||||
if !(isNil "_playerEnergyKey") then {_playerEnergyKeyFinal = _playerEnergyKey};
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,[]];
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,0];
|
||||
|
||||
if (_playerEnergy <= 0) exitWith {
|
||||
["Need Energy", 5] call Epoch_message;
|
||||
@ -110,7 +110,7 @@ if (isText(_simulClassConfig)) then {
|
||||
EPOCH_Z_OFFSET = _offset select 2;
|
||||
_lastCheckTime = diag_tickTime;
|
||||
while {EPOCH_target == _currentTarget} do {
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,[]];
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,0];
|
||||
if (_playerEnergy <= 0) exitWith { EPOCH_target = objNull; };
|
||||
_rejectMove = false;
|
||||
if ((diag_tickTime - _lastCheckTime) > 10) then {
|
||||
|
@ -39,7 +39,7 @@ if (_item == "") exitWith{ EPOCH_target = objNull; };
|
||||
|
||||
_playerEnergyKeyFinal = "EPOCH_playerEnergy";
|
||||
if !(isNil "_playerEnergyKey") then {_playerEnergyKeyFinal = _playerEnergyKey};
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,[]];
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,0];
|
||||
|
||||
if (_playerEnergy <= 0) exitWith{
|
||||
["Need Energy", 5] call Epoch_message;
|
||||
@ -52,6 +52,7 @@ EPOCH_simulSwap_Lock = true;
|
||||
_objType = typeOf _object;
|
||||
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
|
||||
_class = getText(_cfgBaseBuilding >> _objType >> "GhostPreview");
|
||||
_EnablePhysicsOnBuild = ["CfgEpochClient", "EnablePhysicsOnBuild", true] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
if (_class != "") then {
|
||||
_energyCost = getNumber(_cfgBaseBuilding >> _objType >> "energyCost");
|
||||
@ -404,7 +405,7 @@ if (_class != "") then {
|
||||
// remove item here
|
||||
if (([player, _item] call BIS_fnc_invRemove) == 1) then {
|
||||
|
||||
if (_stabilityCheck && !isTouchingGround _currentTarget) then {
|
||||
if (_stabilityCheck && !isTouchingGround _currentTarget && _EnablePhysicsOnBuild) then {
|
||||
|
||||
_offsetZPos = [_currentPos select 0, _currentPos select 1, (_currentPos select 2) - 0.5];
|
||||
if !(terrainIntersect[_currentPos, _offsetZPos]) then {
|
||||
|
@ -115,14 +115,14 @@ if (_object isKindOf "Constructions_static_F" || {(typeof _object) in (call EPOC
|
||||
|
||||
_upgradeto = _upgrade select 0;
|
||||
if (_upgradeto in _doors) then {
|
||||
_countdoors = count (nearestobjects [_nearestJammer,_doors,_buildingJammerRange]);
|
||||
_countdoors = count ((nearestobjects [_nearestJammer,_doors,_buildingJammerRange]) - [_object]);
|
||||
if (_countdoors >= _maxdoors) then {
|
||||
_canUpgrade = false;
|
||||
_missingParts = format["Can not upgrade to locked Door / Stairs! Max %1 allowed per Base!", _maxdoors];
|
||||
};
|
||||
};
|
||||
if (_upgradeto in _gates) then {
|
||||
_countgates = count (nearestobjects [_nearestJammer,_gates,_buildingJammerRange]);
|
||||
_countgates = count ((nearestobjects [_nearestJammer,_gates,_buildingJammerRange]) - [_object]);
|
||||
if (_countgates >= _maxgates) then {
|
||||
_canUpgrade = false;
|
||||
_missingParts = format["Can not upgrade to Gate! Max %1 allowed per Base!", _maxgates];
|
||||
|
@ -0,0 +1,84 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
HandleDamage Eventhandler for A3 Epoch
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_HandleDamage.sqf
|
||||
*/
|
||||
params ["_unit", "_selection", "_damage", "_source", "_projectile", "_hitIndex", "_instigator", "_hitPoint"];
|
||||
if !(_source isEqualTo _unit) then {
|
||||
if ((missionnamespace getvariable ["EPOCH_HandleDamageTimeOut",diag_ticktime]) > diag_ticktime) exitwith {}; // prevent multiple actions here
|
||||
EPOCH_HandleDamageTimeOut = diag_ticktime + 0.1;
|
||||
switch _projectile do {
|
||||
case "B_EnergyPack": {
|
||||
if (_source distance _unit > 10) exitwith {};
|
||||
if !(missionnamespace getvariable ["EPOCH_OldRevive",false]) then {
|
||||
_attachments = handgunItems _source;
|
||||
if ("Heal_EPOCH" in _attachments) exitwith {
|
||||
if (lifeState _unit == "INCAPACITATED") exitwith {
|
||||
EPOCH_HandleDamageTimeOut = diag_ticktime + 1;
|
||||
_unit setUnconscious false;
|
||||
_unit playMoveNow 'AmovPercMstpSnonWnonDnon';
|
||||
};
|
||||
_highestDMG = 0;
|
||||
_currentHIT = -1;
|
||||
_currentDMG = 0;
|
||||
{
|
||||
_currentDMG = _x;
|
||||
if (_currentDMG > _highestDMG) then{
|
||||
_highestDMG = _currentDMG;
|
||||
_currentHIT = _forEachIndex;
|
||||
};
|
||||
}forEach((getAllHitPointsDamage _unit) param[2,[]]);
|
||||
if (_highestDMG > 0) then {
|
||||
_newDMG = 0;
|
||||
[_unit,[[_currentHIT,_newDMG]]] call EPOCH_client_repairVehicle;
|
||||
} else {
|
||||
if ((damage _unit) > 0) then {
|
||||
[_unit,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
|
||||
};
|
||||
};
|
||||
};
|
||||
if ("Defib_EPOCH" in _attachments) exitwith {
|
||||
if !(alive _unit) then {
|
||||
EPOCH_HandleDamageTimeOut = diag_ticktime + 1;
|
||||
[_unit,_source,Epoch_personalToken] remoteExec ["EPOCH_server_revivePlayer",2];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
case "shell_12g_bb";
|
||||
case "bbag_pvc";
|
||||
case "xbow_tranq";
|
||||
case "tranq_dart": {
|
||||
if !(lifeState _unit == "INCAPACITATED") then {
|
||||
EPOCH_HandleDamageTimeOut = diag_ticktime + 1;
|
||||
_unit setUnconscious true;
|
||||
(["CfgEpochClient", "UnconsciousTime", [60,180]] call EPOCH_fnc_returnConfigEntryV2) params [["_mintime",60],["_maxtime",180]];
|
||||
EPOCH_UnconsciousTime = diag_ticktime + _mintime + (random (_maxtime - _mintime));
|
||||
["You are Knocked out for a while...",5] call Epoch_Message;
|
||||
};
|
||||
};
|
||||
case "B_Swing";
|
||||
case "B_Stick";
|
||||
case "B_Hatchet": {
|
||||
if !(lifeState _unit == "INCAPACITATED") then {
|
||||
if ((random 100) < (["CfgEpochClient", "UnconsciousChance", 30] call EPOCH_fnc_returnConfigEntryV2)) then {
|
||||
EPOCH_HandleDamageTimeOut = diag_ticktime + 1;
|
||||
_unit setUnconscious true;
|
||||
(["CfgEpochClient", "UnconsciousTime", [60,180]] call EPOCH_fnc_returnConfigEntryV2) params [["_mintime",60],["_maxtime",180]];
|
||||
EPOCH_UnconsciousTime = diag_ticktime + _mintime + (random (_maxtime - _mintime));
|
||||
["You are Knocked out for a while...",5] call Epoch_Message;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
_damage
|
@ -13,9 +13,21 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/event_handlers/EPOCH_InventoryOpened.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_stored","_savecontainer","_blocked","_containerlocked","_seclocked"];
|
||||
private ["_InvTarget","_stored","_savecontainer","_blocked","_containerlocked","_seclocked"];
|
||||
//[[[end]]]
|
||||
params ["_unit","_container","_sec"];
|
||||
|
||||
_InvTarget = ObjNull;
|
||||
{
|
||||
if (_x isKindOf "MAN" && {player distance _x < 2} && {lifeState _x == "INCAPACITATED"} && {!(_x in [_container,_sec])}) exitwith {
|
||||
_InvTarget = _x;
|
||||
};
|
||||
} foreach [cursortarget,cursorobject];
|
||||
if (!isnull _InvTarget) exitwith {
|
||||
player action ["Gear",_InvTarget];
|
||||
true
|
||||
};
|
||||
|
||||
setMousePosition[0.5, 0.5];
|
||||
call EPOCH_showStats;
|
||||
_this spawn EPOCH_initUI;
|
||||
|
@ -26,7 +26,7 @@
|
||||
_toServer - BOOLEAN: (OPTIONAL): false by default
|
||||
|
||||
*/
|
||||
params [ ["_statType",""], ["_adjust",0], ["_toServer",false] ];
|
||||
params [ ["_statType",""], ["_adjust",0], ["_toServer",false], ["_isTotal",false]];
|
||||
|
||||
if(_statType isEqualTo "")exitWith{
|
||||
diag_log "EPOCHDebug: updatePlayerStats -2- stat type not defined";
|
||||
@ -38,8 +38,11 @@ if(_adjust isEqualTo 0)exitWith{
|
||||
private _statVarName = format["EPOCH_total%1",_statType];
|
||||
private _currentStat = missionNameSpace getVariable[_statVarName,0];
|
||||
private _newStat = _currentStat + _adjust;
|
||||
if (_isTotal) then {
|
||||
_newStat = _adjust;
|
||||
};
|
||||
missionNameSpace setVariable[_statVarName,_newStat];
|
||||
|
||||
if(_toServer)then{
|
||||
[player, objNull, _statType, _adjust, false, Epoch_personalToken] remoteExec ["EPOCH_fnc_updatePlayerStats",2];
|
||||
[player, ObjNull, _statType, _adjust, false, Epoch_personalToken, _isTotal] remoteExec ["EPOCH_fnc_updatePlayerStats",2];
|
||||
};
|
||||
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Workaround for delayed positioning for Server side placed items
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/functions/EPOCH_fnc_SetFinalDir.sqf
|
||||
|
||||
usage:
|
||||
_array = [];
|
||||
{
|
||||
_array pushback [_x,[vectordir _x, VectorUp _x]];
|
||||
} foreach _objs;
|
||||
_array remoteExec ["EPOCH_fnc_SetFinalDir",_player];
|
||||
*/
|
||||
|
||||
uisleep 1; // Give some time for init Server Side
|
||||
{
|
||||
_x params ["_obj","_dir"];
|
||||
if (_dir isEqualType []) then {
|
||||
_obj setVectorDirAndUp _dir;
|
||||
}
|
||||
else {
|
||||
_obj setdir _dir;
|
||||
};
|
||||
} foreach _this;
|
@ -34,7 +34,7 @@ _tapDiag = _playerDeathScreen;
|
||||
|
||||
_playerAliveTimeKeyFinal = "EPOCH_playerAliveTime";
|
||||
if !(isNil "_playerAliveTimeKey") then {_playerAliveTimeKeyFinal = _playerAliveTimeKey};
|
||||
_playerAliveTime = missionNamespace getVariable [_playerAliveTimeKeyFinal,[]];
|
||||
_playerAliveTime = missionNamespace getVariable [_playerAliveTimeKeyFinal,0];
|
||||
|
||||
_doRevenge = ((getNumber(_config >> "playerDisableRevenge") isEqualTo 0) && _playerAliveTime >= _playerRevengeMinAliveTime);
|
||||
|
||||
|
@ -41,6 +41,7 @@ switch true do {
|
||||
_attachments = handgunItems player;
|
||||
_heal = false;
|
||||
if (_cursorTarget isKindOf "Man") then {
|
||||
if !(missionnamespace getvariable ["EPOCH_OldRevive",false]) exitwith {};
|
||||
if ("Heal_EPOCH" in _attachments) then {
|
||||
_heal = true;
|
||||
};
|
||||
@ -74,6 +75,9 @@ switch true do {
|
||||
}forEach((getAllHitPointsDamage _cursorTarget) param[2,[]]);
|
||||
if (_highestDMG > 0) then {
|
||||
_newDMG = ((_highestDMG - 0.5) max 0);
|
||||
if (_cursorTarget iskindof "MAN") then {
|
||||
_newDMG = ((_highestDMG - 1) max 0);
|
||||
};
|
||||
["Partially healed / repaired",5] call epoch_message;
|
||||
if (local _cursorTarget) then {
|
||||
[_cursorTarget,[[_currentHIT,_newDMG]]] call EPOCH_client_repairVehicle;
|
||||
|
@ -280,7 +280,7 @@ if (_dikCode in (actionKeys "TacticalView")) then {
|
||||
_handled = true;
|
||||
};
|
||||
if (_dikCode in (actionKeys "NightVision")) then {
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,[]];
|
||||
_playerEnergy = missionNamespace getVariable [_playerEnergyKeyFinal,0];
|
||||
if (_playerEnergy == 0) then {
|
||||
["Night Vision Goggles: Need Energy", 5] call Epoch_message;
|
||||
_handled = true;
|
||||
|
@ -0,0 +1 @@
|
||||
[player,GetUnitLoadout Player,missionNamespace getVariable [_playerRandomVarKey, -1]] call (missionnamespace getvariable ["Epoch_SetUnitLoadout",{}]);
|
@ -0,0 +1,87 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Change PlayerLoadout
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/inventory/EPOCH_SetUnitLoadout.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_type","_loadabs"];
|
||||
//[[[end]]]
|
||||
|
||||
params ["_newPlyr","_loadout",["_key",-1000]];
|
||||
_tmpkey = (missionNamespace getVariable _playerRandomVarKey);
|
||||
if (isnil "_tmpkey") exitwith {};
|
||||
if !(_key isEqualTo (missionNamespace getVariable _playerRandomVarKey)) exitwith {};
|
||||
|
||||
// _loadout params ["_primaryarr","_secondaryarr","_handgunarr","_uniformarr","_vestarr","_bpackarr","_HeadGear","_Glasses","_Rangefinderarr","_LinedItemsarr"];
|
||||
_loadout = +_loadout;
|
||||
_loadout params ["","","","_uniformarr","_vestarr","_bpackarr","","","",""];
|
||||
_loadout set [3,[]];
|
||||
_loadout set [4,[]];
|
||||
_loadout set [5,[]];
|
||||
_newPlyr setunitloadout _loadout;
|
||||
_uniformarr params [["_uniform",""],["_uniformitems",[]]];
|
||||
_vestarr params [["_vest",""],["_vestitems",[]]];
|
||||
_bpackarr params [["_bpack",""],["_bpackitems",[]]];
|
||||
if !(_uniform isequalto "") then {
|
||||
_newPlyr forceadduniform _uniform;
|
||||
};
|
||||
if !(_vest isequalto "") then {
|
||||
_newPlyr addVest _vest;
|
||||
};
|
||||
if !(_bpack isequalto "") then {
|
||||
_newPlyr addBackpack _bpack;
|
||||
};
|
||||
{
|
||||
_x params ["_container","_items"];
|
||||
if !(isnull _container) then {
|
||||
clearitemcargoglobal _container;
|
||||
clearbackpackcargoglobal _container;
|
||||
clearmagazinecargoglobal _container;
|
||||
clearweaponcargoglobal _container;
|
||||
{
|
||||
if (count _x > 2) then {
|
||||
_container addMagazineAmmoCargo _x;
|
||||
}
|
||||
else {
|
||||
if ((_x select 0) isequaltype []) then {
|
||||
_container addWeaponWithAttachmentsCargoGlobal _x;
|
||||
}
|
||||
else {
|
||||
_x params [["_type",""],["_cnt",1]];
|
||||
if !(_cnt isequaltype 1) then {
|
||||
_cnt = 1;
|
||||
};
|
||||
if (_type iskindof "Bag_Base") then {
|
||||
_container addBackpackCargoGlobal [_type,_cnt];
|
||||
}
|
||||
else {
|
||||
_container addItemCargoGlobal [_type,_cnt];
|
||||
};
|
||||
};
|
||||
};
|
||||
} foreach _items;
|
||||
};
|
||||
} foreach [
|
||||
[Uniformcontainer _newPlyr, _uniformitems],
|
||||
[Vestcontainer _newPlyr, _vestitems],
|
||||
[BackpackContainer _newPlyr, _bpackitems]
|
||||
];
|
||||
|
||||
/*
|
||||
_loadabs = loadabs _newPlyr;
|
||||
if !(uniform _newPlyr isequalto _uniform && vest _newPlyr isequalto _vest && backpack _newPlyr isequalto _bpack) then {
|
||||
diag_log format ["EPOCH Debug: Setunitloadout failed - Unifmorm should: %1 is: %2 - Vest should: %3 is: %4 - Backpack should: %5 is: %6",_uniform,uniform _newPlyr,_vest,vest _newPlyr,_bpack,backpack _newPlyr];
|
||||
_loadabs = -1;
|
||||
};
|
||||
|
||||
_loadabs
|
||||
*/
|
@ -111,7 +111,8 @@ _fnc_moveWeaponFromContainer = {
|
||||
//add new entry
|
||||
_loadout set [_dIdx,_temp];
|
||||
//save changes
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
};
|
||||
|
||||
_fnc_MoveWeaponToContainer = {
|
||||
@ -135,7 +136,8 @@ _fnc_MoveWeaponToContainer = {
|
||||
((_loadout select (_container + 3)) select 1) append [[_loadout select _sIdx,1]]; //cut out from above comment, looks like appending alone works great
|
||||
_loadout set [_sIdx,[]];
|
||||
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
};
|
||||
|
||||
_fnc_canMoveToContainer = {
|
||||
@ -230,7 +232,8 @@ _fnc_MoveShellToContainer = {
|
||||
((_loadout select (_container + 3)) select 1) append [_temp2]; //cut out from above comment, looks like appending alone works great
|
||||
};
|
||||
(_loadout select 0) set [5,[]];
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
};
|
||||
|
||||
_fnc_moveShellFromContainer = {
|
||||
@ -248,7 +251,8 @@ _fnc_moveShellFromContainer = {
|
||||
((_loadout select (_container + 3)) select 1) deleteAt _sIdx;
|
||||
};
|
||||
(_loadout select 0) set [5,[_temp select 0,_temp select 2]];
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
};
|
||||
};
|
||||
|
||||
@ -272,7 +276,8 @@ _fnc_dropEquipShells = {
|
||||
if !(_drop) exitWith {_return = 4;};
|
||||
_equipped call _fnc_dropItem;
|
||||
(_loadout select 0) set [5,[]];
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
_return = 2;
|
||||
};
|
||||
if (_forceEquip && _return != 4) then {
|
||||
@ -345,25 +350,29 @@ _fnc_dropEquipAccessories = {
|
||||
_equipped = (_loadout select _slot) select _accessory;
|
||||
if (player canAdd _equipped) then {
|
||||
(_loadout select _slot) set [_accessory,""];
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
player addItem _equipped;
|
||||
_return = 1;
|
||||
} else {
|
||||
if !(_drop) exitWith {_return = 4;};
|
||||
_equipped call _fnc_dropItem;
|
||||
(_loadout select _slot) set [_accessory,""];
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
_return = 2;
|
||||
};
|
||||
if ((((toLower _equipped) != (toLower _item)) || _forceEquip) && _return != 4) then {
|
||||
(_loadout select _slot) set [_accessory,_item];
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
player addItem _equipped;
|
||||
player removeItem _item;
|
||||
};
|
||||
} else {
|
||||
(_loadout select _slot) set [_accessory,_item];
|
||||
player setUnitLoadout _loadout;
|
||||
// player setUnitLoadout _loadout;
|
||||
[player,_loadout,missionNamespace getVariable [_playerRandomVarKey, -1]] call Epoch_SetUnitLoadout;
|
||||
player removeItem _item;
|
||||
_return = 1;
|
||||
};
|
||||
|
@ -1,119 +0,0 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Runs chances to spawn loot objects on building
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/looting/EPOCH_spawnLoot.sqf
|
||||
|
||||
Example:
|
||||
[_building] call EPOCH_spawnLoot;
|
||||
|
||||
Parameter(s):
|
||||
_this select 0: OBJECT - building
|
||||
_this select 1: NUMBER - Number of buildings checked before a building in the array can reattempt looting. Default: 333
|
||||
_this select 2: NUMBER - Limit of loot objects, as new are created old ones will be removed. Default: 33
|
||||
|
||||
Returns:
|
||||
BOOL
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_cfgBaseBuilding","_class","_color","_colors","_config","_delete","_dir","_item","_lootBias","_lootLimit","_lootType","_loots","_masterConfig","_pos","_posName","_positions","_possibleCount","_possibleLoots","_randomIndex","_return","_selectedConfig","_selectedLoot","_lootObjectLimit"];
|
||||
//[[[end]]]
|
||||
params [["_building",objNull,[objNull]], ["_LootBiasAdd",0]];
|
||||
_lootObjectLimit = 33;
|
||||
_selectedConfig = typeOf _building;
|
||||
if (_selectedConfig isEqualTo "") then {
|
||||
(getModelInfo _building) params [["_modelName",""]];
|
||||
if (!isnil "_modelName") then {
|
||||
// replace spaces and periods with underscores
|
||||
_selectedConfig = (_modelName splitString " .") joinString "_";
|
||||
};
|
||||
};
|
||||
|
||||
//diag_log format["DEBUG: _selectedConfig %1",_selectedConfig];
|
||||
|
||||
_masterConfig = 'CfgBuildingLootPos' call EPOCH_returnConfig;
|
||||
_config = _masterConfig >> _selectedConfig;
|
||||
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
|
||||
|
||||
// exit with false if building is not lootable
|
||||
_return = false;
|
||||
if !(isClass(_config)) exitWith {_return};
|
||||
|
||||
_lootBias = getNumber(_config >> "lootBias") + _LootBiasAdd;
|
||||
_lootBias = _lootBias / ((count (((position player) nearEntities 75) select {isplayer _x && alive _x})) max 1);
|
||||
_lootType = getText(_config >> "lootType");
|
||||
_loots = getArray(_config >> _lootType);
|
||||
_lootLimit = (round random(getNumber(_config >> "limit"))) max 1;
|
||||
_posName = "";
|
||||
|
||||
if ((random 100) < _lootBias) then {
|
||||
_possibleLoots = [];
|
||||
{
|
||||
_x params ["_posNameTMP","_class","_randomColor"];
|
||||
_posName = _posNameTMP;
|
||||
_positions = getArray(_config >> _posName);
|
||||
{
|
||||
_possibleLoots pushBack [_class,_randomColor,_x];
|
||||
} forEach _positions;
|
||||
} forEach _loots;
|
||||
|
||||
if !(_possibleLoots isEqualTo []) then {
|
||||
for "_i" from 1 to _lootLimit do
|
||||
{
|
||||
_return = true;
|
||||
_possibleCount = count _possibleLoots;
|
||||
if (_possibleCount > 0) then {
|
||||
_randomIndex = (floor random(_possibleCount));
|
||||
|
||||
_selectedLoot = _possibleLoots deleteAt _randomIndex;
|
||||
//
|
||||
_selectedLoot params ["_class","_randomColor","_position"];
|
||||
_position params ["_m2WPos","_relDir"];
|
||||
_pos = _building modelToWorld _m2WPos;
|
||||
// force item to ground level if resulting z pos is below ground.
|
||||
if (_pos select 2 < 0) then {
|
||||
_pos set[2, 0];
|
||||
};
|
||||
if (_class isEqualType []) then {
|
||||
_class = selectRandom _class;
|
||||
};
|
||||
_dir = _relDir + (getDir _building);
|
||||
_item = createVehicle[_class, _pos, [], 0.0, "CAN_COLLIDE"];
|
||||
_item setDir _dir;
|
||||
|
||||
EPOCH_lootObjects pushBack _item;
|
||||
if (count EPOCH_lootObjects > _lootObjectLimit) then {
|
||||
_delete = EPOCH_lootObjects deleteAt 0;
|
||||
if (!isnull _delete) then {
|
||||
deleteVehicle _delete;
|
||||
};
|
||||
};
|
||||
|
||||
if (surfaceIsWater _pos) then {
|
||||
_item setPosASL _pos;
|
||||
} else {
|
||||
_item setPosATL _pos;
|
||||
};
|
||||
|
||||
if (_randomColor isEqualTo "true") then {
|
||||
_colors = getArray(_cfgBaseBuilding >> _class >> "availableTextures");
|
||||
if !(_colors isEqualTo[]) then {
|
||||
_color = selectRandom _colors;
|
||||
_item setObjectTextureGlobal[0, _color];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
} else {
|
||||
diag_log format["DEBUG: no positions for: %1",_posName];
|
||||
};
|
||||
};
|
||||
_return
|
@ -14,7 +14,7 @@
|
||||
*/
|
||||
|
||||
//[[[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"];
|
||||
private ["_Ignatz_SP_Array","_AmmoConfig","_VehiclesWithAmmo","_VehicleAmmo","_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;
|
||||
@ -31,7 +31,8 @@ _refuel_costs = ["CfgServicePoint", "refuel_costs", []] call EPOCH_fnc_return
|
||||
_refuel_updateInterval = ["CfgServicePoint", "refuel_updateInterval", 1] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_refuel_amount = ["CfgServicePoint", "refuel_amount", 0.1] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_repairTime = ["CfgServicePoint", "repairTime", 1.2] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_VehiclesAndAmmo = ["CfgServicePoint", "VehiclesAndAmmo", []] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_AmmoConfig = (missionconfigfile >> "CfgServicePoint" >> "VehiclesAndAmmo");
|
||||
_VehiclesWithAmmo = ("true" configClasses _AmmoConfig) apply {configname _x};
|
||||
|
||||
_Ignatz_SP_Array = [];
|
||||
_costsFree = 'free';
|
||||
@ -63,7 +64,8 @@ _fnc_actionTitle = {
|
||||
};
|
||||
|
||||
{
|
||||
if ((typeof _vehicle) == _x select 0) exitwith {
|
||||
if ((tolower (typeof _vehicle)) == (tolower _x)) exitwith {
|
||||
_VehicleAmmo = getArray (_AmmoConfig >> _x >> "MagsTurrets");
|
||||
{
|
||||
_x params ["_ammotype","_turret","_maxmags","_costs",["_ammocount",getNumber (configfile >> "CfgMagazines" >> (_x select 0) >> "count")]];
|
||||
if (_myturret isequalto _turret) then {
|
||||
@ -91,9 +93,9 @@ _fnc_actionTitle = {
|
||||
_Ignatz_SP_Array pushback [_actionTitle,[_vehicle,_ammotype,_turret,_reloagmags,_ammocount,_costs]];
|
||||
};
|
||||
};
|
||||
} foreach (_x select 1);
|
||||
} foreach _VehicleAmmo;
|
||||
};
|
||||
} foreach _VehiclesAndAmmo;
|
||||
} foreach _VehiclesWithAmmo;
|
||||
|
||||
if (player == driver _vehicle) then {
|
||||
_costs = [_vehicle, _refuel_costs] call _fnc_getCosts;
|
||||
|
@ -46,6 +46,8 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then {
|
||||
|
||||
// wait for loadAbs to sync
|
||||
waitUntil {_loadAbs isEqualTo (loadAbs _playerObject)};
|
||||
|
||||
_goggles = goggles _playerObject;
|
||||
|
||||
// switch to new playerObject
|
||||
selectPlayer _playerObject;
|
||||
@ -77,6 +79,9 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then {
|
||||
closeDialog 0;
|
||||
("BIS_fnc_respawnCounter" call BIS_fnc_rscLayer) cutText ["","PLAIN"];
|
||||
|
||||
removeGoggles player;
|
||||
player addGoggles _goggles;
|
||||
|
||||
{
|
||||
player removeEventHandler [_x, 0];
|
||||
player addEventHandler [_x,(["CfgEpochClient", _x, ""] call EPOCH_fnc_returnConfigEntryV2)];
|
||||
|
@ -10,16 +10,31 @@ if (EPOCH_IsAutoRunning) then {
|
||||
};
|
||||
};
|
||||
|
||||
if (animationstate player in ['aadjpknlmstpsraswpstddown','aadjpknlmstpsraswrflddown'] && cameraview == 'GUNNER' && (player weapondirection (currentweapon player)) select 2 < -0.88) then {
|
||||
_fadedblack = true;
|
||||
TitleText ['Stop BugUsing!','BLACK FADED'];
|
||||
if (player == vehicle player && {getPosATL player select 2 > 0.4} && {cameraview == 'GUNNER'}) then {
|
||||
_weapondir = player weapondirection (currentweapon player);
|
||||
if (animationstate player in ['aadjpknlmstpsraswpstddown','aadjpknlmstpsraswrflddown'] && {_weapondir select 2 < -0.88}) then {
|
||||
player switchCamera "EXTERNAL";
|
||||
player playAction "AdjustF";
|
||||
_fadedblack = true;
|
||||
TitleText ['Stop BugUsing!','BLACK FADED'];
|
||||
}
|
||||
else {
|
||||
_eyePos = eyepos player;
|
||||
_eyedist = 0.25;
|
||||
_end = [((_eyePos select 0)+_eyedist*(_weapondir select 0)),((_eyePos select 1)+_eyedist*(_weapondir select 1)),((_eyePos select 2)+_eyedist*(_weapondir select 2))];
|
||||
_objects = lineintersectswith [_eyePos,_end,player];
|
||||
_objects = _objects select {((_x iskindof "Constructions_static_F") and not(_x isKindOf "WoodLargeWall_EPOCH"))};
|
||||
if !(_objects isequalto []) then {
|
||||
player switchCamera "EXTERNAL";
|
||||
_fadedblack = true;
|
||||
TitleText ['Stop BugUsing!','BLACK FADED'];
|
||||
}
|
||||
else {
|
||||
call _UnFadeCheck;
|
||||
};
|
||||
};
|
||||
}
|
||||
else {
|
||||
if(_fadedblack) then {
|
||||
[] spawn {
|
||||
uisleep 2;
|
||||
TitleText ['','PLAIN DOWN'];
|
||||
};
|
||||
_fadedblack = false;
|
||||
};
|
||||
};
|
||||
call _UnFadeCheck;
|
||||
};
|
||||
|
||||
|
@ -427,8 +427,16 @@ if (cameraview isequalto "GROUP") then {
|
||||
vehicle player switchCamera "Internal";
|
||||
};
|
||||
|
||||
if (lifeState player == "INCAPACITATED") then {
|
||||
if ((missionnamespace getvariable ["EPOCH_UnconsciousTime",diag_ticktime]) < diag_ticktime) then {
|
||||
player setUnconscious false;
|
||||
player playMoveNow 'AmovPercMstpSnonWnonDnon';
|
||||
};
|
||||
};
|
||||
|
||||
// force update
|
||||
if (EPOCH_forceUpdateNow) then {
|
||||
_UpdateTopStats = true;
|
||||
_forceUpdate = false;
|
||||
EPOCH_forceUpdate = false;
|
||||
EPOCH_forceUpdateNow = false;
|
||||
|
@ -202,3 +202,18 @@ _playerNuisance = [_playerNuisanceKey,-1,_playerNuisanceMax,_playerNuisanceMin]
|
||||
// calculate max stamina
|
||||
EPOCH_playerStaminaMax = (100 * (round(_playerAliveTime/360)/10)) min 2500;
|
||||
|
||||
if (_isOnFoot) then {
|
||||
_Walkdist = _lastPlayerPos2 distance (getposATL player);
|
||||
if (_Walkdist < 150) then {
|
||||
_TotalWalkDist = _TotalWalkDist + _Walkdist;
|
||||
["WalkDist",_TotalWalkDist,false,true] call EPOCH_client_updatePlayerStat;
|
||||
};
|
||||
};
|
||||
_lastPlayerPos2 = getposATL player;
|
||||
if (_playerAliveTime > _MaxAliveTime) then {
|
||||
_MaxAliveTime = _playerAliveTime;
|
||||
["MaxAliveTime",_MaxAliveTime,false,true] call EPOCH_client_updatePlayerStat;
|
||||
};
|
||||
_PlayTime = _PlayTime + diag_ticktime - _PlayTimeTimer;
|
||||
["PlayTime",_PlayTime,false,true] call EPOCH_client_updatePlayerStat;
|
||||
_PlayTimeTimer = diag_ticktime;
|
||||
|
@ -21,3 +21,4 @@ diag_log format["DEBUG: _spawnUnits %1",_spawnUnits];
|
||||
if !(_spawnUnits isEqualTo[]) then{
|
||||
(selectRandom _spawnUnits) call EPOCH_unitSpawn;
|
||||
};
|
||||
_UpdateTopStats = true;
|
@ -2,4 +2,4 @@
|
||||
call epoch_favBar_refresh;
|
||||
|
||||
// process loot
|
||||
_LootBiasAdd = _LootBiasAdd call _lootBubble;
|
||||
call _lootBubble;
|
||||
|
@ -4,6 +4,9 @@ waitUntil {!isNull (findDisplay 46) && (!isNil "EPOCH_loadingScreenDone")};
|
||||
// load favBar
|
||||
'load' spawn epoch_favBar_draw;
|
||||
|
||||
// Switch to 3rd person (if possible)
|
||||
vehicle player switchCamera 'EXTERNAL';
|
||||
|
||||
// force update within 15 seconds
|
||||
EPOCH_forceUpdate = false;
|
||||
_forceUpdate = false;
|
||||
@ -15,10 +18,15 @@ _clientAliveTimer = diag_tickTime;
|
||||
|
||||
// Fade Black Screen
|
||||
_fadedblack = false;
|
||||
|
||||
// Lootspawner
|
||||
_LootSpawned = false;
|
||||
_LootBiasAdd = 30;
|
||||
_UnFadeCheck = {
|
||||
if(_fadedblack) then {
|
||||
[] spawn {
|
||||
uisleep 1.5;
|
||||
TitleText ['','PLAIN DOWN'];
|
||||
};
|
||||
_fadedblack = false;
|
||||
};
|
||||
};
|
||||
|
||||
// init player stat vars
|
||||
_gmVarsInit = ["CfgEpochClient", "gmVars", [["Temp",98.6],["Hunger",500],["Thirst",500],["Toxicity",0],["Stamina",10],["BloodP",100],["Alcohol",0],["Radiation",0]]] call EPOCH_fnc_returnConfigEntryV2;
|
||||
@ -70,6 +78,7 @@ _customVarLimits = _customVarsInit apply {_x param [2,[]]};
|
||||
if !(isNil "_varNameTmp") then {_varName = _varNameTmp};
|
||||
missionNamespace setVariable [_varName, missionNamespace getVariable [format["EPOCH_player%1",_x], _varDefault]];
|
||||
} forEach _customVarNames;
|
||||
missionNamespace setVariable [call compile "_playerRandomVarKey", round (diag_tickTime + random 99999)];
|
||||
|
||||
// only changed within this loop
|
||||
_playerAliveTime = missionNamespace getVariable [_playerAliveTimeKey, _playerAliveTimeDefault];
|
||||
@ -86,7 +95,14 @@ _fnc_forceUpdate = {
|
||||
if !(isNil "_varNameTmp") then {_varName = _varNameTmp};
|
||||
_customVars pushBack (missionNamespace getVariable [_varName,_defaultVarValues select _foreachindex]);
|
||||
} forEach _customVarNames;
|
||||
[player,_customVars,Epoch_personalToken] remoteExec ["EPOCH_fnc_savePlayer",2];
|
||||
_stats = [
|
||||
["WalkDist",round _TotalWalkDist,true],
|
||||
["MaxAliveTime",_MaxAliveTime,true],
|
||||
["PlayTime", round _PlayTime, true],
|
||||
["PublicStats",missionnamespace getvariable ["EPOCH_totalPublicStats",1], true]
|
||||
];
|
||||
[player,_customVars,Epoch_personalToken,_stats,_UpdateTopStats] remoteExec ["EPOCH_fnc_savePlayer",2];
|
||||
_UpdateTopStats = false;
|
||||
};
|
||||
|
||||
// disable fuel sources client side.
|
||||
@ -122,6 +138,7 @@ _EPOCH_Autorunspeed = 1;
|
||||
// init config data
|
||||
_antagonistRndChance = ["CfgEpochClient", "antagonistRngChance", 100] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
_LootCleanupTime = ["CfgBuildingLootPos", "LootCleanupTime", 300] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_baseRadiationLoss = ["CfgEpochClient", "baseRadiationLoss", -0.1] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_baseRadiationLossImmunityPenalty = ["CfgEpochClient", "baseRadiationLossImmunityPenalty", -0.1] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_baseHungerLoss = ["CfgEpochClient", "baseHungerLoss", 2] call EPOCH_fnc_returnConfigEntryV2;
|
||||
@ -207,93 +224,154 @@ missionNamespace setVariable [_playerSpawnArrayKey, _playerSpawnArray];
|
||||
|
||||
// lootBubble Init
|
||||
_masterConfig = 'CfgBuildingLootPos' call EPOCH_returnConfig;
|
||||
_LootedBuildings = [];
|
||||
|
||||
_lootClasses = [];
|
||||
_lootClassesIgnore = ['Default'];
|
||||
'_cN = configName _x;if !(_cN in _lootClassesIgnore)then{_lootClasses pushBackUnique (toLower _cN)}; true' configClasses _masterConfig;
|
||||
|
||||
_lastPlayerPos = getPosATL player;
|
||||
_pushbacklootedbld = {
|
||||
private ["_lootCheckBufferLimit"];
|
||||
_lootCheckBufferLimit = 333;
|
||||
EPOCH_LootedBlds pushBackUnique _this;
|
||||
if (count EPOCH_LootedBlds >= _lootCheckBufferLimit) then {
|
||||
EPOCH_LootedBlds deleteAt 0;
|
||||
};
|
||||
};
|
||||
_lastPlayerPos2 = getPosATL player;
|
||||
_TotalWalkDist = missionnamespace getvariable ["EPOCH_totalWalkDist",0];
|
||||
_MaxAliveTime = missionnamespace getvariable ["EPOCH_totalMaxAliveTime",0];
|
||||
_PlayTime = missionnamespace getvariable ["EPOCH_totalPlayTime",0];
|
||||
_PlayTimeTimer = diag_ticktime;
|
||||
_UpdateTopStats = false;
|
||||
EPOCH_MyStatsPublic = !((missionnamespace getvariable ["EPOCH_totalPublicStats",1]) isEqualTo 0);
|
||||
|
||||
_lootBubble = {
|
||||
private["_jammer", "_others", "_objects", "_nearObjects", "_building", "_lootDist", "_lootLoc", "_playerPos", "_distanceTraveled","_AddBias","_dir","_minlootdist","_maxlootdist"];
|
||||
_LootBiasAdd = _this;
|
||||
if (!alive player) exitwith {};
|
||||
if (speed vehicle player > 30) exitwith {};
|
||||
_playerPos = getPosATL vehicle player;
|
||||
_distanceTraveled = _lastPlayerPos distance2D _playerPos;
|
||||
_nearestbuilding = nearestBuilding player;
|
||||
if (player distance _nearestbuilding < (((sizeOf (typeOf _nearestbuilding))/2) min 15)) then {
|
||||
private _selectedConfig = typeOf _nearestbuilding;
|
||||
if (_selectedConfig isEqualTo "") then {
|
||||
(getModelInfo _nearestbuilding) params [["_modelName",""]];
|
||||
if (!isnil "_modelName") then {
|
||||
_selectedConfig = (_modelName splitString " .") joinString "_";
|
||||
};
|
||||
};
|
||||
if ((toLower _selectedConfig) in _lootClasses) then {
|
||||
_nearestbuilding call _pushbacklootedbld;
|
||||
};
|
||||
if (_lastPlayerPos distance2D _playerPos < 30) exitwith {};
|
||||
_lastPlayerPos = _playerPos;
|
||||
if (missionnamespace getvariable ["InSafeZone",false]) exitwith {};
|
||||
_objects = (player nearObjects ["Building", 60]) select {
|
||||
(_x distance player > 15) &&
|
||||
{!(_x in _LootedBuildings)} &&
|
||||
{(_x nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 15]) isEqualTo []} &&
|
||||
{(_x nearObjects ["PlotPole_Epoch", 100]) isEqualTo []} &&
|
||||
{(_x nearObjects ["ProtectionZone_Invisible_F", 25]) isEqualTo []} &&
|
||||
{!(_x getvariable ["EPOCH_Skiploot",false])} &&
|
||||
{!(isObjectHidden _x)}
|
||||
};
|
||||
if (_distanceTraveled > 10) then {
|
||||
_lastPlayerPos = _playerPos;
|
||||
if (_distanceTraveled < 100) then {
|
||||
_minlootdist = 30;
|
||||
_maxlootdist = 75;
|
||||
_dir = 30;
|
||||
if (speed (vehicle player) < 30) then {
|
||||
_LootBiasAdd = (_LootBiasAdd + 0.5) min 50;
|
||||
_minlootdist = 15;
|
||||
_maxlootdist = 50;
|
||||
_dir = 45;
|
||||
// systemchat format ["Found %1 not looted Buildings", count _objects];
|
||||
if !(_objects isEqualTo[]) then {
|
||||
_LootsArray = [];
|
||||
{
|
||||
_building = _x;
|
||||
_LootedBuildings pushback _x;
|
||||
if (count _LootedBuildings > 300) then {
|
||||
_LootedBuildings deleteat 0;
|
||||
};
|
||||
_lootDist = (_distanceTraveled max _minlootdist) min _maxlootdist;
|
||||
_lootLoc = player getRelPos [_lootDist, (random [-_dir,0,_dir])];
|
||||
if (surfaceiswater _lootLoc) then {
|
||||
_lootLoc set [2,(getPosASL vehicle player) select 2];
|
||||
// _building setvariable ["Epoch_LastLootCheck",diag_ticktime];
|
||||
_selectedConfig = typeOf _building;
|
||||
if (_selectedConfig isEqualTo "") then {
|
||||
(getModelInfo _building) params [["_modelName",""]];
|
||||
if (!isnil "_modelName") then {
|
||||
_selectedConfig = (_modelName splitString " .") joinString "_";
|
||||
};
|
||||
};
|
||||
_objects = (nearestObjects [_lootLoc, [], 50]) select {
|
||||
!(_x in EPOCH_LootedBlds) &&
|
||||
{_x distance player > _minlootdist} &&
|
||||
{_x distance player < _maxlootdist} &&
|
||||
{
|
||||
private _selectedConfig = typeOf _x;
|
||||
if (_selectedConfig isEqualTo "") then {
|
||||
(getModelInfo _x) params [["_modelName",""]];
|
||||
if (!isnil "_modelName") then {
|
||||
_selectedConfig = (_modelName splitString " .") joinString "_";
|
||||
_BuildingLootVars = missionnamespace getvariable [format ["Epoch_BuildingLootVars_%1",_selectedConfig],[]];
|
||||
if (_BuildingLootVars isEqualTo []) then {
|
||||
if (_foreachindex > 10) exitwith { // Do not store / check more than 10 Building Types in one check
|
||||
_BuildingLootVars = [false];
|
||||
};
|
||||
_config = _masterConfig >> _selectedConfig;
|
||||
if (isClass(_config)) then {
|
||||
_lootType = getText(_config >> "lootType");
|
||||
_EpochLootChance = getNumber (_config >> "EpochLootChance");
|
||||
_limit = getNumber (_config >> "limit");
|
||||
_GroundSpawnChance = getNumber (_config >> "GroundSpawnChance");
|
||||
_MinGroundContainers = getNumber (_config >> "MinGroundContainers");
|
||||
_MaxGroundContainers = getNumber (_config >> "MaxGroundContainers");
|
||||
_loots = getArray(_config >> "loottypes");
|
||||
_lootpositions = [];
|
||||
_possibleLoots = [];
|
||||
{
|
||||
_x params ["_posNameTMP","_class","_randomColor"];
|
||||
_posName = _posNameTMP;
|
||||
_positions = getArray(_config >> _posName);
|
||||
{
|
||||
_possibleLoots pushBack [_class,_randomColor,_x];
|
||||
if !((tolower _posName) in ["cabinetpos","toolrackpos"]) then {
|
||||
_LootPositions = _LootPositions + getArray (_config >> _posName);
|
||||
};
|
||||
} forEach _positions;
|
||||
} forEach _loots;
|
||||
_BuildingLootVars = [true,_lootType,_EpochLootChance,_limit,_GroundSpawnChance,_MinGroundContainers,_MaxGroundContainers,_possibleLoots,_lootpositions];
|
||||
};
|
||||
if (_BuildingLootVars isEqualTo []) then {
|
||||
_BuildingLootVars = [false];
|
||||
};
|
||||
missionnamespace setvariable [format ["Epoch_BuildingLootVars_%1",_selectedConfig],_BuildingLootVars];
|
||||
};
|
||||
_BuildingLootVars params ["_DoSpawn","_lootType","_EpochLootChance","_limit","_GroundSpawnChance","_MinGroundContainers","_MaxGroundContainers","_possibleLoots","_lootpositions"];
|
||||
if (_DoSpawn) then {
|
||||
_possibleLoots = +_possibleLoots;
|
||||
_lootpositions = +_lootpositions;
|
||||
_buildingLoot = [];
|
||||
if ((random 100) < _EpochLootChance) then {
|
||||
_buildingLoot = [_building,"EpochLoot",[]];
|
||||
if !(_possibleLoots isEqualTo []) then {
|
||||
_lootLimit = (round random _limit) max 1;
|
||||
for "_i" from 1 to _lootLimit do {
|
||||
_possibleCount = count _possibleLoots;
|
||||
if (_possibleCount > 0) then {
|
||||
_randomIndex = (floor random(_possibleCount));
|
||||
_selectedLoot = _possibleLoots deleteAt _randomIndex;
|
||||
_selectedLoot params ["_class","_randomColor","_position"];
|
||||
_position params ["_m2WPos","_relDir"];
|
||||
_pos = _building modelToWorld _m2WPos;
|
||||
if (_pos select 2 < 0) then {
|
||||
_pos set[2, 0];
|
||||
};
|
||||
if (_class isEqualType []) then {
|
||||
_class = selectRandom _class;
|
||||
};
|
||||
_dir = _relDir + (getDir _building);
|
||||
_color = "";
|
||||
if (_randomColor isEqualTo "true") then {
|
||||
_colors = getArray(_cfgBaseBuilding >> _class >> "availableTextures");
|
||||
if !(_colors isEqualTo[]) then {
|
||||
_color = selectRandom _colors;
|
||||
};
|
||||
};
|
||||
(_buildingLoot select 2) pushback [_class, _pos, _dir, _color];
|
||||
};
|
||||
};
|
||||
};
|
||||
((toLower _selectedConfig) in _lootClasses)
|
||||
}
|
||||
};
|
||||
if (count _objects > 4) then { // remove the farthest away buildings
|
||||
_objects resize 4;
|
||||
};
|
||||
// diag_log format["DEBUG: loot objects %1",_objects];
|
||||
_jammer = ((nearestObjects [_lootLoc, call EPOCH_JammerClasses, ((call EPOCH_MaxJammerRange) + 50)]) select {_x distance _lootLoc < ((getnumber (getmissionconfig "cfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))+50)}) + (_lootLoc nearObjects ["ProtectionZone_Invisible_F", 25]);
|
||||
if (!(_objects isEqualTo[]) && (_jammer isEqualTo[])) then {
|
||||
_building = selectRandom _objects;
|
||||
if (_building getvariable ["EPOCH_Skiploot",false]) exitwith {};
|
||||
if !(_building in EPOCH_LootedBlds) then {
|
||||
_others = _building nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 15];
|
||||
if (_others isEqualTo[]) then {
|
||||
_nearObjects = nearestObjects[_building, ["WH_Loot", "Animated_Loot"], 25 min ((sizeOf (typeOf _building))/2)];
|
||||
//diag_log format["DEBUG: sizeof %1 %2",sizeOf (typeOf _building), typeOf _building];
|
||||
if (_nearObjects isEqualTo[]) then {
|
||||
_building call _pushbacklootedbld;
|
||||
_LootBiasAdd = if ([_building,_LootBiasAdd] call EPOCH_spawnLoot) then {(_LootBiasAdd - 7) max 0} else {_LootBiasAdd};
|
||||
else {
|
||||
if ((random 100) < _GroundSpawnChance) then {
|
||||
_buildingLoot = [_building,"GroundLoot",[]];
|
||||
if !(_lootpositions isEqualTo []) then {
|
||||
for "_i" from 1 to (_MinGroundContainers + (round (random (_MaxGroundContainers - _MinGroundContainers)))) do {
|
||||
if ((count _lootpositions) > 0) then {
|
||||
_position = _lootpositions deleteat (floor (random (count _lootpositions)));
|
||||
_position params ["_m2WPos","_relDir"];
|
||||
_pos = _building modelToWorld _m2WPos;
|
||||
_pos = _pos vectoradd [0,0,0.02];
|
||||
if (_pos select 2 < 0) then {
|
||||
_pos set[2, 0];
|
||||
};
|
||||
(_buildingLoot select 2) pushback [_lootType,_pos];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
if !(_buildingLoot isEqualTo []) then {
|
||||
_LootsArray pushback _buildingLoot;
|
||||
};
|
||||
};
|
||||
} foreach _objects;
|
||||
// systemchat format ["Spawned Loot in %1 Buildings", count _LootsArray];
|
||||
if !(_LootsArray isEqualTo []) then {
|
||||
[player,Epoch_personalToken,_LootsArray] remoteExec ["EPOCH_server_spawnLoot",2];
|
||||
};
|
||||
};
|
||||
_LootBiasAdd
|
||||
};
|
||||
|
||||
// init weather temperature var if not already set
|
||||
|
@ -153,9 +153,26 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
|
||||
lnbSetValue [_TraderItemsBox, [_id,0], _rounds];
|
||||
lnbSetPicture [_TraderItemsBox, [_id,0], _item call EPOCH_itemPicture];
|
||||
if !(_tooltip isequalto "") then {
|
||||
lbSetTooltip [_TraderItemsBox, _id*3, _tooltip];
|
||||
lnbSetColor [_TraderItemsBox,[_id,2],[1,(_rounds/_maxrnd),0,1]];
|
||||
};
|
||||
_description = "";
|
||||
{
|
||||
_description = gettext (configfile >> _x >> _item >> "descriptionShort");
|
||||
if !(_description isEqualTo "") exitwith {
|
||||
{
|
||||
while {_description find (_x select 0) > -1} do {
|
||||
_remove = _description find (_x select 0);
|
||||
_description = (_description select [0,_remove]) + "\n" + (_description select [(_remove+(_x select 1))]);
|
||||
};
|
||||
if !(_tooltip isEqualTo "") then {
|
||||
_tooltip = _tooltip + "\n";
|
||||
};
|
||||
} foreach [["<br />",6],["<br/>",5]];
|
||||
|
||||
};
|
||||
} foreach ["cfgmagazines","cfgweapons","cfgvehicles"];
|
||||
_tooltip = _tooltip + _description;
|
||||
lbSetTooltip [_TraderItemsBox, _id*3, _tooltip];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -0,0 +1,77 @@
|
||||
_this spawn {
|
||||
params ["_Building","_Vehicle",["_Textures",[]]];
|
||||
_PaintingCosts = getnumber (missionconfigfile >> "CfgPainting" >> "DefaultVehicle" >> "PaintingCosts");
|
||||
if (isclass (missionconfigfile >> "CfgPainting" >> (typeof _Vehicle))) then {
|
||||
_PaintingCosts = getnumber (missionconfigfile >> "CfgPainting" >> (typeof _Vehicle) >> "PaintingCosts");
|
||||
};
|
||||
if (EPOCH_playerCrypto < _PaintingCosts) exitWith {
|
||||
_line = format ['You need %1 Crypto for Painting', _PaintingCosts];
|
||||
[_line,5] call Epoch_message;
|
||||
};
|
||||
_ok = true;
|
||||
_Check1 = {
|
||||
_out1 = true;
|
||||
if (_Vehicle distance2D _Building > 2.5) exitwith {
|
||||
["Park in center of the Garage",5] call Epoch_Message;
|
||||
false
|
||||
};
|
||||
if !((crew _Vehicle) isEqualTo []) exitwith {
|
||||
["All passengers have to leave the Vehicle",5] call Epoch_Message;
|
||||
false
|
||||
};
|
||||
{
|
||||
_playerPosASL = visiblePositionASL _x;
|
||||
_abovePlayerPosASL = [_playerPosASL select 0,_playerPosASL select 1,(_playerPosASL select 2) + 15];
|
||||
if (lineIntersects [_playerPosASL, _abovePlayerPosASL, _x]) exitwith {
|
||||
["All Players have to leave the Garage",5] call Epoch_Message;
|
||||
_out1 = false;
|
||||
};
|
||||
} foreach (_Building nearentities ["MAN",(sizeof (typeof _Building))/2]);
|
||||
_out1
|
||||
};
|
||||
_DoorCheck = {
|
||||
(_building animationPhase "Lroll_door") < 0.1
|
||||
};
|
||||
_Animate = {
|
||||
_Building animate ["Lroll_door",_this];
|
||||
_Building animate ["Uroll_door",_this];
|
||||
_Building animate ["door_2",if (_this == 1) then {0} else {1}];
|
||||
};
|
||||
if !(call _Check1) exitwith {};
|
||||
0 call _Animate;
|
||||
waituntil {uisleep 0.2; !(call _Check1) || call _DoorCheck};
|
||||
if !(call _DoorCheck) exitwith {};
|
||||
_smokes = [];
|
||||
_smokeclasses = ["SmokeShellOrange","SmokeShellBlue","SmokeShellPurple","SmokeShellRed","SmokeShellGreen","SmokeShellYellow"];
|
||||
for "_i" from 0 to 5 do {
|
||||
_pos = switch _i do {
|
||||
case 0: {[-1.5,2,-0.35]};
|
||||
case 1: {[1.5,2,-0.35]};
|
||||
case 2: {[-1.5,-2,-0.35]};
|
||||
case 3: {[1.5,-2,-0.35]};
|
||||
case 4: {[0,0,-0.35]};
|
||||
default {[0,0,0]};
|
||||
};
|
||||
if !(call _DoorCheck) exitwith {};
|
||||
_smoke = (_smokeclasses deleteat 0) createVehicle getPosATL _Vehicle;
|
||||
_smoke attachTo [_Vehicle,_pos];
|
||||
_smokes pushback _smoke;
|
||||
uisleep 3.5;
|
||||
};
|
||||
if !(call _DoorCheck) exitwith {
|
||||
["Painting Abort - Someone has opened the Door",5] call Epoch_Message;
|
||||
{
|
||||
deletevehicle _x;
|
||||
} foreach _smokes;
|
||||
1 call _Animate;
|
||||
};
|
||||
if !(_Textures isEqualTo []) then {
|
||||
[_vehicle,_PaintingCosts,_Textures,player,Epoch_personalToken] remoteexec ['epoch_server_paintvehicle',2];
|
||||
};
|
||||
{
|
||||
deletevehicle _x;
|
||||
} foreach _smokes;
|
||||
uisleep 5;
|
||||
["Painting finished! Thank you very much...",5] call Epoch_Message;
|
||||
1 call _Animate;
|
||||
};
|
21
Sources/epoch_code/customs/EPOCH_custom_EH_HandleDamage.sqf
Normal file
21
Sources/epoch_code/customs/EPOCH_custom_EH_HandleDamage.sqf
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Custom A3 Epoch HandleDamage Eventhandler
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/custom/EPOCH_custom_EH_HandleDamage.sqf
|
||||
*/
|
||||
params ["_unit", "_selection", "_damage", "_source", "_projectile", "_hitIndex", "_instigator", "_hitPoint"];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
_damage
|
@ -74,7 +74,7 @@ _respawnButton ctrlEnable false;
|
||||
(isNull _display) || ((_startTime - diag_tickTime) <= 0)
|
||||
};
|
||||
if (!isNull _display) then {
|
||||
player setUnitLoadout (getUnitLoadout player);
|
||||
call (missionnamespace getvariable ["EPOCH_ReloadLoadout",{}]);
|
||||
uisleep 1; // give one second to broadcast clothing change
|
||||
missionnamespace setvariable ["EPOCH_forceUpdateNow",true];
|
||||
};
|
||||
|
@ -28,7 +28,7 @@ if !(false call EPOCH_crafting_checkResources) exitWith {};
|
||||
//craft button
|
||||
[] spawn {
|
||||
|
||||
private ["_GiveBackRounds","_TotalroundsIn","_TotalMaxRoundsIn","_roundsCheck","_maxMagrnd","_maxMagRndTmp","_roundsCheckTmp","_magsammosearched","_craftReturn","_needBench","_craftCount","_fnc_UILock","_itemCraftTime","_selection","_craftItem","_item","_itemName","_itemCraftTime","_itemRecipeItems","_itemType","_nearbyReq","_hasNearby","_canCraft","_wH","_nearByHolder","_wHPos"];
|
||||
private ["_GiveBackRounds","_TotalroundsIn","_TotalMaxRoundsIn","_roundsCheck","_maxMagrnd","_maxMagRndTmp","_roundsCheckTmp","_magsammosearched","_craftReturn","_needBench","_craftCount","_fnc_UILock","_itemCraftTime","_selection","_craftItem","_item","_itemName","_itemCraftTime","_itemRecipeItems","_itemType","_nearbyReq","_hasNearby","_canCraft","_wH","_nearByHolder","_wHPos","_craftedcount"];
|
||||
disableSerialization;
|
||||
|
||||
_fnc_UILock = {
|
||||
@ -55,6 +55,8 @@ if !(false call EPOCH_crafting_checkResources) exitWith {};
|
||||
_craftReturn = _craftItem param [16,[]];
|
||||
|
||||
_BulletCalculateOnCraft = ["CfgEpochClient", "BulletCalculateOnCraft", false] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
_craftedcount = 0;
|
||||
|
||||
for "_c" from 1 to rmx_var_craftQTYOut do {
|
||||
false call _fnc_UILock;
|
||||
@ -131,6 +133,10 @@ if !(false call EPOCH_crafting_checkResources) exitWith {};
|
||||
} forEach _craftReturn;
|
||||
|
||||
call EPOCH_crafting_LB_click;
|
||||
_craftedcount = _craftedcount + 1;
|
||||
};
|
||||
if (_craftedcount > 0) then {
|
||||
["CraftedItems",_craftedcount,true] call EPOCH_client_updatePlayerStat;
|
||||
};
|
||||
call EPOCH_crafting_LB_defaults;
|
||||
true call _fnc_UILock;
|
||||
|
@ -53,6 +53,26 @@ _checkConfigs = {
|
||||
_cfg = "CfgBaseBuilding" call EPOCH_returnConfig;
|
||||
(_cfg >> dyna_cursorTargetType)
|
||||
};
|
||||
case "PaintGarage":
|
||||
{
|
||||
private _garagevehs = nearestobjects [dyna_cursorTarget,["LandVehicle","AIR"],10];
|
||||
if (_garagevehs isEqualTo []) exitwith {
|
||||
["No Paintable Vehicle found in Garage",5] call Epoch_message;
|
||||
(_cfg >> _selfOrTarget)
|
||||
};
|
||||
private _cfgtmp = "CfgPainting" call EPOCH_returnConfig;
|
||||
_garageveh = _garagevehs select 0;
|
||||
private _isclass = isclass (_cfgtmp >> (typeof _garageveh));
|
||||
if (!_isclass && (("true" configClasses (configFile >> "CfgVehicles" >> (typeof _garageveh) >> "TextureSources")) isEqualTo [])) exitwith {
|
||||
["No Paintable Vehicle found in Garage",5] call Epoch_message;
|
||||
(_cfg >> _selfOrTarget)
|
||||
};
|
||||
dyna_Paintobj = _garageveh;
|
||||
if (_isclass) exitwith {
|
||||
(_cfgtmp >> (typeof _garageveh))
|
||||
};
|
||||
(_cfgtmp >> "DefaultVehicle")
|
||||
};
|
||||
case "":
|
||||
{
|
||||
(_cfg >> _selfOrTarget)
|
||||
@ -97,6 +117,56 @@ _checkConfigs = {
|
||||
} forEach (getArray (_config >> "upgradeBuilding"));
|
||||
|
||||
|
||||
};
|
||||
case "PaintGarage":
|
||||
{
|
||||
if !(isClass _config) exitWith {_in = "";};
|
||||
private _usedefaultcolors = tolower (gettext (_config >> "UseArmaDefaultColors"));
|
||||
_icon = gettext (_config >> "icon");
|
||||
if (_usedefaultcolors isEqualTo "true") then {
|
||||
{
|
||||
private _textures = getarray (_x >> "textures");
|
||||
_tooltip = gettext (_x >> "displayName");
|
||||
_iconcolor = [1,1,1,1];
|
||||
{
|
||||
if ((tolower _tooltip) find (_x select 0) > -1) exitwith {
|
||||
_iconcolor = _x select 1;
|
||||
};
|
||||
} foreach [
|
||||
["red",[1,0,0,1]],
|
||||
["green",[0,1,0,1]],
|
||||
["blue",[0,0,1,1]],
|
||||
["yellow",[1,1,0,1]],
|
||||
["white",[1,1,1,1]],
|
||||
["black",[0,0,0,1]],
|
||||
["grey",[0.5, 0.5, 0.5, 1]],
|
||||
["orange",[1, 0.9, 0, 1]],
|
||||
["hex",[0.74, 0.72, 0.42, 1]],
|
||||
["sand",[1, 0.9, 0.8, 1]],
|
||||
["olive",[0.33, 0.42, 0.185, 1]]
|
||||
];
|
||||
_action = format ["[dyna_cursorTarget,dyna_Paintobj,%1] call EPOCH_vehicle_Paintgarage; true call Epoch_dynamicMenuCleanup;",_textures];
|
||||
_buttonSettings pushBack [
|
||||
_icon,
|
||||
_tooltip,
|
||||
_action,
|
||||
_iconcolor
|
||||
];
|
||||
} foreach ("true" configClasses (configFile >> "CfgVehicles" >> (typeof dyna_Paintobj) >> "TextureSources"));
|
||||
};
|
||||
{
|
||||
_tooltip = gettext (_x >> "ColorName");
|
||||
_iconcolor = getarray (_x >> "iconcolor");
|
||||
private _textures = getarray (_x >> "textures");
|
||||
if (_textures isEqualTo []) exitwith {_in = "";};
|
||||
_action = format ["[dyna_cursorTarget,dyna_Paintobj,%1] call EPOCH_vehicle_Paintgarage; true call Epoch_dynamicMenuCleanup;",_textures];
|
||||
_buttonSettings pushBack [
|
||||
_icon,
|
||||
_tooltip,
|
||||
_action,
|
||||
_iconcolor
|
||||
];
|
||||
} forEach (configProperties [_config, "isClass _x",true]);
|
||||
};
|
||||
default
|
||||
{
|
||||
|
@ -88,6 +88,13 @@ for "_e" from 0 to (_entries - 1) do {
|
||||
_ctrl2 ctrlSetTooltipColorBox [0, 0, 0, 0];
|
||||
_ctrl2 ctrlSetTooltipColorShade [0, 0, 0, 0];
|
||||
_ctrl2 ctrlSetText (_buttonSettings select _e select 0);
|
||||
if (count (_buttonSettings select _e) > 3) then {
|
||||
if ((_buttonSettings select _e select 3) isEqualType []) then {
|
||||
if !((_buttonSettings select _e select 3) isEqualTo []) then {
|
||||
_ctrl2 ctrlSetTextColor (_buttonSettings select _e select 3);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_ctrl2 ctrlSetPosition [0.5,0.5,0,0];
|
||||
_ctrl2 ctrlCommit 0;
|
||||
|
@ -89,6 +89,9 @@ EPOCH_maxBuildingHeight = ["CfgEpochClient", "maxBuildingHeight", 100] call EPOC
|
||||
EPOCH_MaxBuildingTilt = ["CfgEpochClient", "MaxBuildingTilt", 180] call EPOCH_fnc_returnConfigEntryV2;
|
||||
Epoch_NuisanceMulti = ["CfgEpochClient", "NuisanceMulti", 0.5] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
// Use Eventhandler "Fired" on Reviver instead of Eventhandler "HandeDamage" on Client to be revived for Heal / Revive Player
|
||||
EPOCH_OldRevive = ["CfgEpochClient", "UseOldRevive", false] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
//ON INIT and RESPAWN
|
||||
call EPOCH_clientInit;
|
||||
|
||||
|
@ -51,6 +51,8 @@ class CfgActionMenu
|
||||
|
||||
dyna_AtHome = "call {_nearjammers = (nearestObjects[player, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {player distance _x < (getnumber (getmissionconfig 'cfgEpochClient' >> 'CfgJammers' >> (typeof _x) >> 'buildingJammerRange'))};if (_nearjammers isEqualTo []) exitwith {false};_nearestJammer = _nearjammers select 0;((_nearestJammer getVariable['BUILD_OWNER', '-1']) in[getPlayerUID player, Epoch_my_GroupUID])}";
|
||||
dyna_Watersource = "call {_nearObjects = nearestObjects [player, [], 2];_check = 'water';_ok = false;{if (alive _x) then {_ok = [_x, _check] call EPOCH_worldObjectType;};if (_ok) exitWith {};} forEach _nearObjects;_ok}";
|
||||
dyna_DirtyWatersource = "((surfaceiswater position player) && (position player isFlatEmpty [-1, -1, -1, -1, 0, true] isEqualTo []) && (getPosASL player select 2 > 2) && (getPosATL player select 2 < 0.1))";
|
||||
dyna_Paintobj = "objnull"; // <--- internal use only!
|
||||
};
|
||||
|
||||
class self
|
||||
|
@ -115,7 +115,7 @@ class base_mode_attach
|
||||
};
|
||||
class Drink
|
||||
{
|
||||
condition = "dyna_Watersource";
|
||||
condition = "dyna_Watersource || dyna_DirtyWatersource";
|
||||
action = "if (currentweapon player == '') then {player playmove 'AinvPknlMstpSnonWnonDnon_Putdown_AmovPknlMstpSnonWnonDnon';}else {if (currentweapon player == handgunweapon player) then {player playmove 'AinvPknlMstpSrasWpstDnon_Putdown_AmovPknlMstpSrasWpstDnon';}else { player playmove 'AinvPknlMstpSrasWrflDnon_Putdown_AmovPknlMstpSrasWrflDnon';};};{_output = _x call EPOCH_giveAttributes;if (_output != '') then {[_output, 5] call Epoch_message_stack;};} foreach [['Thirst',100],['Toxicity',1,1],['Stamina',10]];";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Drink.paa";
|
||||
tooltip = "Drink";
|
||||
@ -275,4 +275,4 @@ class Epad
|
||||
action = "if (isnull (finddisplay 9898)) then {createdialog 'epoch_tablet_gui';};";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Epad.paa";
|
||||
tooltip = "E-Pad";
|
||||
};
|
||||
};
|
||||
|
@ -22,6 +22,14 @@ class build_upgrade
|
||||
tooltipcode = "format['Upgrade %1',getText(configFile >> 'CfgVehicles' >> (typeof dyna_cursorTarget) >> 'displayName')]";
|
||||
class special {}; //uses external config, hardcoded
|
||||
};
|
||||
class PaintGarage
|
||||
{
|
||||
condition = "(dyna_cursortargettype isEqualTo 'paintshop' && {player distance2d (dyna_cursorTarget modelToWorld (dyna_cursorTarget selectionPosition 'action1')) < 1.5}) || dyna_cursortargettype in ['Add other Buildings here']";
|
||||
action = "";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Paint.paa";
|
||||
tooltip = "Paint Garage";
|
||||
class special {}; //uses external config, hardcoded
|
||||
};
|
||||
class build_remove
|
||||
{
|
||||
condition = "dyna_buildMode select 1";
|
||||
@ -131,14 +139,14 @@ class lock_lockbox
|
||||
};
|
||||
class unlock_safe
|
||||
{
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','Safe_s_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
action = "dyna_cursorTarget call Epoch_secureStorageHandler";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\pad_can_unlock.paa";
|
||||
tooltip = "Unlock Safe";
|
||||
};
|
||||
class lock_safe
|
||||
{
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && !(dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','Safe_s_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && !(dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
action = "dyna_cursorTarget call Epoch_secureStorageHandler";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\pad_cannot_lock.paa";
|
||||
tooltip = "Lock Safe";
|
||||
@ -154,7 +162,7 @@ class pack_lockbox
|
||||
};
|
||||
class pack_safe
|
||||
{
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','Safe_s_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
action = "[dyna_cursorTarget,player,Epoch_personalToken] remoteExec ['EPOCH_server_packStorage',2];";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_pack.paa";
|
||||
tooltip = "Pack Safe";
|
||||
@ -596,7 +604,7 @@ class BaseCam
|
||||
class ConnectUAV
|
||||
{
|
||||
condition = "(dyna_cursorTarget iskindof 'UAV_01_base_F' || dyna_cursorTarget iskindof 'UAV_06_base_F') && alive dyna_cursorTarget";
|
||||
action = "if ({_x in (assigneditems player)} count ['B_UavTerminal','O_UavTerminal','I_UavTerminal','C_UavTerminal'] > 0) then {dyna_cursorTarget spawn {_unit = _this;if (isnull (driver _unit)) then {_plyr = player;_grp = createGroup side _plyr;_driver = _grp createUnit[""I_UAV_AI"", position _unit, [], 0, ""CAN_COLLIDE""];_driver moveInAny _unit;uisleep 0.5;};player action [""SwitchToUAVDriver"", _unit];};}else {['You need an UAV-Terminal to connect',5] call epoch_message;};";
|
||||
action = "if (missionnamespace getvariable ['insafezone',false]) exitwith {['Not allowed in Safe Zones',5] call Epoch_Message};if !({_x in (assigneditems player)} count ['B_UavTerminal','O_UavTerminal','I_UavTerminal','C_UavTerminal'] > 0) exitwith {['You need an UAV-Terminal to connect',5] call epoch_message;}; dyna_cursorTarget spawn {_unit = _this;if (isnull (driver _unit)) then {_plyr = player;_grp = createGroup side _plyr;_driver = _grp createUnit[""I_UAV_AI"", position _unit, [], 0, ""CAN_COLLIDE""];_driver moveInAny _unit;uisleep 0.5;};player action [""SwitchToUAVDriver"", _unit];_unit setvariable ['Ignatz_UavOwner',name player,true];};";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\epoch_UAV.paa";
|
||||
tooltip = "Connect to UAV";
|
||||
};
|
||||
|
@ -177,7 +177,7 @@ class CfgBaseBuilding
|
||||
removeParts[] = {{"KitSolarGen",1}};
|
||||
powerCapacity = 10;
|
||||
powerType = 1;
|
||||
GhostPreview = "SolarGen_EPOCH";
|
||||
GhostPreview = "SolarGen_Ghost_EPOCH";
|
||||
staticClass = "SolarGen_EPOCH";
|
||||
simulClass = "SolarGen_SIM_EPOCH";
|
||||
};
|
||||
@ -185,6 +185,7 @@ class CfgBaseBuilding
|
||||
{
|
||||
removeParts[] = {};
|
||||
};
|
||||
class SolarGen_Ghost_EPOCH : SolarGen_SIM_EPOCH {};
|
||||
class PlotPole_EPOCH : Default
|
||||
{
|
||||
upgradeBuilding[] = {{"PlotPole_M_EPOCH",{{"ItemCorrugatedLg",5},{"EnergyPackLg",2},{"CircuitParts",3},{"ItemBattery",3},{"ItemPipe",1}}}};
|
||||
@ -1425,7 +1426,7 @@ class CfgBaseBuilding
|
||||
limitNearby = 2;
|
||||
isSecureStorage = 1;
|
||||
};
|
||||
class Safe_s_SIM_EPOCH : Safe_EPOCH
|
||||
class Safe_s_SIM_EPOCH : Safe_s_EPOCH
|
||||
{
|
||||
returnOnPack[] = {};
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -54,6 +54,8 @@ class CfgClientFunctions
|
||||
class DefibrillatorUse {};
|
||||
class CamUse {};
|
||||
class DefuseBomb {};
|
||||
class PlayerStatsDialog {};
|
||||
class ServerStatsDialog {};
|
||||
};
|
||||
class building
|
||||
{
|
||||
@ -101,6 +103,7 @@ class CfgClientFunctions
|
||||
{
|
||||
class getInMan {};
|
||||
class getOutMan {};
|
||||
class HandleDamage {};
|
||||
class InventoryClosed {};
|
||||
class InventoryOpened {};
|
||||
};
|
||||
@ -172,6 +175,7 @@ class CfgClientFunctions
|
||||
class fnc_createLocalMarkerSet {};
|
||||
class fnc_deleteLocalMarkerSet {};
|
||||
class fnc_AnimateScheduled {};
|
||||
class fnc_SetFinalDir {};
|
||||
};
|
||||
class environment
|
||||
{
|
||||
@ -194,6 +198,7 @@ class CfgClientFunctions
|
||||
class vehicle_checkTurretAmmo {};
|
||||
class vehicle_removeTurretAmmo {};
|
||||
class vehicle_ChangeLicensePlate {};
|
||||
class vehicle_Paintgarage {};
|
||||
};
|
||||
class missions
|
||||
{
|
||||
@ -212,10 +217,18 @@ class CfgClientFunctions
|
||||
class maxArmorInit {};
|
||||
class initUI {};
|
||||
class refeshUI {};
|
||||
class equip {};
|
||||
class equip {
|
||||
customHeader = 1;
|
||||
};
|
||||
class itemTypeSlot {};
|
||||
class usedItemRepack {};
|
||||
class CryptoButtons {};
|
||||
class SetUnitLoadout {
|
||||
customHeader = 1;
|
||||
};
|
||||
class ReloadLoadout {
|
||||
customHeader = 1;
|
||||
};
|
||||
};
|
||||
class servicepoint
|
||||
{
|
||||
@ -232,6 +245,7 @@ class CfgClientFunctions
|
||||
class custom_EH_FiredNear {};
|
||||
class custom_EH_GetInMan {};
|
||||
class custom_EH_GetOutMan {};
|
||||
class custom_EH_HandleDamage {};
|
||||
class custom_EH_Hit {};
|
||||
class custom_EH_InventoryClosed {};
|
||||
class custom_EH_InventoryOpened {};
|
||||
@ -253,10 +267,6 @@ class CfgClientFunctions
|
||||
class message_old1 {};
|
||||
class message_old2 {};
|
||||
};
|
||||
class looting
|
||||
{
|
||||
class spawnLoot {};
|
||||
};
|
||||
class gui
|
||||
{
|
||||
file = "epoch_code\gui\scripts";
|
||||
|
@ -99,7 +99,7 @@ class CfgDisabledCommands
|
||||
args[] = {{},{"ARRAY"}};
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
class FORCEADDUNIFORM
|
||||
{
|
||||
class SYNTAX1
|
||||
@ -108,7 +108,7 @@ class CfgDisabledCommands
|
||||
args[] = {{"OBJECT"},{"STRING"}};
|
||||
};
|
||||
};
|
||||
|
||||
*/
|
||||
class REMOVEALLMPEVENTHANDLERS
|
||||
{
|
||||
class SYNTAX1
|
||||
|
@ -113,6 +113,17 @@ class e_pad_config
|
||||
ToggleVar = "EPOCH_AutoEarplug";
|
||||
ToggleAble = "true";
|
||||
};
|
||||
class PublicStats {
|
||||
ButtonText = "";
|
||||
Description = "Public Stats";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\epad\ServerStats.paa";
|
||||
color[] = {1,0,0,1};
|
||||
colortoggled[] = {0,1,0,1};
|
||||
action = "EPOCH_totalPublicStats = if (EPOCH_MyStatsPublic) then {0} else {1};EPOCH_forceUpdateNow = true";
|
||||
Tooltip = "Enable / Disable your Stats in Server Stats";
|
||||
ToggleVar = "EPOCH_MyStatsPublic";
|
||||
ToggleAble = "true";
|
||||
};
|
||||
class Reset {
|
||||
ButtonText = "Reset";
|
||||
Description = "Reset Settings";
|
||||
@ -285,5 +296,29 @@ class e_pad_config
|
||||
ToggleVar = "";
|
||||
ToggleAble = "false";
|
||||
};
|
||||
class PlayerStats
|
||||
{
|
||||
ButtonText = "";
|
||||
Description = "Player Statistic";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\epad\PlayerStats.paa";
|
||||
color[] = {0,0,1,1};
|
||||
colortoggled[] = {0,1,0,1};
|
||||
action = "if (isnull (finddisplay -1200)) then {createdialog 'PlayerStatsDialog'};";
|
||||
Tooltip = "Player Statistic";
|
||||
ToggleVar = "";
|
||||
ToggleAble = "false";
|
||||
};
|
||||
class ServerStats
|
||||
{
|
||||
ButtonText = "";
|
||||
Description = "Server Statistic";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\epad\ServerStats.paa";
|
||||
color[] = {0,0,1,1};
|
||||
colortoggled[] = {0,1,0,1};
|
||||
action = "if (isnull (finddisplay -1200)) then {createdialog 'ServerStatsDialog'};";
|
||||
Tooltip = "Server Statistic";
|
||||
ToggleVar = "";
|
||||
ToggleAble = "false";
|
||||
};
|
||||
};
|
||||
};
|
@ -14,9 +14,15 @@
|
||||
/*[[[cog from arma_config_tools import *; json_to_arma()]]]*/
|
||||
class CfgEpochClient
|
||||
{
|
||||
epochVersion = "1.3.1";
|
||||
epochVersion = "1.3.2";
|
||||
ArmAVersion = 176;
|
||||
debug = "true"; // true = enable extra rpt debug lines, false to disable
|
||||
ForceGender = ""; // Force Players to spawn as "Male" or "Female"
|
||||
RemoveLaserfromUAV = "true"; // remove LaserDesignator from assembled UAV's
|
||||
|
||||
UseOldRevive = "false"; // Revive / Heal Player has been changed to use "HandleDamage" Eventhandler. If scripts are breaking it for you, set it to true (not recommended!)
|
||||
UnconsciousChance = 30; // Change in percent to get unconscious by a hit with an Axe / Sledge / Sword
|
||||
UnconsciousTime[] = {60,180}; // Min / Max time for unconscious after you got a hit from a non lethal weapon / Axe / Sledge / Sword
|
||||
|
||||
antagonistRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100
|
||||
NuisanceMulti = 0.5; // Multi for Nuisance increase on shooting - higher Nuisance effect at least antagonist spawn change. (0-1, default 0.5)
|
||||
@ -32,7 +38,7 @@ class CfgEpochClient
|
||||
|
||||
baseHungerLoss = 2; // increase number to speed up rate of Hunger loss
|
||||
baseThirstLoss = 2; // increase number to speed up rate of Thirst loss
|
||||
accelerateHTALoss = "true"; // use server's time acceleration to increase the rate of Hunger, Thirst and Alcohol loss
|
||||
accelerateHTALoss = "false"; // use server's time acceleration to increase the rate of Hunger, Thirst and Alcohol loss
|
||||
|
||||
buildingNearbyMilitary = 0; //1 to allow building nearby
|
||||
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
|
||||
@ -47,6 +53,7 @@ class CfgEpochClient
|
||||
maxBuildingHeight = 100; // Max Height, building is allowed.
|
||||
splitCountLimits = 0; //1 = distinguish buildingCountLimit from storageCountLimit (ex.: buildingCountLimit=100, storageCountLimit=100 >> you can build 100 baseparts AND additional 100 storage objects like safes, lockboxes...)
|
||||
MaxBuildingTilt = 180; // Max degrees players can tilt building elements
|
||||
EnablePhysicsOnBuild = "true"; // Building parts need Snap (hold) points to not fall on the ground while building
|
||||
|
||||
class CfgJammers {
|
||||
class PlotPole_EPOCH // Jammer Classname
|
||||
@ -192,14 +199,80 @@ class CfgEpochClient
|
||||
{"TraderMissions",0,{}},
|
||||
{"AIKills",0,{}},
|
||||
{"AntagonistKills",0,{}},
|
||||
{"ZombieKills",0,{}}
|
||||
{"ZombieKills",0,{}},
|
||||
{"WalkDist",0,{}},
|
||||
{"MaxAliveTime",0,{}},
|
||||
{"NPCTrades",0,{}},
|
||||
{"PlayTime",0,{}},
|
||||
{"LootedObjs",0,{}},
|
||||
{"CraftedItems",0,{}},
|
||||
{"ConnectCount",0,{}},
|
||||
{"BuildingsSet",0,{}},
|
||||
{"AIDeaths",0,{}},
|
||||
{"PublicStats",1,{}} // DO not change this! Players can disable it within the E-Pad by themself!
|
||||
};
|
||||
PlayerStatsDialogEntries[] = {
|
||||
/*
|
||||
{
|
||||
{"CommunityVariable","DisplayName","ExtraCalculation"}
|
||||
},
|
||||
*/
|
||||
{
|
||||
{"ConnectCount","Times connected"},
|
||||
{"PlayTime","Playtime (hours)","%1/3600 toFixed 2"},
|
||||
{"MaxAliveTime","Max Alivetime (hours)","%1/3600 toFixed 2"},
|
||||
{"WalkDist","Distance Walked (Km)","%1/1000 toFixed 2"}
|
||||
},
|
||||
{
|
||||
{"LootedObjs","Objects Looted"},
|
||||
{"NPCTrades","Trades at Trader"},
|
||||
{"BuildingsSet","Placed Buildings"},
|
||||
{"CraftedItems","Crafted Items"}
|
||||
},
|
||||
{
|
||||
{"Karma","Karma","round %1"},
|
||||
{"Revives","Player Revived"},
|
||||
{"TraderMissions","Tradermissions"}
|
||||
},
|
||||
{
|
||||
{"Murders","Player Kills"},
|
||||
{"AIKills","AI Kills"},
|
||||
{"AntagonistKills","Antagonist Kills"},
|
||||
{"ZombieKills","Zombie Kills"}
|
||||
},
|
||||
{
|
||||
{"Deaths","Deaths by Player"},
|
||||
{"AIDeaths","Deaths by AI"},
|
||||
{"Suicides","Suicides"}
|
||||
},
|
||||
{
|
||||
{"","K/D PvP","(Epoch_totalMurders/(Epoch_totalDeaths max 1)) toFixed 1"},
|
||||
{"","K/D PvE","(Epoch_totalAIKills/(Epoch_totalAIDeaths max 1)) toFixed 1"}
|
||||
}
|
||||
};
|
||||
TopStatsDialogEntries[] = {
|
||||
/*
|
||||
{"CommunityVariable","DisplayName","ExtraCalculation"},
|
||||
*/
|
||||
{"PlayTime","Playtime (hours)","%1/3600 toFixed 2"},
|
||||
{"MaxAliveTime","Max Alivetime (hours)","%1/3600 toFixed 2"},
|
||||
{"WalkDist","Distance Walked (Km)","%1/1000 toFixed 2"},
|
||||
{"LootedObjs","Objects Looted"},
|
||||
{"NPCTrades","Trades at Trader"},
|
||||
{"BuildingsSet","Placed Buildings"},
|
||||
{"CraftedItems","Crafted Items"},
|
||||
{"Karma","Karma","round %1"},
|
||||
{"Murders","Player Kills"},
|
||||
{"AIKills","AI Kills"},
|
||||
{"Deaths","Deaths by Player"},
|
||||
{"AIDeaths","Deaths by AI"}
|
||||
};
|
||||
group_upgrade_lvl[] = {4,"1000",6,"1500",8,"2000",10,"2500",12,"3000",14,"3500",16,"4000",32,"8000",64,"16000"}; // controls max group limit and cost
|
||||
// Event handler code
|
||||
displayAddEventHandler[] = {"keyDown","keyUp"};
|
||||
keyDown = "(_this call EPOCH_KeyDown)";
|
||||
keyUp = "(_this call EPOCH_KeyUp)";
|
||||
addEventHandler[] = {"Respawn","Put","Take","InventoryClosed","InventoryOpened","FiredMan","Killed","HandleRating","HandleScore","GetInMan","GetOutMan","Hit","SeatSwitchedMan","FiredNear"};
|
||||
addEventHandler[] = {"Respawn","Put","Take","InventoryClosed","InventoryOpened","FiredMan","Killed","HandleRating","HandleScore","HandleDamage","GetInMan","GetOutMan","Hit","SeatSwitchedMan","FiredNear","WeaponAssembled"};
|
||||
Respawn = "(_this select 0) call EPOCH_clientRespawn";
|
||||
Put = "(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler;_this call Epoch_custom_EH_Put";
|
||||
Take = "(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck;_this call Epoch_custom_EH_Take";
|
||||
@ -209,7 +282,7 @@ class CfgEpochClient
|
||||
Killed = "_this call EPOCH_fnc_playerDeath;_this call Epoch_custom_EH_Killed";
|
||||
HandleRating = "0";
|
||||
HandleScore = "";
|
||||
HandleDamage = "";
|
||||
HandleDamage = "_this call EPOCH_HandleDamage;_this call EPOCH_custom_EH_HandleDamage";
|
||||
HandleHeal = "";
|
||||
Dammaged = "";
|
||||
Hit = "_this call EPOCH_custom_EH_Hit";
|
||||
@ -218,6 +291,7 @@ class CfgEpochClient
|
||||
GetOutMan = "_this call EPOCH_getOutMan;_this call Epoch_custom_EH_GetOutMan";
|
||||
SeatSwitchedMan = "_this call EPOCH_custom_EH_SeatSwitchedMan";
|
||||
FiredNear = "_this call EPOCH_custom_EH_FiredNear";
|
||||
WeaponAssembled = "clearItemCargoGlobal (_this select 1);if (['CfgEpochClient','RemoveLaserfromUAV',true] call EPOCH_fnc_returnConfigEntryV2) then {(_this select 1) removeWeaponTurret ['Laserdesignator_mounted',[0]]}; if ((_this select 1) isKindOf 'UAV_01_base_F' || (_this select 1) isKindOf 'UAV_06_base_F') then {['UAV assembled - Connect it with DynaMenu (Space)',5] call Epoch_Message}";
|
||||
// suppress these units from spawning near Jammer or Traders
|
||||
nonJammerAI[] = {"B_Heli_Transport_01_F","PHANTOM","EPOCH_Sapper_F","Epoch_SapperG_F","Epoch_SapperB_F","I_UAV_01_F","EPOCH_RyanZombie_1"};
|
||||
nonTraderAI[] = {"B_Heli_Transport_01_F","PHANTOM","EPOCH_Sapper_F","Epoch_SapperG_F","Epoch_SapperB_F","I_UAV_01_F","Epoch_Cloak_F","GreatWhite_F","EPOCH_RyanZombie_1"};
|
||||
@ -295,6 +369,32 @@ class CfgEpochClient
|
||||
{"HitBWheel",0.33,0.91,"",""}
|
||||
};
|
||||
|
||||
/* // Lower difficult VehicleRepairs example
|
||||
VehicleRepairs[] = { // {Hitpoint, dmg to repair, dmg to replace, mat to repair, mat to replace}
|
||||
{"HitHull",0.33,0.66,"ItemScraps","ItemCorrugated"},
|
||||
{"HitBody",0.33,1,"ItemScraps","ItemCorrugated"},
|
||||
{"HitEngine",0.33,0.91,"VehicleRepair","VehicleRepair"},
|
||||
{"glass",0.33,1,"ItemGlass","ItemGlass"},
|
||||
{"HitFuel",0.1,0.66,"ItemDuctTape","ItemDuctTape"},
|
||||
{"HitHRotor",0.33,1,"ItemCorrugated","ItemCorrugated"},
|
||||
{"HitVRotor",0.33,1,"ItemCorrugated","ItemCorrugated"},
|
||||
{"HitWinch",0.33,0.91,"ItemCables","ItemCables"},
|
||||
{"HitAvionics",0.33,0.91,"CircuitParts","CircuitParts"},
|
||||
// Wheels - Do not change the order (front to back wheels) here!
|
||||
{"HitLFWheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
{"HitRFWheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
{"HitLF2Wheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
{"HitRF2Wheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
{"HitLMWheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
{"HitRMWheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
{"HitLBWheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
{"HitRBWheel",0.33,1,"VehicleRepair","VehicleRepair"},
|
||||
// Mountainbike wheels
|
||||
{"HitFWheel",0.33,0.91,"",""},
|
||||
{"HitBWheel",0.33,0.91,"",""}
|
||||
};
|
||||
*/
|
||||
|
||||
// include configs
|
||||
#include "CfgEpochClient\Altis.hpp"
|
||||
#include "CfgEpochClient\australia.hpp"
|
||||
@ -302,6 +402,7 @@ class CfgEpochClient
|
||||
#include "CfgEpochClient\Chernarus_Summer.hpp"
|
||||
#include "CfgEpochClient\Chernarus.hpp"
|
||||
#include "CfgEpochClient\ChernarusRedux.hpp"
|
||||
#include "CfgEpochClient\Enoch.hpp"
|
||||
#include "CfgEpochClient\Esseker.hpp"
|
||||
#include "CfgEpochClient\ProvingGrounds_PMC.hpp"
|
||||
#include "CfgEpochClient\Sara_dbe1.hpp"
|
||||
@ -330,6 +431,8 @@ class CfgEpochSoldier
|
||||
maxReloadSpeed = 0.5;
|
||||
maxCommanding = 0.4;
|
||||
maxGeneral = 0.4;
|
||||
minspawndist = 120;
|
||||
maxspawndist = 200;
|
||||
};
|
||||
class CfgEpochSapper
|
||||
{
|
||||
|
21
Sources/epoch_config/Configs/CfgEpochClient/Enoch.hpp
Normal file
21
Sources/epoch_config/Configs/CfgEpochClient/Enoch.hpp
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Epoch gamemode config for Altis
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_config/Configs/CfgEpochClient/Altis.hpp
|
||||
*/
|
||||
|
||||
class Enoch {
|
||||
blockedArea[] = { //[POS],radius
|
||||
};
|
||||
// Trash config
|
||||
TrashClasses[] = { "Trash", "TrashSmall", "TrashVehicle", "PumpkinPatch", "TrashFood", "HempFiber" };
|
||||
};
|
@ -850,5 +850,7 @@ class CfgWorldInteractions {
|
||||
class b_canina2sW_p3d : Bushes {};
|
||||
class b_pmugoW_p3d : Bushes {};
|
||||
class b_prunusW_p3d : Bushes {};
|
||||
|
||||
class garbagebin_03_f_p3d : TrashSmall {};
|
||||
class concretewell_02_f_p3d : Water {};
|
||||
class Land_ConcreteWell_02_F : Water {};
|
||||
};
|
||||
|
@ -501,7 +501,7 @@ class CfgItemInteractions
|
||||
};
|
||||
class KitSolarGen : Item_Build_base
|
||||
{
|
||||
buildClass = "SolarGen_SIM_EPOCH";
|
||||
buildClass = "SolarGen_EPOCH";
|
||||
};
|
||||
class KitPlotPole : Item_Build_base
|
||||
{
|
||||
|
@ -207,6 +207,7 @@ class CfgItemSort
|
||||
"U_C_ConstructionCoverall_Vrana_F",
|
||||
"U_C_ConstructionCoverall_Black_F",
|
||||
"U_C_ConstructionCoverall_Blue_F",
|
||||
"U_I_CombatUniform",
|
||||
"U_I_CombatUniform_shortsleeve",
|
||||
"U_I_pilotCoveralls",
|
||||
"U_I_HeliPilotCoveralls",
|
||||
@ -264,11 +265,13 @@ class CfgItemSort
|
||||
"V_TacChestrig_oli_F",
|
||||
"V_TacChestrig_cbr_F",
|
||||
"V_PlateCarrierSpec_tna_F",
|
||||
"V_PlateCarrierSpec_mtp",
|
||||
"V_PlateCarrierSpec_blk",
|
||||
"V_HarnessO_ghex_F",
|
||||
"V_HarnessOGL_ghex_F",
|
||||
"V_PlateCarroer2_tna_F",
|
||||
"V_PlateCarrierGL_tna_F"
|
||||
"V_PlateCarrierGL_tna_F",
|
||||
"V_PlateCarrier2_blk"
|
||||
};
|
||||
|
||||
Backpacks[] = {
|
||||
@ -333,7 +336,12 @@ class CfgItemSort
|
||||
"ALICE_Pack_Epoch",
|
||||
"US_Backpack_Epoch",
|
||||
"CZ_Backpack_Epoch",
|
||||
"L_Gunbag_Epoch"
|
||||
"L_Gunbag_Epoch",
|
||||
|
||||
"I_UAV_01_backpack_F",
|
||||
"C_IDAP_UAV_06_backpack_F",
|
||||
"C_IDAP_UAV_06_antimine_backpack_F",
|
||||
"B_UAV_06_medical_backpack_F"
|
||||
};
|
||||
|
||||
HeadGear[] = {
|
||||
@ -463,6 +471,8 @@ class CfgItemSort
|
||||
|
||||
// Headgear Apex
|
||||
"H_HelmetLeaderO_ghex_F",
|
||||
"H_HelmetLeaderO_oucamo",
|
||||
"H_HelmetLeaderO_ocamo",
|
||||
"H_HelmetCrew_O_ghex_F",
|
||||
"H_HelmetO_ghex_F",
|
||||
"H_Helmet_Skate",
|
||||
@ -472,7 +482,11 @@ class CfgItemSort
|
||||
"H_MilCap_tna_F",
|
||||
"H_MilCap_ghex_F",
|
||||
"H_Booniehat_tna_F",
|
||||
"H_HelmetB_Light_tna_F"
|
||||
"H_HelmetB_Light_tna_F",
|
||||
"H_HelmetSpecO_ocamo",
|
||||
"H_HelmetSpecO_blk",
|
||||
"H_HelmetO_oucamo",
|
||||
"H_HelmetO_ocamo"
|
||||
};
|
||||
|
||||
Equipment[] = {
|
||||
@ -480,6 +494,8 @@ class CfgItemSort
|
||||
"Laserdesignator",
|
||||
"ItemCompass",
|
||||
"ItemGPS",
|
||||
"ItemLaptop",
|
||||
"ItemLaptop_wpn",
|
||||
"ItemGeigerCounter_EPOCH",
|
||||
"ItemWatch",
|
||||
"NVG_EPOCH",
|
||||
@ -510,6 +526,11 @@ class CfgItemSort
|
||||
"1911_pistol_epoch",
|
||||
"hgun_Pistol_Signal_F",
|
||||
|
||||
"pvcrifle_01_F",
|
||||
"nl_Shotgun",
|
||||
"nl_auto_xbow",
|
||||
"hgun_Pistol_tranq_01",
|
||||
|
||||
// light Rifle
|
||||
"l85a2_epoch",
|
||||
"l85a2_pink_epoch",
|
||||
@ -638,6 +659,8 @@ class CfgItemSort
|
||||
// Apex
|
||||
"LMG_03_F",
|
||||
|
||||
"arifle_CTARS_blk_F",
|
||||
"arifle_CTARS_hex_F",
|
||||
// Launcher
|
||||
"launch_I_Titan_F",
|
||||
"launch_B_Titan_short_F",
|
||||
@ -699,6 +722,13 @@ class CfgItemSort
|
||||
"6Rnd_BlueSignal_F",
|
||||
"6Rnd_PurpleSignal_F",
|
||||
"6Rnd_OrangeSignal_F",
|
||||
|
||||
"NL_pvc_bb_mag",
|
||||
"NL_shot_bb_mag",
|
||||
"xbow_mag_bolt",
|
||||
"xbow_mag_tranq",
|
||||
"xbow_mag_exp",
|
||||
"tranq_dart_mag",
|
||||
|
||||
// light Mags
|
||||
"30Rnd_65x39_caseless_green",
|
||||
@ -1164,7 +1194,9 @@ class CfgItemSort
|
||||
"ItemComboLock",
|
||||
"ItemPipe",
|
||||
"ItemBulb",
|
||||
"SmeltingTools_EPOCH"
|
||||
"SmeltingTools_EPOCH",
|
||||
"Kit_IG_Box_s",
|
||||
"Kit_IG_Box_l"
|
||||
};
|
||||
|
||||
Items[] = {
|
||||
@ -1272,6 +1304,8 @@ class CfgItemSort
|
||||
"hoverboard_epoch_cargo",
|
||||
"MBK_01_EPOCH",
|
||||
"ebike_epoch", // Motorcycle
|
||||
"C_Kart_01_black_F",
|
||||
"C_Quadbike_01_F",
|
||||
"C_Offroad_01_EPOCH", // Offroader
|
||||
"C_Offroad_01_EPOCH1",
|
||||
"C_Offroad_01_EPOCH2",
|
||||
@ -1411,6 +1445,8 @@ class CfgItemSort
|
||||
"B_MRAP_01_hmg_F",
|
||||
"O_MRAP_02_hmg_F",
|
||||
"I_MRAP_03_hmg_F",
|
||||
"I_LT_01_scout_F",
|
||||
"I_LT_01_cannon_F",
|
||||
|
||||
// Orange DLC
|
||||
"I_G_Van_02_transport_F", /* Van Transport (Orange DLC) */
|
||||
@ -1420,6 +1456,15 @@ class CfgItemSort
|
||||
"I_G_Van_02_vehicle_F", /* Van Transport (Orange DLC) */
|
||||
"O_G_Van_02_vehicle_F", /* Van Transport (Orange DLC) */
|
||||
"B_G_Van_02_vehicle_F", /* Van Transport (Orange DLC) */
|
||||
|
||||
"I_G_Van_02_transport_EPOCH", /* Van Transport (Orange DLC) */
|
||||
"O_G_Van_02_transport_EPOCH", /* Van Transport (Orange DLC) */
|
||||
"B_G_Van_02_transport_EPOCH", /* Van Transport (Orange DLC) */
|
||||
"I_G_Van_02_vehicle_EPOCH", /* Van Transport (Orange DLC) */
|
||||
"O_G_Van_02_vehicle_EPOCH", /* Van Transport (Orange DLC) */
|
||||
"B_G_Van_02_vehicle_EPOCH", /* Van Transport (Orange DLC) */
|
||||
"B_GEN_Van_02_transport_EPOCH", /* Van Transport (Orange DLC) */
|
||||
|
||||
// Apex
|
||||
"I_C_Offroad_02_unarmed_F",
|
||||
"I_C_Offroad_02_unarmed_brown_F",
|
||||
@ -1432,6 +1477,8 @@ class CfgItemSort
|
||||
"C_Offroad_02_unarmed_white_F",
|
||||
"C_Offroad_02_unarmed_red_F",
|
||||
|
||||
"C_IDAP_Offroad_02_unarmed_F",
|
||||
"I_C_Offroad_02_LMG_F",
|
||||
"B_LSV_01_unarmed_F",
|
||||
"B_LSV_01_unarmed_olive_F",
|
||||
"B_LSV_01_unarmed_sand_F",
|
||||
@ -1483,6 +1530,7 @@ class CfgItemSort
|
||||
"O_Heli_Light_02_unarmed_EPOCH",
|
||||
"I_Heli_light_03_unarmed_EPOCH",
|
||||
"I_Heli_Transport_02_EPOCH",
|
||||
"C_IDAP_Heli_Transport_02_F",
|
||||
"B_Heli_Transport_03_unarmed_green_F",
|
||||
"B_Heli_Transport_03_unarmed_EPOCH",
|
||||
"O_Heli_Transport_04_EPOCH",
|
||||
@ -1504,6 +1552,7 @@ class CfgItemSort
|
||||
|
||||
"B_Heli_Light_01_armed_F",
|
||||
"B_Heli_Transport_01_EPOCH",
|
||||
"B_Heli_Transport_01_F",
|
||||
"B_Heli_Transport_03_black_F",
|
||||
"O_Heli_Light_02_v2_F",
|
||||
"I_Heli_light_03_F",
|
||||
|
@ -112,6 +112,11 @@ class CfgMarkerSets
|
||||
{"","ICON","EpochService","ColorWhite",1,{0.9,0.9},0,"'Service Point'"}
|
||||
};
|
||||
};
|
||||
class PaintGarage {
|
||||
markerArray[] = {
|
||||
{"","ICON","EpochPaint","ColorBlue",0.5,{0.1,0.1},0}
|
||||
};
|
||||
};
|
||||
class Radiation {
|
||||
markerArray[] = {
|
||||
{"","ICON","EpochActive_Triangle","ColorYellow",1,{0.7,0.7}},
|
||||
@ -211,9 +216,14 @@ class CfgMarkerSets
|
||||
};
|
||||
class HeliCrash {
|
||||
markerArray[] = {
|
||||
{"","ICON","EpochActive_Circle","ColorOrange",1,{0.6,0.6}},
|
||||
{"","ICON","EpochActive_Circle","ColorYellow",1,{0.6,0.6}},
|
||||
{"","ICON","EpochBG_Circle","ColorWhite",0.15,{0.6,0.6}},
|
||||
{"","ICON","EpochHeli2","ColorOrange",1,{0.5,0.5}}
|
||||
{"","ICON","EpochHeli2","ColorYellow",1,{0.5,0.5}}
|
||||
};
|
||||
};
|
||||
class Medical {
|
||||
markerArray[] = {
|
||||
{"","ICON","o_med","",1,{1,1}}
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -14,7 +14,6 @@
|
||||
*/
|
||||
|
||||
class EpochMissionList{
|
||||
// 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[] = {"missionDocCheck","missionfishing","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)
|
||||
|
@ -308,6 +308,14 @@ class CfgObjectInteractions
|
||||
class EPOCH_RyanZombie_3_S : EPOCH_RyanZombie_1 {};
|
||||
class EPOCH_RyanZombie_4_S : EPOCH_RyanZombie_1 {};
|
||||
class EPOCH_RyanZombie_5_S : EPOCH_RyanZombie_1 {};
|
||||
class IG_Box_s : Default
|
||||
{
|
||||
interactMode = 4;
|
||||
};
|
||||
class IG_Box_l : Default
|
||||
{
|
||||
interactMode = 4;
|
||||
};
|
||||
};
|
||||
|
||||
/*[[[end]]]*/
|
||||
|
57
Sources/epoch_config/Configs/CfgPainting.hpp
Normal file
57
Sources/epoch_config/Configs/CfgPainting.hpp
Normal file
@ -0,0 +1,57 @@
|
||||
class CfgPainting {
|
||||
class DefaultVehicle
|
||||
{
|
||||
UseArmaDefaultColors = "true";
|
||||
PaintingCosts = 500;
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Paint.paa";
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
############################ Start Full Example #################################
|
||||
class CfgPainting {
|
||||
class DefaultVehicle
|
||||
{
|
||||
UseArmaDefaultColors = "true"; // Use all availabe default colours from Arma (for all Vehicles)
|
||||
PaintingCosts = 500; // Crypto costs for Painting
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Paint.paa"; // Icon for the DynaMenu
|
||||
|
||||
class Pink // Define custom colors for ALL Vehicle classes within "DefaultVehicle"
|
||||
{
|
||||
ColorName = "Pink"; // Will be used as Tooltip in DynaMenu
|
||||
iconcolor[] = {1,0.0784,0.576,1}; // Color for the Icon [R,G,B,ALPHA] (0-1)
|
||||
textures[] = { // Texture array. Use "#(rgb,8,8,3)color(R,G,B,1)" for simple colors
|
||||
"#(rgb,8,8,3)color(1,0.0784,0.576,1)" // Texture for first selection (most vehicles only need one selection texture)
|
||||
};
|
||||
};
|
||||
};
|
||||
class C_Hatchback_01_EPOCH : DefaultVehicle // Define custom colors for a unique Vehicle Class
|
||||
{
|
||||
UseArmaDefaultColors = "true"; // Use also all availabe default colours from Arma (for this Vehicle Class)
|
||||
class Green
|
||||
{
|
||||
ColorName = "Green";
|
||||
iconcolor[] = {0,1,0,1};
|
||||
textures[] = {
|
||||
"#(rgb,8,8,3)color(0,1,0,1)"
|
||||
};
|
||||
};
|
||||
};
|
||||
class C_Hatchback_01_EPOCH1: C_Hatchback_01_EPOCH{}; // Inherit classes from already defined classes like this
|
||||
class C_Hatchback_01_EPOCH2: C_Hatchback_01_EPOCH{};
|
||||
class C_Quadbike_01_EPOCH : DefaultVehicle
|
||||
{
|
||||
UseArmaDefaultColors = "false"; // This Quad can only be colored with the defined color(s)
|
||||
class Black
|
||||
{
|
||||
ColorName = "Black";
|
||||
iconcolor[] = {0,0,0,1};
|
||||
textures[] = {
|
||||
"\A3\Soft_F_Beta\Quadbike_01\Data\Quadbike_01_CIV_BLACK_CO.paa",
|
||||
"\A3\Soft_F_Beta\Quadbike_01\Data\Quadbike_01_wheel_CIVBLACK_CO.paa"
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
############################ End Full Example #################################
|
||||
*/
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user