Merge pull request #996 from EpochModTeam/experimental

Release 1.3
This commit is contained in:
vbawol 2019-01-31 15:34:56 -06:00 committed by GitHub
commit dff6921244
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
189 changed files with 3645 additions and 1086 deletions

View File

@ -8,7 +8,12 @@ forceRestartTime = 14400; // 4 hour restarts
lootMultiplier = 0.5; // 1 = max loot bias. This controls how much loot can payout per Epoch loot container.
// Events
WeatherStaticForecast[] = {}; // Default: {75.5,0,{0,0,0},0,{1,1}}; // Clear day; {19,1,{1,1,40},1,{5,5}}; // Cold Foggy Rainy Overcast Windy; Format: {temp <scalar>,rain <scalar>,fog <array>,overcast <scalar>,wind <array>}
WeatherChances[] = {
0.5, // Sun
0.3, // Mid
0.1, // Rain
0.1 // Rain+
};
events[] = {
{
3600, // SECOND <scalar>,
@ -113,6 +118,13 @@ forceRestartTime = 14400; // 4 hour restarts
};
ExceptedDeSymObjects[] = { // Not Desymulated, also if in a Class of DeSimulateObjects
};
DisableDoorsOnObj[] = { // Add special Vars to disable Doors (no effect in Epoch, but 3rd party addons like enhanced movement)
// {"BuildingClass", {{"Variable1",Value1},{"Variable2",Value2}, ... } },
{"WoodLargeWallDoorL_EPOCH", {{"bis_disabled_door",1} } },
{"WoodWall4_EPOCH", {{"bis_disabled_door",1} } },
{"CinderWallDoorwHatch_EPOCH", {{"bis_disabled_door",1},{"bis_disabled_hatch",1} } },
{"WoodStairs3_EPOCH", {{"bis_disabled_bars_long",1} } }
};
// Dynamic Simulation System
enableDynamicSimulationSystem = "true"; // enable / disable the complete dynamic simulation system
@ -151,6 +163,7 @@ forceRestartTime = 14400; // 4 hour restarts
// "ItemSafe",
// "ItemGoldBar10oz"
};
TraderDeco = "true"; // If true, Traders get around Halloween / Christmas some seasonal decoration
// Spawntables
forcedVehicleSpawnTable = ""; // leave blank for default. Options: "allowedVehiclesList","allowedVehiclesList_CUP","allowedVehiclesList_MAD","allowedVehiclesList_MADCUP"

View File

@ -1 +1 @@
5 "" !"B_Parachute" !"B_AssaultPack_(cbr|dgtl|khk|mcamo|ocamo|rgr|sgg|blk)" !"B_Carryall_(cbr|khk|mcamo|ocamo|oli|oucamo|hex|ghex)" !"B_FieldPack_(blk|cbr|khk|ocamo|oli|oucamo|ghex_F)" !"B_Kitbag_(cbr|mcamo|rgr|sgg)" !"B_TacticalPack_(blk|mcamo|ocamo|oli|rgr)" !"smallbackpack_(red|green|teal|pink|)_epoch" !"(O|I|B)_UAV_01_backpack_F" !"B_Bergen_(mcamo|dgtl|hex|tna)_F" !"B_Viper(Light|)Harness_(blk|ghex|hex|khk|oli)_F"
5 "" !"B_Parachute" !"B_AssaultPack_(cbr|dgtl|khk|mcamo|ocamo|rgr|sgg|blk)" !"B_Carryall_(cbr|khk|mcamo|ocamo|oli|oucamo|hex|ghex)" !"B_FieldPack_(blk|cbr|khk|ocamo|oli|oucamo|ghex_F)" !"B_Kitbag_(cbr|mcamo|rgr|sgg)" !"B_TacticalPack_(blk|mcamo|ocamo|oli|rgr)" !"smallbackpack_(red|green|teal|pink|)_epoch" !"(O|I|B)_UAV_01_backpack_F" !"B_Bergen_(mcamo|dgtl|hex|tna)_F" !"B_Viper(Light|)Harness_(blk|ghex|hex|khk|oli)_F" !"(Assault_Pack|Patrol_Pack|TK_RPG_Backpack|CZ_VestPouch|civil_assault_pack|S_Gunbag|ALICE_Pack|US_Backpack|CZ_Backpack|L_Gunbag)_Epoch"

View File

@ -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"
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)"

View File

@ -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"
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 SeaGull

View File

@ -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|server_setfinalplayerpos) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]"
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) \[.+\]"

View File

@ -1,50 +1,35 @@
//new2
5 "BIS_fnc_dynamictext" !="\"BIS_fnc_dynamictext\"" !="'BIS_fnc_dynamictext'"
5 loadFile
5 forceRespawn !="ForceRespawnDuration" !="reviveHandleForceRespawnAction" !="forcerespawn player;"
5 setFriend
5 setAmmo
5 enableFatigue
5 setUnitRecoilCoefficient
5 setWeaponReloadingTime !="_unit setWeaponReloadingTime [_unit,_weapon,1];" !="_unit setWeaponReloadingTime [_unit,_weapon,1];" !="player fire [_muzzle, _muzzle, _item];\nplayer setWeaponReloadingTime [player, _muzzle, 0];"
5 allMissionObjects !="_alljammer = allmissionobjects 'PlotPole_EPOCH';" !="allMissionObjects \"Timeline_F\""
5 callExtension
5 allMissionObjects !="[\"Epoch_Plotpoles\",allmissionobjects 'PlotPole_EPOCH']" !="allMissionObjects \"Timeline_F\""
5 showCommandingMenu !="showCommandingMenu '';" !="showCommandingMenu '#USER:"
5 enableCollisionWith
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 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;"
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"
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 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 removeMissionEventHandler !="removeMissionEventHandler [\"Draw3D\", _id];" !="removeMissionEventHandler [_event select [2], _x select 1];"
5 removeAllWeapons !="removeAllWeapons axeGeneral;"
5 removeAllItems
5 removeAllActions
5 setViewDistance !="setViewDistance 1600"
5 createGroup !="EPOCH_server_createGroup" !="_grp = createGroup [RESISTANCE, true];" !="if (isserver) then {\n_group = creategroup sidelogic;" !="grpVIPGeneral = createGroup [RESISTANCE, true];" !="_grp = createGroup side _plyr;" !="_grp = createGroup [_side, true];" !="_grp = createGroup [(side _plyr), true];" !="createcenter sidelogic;\n_grpLogic = creategroup sidelogic;\nbis_functions_mainscope" !="_group = createGroup [west, true];"
5 createVehicleCrew !="createvehiclecrew _x;"
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 createTeam
5 createDialog !="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\";"
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\";"
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"
5 createMarker !="CBA_fnc_createMarker\"" !="\\fnc_createMarker" !="\"createMarker" !="cba_fCreateMarker" !="createMarkerLocal [_mName, _mPos];"
5 assignItem !="axeVIP assignItem _item;" !="unassignItem"
5 forceAddUniform
5 removeAllMPEventHandlers
5 setDammage
5 displaySetEventHandler
5 ctrlSetEventHandler !="_ctrlButtonOK ctrlseteventhandler [\"buttonclick\"," !="ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\"" !="_ctrlBtn ctrlSetEventHandler [\"MouseButtonDblClick\", _verAct];" !="_button_gen ctrlSetEventHandler [\"ButtonClick\",_btn_code + \"(uiNamespace getVariable [\"" !="t \"#(rgb,8,8,3)color(1,1,1,0.1)\";\n_c ctrlCommit 0;\n_c ctrlSetEventHandler [\"MouseButtonUp\",format[\"['remove',%1,(_this select 1)"
5 addMPEventHandler
5 ctrlSetEventHandler !="ctrlSetEventHandler [\"mouseButtonDown\", _action];" !="_ctrlButtonOK ctrlseteventhandler [\"buttonclick\"," !="ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\"" !="_ctrlBtn ctrlSetEventHandler [\"MouseButtonDblClick\", _verAct];" !="_button_gen ctrlSetEventHandler [\"ButtonClick\",_btn_code + \"(uiNamespace getVariable [\"" !="t \"#(rgb,8,8,3)color(1,1,1,0.1)\";\n_c ctrlCommit 0;\n_c ctrlSetEventHandler [\"MouseButtonUp\",format[\"['remove',%1,(_this select 1)"
5 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !="player addeventhandler [\"PostReset\",{BIS_EnginePPReset = true;} ];" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="\"CBA_fnc_addEventHandler\"" !="\\fnc_addEventHandler" !="\"addEventHandler" !="_eventFunc = _eventFunc + \"(_this select 0) addEventHandler ['Respawn', \" + str _eventFunc + \"];\";" !="_unit addEventHandler [\"hitpart\"," !="CBA_fnc_addEventHandler" !="_unit addEventHandler [_x, format ['call cba_xeh_fnc_%1', _x]];" !="_ship addEventHandler [\"AttributesChanged3DEN\"" !="addEventHandler [\"HandleDamage\",bis_fnc_reviveOnPlayerHandleDamage];" !="_unit addEventHandler [\"FiredNear\"" !="_smokeEH = _plyr addEventHandler [\"FiredNear\", \"airDropHandle setFSMVariable" !="_onContactEH = _currentTarget addEventHandler[\"EpeContactStart"" !="_object addeventhandler [\"local\",{[[_this select 0],\"bis_fnc_objectVar\""
5 displayAddEventHandler !="(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !="displayAddEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="displayaddeventhandler [\"mousemoving\"," !="_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'" !="_display displayaddeventhandler [_x,_fnc_animate];" !="Development\") then\n{\n_display displayaddeventhandler [\n\"keydown\"" !="CBA_fnc_addDisplayHandler" !="_display displayAddEventHandler [\"MouseMoving" !="private _handler = _display displayAddEventHandler [_key, _code];" !="_display displayAddEventHandler [\"KeyDown\", \"_this call cba_keybinding_fnc_onKeyDown\"" !="isplay 602};\n\n_display = (findDisplay 602);\n_display displayAddEventHandler [\"MouseButtonUp\",\"[] spawn {rmx_var_fav_selected = f" !="displayaddeventhandler\n[\n\"mousemoving\""
5 ctrlAddEventHandler !="_control = _display displayctrl 37305; \n_control ctrladdeventhandler" !="_ctrlMap = _display displayctrl 101;\n_ctrlMap ctrladdeventhandler" !="_display displayctrl 21995;\n_assetsButton ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2406; \n_control ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2400;\n_control ctrladdeventhandler [\"buttonclick\"," !="ctrladdeventhandler [\"lbselchanged\"," !="ctrladdeventhandler [\n\"lbselchanged\"," !="_ButtonGeneral ctrladdeventhandler [\"buttonclick\"," !="_ctrlExecuteLocal ctrladdeventhandler [\"buttonclick\"," !="_bg ctrlAddEventHandler [\"MouseEnter\"," !="_container ctrlAddEventHandler [\"LBDblClick\",\"_this call EPOCH_itemInteractClick\"];" !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="_ctrl ctrlSetEventHandler [\"mouseEnter\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseExit\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseButtonDown\", (format [\"call %1;\",(_buttonSettings select _e select 2)])];" !="_prevButton ctrlAddEventHandler [\"MouseButtonUp\", {_this call cba_diagnostic_fnc_debug" !="BIS_RscRespawnControlsMap_ctrlHeaderRespawnButton ctrlAddEventhandler [\"ButtonDown\"" !="_control = _display displayctrl 105;\n_control ctrladdeventhandler [\"MouseButtonUp\"" !="ctrlHeaderRespawnButton\", controlNull]) ctrlAddEventhandler [\"ButtonDown\"" !="_selected = false;\n{\n_c = _display displayCtrl _x;\n_c ctrlAddEventHandler [\"LBDrag\",\"rmx_var_favBar_Item = (_this call epoch_fav" !="_ctrlMouseArea ctrladdeventhandler [\"setfocus\",{with uinamespace do {[\"dlcClear\",[ctrlpar" !="13484 ctrlAddEventHandler [\"ButtonClick\", {[\"executeButton\","
@ -58,16 +43,5 @@
5 drawIcon3D !="EPOCH_drawIcon3dStability" !="EPOCH_drawIcon3d" !="drawIcon3D[\"\x\addons\a3_epoch_code\Data\Member.paa\",_color,_pos,1,1,0,_text,1,0.025,\"PuristaMedium\"];\n}forEach EPOCH_ESP_TARGETS;" !="drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_stability],_color,(getPosATL EPOCH_stabilityTarget),5,5,0,\"\",1,0.05,\"PuristaMedium\"];" !="drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_num],_color,_pos,4,4,0,\"\",1,0.05,\"PuristaMedium\"];" !="if (_condition) then {\ndrawIcon3D [_icon, _color, _position, _sizeX, _sizeY, _angle, _text," !="drawIcon3D [\"\A3\UI_F_MP_Mark\Data\Tasks\Misc\background.paa\"" !="drawIcon3D\n[\n(_x getVariable [\"bis_fnc_reviveGet3dIcons_textures" !="drawIcon3D[\"x\addons\a3_epoch_code\Data\UI\snap_ca.paa\"" !="drawIcon3D [\"\a3\ui_f\data\map\diary\icons\unitgroup_ca.paa\""
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 ctrlClassName
5 ctrlModel
5 ctrlModelDirection
5 ctrlModelSide
5 ctrlModelUp
5 ctrlSetDirection
5 deleteVehicleCrew !="fn_deleteVehicleCrew.sqf" !="\"BIS_fnc_deleteVehicleCrew\""
5 selectPlayer !="selectPlayer _playerObject;"
5 setGroupIconsVisible
5 setGroupIconsVisible
5 setGroupIconsSelectable
5 setGroupIconParams
5 addGroupIcon
5 selectPlayer !="selectPlayer _playerObject;"

View File

@ -22,9 +22,11 @@ _canAutoRun = true;
if !(alive player) exitwith {
false
};
/*
if !(istouchingground player) exitwith {
false
};
*/
if !((vehicle player) == player) exitwith {
false
};

View File

@ -0,0 +1,32 @@
_object = _this;
_type = typeof _object;
if (({alive _x && isplayer _x} count (_object nearentities 6)) > 1) exitwith {
["You should not defuse Bombs next to other Players!",5] call Epoch_Message;
};
player playMove 'AinvPknlMstpSnonWrflDnon_medic0';
player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd';
_object say3d 'vehicle_repair';
_starttime = diag_ticktime;
waituntil {uisleep 0.5; diag_ticktime - _starttime > 8 || player distance _object > 5 || EPOCH_IsAutoRunning || isnull _object || !alive player};
if (player distance _object > 5 || EPOCH_IsAutoRunning || isnull _object || !alive player) exitwith {
["Defusing abort... ",5] call Epoch_Message;
};
_reward = gettext (configfile >> "cfgammo" >> _type >> "defaultMagazine");
if !(_reward isequalto "") then {
_chance = ["CfgEpochClient", "DefuseBombChance", 0.6] call EPOCH_fnc_returnConfigEntryV2;
if (_chance >= ((random 100) / 100)) then {
[_object,false,player,Epoch_personalToken] remoteexec ["EPOCH_server_DefuseBomb",2];
}
else {
['Oh No... The Bomb will explode in a few seconds... RUN!!!!',5] call Epoch_Message;
for '_i' from 1 to 6 do {
playSound3D ['a3\sounds_f\air\heli_attack_02\alarm.wss', player, false,getposasl _object, 1, 1, 300];
uisleep 1;
};
[_object,true,player,Epoch_personalToken] remoteexec ["EPOCH_server_DefuseBomb",2];
};
}
else {
[format ['Sorry, can not defuse %1',_type],5] call Epoch_Message;
};

View File

@ -0,0 +1,43 @@
/*
Author: Aaron Clark - EpochMod.com
Contributors:
Description:
Returns the DisplayName of a Vehicle, Weapon, or Magazine.
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_itemDisplayName.sqf
Example:
_displayName = _part call EPOCH_itemDisplayName;
Parameter(s):
_this: STRING - Vehicle, Weapon, or Magazine config class name
Returns:
STRING
*/
//[[[cog import generate_private_arrays ]]]
private ["_displayName","_return"];
//[[[end]]]
params ["_item"];
_return = "";
if ([_item, "CfgVehicles"] call EPOCH_fnc_isAny) then {
_return = getText(configfile >> "CfgVehicles" >> _item >> "DisplayName");
} else {
if ([_item, "CfgWeapons"] call EPOCH_fnc_isAny) then {
_return = getText(configfile >> "CfgWeapons" >> _item >> "DisplayName");
} else {
if ([_item, "CfgMagazines"] call EPOCH_fnc_isAny) then {
_return = getText(configfile >> "CfgMagazines" >> _item >> "DisplayName");
};
};
};
if (_return isequalto "") then {
_return = _item;
};
_return;

View File

@ -23,7 +23,7 @@
BOOL
*/
//[[[cog import generate_private_arrays ]]]
private ["_CamCountLimit","_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountLimit","_buildingCountPerMember","_buildingJammerRange","_bypassJammer","_c","_cfgBaseBuilding","_config","_ghostClass","_isAllowed","_jammer","_jammerGLOnly","_jammerPerGroup","_limitNearby","_maxBuildingHeight","_membercount","_minJammerDistance","_myPosATL","_nearestJammer","_obj","_objType","_objectscount","_ownedJammerExists","_range","_restricted","_restrictedArray","_restrictedLocations","_restrictedLocationsArray","_restrictedLocationsRange","_simulClass","_staticClass","_storageCountLeader","_storageCountLimit","_storageCountPerMember","_useGroupCountLimits","_useSplitCountLimits"];
private ["_StorageClasses","_BuildingClasses","_CamCountLimit","_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountLimit","_buildingCountPerMember","_buildingJammerRange","_bypassJammer","_c","_cfgBaseBuilding","_config","_ghostClass","_isAllowed","_jammer","_jammerGLOnly","_jammerPerGroup","_limitNearby","_maxBuildingHeight","_membercount","_minJammerDistance","_myPosATL","_nearestJammer","_obj","_objType","_objectscount","_ownedJammerExists","_range","_restricted","_restrictedArray","_restrictedLocations","_restrictedLocationsArray","_restrictedLocationsRange","_simulClass","_staticClass","_storageCountLeader","_storageCountLimit","_storageCountPerMember","_useGroupCountLimits","_useSplitCountLimits"];
//[[[end]]]
_buildingAllowed = true;
@ -62,6 +62,9 @@ if(_maxBuildingHeight == 0)then{_maxBuildingHeight = 100};
if(_jammerPerGroup == 0)then{_jammerPerGroup = 2};
if(_CamCountLimit == 0)then{_CamCountLimit = 2};
_StorageClasses = ["Buildable_Storage","Buildable_Storage_SIM","Buildable_Storage_Ghost","Constructions_lockedstatic_F","Secure_Storage_Temp"];
_BuildingClasses = ["Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"];
// input
params ["_objType"];
_obj = objNull;
@ -112,21 +115,21 @@ if !(_jammer isEqualTo []) then {
_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount);
};
if (_useSplitCountLimits) then {
if(_objType in ["WorkBench_EPOCH","StorageShelf_EPOCH","Tipi_EPOCH","TentA_EPOCH","TentDome_EPOCH","LockBox_EPOCH","Safe_EPOCH","StorageShelf_SIM_EPOCH","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","Workbench_SIM_EPOCH","Tipi_SIM_EPOCH"]) then {
if ((count (nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","StorageShelf_SIM_EPOCH","WorkBench_SIM_EPOCH"],_buildingJammerRange]-[_obj])) >= _storageCountLimit) exitwith {
if({_objType iskindof _x} count _StorageClasses > 0) then {
if ((count (nearestObjects[_nearestJammer,_StorageClasses,_buildingJammerRange]-[_obj])) >= _storageCountLimit) exitwith {
_buildingAllowed = false;
[format["Building Disallowed: Max. %1 Storage Objects",_storageCountLimit],5] call Epoch_message
};
}
else {
if ((count (nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith {
if ((count (nearestObjects[_nearestJammer,_BuildingClasses,_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith {
_buildingAllowed = false;
[format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message
};
};
}
else {
if ((count (nearestObjects [_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","StorageShelf_SIM_EPOCH","WorkBench_SIM_EPOCH","Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith {
if ((count (nearestObjects [_nearestJammer,(_StorageClasses + _BuildingClasses),_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith {
_buildingAllowed = false;
[format["Building Disallowed, Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message
};
@ -150,14 +153,12 @@ else {
_buildingAllowed = false;
["The Group Leader must place the Jammer!", 5] call Epoch_message;
};
// TODO: rework not ideal to use allmissionobjects
_alljammer = allmissionobjects 'PlotPole_EPOCH';
_c = 0;
{
if ((_x getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
_c = _c+1;
};
} foreach _alljammer;
} foreach (missionnamespace getvariable ["Epoch_Plotpoles",allmissionobjects 'PlotPole_EPOCH']);
if (_c >= _jammerPerGroup) then {
_buildingAllowed = false;
[format["Building Disallowed: Max %1 Jammer per Group!", _jammerPerGroup], 5] call Epoch_message;

View File

@ -35,7 +35,7 @@ if (EPOCH_playerCrypto > 0) then {
if (_maintainCount > 0) then {
if (EPOCH_playerCrypto < _maintainCount) exitwith {
[format ["You need %1 Krypto to maintain your base.",_maintainCount], 5] call Epoch_message;
[format ["You need %1 Crypto to maintain your base.",_maintainCount], 5] call Epoch_message;
};
_rnd = format ["rmx_var_temp%1%2",floor random 100, selectRandom ["A","B","C","D","E","F"]];
@ -54,7 +54,7 @@ if (EPOCH_playerCrypto > 0) then {
EPOCH_maintainLockout = nil;
};
[format["Cost %1 Krypto to maintain base.", _maintainCount], 5] call Epoch_message;
[format["Cost %1 Crypto to maintain base.", _maintainCount], 5] call Epoch_message;
} else {
["Nothing needs Maintaining", 5] call Epoch_message;
};

View File

@ -134,7 +134,7 @@ if (_class != "") then {
_AnchorPos = [];
_helper = objnull;
if (typeof EPOCH_target in ["CinderWallHalf_Ghost_EPOCH","WoodLargeWall_Ghost_EPOCH"]) then {
if (typeof EPOCH_target in ["CinderWallHalf_Ghost_EPOCH","WoodLargeWall_Ghost_EPOCH","JailWall_Ghost_EPOCH"]) then {
_helper = "Sign_Arrow_Direction_Yellow_F" createVehicleLocal (getpos EPOCH_target);
_helper attachto [EPOCH_target, [0, -0.5, 1]];
_helper setdir 180;

View File

@ -116,7 +116,7 @@ if (_object isKindOf "Constructions_static_F") then {
_canUpgradePartCount = _canUpgradePartCount + _req;
} forEach _upgradeParts;
_doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH","WoodStairs3_EPOCH"];
_doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH","WoodStairs3_EPOCH","JailWallDoor_EPOCH"];
_gates = ["CinderWallGarage_EPOCH","WoodWallGarage_EPOCH","MetalWallGarage_EPOCH"];
if (_canUpgrade) then {
_upgradeto = _upgrade select 0;

View File

@ -22,4 +22,11 @@ if (_unit == player) then {
["BUILD MODE: DISABLED", 5] call Epoch_message;
EPOCH_Target = objNull;
};
if (missionnamespace getvariable ["EPOCH_AutoEarplug",false]) then {
if !(EPOCH_Earplugsin) then {
systemchat 'Earplugs have been auto-inserted...';
EPOCH_Earplugsin = true;
1 fadeSound 0.15;
};
};
};

View File

@ -36,4 +36,11 @@ if (_unit == player) then {
};
} forEach lineintersectsobjs [_start, _end, player, _vehicle, true, 2];
};
if (missionnamespace getvariable ["EPOCH_AutoEarplug",false]) then {
if (EPOCH_Earplugsin) then {
systemchat 'Earplugs have been auto-removed...';
EPOCH_Earplugsin = false;
1 fadeSound 1;
};
};
};

View File

@ -41,5 +41,5 @@ private _newStat = _currentStat + _adjust;
missionNameSpace setVariable[_statVarName,_newStat];
if(_toServer)then{
[player, _statType, _adjust, false, Epoch_personalToken] remoteExec ["EPOCH_fnc_updatePlayerStats",2];
};
[player, objNull, _statType, _adjust, false, Epoch_personalToken] remoteExec ["EPOCH_fnc_updatePlayerStats",2];
};

View File

@ -33,5 +33,13 @@ if (underwater player) then {
if (_ins isEqualTo []) exitWith { objNull };
(_ins select 0 param [3,objNull])
} else {
cursorTarget
if (player distance cursorobject < 3.5 && {!((gettext (configfile >> "cfgammo" >> (typeof cursorobject) >> "defaultMagazine")) isEqualTo "")}) exitwith {
cursorobject
};
if (!isnull cursorTarget) then {
cursorTarget
}
else {
cursorobject
};
}

View File

@ -21,23 +21,6 @@
Returns:
STRING
*/
//[[[cog import generate_private_arrays ]]]
private ["_displayName","_return"];
//[[[end]]]
params ["_item"];
_return = "";
if ([_item, "CfgVehicles"] call EPOCH_fnc_isAny) then {
_return = getText(configfile >> "CfgVehicles" >> _item >> "DisplayName");
} else {
if ([_item, "CfgWeapons"] call EPOCH_fnc_isAny) then {
_return = getText(configfile >> "CfgWeapons" >> _item >> "DisplayName");
} else {
if ([_item, "CfgMagazines"] call EPOCH_fnc_isAny) then {
_return = getText(configfile >> "CfgMagazines" >> _item >> "DisplayName");
};
};
};
if (_return isequalto "") then {
_return = _item;
};
_return;
// Changed function name for usage Server and Client side
_this call EPOCH_fnc_itemDisplayName;

View File

@ -99,6 +99,24 @@ if (_dikCode == EPOCH_keysDebugMon) then {
_handled = true;
};
// E-Pad
if (_dikCode == EPOCH_keysEPad) then {
if (isnull (finddisplay 9898)) then {
createdialog 'epoch_tablet_gui';
};
};
if (_dikCode == EPOCH_Earplugs) then {
if (EPOCH_Earplugsin) then {
EPOCH_Earplugsin = false;
1 fadeSound 1;
}
else {
EPOCH_Earplugsin = true;
1 fadeSound 0.15;
};
};
//Action Menu
if (_dikCode == EPOCH_keysAction) then {
//_handled = true;
@ -172,10 +190,10 @@ if (vehicle player == player) then {
};
if (_dikCode in(actionKeys "moveFastForward") || _dikCode in(actionKeys "moveForward")) then {
if ((diag_tickTime - EPOCH_lastAGTime) > 1) then {
if ((diag_tickTime - EPOCH_lastAGTime) > 0.5) then {
EPOCH_lastAGTime = diag_tickTime;
if !(player nearObjects["Const_All_Walls_F", 6] isEqualTo[]) then {
_currentPos = player modelToWorld[0, 1, 1];
_currentPos = player modelToWorld[0, 1.75, 1];
if !(surfaceIsWater _currentPos) then {
_currentPos = ATLtoASL _currentPos;
};

View File

@ -24,10 +24,10 @@
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"];
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]], ["_lootCheckBufferLimit",333], ["_lootObjectLimit",33]];
params [["_building",objNull,[objNull]], ["_LootBiasAdd",0]];
_lootObjectLimit = 33;
_selectedConfig = typeOf _building;
if (_selectedConfig isEqualTo "") then {
(getModelInfo _building) params [["_modelName",""]];
@ -47,17 +47,13 @@ _cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
_return = false;
if !(isClass(_config)) exitWith {_return};
_lootBias = getNumber(_config >> "lootBias");
_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 = ceil random(getNumber(_config >> "limit"));
_lootLimit = (round random(getNumber(_config >> "limit"))) max 1;
_posName = "";
EPOCH_LootedBlds pushBackUnique _building;
if (count EPOCH_LootedBlds >= _lootCheckBufferLimit) then {
EPOCH_LootedBlds deleteAt 0;
};
if ((random 100) < _lootBias) then {
_possibleLoots = [];
{

View File

@ -19,7 +19,7 @@ _missionIndex = lbCurSel 1500;
_missionAllowed = true;
_missionClasses = getArray(getMissionConfig "EpochMissionList" >> "traderMissionClasses");
_nrEnts = player nearEntities ["Man", 20];
_nrEnts = EPOCH_Traders select {alive _x && player distance _x < 20};
_trader = objNull;
{
if ((_x getVariable ["AI_SLOT", -1]) > -1) exitWith {

View File

@ -47,8 +47,8 @@ if (!isNull EPOCH_p2ptradeTarget) then {
_tradeCryptoOffer = (_tradeOffer select 1);
if (_tradeCryptoOffer > 0) then {
_index = lbAdd[1502, format["%1 Krypto", _tradeCryptoOffer]];
lbSetData[1502, _index, "Krypto"];
_index = lbAdd[1502, format["%1 Crypto", _tradeCryptoOffer]];
lbSetData[1502, _index, "Crypto"];
lbSetPicture[1502, _index, "\x\addons\a3_epoch_code\Data\UI\cc_ca.paa"];
};

View File

@ -18,7 +18,8 @@ private ["_line","_magname","_vehName","_vehtype"];
//[[[end]]]
params ['_vehicle','_ammotype','_turret','_reloagmags','_ammocount','_costs'];
if (!local _vehicle) exitWith {
//if (!local _vehicle) exitWith {
if !(_vehicle turretLocal _turret) exitwith {
_line = 'Rearm denied - Go in as driver first!';
[_line,5] call Epoch_message;
};

View File

@ -56,7 +56,7 @@ Epoch_CamAdjust = [0,0,0];
0 fadeRadio 0;
enableSentences false;
enableRadio false;
player setVariable["BIS_noCoreConversations", true];
// player setVariable["BIS_noCoreConversations", true]; // Moved to Masterloop (Player is not loaded in here)
EPOCH_ArmaSlingLoad = true;
_r3fON = if(!isNil "R3F_LOG_CFG_can_lift")then{if!(R3F_LOG_CFG_can_lift isEqualTo [])then{true}else{false}}else{false};
@ -69,3 +69,42 @@ if (_r3fON || _advSling)then{
inGameUISetEventHandler ["Action", "if(!(_this isEqualTo []) && !(_this select 10 in ['PrevAction','NextAction']))then{_this call EPOCH_handleUIActions}"];
//inGameUISetEventHandler ["NextAction", "_this call EPOCH_handleUIActions"];
//inGameUISetEventHandler ["PrevAction", "_this call EPOCH_handleUIActions"];
// Load / Overwrite Vars from ProfileNamespace
_cfg = "e_pad_config" call EPOCH_returnConfig;
_startvars = getarray (_cfg >> "LoadVarsFromProfile");
_arr = profilenamespace getvariable ["Epoch_ToggleVars",[[],[]]];
_todelete = [];
{
_x params ["_varname",["_default","false",[""]]];
if (_varname isequaltype "" && !(_varname isequalto "")) then {
_value = if ((tolower _default) isequalto "true") then {true} else {false};
_find = (_arr select 0) find _varname;
if (_find > -1) then {
_tmpvalue = (_arr select 1 select _find);
if (_tmpvalue isequaltype true) then {
_value = _tmpvalue;
}
else {
_todelete pushback _x;
};
}
else {
(_arr select 0) pushback _varname;
(_arr select 1) pushback _default;
};
missionnamespace setvariable [_varname,_value];
};
} foreach _startvars;
{
_find = (_arr select 0) find _x ;
if (_find > -1) then {
(_arr select 0) deleteat _find;
(_arr select 1) deleteat _find;
};
} foreach _todelete;
if !(_arr isequalto (profilenamespace getvariable ["Epoch_ToggleVars",[[],[]]])) then {
profilenamespace setvariable ["Epoch_ToggleVars",_arr];
saveprofilenamespace;
};

View File

@ -32,7 +32,9 @@ _keyMap =
["Action","EPOCH_keysAction",0x39],
["Holster Weapon", "EPOCH_keysHolster", 35],
["Debug Monitor", "EPOCH_keysDebugMon", 41],
["E-Pad", "EPOCH_keysEPad", 0x44],
["AutoRun", "EPOCH_keysAutoRun", 0x11],
["Earplugs", "EPOCH_Earplugs", 0x3E],
["Volume + (ctrl)","EPOCH_keysVolumeUp",0x0D],
["Volume - (ctrl)","EPOCH_keysVolumeDown",0x0C],

View File

@ -132,7 +132,7 @@ if (_forceBloodRise) then {
if (_allowBloodDrop || _forceBloodDrop) then {
// allow player to bleed out or die from hypothermia
_lowerBPlimit = [100,0] select (isBleeding player || _forceBloodDrop);
_playerBloodP = [_playerBloodPKey, -1, _playerBloodPMax , _lowerBPlimit] call EPOCH_fnc_setVariableLimited;
_playerBloodP = [_playerBloodPKey, -0.1, _playerBloodPMax , _lowerBPlimit] call EPOCH_fnc_setVariableLimited;
};
};
@ -239,9 +239,11 @@ if (!isnil "EPOCH_ResetTraderMission") then {
EPOCH_taskMarker = nil;
};
if !(_EPOCH_TraderMissionArray isequalto []) then {
_EPOCH_TraderMissionArray params ["_mainblock"];
_EPOCH_TraderMissionArray params ["_mainblock","","","","","_taskFailed"];
_mainblock params ["","","","","",["_missionCleanUpCall",""]];
call _missionCleanUpCall;
_taskFailed params ['','','','',["_taskFailedCall",""]];
call _taskFailedCall;
};
EPOCH_ActiveTraderMission = [];
_EPOCH_TraderMissionArray = [];
@ -364,24 +366,33 @@ if !(_playerTempKey isEqualTo "EPOCH_playerTemp") then {
};
// Check for PlayerMarker and Update or Remove it
_config = 'CfgMarkerSets' call EPOCH_returnConfig;
_markerArray = getArray(_config >> 'PlayerMarker' >> 'markerArray');
_markerName = (_markerArray select 0) select 0;
if(_markerName in allMapMarkers)then{
if!('ItemGPS' in (assignedItems player))then{
['PlayerMarker'] call EPOCH_fnc_deleteLocalMarkerSet;
if(((getArray(_config >> 'DeathMarker' >> 'markerArray') select 0) select 0) in allMapMarkers)then{
['DeathMarker'] call EPOCH_fnc_deleteLocalMarkerSet;
};
}else{
if (_PlayerMarkerEnabled && EPOCH_PlayerMarkerOn && {'ItemGPS' in (assignedItems player)}) then {
if (_PlayerMarkerName in allMapMarkers) then {
{
(_x select 0) setMarkerPosLocal (position player);
if(count(_x) >= 8)then{(_x select 0) setMarkerTextLocal (call compile (_x select 7))};
}forEach _markerArray;
}forEach _PlayerMarkerArray;
}
else {
['PlayerMarker',position player] call EPOCH_fnc_createLocalMarkerSet;
};
}
else {
if (_PlayerMarkerName in allMapMarkers) then {
['PlayerMarker'] call EPOCH_fnc_deleteLocalMarkerSet;
};
};
if(getNumber(('CfgEpochClient' call EPOCH_returnConfig) >> 'mapOnZoomSetMarkerSize') isEqualTo 1)then{
if (_DeathMarkerEnabled && EPOCH_DeathMarkerOn && !(_DeathMarker isEqualTo [])) then {
if !(_DeathMarkerName in allMapMarkers) then {
['DeathMarker',_DeathMarker] call EPOCH_fnc_createLocalMarkerSet
};
}
else {
if (_DeathMarkerName in allMapMarkers) then {
['DeathMarker'] call EPOCH_fnc_deleteLocalMarkerSet;
};
};
if(_mapOnZoomSetMarkerSize isEqualTo 1)then{
if(visibleMap)then{
_mapScale = ctrlMapScale ((findDisplay 12) displayCtrl 51);
_mapMarkers = allMapMarkers;

View File

@ -53,7 +53,7 @@ if (_playerRadiation > _radiationEffectsThreshold) then {
// Geiger Deplete Energy
if (EPOCH_geiger_shown) then {
_energyValue = _energyValue - (["CfgEpochClient", "outOfBoundsRadiation", 10] call EPOCH_fnc_returnConfigEntryV2);
_energyValue = _energyValue - _outOfBoundsRadiation;
};
// Energy Handler
@ -85,12 +85,14 @@ if !(_attackers isEqualTo[]) then {
(_attackers select 0) call EPOCH_client_bitePlayer;
_panic = true;
} else {
_toxicObjs = player nearobjects["SmokeShellCustom", 12];
if!(_toxicObjs IsEqualTo[]) then {
(_toxicObjs select 0) call EPOCH_client_bitePlayer;
_panic = true;
} else {
_panic = false;
if !(uniform player in ["Epoch_RadiationSuit_F","Epoch_RadiationSuit_M"]) then {
_toxicObjs = player nearobjects["SmokeShellCustom", 12];
if!(_toxicObjs IsEqualTo[]) then {
(_toxicObjs select 0) call EPOCH_client_bitePlayer;
_panic = true;
} else {
_panic = false;
};
};
};
@ -200,5 +202,3 @@ _playerNuisance = [_playerNuisanceKey,-1,_playerNuisanceMax,_playerNuisanceMin]
// calculate max stamina
EPOCH_playerStaminaMax = (100 * (round(_playerAliveTime/360)/10)) min 2500;
// process loot
call _lootBubble;

View File

@ -1,2 +1,5 @@
//Updates favorites bar
call epoch_favBar_refresh;
// process loot
_LootBiasAdd = _LootBiasAdd call _lootBubble;

View File

@ -16,6 +16,10 @@ _clientAliveTimer = diag_tickTime;
// Fade Black Screen
_fadedblack = false;
// Lootspawner
_LootSpawned = false;
_LootBiasAdd = 30;
// 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;
_gModeVarNames = _gmVarsInit apply {_x param [0,""]};
@ -100,7 +104,7 @@ if (isNil "EPOCH_display_setup_complete") then {
call epoch_dynamicHUD_start;
};
player setVariable["BIS_noCoreConversations", true];
// Background radiation
_outOfBoundsRadiation = ["CfgEpochClient", "outOfBoundsRadiation", 10] call EPOCH_fnc_returnConfigEntryV2;
@ -132,7 +136,13 @@ _energyRange = ["CfgEpochClient", "energyRange", 75] call EPOCH_fnc_returnConfig
_hudConfigs = ["CfgEpochClient", "hudConfigs", []] call EPOCH_fnc_returnConfigEntryV2;
_radioactiveLocations = ["CfgEpochClient", "radioactiveLocations", ["NameCityCapital", "NameCity", "Airport"]] call EPOCH_fnc_returnConfigEntryV2;
_radiatedObjMaxRange = ["CfgEpochClient", "radiatedObjMaxFalloutDist", 75] call EPOCH_fnc_returnConfigEntryV2;
_PlayerMarkerArray = getArray(('CfgMarkerSets' call EPOCH_returnConfig) >> 'PlayerMarker' >> 'markerArray');
_PlayerMarkerName = (_PlayerMarkerArray param [0,[]]) param [0,"EPOCH_PlayerMarker1"];
_DeathMarkerName = ((getArray (('CfgMarkerSets' call EPOCH_returnConfig) >> 'DeathMarker' >> 'markerArray')) param [0,[]]) param [0,"EPOCH_DeathMarker1"];
_mapOnZoomSetMarkerSize = ["CfgEpochClient", "mapOnZoomSetMarkerSize", 0] call EPOCH_fnc_returnConfigEntryV2;
_PlayerMarkerEnabled = (["CfgEpochClient", "playerLocationMarkerGPSOnly", 0] call EPOCH_fnc_returnConfigEntryV2) isequalto 1;
_DeathMarkerEnabled = (["CfgEpochClient", "playerDeathMarkerGPSOnly", 0] call EPOCH_fnc_returnConfigEntryV2) isequalto 1;
_DeathMarker = profileNameSpace getVariable ['EPOCHLastKnownDeath',[]];
_chargeRate = 0;
_antagonistChanceDefaults = [
@ -204,40 +214,87 @@ _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;
};
};
_lootBubble = {
private["_jammer", "_others", "_objects", "_nearObjects", "_building", "_lootDist", "_lootLoc", "_playerPos", "_distanceTraveled"];
private["_jammer", "_others", "_objects", "_nearObjects", "_building", "_lootDist", "_lootLoc", "_playerPos", "_distanceTraveled","_AddBias","_dir","_minlootdist","_maxlootdist"];
_LootBiasAdd = _this;
_playerPos = getPosATL vehicle player;
_distanceTraveled = _lastPlayerPos distance _playerPos;
if (_distanceTraveled > 10 && _distanceTraveled < 200) then {
_lootDist = 30 + _distanceTraveled;
_lootLoc = player getRelPos [_lootDist, (random [-180,0,180])];
_objects = (_lootLoc nearObjects 30) select {
private _selectedConfig = typeOf _x;
if (_selectedConfig isEqualTo "") then {
(getModelInfo _x) params [["_modelName",""]];
if (!isnil "_modelName") then {
_selectedConfig = (_modelName splitString " .") joinString "_";
};
_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 "_";
};
((toLower _selectedConfig) in _lootClasses)
};
// diag_log format["DEBUG: loot objects %1",_objects];
_jammer = nearestObjects [_lootLoc, ["PlotPole_EPOCH","ProtectionZone_Invisible_F"], _buildingJammerRange];
if (!(_objects isEqualTo[]) && (_jammer isEqualTo[])) then {
_building = selectRandom _objects;
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"], sizeOf (typeOf _building)];
//diag_log format["DEBUG: sizeof %1 %2",sizeOf (typeOf _building), typeOf _building];
if (_nearObjects isEqualTo[]) then {
[_building] call EPOCH_spawnLoot;
if ((toLower _selectedConfig) in _lootClasses) then {
_nearestbuilding call _pushbacklootedbld;
};
};
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;
};
_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];
};
_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 "_";
};
};
((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 = (_lootLoc nearObjects ["PlotPole_EPOCH", _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};
};
};
};
};
};
};
_lastPlayerPos = _playerPos;
_LootBiasAdd
};
// init weather temperature var if not already set

View File

@ -87,7 +87,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
};
} forEach EPOCH_NpcTradePlayerItems;
_vehicles = player nearEntities [["LandVehicle","Ship","Air","Tank"], 30];
_vehicles = player nearEntities [["LandVehicle","Ship","Air","Tank"], ["CfgEpochClient", "MaxVehTradeDist", 30] call EPOCH_fnc_returnConfigEntryV2];
if !(_vehicles isequalto []) then {
_VehOfferArray = [];
_sizeOut = lbSize _PlayerItemsOutBox;

View File

@ -65,7 +65,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
_vehicle = _x;
if (local _vehicle && (typeof _vehicle) isequalto _uiItem) then {
{
if ((["wheel",tolower _x] call bis_fnc_instring) || _x isequalto "HitEngine") then {
if ((["wheel",tolower _x] call bis_fnc_instring) || (tolower _x) isequalto "hitengine") then {
if (((getAllHitPointsDamage _vehicle) select 2 select _foreachindex) >= 1) then {
_allowAdd = false;
_errormsg = "Cannot be sold - too much damage";
@ -75,7 +75,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
} foreach ((getAllHitPointsDamage _vehicle) select 0);
};
if (!_allowAdd) exitwith {};
} foreach (EPOCH_lastNPCtradeTarget nearEntities [[_uiItem], 30]);
} foreach (EPOCH_lastNPCtradeTarget nearEntities [[_uiItem], ["CfgEpochClient", "MaxVehTradeDist", 30] call EPOCH_fnc_returnConfigEntryV2]);
};
};
};
@ -133,7 +133,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
_cryptoCount = _cryptoCount + _worth;
};
};
ctrlSetText [_CryptoInCtrl, (format["%1 Krypto", _cryptoCount])];
ctrlSetText [_CryptoInCtrl, (format["%1 Crypto", _cryptoCount])];
_cryptoCount = 0;
_sizeOut = lbSize _TraderItemsOutBox;
if (_sizeOut > 0) then {
@ -152,7 +152,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
_cryptoCount = _cryptoCount + _worth;
};
};
ctrlSetText [_CryptoOutCtrl, (format["%1 Krypto", _cryptoCount])];
ctrlSetText [_CryptoOutCtrl, (format["%1 Crypto", _cryptoCount])];
if (_control == _PlayerItemsBox) then {
lbSetCurSel [_PlayerFilerDropDown, 0];
};

View File

@ -127,7 +127,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
_cryptoCount = _cryptoCount + _worth;
};
};
ctrlSetText [_CryptoInCtrl, (format["%1 Krypto", _cryptoCount])];
ctrlSetText [_CryptoInCtrl, (format["%1 Crypto", _cryptoCount])];
_cryptoCount = 0;
_sizeOut = lbSize _TraderItemsOutBox;
if (_sizeOut > 0) then {
@ -146,7 +146,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
_cryptoCount = _cryptoCount + _worth;
};
};
ctrlSetText [_CryptoOutCtrl, (format["%1 Krypto", _cryptoCount])];
ctrlSetText [_CryptoOutCtrl, (format["%1 Crypto", _cryptoCount])];
}
else {
["Limit one per trade", 5] call Epoch_message;

View File

@ -49,7 +49,7 @@ if (isClass (_config >> _uiItem)) then {
_cryptoCount = _cryptoCount + _worth;
};
};
ctrlSetText [_CryptoInCtrl, (format["%1 Krypto", _cryptoCount])];
ctrlSetText [_CryptoInCtrl, (format["%1 Crypto", _cryptoCount])];
_cryptoCount = 0;
_sizeOut = lbSize _TraderItemsOutBox;
if (_sizeOut > 0) then {
@ -68,5 +68,5 @@ if (isClass (_config >> _uiItem)) then {
_cryptoCount = _cryptoCount + _worth;
};
};
ctrlSetText [_CryptoOutCtrl, (format["%1 Krypto", _cryptoCount])];
ctrlSetText [_CryptoOutCtrl, (format["%1 Crypto", _cryptoCount])];
};

View File

@ -2,6 +2,7 @@ if (isNull(findDisplay -13)) exitWith{};
// perform wait while menu is still open
if (isNil "EPOCH_bankTransferActive") then {
if !(alive player) exitwith {};
EPOCH_bankTransferActive = true;
ctrlEnable[1600, false];
@ -33,6 +34,7 @@ if (isNil "EPOCH_bankTransferActive") then {
_sleep = ((_totalTransfer * _timePerCrypto) min _maxWait) max _minWait;
for "_i" from 0 to 100 do {
if (isNull(findDisplay -13)) exitWith{};
if !(alive player) exitwith {};
_progress = _progress + 1;
if (_progress >= 100) exitWith{};
ctrlSetText[1200, format["\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa", _progress]];

View File

@ -88,17 +88,13 @@ if (alive _this) then {
_added = true;
}
else {
_vehicles = _this nearEntities[[_item], 30];
_vehicles = (nearestobjects [_this,[_item], ["CfgEpochClient", "MaxVehTradeDist", 30] call EPOCH_fnc_returnConfigEntryV2]) select {local _x && alive _x};
if (!(_vehicles isEqualTo[])) then {
_vehicle = _vehicles select 0;
if (!isNull _vehicle) then {
if (local _vehicle) then {
_vehSlot = _vehicle getVariable["VEHICLE_SLOT", "ABORT"];
if (_vehSlot != "ABORT" || _EnableTempVehTrade) then {
_arrayIn pushBack [_item,_rounds];
_added = true;
};
};
_vehSlot = _vehicle getVariable["VEHICLE_SLOT", "ABORT"];
if (_vehSlot != "ABORT" || _EnableTempVehTrade) then {
_arrayIn pushBack [_item,_rounds];
_added = true;
};
};
};

View File

@ -7,9 +7,9 @@ if (!isNull _this) then {
_getCrypto = _this getVariable["Crypto", 0];
if (_getCrypto > 0) then {
[player, Epoch_personalToken, _this] remoteExec ["EPOCH_server_takeCrypto",2];
[format["You found %1 Krypto", _getCrypto], 5] call Epoch_message;
[format["You found %1 Crypto", _getCrypto], 5] call Epoch_message;
} else {
["No Krypto found", 5] call Epoch_message;
["No Crypto found", 5] call Epoch_message;
};
};
[] spawn{

View File

@ -0,0 +1,15 @@
/*
Author: He-Man - EpochMod.com
Contributors:
Description:
Custom A3 Epoch FiredNear 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_FiredNear.sqf
*/
params ["_unit", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo", "_gunner"];

View File

@ -0,0 +1,15 @@
/*
Author: He-Man - EpochMod.com
Contributors:
Description:
Custom A3 Epoch Hit 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_Hit.sqf
*/
params ["_unit", "_source", "_damage", "_instigator"];

View File

@ -0,0 +1,15 @@
/*
Author: He-Man - EpochMod.com
Contributors:
Description:
Custom A3 Epoch SeatSwitchedMan 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_SeatSwitchedMan.sqf
*/
params ["_unit1", "_unit2", "_vehicle"];

View File

@ -0,0 +1,31 @@
_config = 'CfgEpochClient' call EPOCH_returnConfig;
_blacklist = (getArray(_config >> worldname >> 'blockedArea'));
if (isnil "Epoch_BlockedMarkeron") then {
Epoch_BlockedMarkeron = false;
};
if (Epoch_BlockedMarkeron) then {
{
_x params ["_mPos","_size"];
_mName = format ["blockedmarker_%1",_mPos];
deleteMarkerlocal _mName;
} foreach _blacklist;
["Blocked Areas are now removed from your Map",5] call Epoch_Message;
}
else {
_mShape = 'ELLIPSE';
_mColor = 'ColorRed';
_mBrush = 'Grid';
_mAlpha = 0.8;
{
_x params ["_mPos","_size"];
_msize = [_size,_size];
_mName = format ["blockedmarker_%1",_mPos];
_mrkr = createMarkerLocal [_mName, _mPos];
_mName setMarkerShapeLocal _mShape;
_mName setMarkerSizeLocal _mSize;
_mName setMarkerColorLocal _mColor;
_mName setMarkerBrushLocal _mBrush;
_mName setMarkerAlphaLocal _mAlpha;
} forEach _blacklist;
["Blocked Areas are now shown on your Map",5] call Epoch_Message;
};

View File

@ -0,0 +1,36 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta charset="UTF-8">
<title>E_Pad</title>
<meta name="robots" content="noindex">
<style type="text/css">
a {
color: #FFCC00;
}
a:visited {
color: #FFCC00;
}
.auto-style1 {
color: #FF0000;
font-weight: bold;
}
.auto-style2 {
color: #FF0000;
}
.auto-style3 {
color: #FF0000;
font-weight: bold;
font-size: large;
}
</style>
</head>
<body style="color: #FFFF00)">
<p>
<span class="auto-style2"><b>Server Contacts:</b></span><br>
Homepage: <a href="http://epochmod.com" target="_blank">EpochMod.com</a><br>
Discord: <a href="https://discord.gg/0k4ynDDCsnMzkxk7" target="_blank">EpochMod Discord</a><br>
FaceBook: <a href="https://www.facebook.com/EpochMod/" target="_blank">https://www.facebook.com/EpochMod/</a><br>
</p>
</body>
</html>

View File

@ -0,0 +1,36 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta charset="UTF-8">
<title>E_Pad</title>
<meta name="robots" content="noindex">
<style type="text/css">
a {
color: #FFCC00;
}
a:visited {
color: #FFCC00;
}
.auto-style1 {
color: #FF0000;
font-weight: bold;
}
.auto-style2 {
color: #FF0000;
}
.auto-style3 {
color: #FF0000;
font-weight: bold;
font-size: large;
}
</style>
</head>
<body style="color: #FFFF00)">
<p>
<span class="auto-style2"><b>Server Infos:</b></span><br>
Homepage: <a href="http://epochmod.com" target="_blank">EpochMod.com</a><br>
Discord: <a href="https://discord.gg/0k4ynDDCsnMzkxk7" target="_blank">EpochMod Discord</a><br>
FaceBook: <a href="https://www.facebook.com/EpochMod/" target="_blank">https://www.facebook.com/EpochMod/</a><br>
</p>
</body>
</html>

View File

@ -0,0 +1,37 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta charset="UTF-8">
<title>E_Pad</title>
<meta name="robots" content="noindex">
<style type="text/css">
a {
color: #FFCC00;
}
a:visited {
color: #FFCC00;
}
.auto-style1 {
color: #FF0000;
font-weight: bold;
}
.auto-style2 {
color: #FF0000;
}
.auto-style3 {
color: #FF0000;
font-weight: bold;
font-size: large;
}
</style>
</head>
<body style="color: #FFFF00)">
<p>
<span class="auto-style2"><b>Server Rules</b></span><br>
- Play fair!<br>
&nbsp;&nbsp;&nbsp;- Do not glitch<br>
&nbsp;&nbsp;&nbsp;- Do not use bugs<br>
&nbsp;&nbsp;&nbsp;- Do not flame other players<br>
</p>
</body>
</html>

View File

@ -0,0 +1,35 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta charset="UTF-8">
<title>E_Pad</title>
<meta name="robots" content="noindex">
<style type="text/css">
a {
color: #FFCC00;
}
a:visited {
color: #FFCC00;
}
.auto-style1 {
color: #FF0000;
font-weight: bold;
}
.auto-style2 {
color: #FF0000;
}
.auto-style3 {
color: #FF0000;
font-weight: bold;
font-size: large;
}
</style>
</head>
<body style="color: #FFFF00)">
<p>
<span class="auto-style2"><b>Server Settings:</b></span><br>
Ask an Admin to change this file:<br>
epoch_code\customs\E_Pad\ServerSettings.html<br>
</p>
</body>
</html>

View File

@ -0,0 +1,23 @@
params [["_EnergyRequired",250],["_radius",250]];
if (missionnamespace getvariable ["Epoch_PlayerScanActive",false]) exitwith {};
if (EPOCH_playerEnergy - _EnergyRequired < 0) exitwith {
[format ['You need %1 Energy to scan for near Players',_EnergyRequired], 5,[[0,0,0,0.5],[1,0.5,0,1]]] call Epoch_message;
};
Epoch_PlayerScanActive = true;
["Energy",-_EnergyRequired] call Epoch_GiveAttributes;
_radius spawn {
private ["_plyr","_plyrs","_trdrMsg"];
["Scanning for near Players... Please wait...", 10,[[0,0,0,0.5],[1,0.5,0,1]]] call Epoch_message;
uisleep (5 + random 3);
_trdrMsg = "";
_plyrs = (player nearEntities _this) select {isplayer _x};
if (count _plyrs < 2) then {
_trdrMsg = format["Apart from you %1. %2",name player, selectRandom ["I haven't seen any round these parts for a long while.","It has been very quiet around here,","There is not much to report !"]];
} else {
_plyrs deleteAt 0;
_plyr = selectRandom _plyrs;
_trdrMsg = format["%2 %1.",name _plyr, selectRandom ["The last person picked up by the UAV was","I did spot someone earlier, their name was","I heard there was somebody new in the area, "]];
};
[_trdrMsg, 5,[[0,0,0,0.5],[1,0.5,0,1]]] call Epoch_message;
Epoch_PlayerScanActive = nil;
};

View File

@ -0,0 +1,23 @@
params [["_EnergyRequired",250],["_radius",250]];
if (missionnamespace getvariable ["Epoch_VehicleScanActive",false]) exitwith {};
if (EPOCH_playerEnergy - _EnergyRequired < 0) exitwith {
[format ['You need %1 Energy to scan for near Players',_EnergyRequired], 5,[[0,0,0,0.5],[1,0.5,0,1]]] call Epoch_message;
};
Epoch_VehicleScanActive = true;
["Energy",-_EnergyRequired] call Epoch_GiveAttributes;
_radius spawn {
private ["_dist","_trdrMsg","_veh","_vehs"];
["Scanning for near Vehicles... Please wait...", 10,[[0,0,0,0.5],[1,0.5,0,1]]] call Epoch_message;
uisleep (5 + random 3);
_trdrMsg = "";
_vehs = player nearEntities [["Landvehicle","SHIP","AIR","TANK"],_this];
if (count _vehs < 1) then {
_trdrMsg = format["%2 %1.",name player,selectRandom["I haven't seen anything lately","There is nothing around here","The last time the UAV went out it found nothing"]];
} else {
_veh = selectrandom _vehs;
_dist = ceil ((_veh distance player) / 100) * 100;
_trdrMsg = format["I know of at least one vehicle within about %1m. It looks like a %2.",_dist, (typeof _veh) call EPOCH_itemDisplayName];
};
[_trdrMsg, 5,[[0,0,0,0.5],[1,0.5,0,1]]] call Epoch_message;
Epoch_VehicleScanActive = nil;
};

View File

@ -0,0 +1,17 @@
private _newsArr = [
"My dog was shot. That made me sad.",
"Business has been quiet since word got out that sappers are in the area.",
"Looters are expecting too much crypto for all the junk they bring in.",
"What do I look like ? A newspaper vendor. Go Away.",
"The sun came up again this morning.. That's good news I suppose.",
"Keep your dog fed with raw or cooked carcasses.",
"Sappers are known to be good for their pelts. Just don't get too close to one",
"Some strange rumours that a Construct was seen in the mountains. Those are just bedtime stories to scare kids with.",
"UAVs are a good source of components.",
"Some say the nearby town is haunted by malevolent spirits.",
"I hear the military are helping survivors with air drops. Your loot is always welcome here if you find one.",
"Dogs can help you find pelts and animal carcasses",
"I heard that a new vehicle has been seen, some kind of board that you stand on. I personally don't believe it."
];
[selectRandom _newsArr, 5,[[0,0,0,0.5],[1,0.5,0,1]]] call Epoch_message;

View File

@ -0,0 +1,7 @@
disableserialization;
_display = finddisplay 9898;
call EPOCH_EPad_clearscreen;
_htmlctrl = (_display displayctrl 1901);
_htmlctrl ctrlshow true;
_html = "epoch_code\gui\scripts\e_pad\Apps\E_Pad.html";
_htmlctrl htmlLoad _html;

View File

@ -20,7 +20,13 @@ private ["_cfg","_color","_configs","_ctrl","_ctrlPos","_getIDC","_group","_grou
params [["_display",displayNull,[displayNull] ] ];
_offset = if (isServer) then {40 * GUI_GRID_W + GUI_GRID_X;} else {
if (getNumber (getMissionConfig "enableDebugConsole") > 0) then {
private _dbgC = getMissionConfigValue ["enableDebugConsole",0];
private _dbgCOpen = if (_dbgC isEqualType []) then {
getPlayerUID player in _dbgC
} else {
(serverCommandAvailable "#lock" && _dbgC == 1) || _dbgC == 2 };
if (_dbgCOpen) then {
40 * GUI_GRID_W + GUI_GRID_X;
} else {
17 * GUI_GRID_W + GUI_GRID_X;

View File

@ -0,0 +1,13 @@
_cfg = "e_pad_config" call EPOCH_returnConfig;
_startvars = getarray (_cfg >> "LoadVarsFromProfile");
{
_x params ["_varname",["_default","false",[""]]];
if (_varname isequaltype "" && !(_varname isequalto "")) then {
_value = if ((tolower _default) isequalto "true") then {true} else {false};
missionnamespace setvariable [_varname,_value];
};
} foreach _startvars;
profilenamespace setvariable ["Epoch_ToggleVars",nil];
saveprofilenamespace;
hintsilent "";
["E-Pad settings resetted",5] call epoch_message;

View File

@ -0,0 +1,5 @@
disableSerialization;
_display = finddisplay 9898;
{
(_display displayctrl _x) ctrlshow false;
} foreach [1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1814,1900,1902,1903];

View File

@ -0,0 +1,166 @@
disableSerialization;
if (isnull (finddisplay 9898)) exitwith {};
_display = finddisplay 9898;
call EPOCH_EPad_clearscreen;
params [["_in",""],["_animate",false]];
_cfg = "e_pad_config" call EPOCH_returnConfig;
_arr = [];
_buttonSettings = [];
_config = switch (_in) do {
case "":
{
(_cfg >> "Apps")
};
default
{
_c = format ["_cfg >> '%1'","Apps"];
_arr = _in;
{
_c = _c + (format [" >> '%1'",_x]);
} forEach _arr;
(call compile _c)
};
};
_configs = "true" configClasses _config;
for "_i" from ((Epoch_E_Pad_Page-1)*12) to (((count _configs)-1) min (((Epoch_E_Pad_Page-1)*12)+11)) do {
_configx = _configs select _i;
_subclasses = configProperties [_configx, "isClass _x",true];
_action = format ["%1;",getText(_configx >> "action")];
_togglevar = getText(_configx >> "ToggleVar");
_html = getText (_configx >> "html");
if (_html isequalto "") then {
if !(_subclasses isEqualTo []) then {
_action = _action + format ["Epoch_E_Pad_Page = 1; [%1] call EPOCH_EPad_dialog", _arr + [(configName _configx)]];
}
else {
if (tolower (getText(_configx >> "ToggleAble")) isequalto "true") then {
if !(_togglevar isequalto "") then {
_action = _action + format ["%1 = %2; ['Epoch_ToggleVars','%1',%2] call Epoch_SaveVarsToProfile; [%3] call EPOCH_EPad_dialog",_togglevar,!(missionnamespace getvariable [format ["%1",_togglevar],false]),_arr];
};
};
};
}
else {
_action = format ["disableserialization;call EPOCH_EPad_clearscreen;_htmlctrlsgrp = ((finddisplay 9898) displayctrl 1900); _htmlctrlsgrp ctrlshow true; _htmlctrl = _htmlctrlsgrp controlsGroupCtrl 1901;_htmlctrl htmlLoad %1;",str _html];
};
_ButtonText = "";
_ButtonTextcode = getText(_configx >> "ButtonTextCode");
if (_ButtonTextcode != "") then {_ButtonText = call compile _ButtonTextcode;} else {_ButtonText = getText(_configx >> "ButtonText");};
if !(_ButtonText isequaltype "") then {_ButtonText = ""};
_Description = "";
_DescriptionCode = getText(_configx >> "DescriptionCode");
if (_DescriptionCode != "") then {_Description = call compile _DescriptionCode;} else { _Description = getText(_configx >> "Description");};
if !(_Description isequaltype "") then {_Description = ""};
_tooltip = "";
_tooltipcode = getText(_configx >> "tooltipcode");
if (_tooltipcode != "") then {_tooltip = call compile _tooltipcode;} else {_tooltip = getText(_configx >> "tooltip");};
if !(_tooltip isequaltype "") then {_tooltip = ""};
_icon = "";
_iconcode = getText(_configx >> "iconcode");
if (_iconcode != "") then {_icon = call compile _iconcode;} else {_icon = getText(_configx >> "icon");};
if !(_icon isequaltype "") then {_icon = ""};
_color = [1,1,1,1];
_cfgcolor = getarray(_configx >> "color");
if (!(_cfgcolor isequalto []) && count _cfgcolor == 4) then {_color = _cfgcolor;};
_colortoggled = [0,1,0,1];
_cfgcolortoggled = getarray(_configx >> "colortoggled");
if (!(_cfgcolortoggled isequalto []) && count _cfgcolortoggled == 4) then {_colortoggled = _cfgcolortoggled;};
_buttonSettings pushBack [
_ButtonText,
_tooltip,
_action,
_togglevar,
_icon,
_color,
_colortoggled,
_Description
];
};
_entries = count _buttonSettings;
if (_entries <= 0) exitwith {};
for "_i" from 0 to (_entries - 1) do {
(_buttonSettings select _i) params ["_ButtonText","_tooltip","_action","_togglevar","_icon","_color","_colortoggled","_Description"];
private ["_ctrl","_ctrl2"];
_ctrl = _display displayctrl (_i+1601);
_ctrl2 = _display displayctrl (_i+1701);
_ctrl3 = _display displayctrl (_i+1801);
_ctrl ctrlShow true;
_ctrl ctrlSetText _ButtonText;
_ctrl ctrlSetEventHandler ["mouseButtonDown", _action];
_ctrl ctrlEnable !(_action isequalto ";");
if !(_togglevar isequalto "") then {
_toggled = missionnamespace getvariable [format ["%1",_togglevar],false];
if (_toggled) then {
_ctrl ctrlsettextcolor _colortoggled;
_ctrl2 ctrlsettextcolor _colortoggled;
}
else {
_ctrl ctrlsettextcolor _color;
_ctrl2 ctrlsettextcolor _color;
};
}
else {
_ctrl ctrlsettextcolor _color;
_ctrl2 ctrlsettextcolor _color;
};
if !(_icon isequalto "") then {
_ctrl2 ctrlShow true;
_ctrl2 ctrlSetText _icon;
};
_ctrl ctrlSetTooltip _tooltip;
_ctrl2 ctrlSetTooltip _tooltip;
_ctrl3 ctrlShow true;
_ctrl3 ctrlSetText _Description;
if (_animate) then {
{
_pos = ctrlposition (_display displayCtrl _x);
_display displayCtrl _x ctrlSetposition [0.5 * safezoneW + safezoneX, 0.599027 * safezoneH + safezoneY, 0, 0];
_display displayCtrl _x ctrlcommit 0;
_display displayCtrl _x ctrlSetposition _pos;
_display displayCtrl _x ctrlcommit 0.5;
} foreach [_i+1601,_i+1701,_i+1801];
};
};
{
(_display displayctrl _x) ctrlshow true;
} foreach [1614,1615,1714,1715];
if (Epoch_E_Pad_Page > 1) then {
(_display displayctrl 1614) ctrlenable true;
(_display displayctrl 1614) ctrlSetEventHandler ["mouseButtonDown",format ["Epoch_E_Pad_Page = Epoch_E_Pad_Page - 1; [%1] call EPOCH_EPad_dialog",_arr]];
(_display displayctrl 1714) ctrlsettextcolor [1,1,1,1];
}
else {
(_display displayctrl 1614) ctrlenable false;
(_display displayctrl 1714) ctrlsettextcolor [1,1,1,0.5];
};
if ((count _configs) > (((Epoch_E_Pad_Page-1)*13)+12)) then {
(_display displayctrl 1615) ctrlenable true;
(_display displayctrl 1615) ctrlSetEventHandler ["mouseButtonDown",format ["Epoch_E_Pad_Page = Epoch_E_Pad_Page + 1; [%1] call EPOCH_EPad_dialog",_arr]];
(_display displayctrl 1715) ctrlsettextcolor [1,1,1,1];
}
else {
(_display displayctrl 1615) ctrlenable false;
(_display displayctrl 1715) ctrlsettextcolor [1,1,1,0.5];
};
if (_animate) then {
{
_pos = ctrlposition (_display displayCtrl _x);
_display displayCtrl _x ctrlSetposition [0.5 * safezoneW + safezoneX, 0.599027 * safezoneH + safezoneY, 0, 0];
_display displayCtrl _x ctrlcommit 0;
_display displayCtrl _x ctrlSetposition _pos;
_display displayCtrl _x ctrlcommit 0.5;
} foreach [1614,1615,1714,1715];
};
ctrlSetFocus (_display displayctrl 1599);

View File

@ -0,0 +1,12 @@
params ["_type","_var","_value"];
_arr = profilenamespace getvariable [_type,[[],[]]];
_find = (_arr select 0) find _var;
if (_find > -1) then {
(_arr select 1) set [_find, _value];
}
else {
(_arr select 0) pushback _var;
(_arr select 1) pushback _value;
};
profilenamespace setvariable [_type,_arr];
saveprofilenamespace;

View File

@ -49,7 +49,7 @@ if (_playerUID == Epoch_my_GroupUID || {_x select 0 == _playerUID}count (_modArr
_upgradePrice = parseNumber (EPOCH_group_upgrade_lvl select (_found+3));
if ((EPOCH_playerCrypto-_upgradePrice) >= 0) then {
_upgradeSlots = EPOCH_group_upgrade_lvl select (_found+2);
_txt = format["Do you want to upgrade your group from %1 to %2 slots for %3 Krypto?",_groupSize,_upgradeSlots,_upgradePrice];
_txt = format["Do you want to upgrade your group from %1 to %2 slots for %3 Crypto?",_groupSize,_upgradeSlots,_upgradePrice];
[_txt,_upgradePrice] spawn {
params ["_txt","_upgradePrice"];
_ret = [_txt,"Epoch Group Menu",true,true] call BIS_fnc_GUImessage;
@ -58,7 +58,7 @@ if (_playerUID == Epoch_my_GroupUID || {_x select 0 == _playerUID}count (_modArr
};
};
} else {
["You don't have enough Krypto to upgrade your group!","Epoch Group Menu",true,false] spawn BIS_fnc_GUImessage;
["You don't have enough Crypto to upgrade your group!","Epoch Group Menu",true,false] spawn BIS_fnc_GUImessage;
};
};
};

View File

@ -71,7 +71,7 @@ if (_currentMaxMember < _groupSize) then {
if (_playerIsLeader || _playerIsMod) then {
_found = EPOCH_group_upgrade_lvl find _currentMaxMember;
if (count EPOCH_group_upgrade_lvl >= (_found+3)) then {
_BtnInvite ctrlSetText format ["Upgrade +%1 Slots for %2 Krypto",abs (_currentMaxMember-(EPOCH_group_upgrade_lvl select (_found+2))),EPOCH_group_upgrade_lvl select (_found+3)];
_BtnInvite ctrlSetText format ["Upgrade +%1 Slots for %2 Crypto",abs (_currentMaxMember-(EPOCH_group_upgrade_lvl select (_found+2))),EPOCH_group_upgrade_lvl select (_found+3)];
} else {
_BtnInvite ctrlSetText format ["No Upgrade Available!"];
_BtnInvite ctrlEnable false;

View File

@ -48,6 +48,6 @@ if (count (_array-[32]) == 0) then { //32 = SPACE
};
};
} else {
["You don't have enough Krypto to create a group!","Epoch Group Menu",true,false] spawn BIS_fnc_GUImessage;
["You don't have enough Crypto to create a group!","Epoch Group Menu",true,false] spawn BIS_fnc_GUImessage;
};
};

View File

@ -19,7 +19,7 @@ if (Epoch_my_GroupUID != "") exitWith {(findDisplay -1200) closeDisplay 0};
disableSerialization;
_textCtrl = (findDisplay -1200) displayCtrl 22;
if (EPOCH_playerCrypto < parseNumber(EPOCH_group_upgrade_lvl select 1)) then {
_textCtrl CtrlSetText format ["Need %1 Krypto to create your own group",EPOCH_group_upgrade_lvl select 1];
_textCtrl CtrlSetText format ["Need %1 Crypto to create your own group",EPOCH_group_upgrade_lvl select 1];
} else {
_textCtrl CtrlSetText format["Cost to create group %1 Krypto", EPOCH_group_upgrade_lvl select 1];
_textCtrl CtrlSetText format["Cost to create group %1 Crypto", EPOCH_group_upgrade_lvl select 1];
};

View File

@ -13,6 +13,9 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/group/EPOCH_iGroup_acceptInvite.sqf
*/
if (Epoch_invited_GroupUID != "") then {
if !(Epoch_my_GroupUID == "") exitwith {
["Leave your current Group first...",5] call Epoch_Message;
};
[Epoch_invited_GroupUID,getPlayerUID player,true,false,player,Epoch_personalToken] remoteExec ["EPOCH_server_updatePlayerGroup",2];
};
(findDisplay -1500) closeDisplay 0;

View File

@ -13,6 +13,9 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_itempGroup_acceptInvite.sqf
*/
if (Epoch_invited_tempGroupUID != "") then {
if !(Epoch_my_tempGroupUID == "") exitwith {
["Leave your current Group first...",5] call Epoch_Message;
};
[Epoch_invited_tempGroupUID,getPlayerUID player,true,false,player,Epoch_personalToken] remoteExec ["EPOCH_server_updatePlayerTempGroup",2];
};
(findDisplay -1500) closeDisplay 0;

View File

@ -58,7 +58,10 @@ EPOCH_buildOption = 0;
EPOCH_nearestLocations = [];
EPOCH_lastFiredLocation = [];
EPOCH_IsAutoRunning = false;
EPOCH_Earplugsin = false;
EPOCH_LastAutoRunKeyPressed = diag_ticktime;
EPOCH_PlayerMarkerOn = false;
EPOCH_DeathMarkerOn = false;
//Radiation
EPOCH_geiger_shown = false;
@ -91,4 +94,14 @@ call EPOCH_clientInit;
[] execFSM "epoch_code\system\player_login.fsm";
if (isclass (configFile >> "CfgPatches" >> "ace_common")) then {
if (["CfgEpochClient", "DisableDoorInteractForACE", true] call EPOCH_fnc_returnConfigEntryV2) then {
[] spawn {
private _start = diag_ticktime;
waituntil {!isnil "MACRO_DOOR_REACH_DISTANCE" || diag_ticktime - _start > 90};
MACRO_DOOR_REACH_DISTANCE = -1;
};
};
};
true

View File

@ -12,32 +12,34 @@
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_map.hpp
*/
/*
// Moved to E-Pad
class playerMarker_on
{
condition = "dyna_mapPlayerMarkerON && 'ItemGPS' in dyna_assignedItems && !dyna_mapPlayerMarker";
action = "['PlayerMarker',position player] call EPOCH_fnc_createLocalMarkerSet";
condition = "!EPOCH_PlayerMarkerOn";
action = "EPOCH_PlayerMarkerOn = true; if !('ItemGPS' in dyna_assignedItems) then {['You need a GPS to see your Position',5] call epoch_message}";
icon = "x\addons\a3_epoch_community\buttons\gps.paa";
tooltip = "Toggle ON player marker";
};
class playerMarker_off
{
condition = "dyna_mapPlayerMarkerON && dyna_mapPlayerMarker";
action = "['PlayerMarker'] call EPOCH_fnc_deleteLocalMarkerSet";
condition = "EPOCH_PlayerMarkerOn";
action = "EPOCH_PlayerMarkerOn = false";
icon = "x\addons\a3_epoch_community\buttons\gps.paa";
tooltip = "Toggle OFF player marker";
};
class deathMarker_on
{
condition = "dyna_deathMarkerON && dyna_deathMarkerAvail && !dyna_mapDeathMarker";
action = "['DeathMarker',dyna_deathMarker] call EPOCH_fnc_createLocalMarkerSet";
condition = "!EPOCH_DeathMarkerOn";
action = "EPOCH_DeathMarkerOn = true; if ((profileNameSpace getVariable ['EPOCHLastKnownDeath',[]]) isequalto []) then {['You had no GPS on last death',5] call epoch_message}";
icon = "x\addons\a3_epoch_community\icons\skull.paa";
tooltip = "Toggle ON death marker";
};
class deathMarker_off
{
condition = "dyna_deathMarkerON && dyna_mapDeathMarker";
action = "['DeathMarker'] call EPOCH_fnc_deleteLocalMarkerSet";
condition = "EPOCH_DeathMarkerOn";
action = "EPOCH_DeathMarkerOn = false";
icon = "x\addons\a3_epoch_community\icons\skull.paa";
tooltip = "Toggle OFF death marker";
};
*/

View File

@ -237,35 +237,42 @@ class geiger_menu
{
condition = "true";
action = "call epoch_geiger_show_hide";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_toggle.paa";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_toggle.paa";
tooltip = "Toggle HUD";
};
class geiger_counter_mute
{
condition = "!EPOCH_geiger_mute_counter";
action = "EPOCH_geiger_mute_counter = !EPOCH_geiger_mute_counter";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_volumeoff.paa";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_volumeoff.paa";
tooltip = "Mute counter";
};
class geiger_counter_unmute
{
condition = "EPOCH_geiger_mute_counter";
action = "EPOCH_geiger_mute_counter = !EPOCH_geiger_mute_counter";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_volumeon.paa";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_volumeon.paa";
tooltip = "Unmute counter";
};
class geiger_warning_mute
{
condition = "!EPOCH_geiger_mute_warning";
action = "EPOCH_geiger_mute_warning = !EPOCH_geiger_mute_warning";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_alarmoff.paa";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_alarmoff.paa";
tooltip = "Mute warnings";
};
class geiger_warning_unmute
{
condition = "EPOCH_geiger_mute_warning";
action = "EPOCH_geiger_mute_warning = !EPOCH_geiger_mute_warning";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_alarmon.paa";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\geiger_alarmon.paa";
tooltip = "Unmute warnings";
};
};
class Epad
{
condition = "EPOCH_EpadButtonOn";
action = "if (isnull (finddisplay 9898)) then {createdialog 'epoch_tablet_gui';};";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Epad.paa";
tooltip = "E-Pad";
};

View File

@ -50,14 +50,14 @@ class veh_lock
condition = "if (dyna_cursorTarget iskindof 'Bicycle') exitwith {false};dyna_isVehicle && !dyna_locked";
action = "[dyna_cursorTarget, true, player, Epoch_personalToken] remoteExec ['EPOCH_server_lockVehicle',2];";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\pad_cannot_lock.paa";
tooltip = "Lock";
tooltipcode = "format['Lock %1',getText(configFile >> 'CfgVehicles' >> (typeof dyna_cursorTarget) >> 'displayName')]";
};
class veh_unLock
{
condition = "dyna_isVehicle && dyna_locked";
action = "[dyna_cursorTarget, false, player, Epoch_personalToken] remoteExec ['EPOCH_server_lockVehicle',2];";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\pad_can_unlock.paa";
tooltip = "Unlock";
tooltipcode = "format['Unlock %1',getText(configFile >> 'CfgVehicles' >> (typeof dyna_cursorTarget) >> 'displayName')]";
};
//Trader interaction
@ -81,7 +81,7 @@ class player_takeCrypto
condition = "dyna_isDeadPlayer || (dyna_cursorTarget getVariable [""Crypto"",0]) > 0";
action = "dyna_cursorTarget call EPOCH_takeCrypto;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\krypto.paa";
tooltip = "Take Krypto";
tooltip = "Take Crypto";
};
class player_trade
{
@ -586,5 +586,19 @@ class BaseCam
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Camera.paa";
tooltip = "Watch 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;};";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\epoch_UAV.paa";
tooltip = "Connect to UAV";
};
class Defuse_Bomb
{
condition = "if (player != vehicle player) exitwith {false};if (player distance dyna_cursorTarget > 3.5) exitwith {false};!((gettext (configfile >> 'cfgammo' >> (typeof dyna_cursorTarget) >> 'defaultMagazine')) isEqualTo '')";
action = "dyna_cursorTarget spawn Epoch_DefuseBomb";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Defuse.paa";
tooltip = "Defuse Bomb";
};

Some files were not shown because too many files have changed in this diff Show More