Merge pull request #977 from EpochModTeam/experimental

Release 1.2
This commit is contained in:
vbawol
2018-05-24 13:11:42 -05:00
committed by GitHub
128 changed files with 2282 additions and 754 deletions

View File

@ -27,6 +27,7 @@ forceRestartTime = 14400; // 4 hour restarts
{ 900, "ChangeWeather", 1 , 2, -1, {} ,{"VR"}}, { 900, "ChangeWeather", 1 , 2, -1, {} ,{"VR"}},
{ 1200, "ContainerSpawner", 0 , 2, -1, {} ,{"VR"}}, { 1200, "ContainerSpawner", 0 , 2, -1, {} ,{"VR"}},
{ 1440, "GardenManager", 0 , 2, -1, {} ,{"VR"}}, { 1440, "GardenManager", 0 , 2, -1, {} ,{"VR"}},
{ 1440, "SolarChargerManager", 0 , 2, -1, {} ,{"VR"}},
{ 900, "MoneyDrop", 0 , 2 , -1, {} ,{"VR"}}, { 900, "MoneyDrop", 0 , 2 , -1, {} ,{"VR"}},
{ 300, "PlantSpawner", 0 , 2 , -1, {} ,{"VR"}} //No comma on last Entry { 300, "PlantSpawner", 0 , 2 , -1, {} ,{"VR"}} //No comma on last Entry
}; };
@ -63,8 +64,10 @@ forceRestartTime = 14400; // 4 hour restarts
}; };
// vehicles - Max vehicle slots is calculated from per vehicle limits below. Warning! Higher the number lower the performance. // 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...) ReservedVehSlots = 50; // Reserved Vehicle Slots (only needed, if you manually spawn in additional Vehicles - AdminTool / Blackmarket...)
disableAutoRefuel = "true"; // Removes auto refuel from all buildings at server startup. disableAutoRefuel = "false"; // Removes auto refuel from all buildings at server startup.
disableFuelNearPlots = "false"; // Removes auto refuel in PlotPole-Ranges at server startup.
VehLockMessages = "true"; // Give players a hint, that the Vehicle is locked / unlocked VehLockMessages = "true"; // Give players a hint, that the Vehicle is locked / unlocked
removevehweapons[] = { // remove these Weapons from spawned Vehicles removevehweapons[] = { // remove these Weapons from spawned Vehicles
"missiles_DAR","gatling_30mm","gatling_20mm","missiles_DAGR","cannon_30mm_Plane_CAS_02_F","Missile_AA_03_Plane_CAS_02_F","Missile_AGM_01_Plane_CAS_02_F","Rocket_03_HE_Plane_CAS_02_F", "missiles_DAR","gatling_30mm","gatling_20mm","missiles_DAGR","cannon_30mm_Plane_CAS_02_F","Missile_AA_03_Plane_CAS_02_F","Missile_AGM_01_Plane_CAS_02_F","Rocket_03_HE_Plane_CAS_02_F",
@ -89,6 +92,8 @@ forceRestartTime = 14400; // 4 hour restarts
"Safe_EPOCH" "Safe_EPOCH"
}; };
ExceptedBaseObjects[] = { // Not Indestructible, also if in a Class of IndestructibleBaseObjects ExceptedBaseObjects[] = { // Not Indestructible, also if in a Class of IndestructibleBaseObjects
"Spike_TRAP_EPOCH",
"Metal_TRAP_EPOCH",
"CinderWallGarage_EPOCH", "CinderWallGarage_EPOCH",
"WoodLargeWallDoorL_EPOCH", "WoodLargeWallDoorL_EPOCH",
"WoodLargeWallDoor_EPOCH", "WoodLargeWallDoor_EPOCH",

View File

@ -15,6 +15,8 @@ http://www.microsoft.com/en-us/download/details.aspx?id=40784
6. Open the SC/Battleye folder and rename example-BEServer.cfg to BEServer.cfg and change the RConPassword. 6. Open the SC/Battleye folder and rename example-BEServer.cfg to BEServer.cfg and change the RConPassword.
7. Look at the "start-A3-cmd-line-example.txt" file for an example command line for starting your server. 7. Look at the "start-A3-cmd-line-example.txt" file for an example command line for starting your server.
For more details in Server installation, visit: https://epochmod.com/forum/topic/44751-dec2017-arma-3-epochmod-server-installation-and-setup/
== NOTES == == NOTES ==
* You should use a service restarter (like firedaemon) to keep the redis server and Arma 3 server running. * You should use a service restarter (like firedaemon) to keep the redis server and Arma 3 server running.

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

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

View File

@ -33,7 +33,7 @@
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 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 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 createTeam
5 createDialog !="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 '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 createDisplay !="createDisplay \"rmx_dynamenu\";" !="createDisplay \"rmx_moveDynamicHUD\";" !="_parent createdisplay _displayClass;" !="finddisplay 151 createdisplay 'RscDisplayOptionsLayout'" !="_display createdisplay \"RscDisplayDLCPreview\";"
5 deleteMarker !="deleteMarkerLocal _mName;" 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 setMarker !="CBA_fnc_setMarkerPersistent\"" !="\\fnc_setMarkerPersistent" !="\"setMarkerPersistent" !="_mName setMarkerShapeLocal _mShape;" !="_mName setMarkerTypeLocal _mType;" !="(_x select 0) setMarkerPosLocal (position player);" !="_zoomMarker setMarkerSizeLocal"

View File

@ -1 +1 @@
5 "" !="Epoch_(Male|Female)_F" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf)_EPOCH" !="(ToolRack|Rabbit|Cabinet|toilet|KitchenSink)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="Foundation_EPOCH" !="WoodFoundation_EPOCH" !=".+_(SIM|Ghost)_EPOCH" !="(FirePlace|FirePlaceOn)_EPOCH" 5 "" !="Epoch_(Male|Female)_F" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf)_EPOCH" !="(ToolRack|Rabbit|Cabinet|toilet|KitchenSink)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="Foundation_EPOCH" !="WoodFoundation_EPOCH" !=".+_(SIM|Ghost)_EPOCH" !="(FirePlace|FirePlaceOn)_EPOCH" !"K(01|02|03|04)" !"ebike" !"Quadbike" !"hoverboard_epoch" !"C_Kart_"

View File

@ -1,8 +1,8 @@
/*%FSM<COMPILE "F:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\FSMEditor\scriptedFSM.cfg, Epoch Login">*/ /*%FSM<COMPILE "scriptedFSM.cfg, Epoch Login">*/
/*%FSM<HEAD>*/ /*%FSM<HEAD>*/
/* /*
item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"};
item1[] = {"FINISH",1,250,-149.463196,1518.792480,-49.463196,1568.792480,0.000000,"FINISH"}; item1[] = {"FINISH",1,250,-156.564148,1645.189819,-56.564148,1695.189819,0.000000,"FINISH"};
item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"};
item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"};
item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"};
@ -17,23 +17,23 @@ item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,
item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"};
item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""};
item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"};
item16[] = {"Response",4,4314,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"};
item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; item17[] = {"Setup_Player_Var",2,250,-32.100952,1201.397339,67.899048,1251.397339,0.000000,"Setup Player" \n "Variables"};
item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"};
item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"};
item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"};
item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""};
item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"};
item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"};
item24[] = {"Player_In_Game",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"Player" \n "In Game"}; item24[] = {"Player_In_Game",8,218,-157.100952,1251.397339,-57.100952,1301.397339,0.000000,"Player" \n "In Game"};
item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"};
item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."};
item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; item27[] = {"Setup_Player_Obj",2,250,-32.100952,1101.397339,67.899048,1151.397339,0.000000,"Setup Player" \n "Object"};
item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"};
item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; item29[] = {"Preload_done",8,218,-157.100952,1551.397339,-57.100952,1601.397339,0.000000,"Preload" \n "done"};
item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""};
item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""};
item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; item32[] = {"true",8,218,417.899048,1201.397339,517.899048,1251.397339,0.000000,"true"};
item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"};
item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"};
item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"};
@ -50,26 +50,26 @@ item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.
item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"};
item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"};
item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""};
item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; item49[] = {"new_player_____p",4,218,-157.100952,1151.397339,-57.100952,1201.397339,0.000000,"new player == " \n "player"};
item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; item50[] = {"Setup_EH_s_and_H",2,250,-32.100952,1301.397339,67.899048,1351.397339,0.000000,"Setup EH's" \n "and" \n "HitPoints"};
item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; item51[] = {"no_weapons",4,218,-32.100952,1401.397339,67.899048,1451.397339,0.000000,"no weapons"};
item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; item52[] = {"Process",2,250,-32.100952,1501.397339,67.899048,1551.397339,0.000000,"Process"};
item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; item53[] = {"Has_Current_Weap",4,218,92.899048,1301.397339,192.899048,1351.397339,10.000000,"Has" \n "Current" \n "Weapon"};
item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; item54[] = {"Find_Active_Weap",2,250,217.899048,1301.397339,317.899048,1351.397339,0.000000,"Find" \n "Active" \n "Weapon"};
item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; item55[] = {"Current_Weapon_Not",4,218,142.899048,1351.397339,242.899048,1401.397339,0.000000,"Current" \n "Weapon" \n "Not Selected"};
item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; item56[] = {"Current_Weapon_S",4,218,292.899048,1351.397339,392.899048,1401.397339,0.000000,"Current" \n "Weapon" \n "Selected"};
item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; item57[] = {"Select_Weapon",2,250,142.899048,1426.397339,242.899048,1476.397339,0.000000,"Select" \n "Weapon"};
item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item58[] = {"true",8,218,217.899048,1501.397339,317.899048,1551.397339,0.000000,"true"};
item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item59[] = {"Do_nothing",2,250,292.899048,1426.397339,392.899048,1476.397339,0.000000,"Do nothing"};
item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; item60[] = {"Check_New_Player",2,250,-20.739410,880.680786,79.260590,930.680786,0.000000,"Check" \n "New Player"};
item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item61[] = {"check_1_new__pla",4,218,-147.159637,930.680786,-47.159637,980.680786,0.000000,"check 1 new " \n "player"};
item62[] = {"true",4,218,-150.000000,-325.000000,-60.000000,-275.000000,0.000000,"true"}; item62[] = {"true",4,218,-150.000000,-325.000000,-60.000000,-275.000000,0.000000,"true"};
item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"};
item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"};
item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"};
item66[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; item66[] = {"Timeout_",4,218,117.899048,1101.397339,217.899048,1151.397339,0.000000,"" \n "Timeout" \n ""};
item67[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; item67[] = {"ERROR_Player_Setup",2,250,267.899048,1101.397339,367.899048,1151.397339,0.000000,"ERROR" \n "Player Setup" \n "Invalid"};
item68[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; item68[] = {"",7,210,463.899048,1122.397339,471.899048,1130.397339,0.000000,""};
item69[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; item69[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"};
item70[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; item70[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"};
item71[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; item71[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""};
@ -86,6 +86,11 @@ item81[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.0000
item82[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; item82[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"};
item83[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; item83[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"};
item84[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; item84[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"};
item85[] = {"Check_New_Player_1",2,250,-29.260529,995.716492,70.739471,1045.716309,0.000000,"Check" \n "New Player" \n "Setup"};
item86[] = {"check_2_new__pla",4,4314,-154.260574,1044.296387,-54.260574,1094.296387,0.000000,"check 2 new " \n "player"};
item87[] = {"Timeout_No_Respo",4,218,127.840363,997.136780,227.840363,1047.136475,0.000000,"Timeout" \n "No Response"};
item88[] = {"ERROR_Server_not_5",2,250,266.478851,995.716614,366.478851,1045.716309,0.000000,"ERROR" \n "Server not" \n "Response"};
item89[] = {"",7,210,466.446442,1000.643677,474.446442,1008.643677,0.000000,""};
link0[] = {0,62}; link0[] = {0,62};
link1[] = {2,3}; link1[] = {2,3};
link2[] = {3,7}; link2[] = {3,7};
@ -109,7 +114,7 @@ link19[] = {18,19};
link20[] = {18,75}; link20[] = {18,75};
link21[] = {19,72}; link21[] = {19,72};
link22[] = {20,21}; link22[] = {20,21};
link23[] = {21,68}; link23[] = {21,89};
link24[] = {22,84}; link24[] = {22,84};
link25[] = {23,25}; link25[] = {23,25};
link26[] = {24,50}; link26[] = {24,50};
@ -154,7 +159,7 @@ link64[] = {58,52};
link65[] = {59,58}; link65[] = {59,58};
link66[] = {60,15}; link66[] = {60,15};
link67[] = {60,61}; link67[] = {60,61};
link68[] = {61,27}; link68[] = {61,85};
link69[] = {62,63}; link69[] = {62,63};
link70[] = {63,64}; link70[] = {63,64};
link71[] = {64,65}; link71[] = {64,65};
@ -183,8 +188,14 @@ link93[] = {82,76};
link94[] = {83,16}; link94[] = {83,16};
link95[] = {83,22}; link95[] = {83,22};
link96[] = {84,31}; link96[] = {84,31};
globals[] = {0.000000,0,0,0,0,640,480,1,247,6316128,1,-279.414825,540.037537,1629.530029,374.077881,577,884,1}; link97[] = {85,86};
window[] = {2,-1,-1,-1,-1,819,52,1036,52,3,595}; link98[] = {85,87};
link99[] = {86,27};
link100[] = {87,88};
link101[] = {88,89};
link102[] = {89,68};
globals[] = {0.000000,0,0,0,0,640,480,1,258,6316128,1,-228.686249,247.871552,1378.466309,648.349915,577,884,1};
window[] = {2,-1,-1,-1,-1,845,78,1062,78,3,595};
*//*%FSM</HEAD>*/ *//*%FSM</HEAD>*/
class FSM class FSM
{ {
@ -517,7 +528,7 @@ class FSM
priority = 0.000000; priority = 0.000000;
to="ERROR_Server_not_3"; to="ERROR_Server_not_3";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 120"/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 30"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
@ -615,7 +626,7 @@ class FSM
priority = 0.000000; priority = 0.000000;
to="ERROR_Player_Setup"; to="ERROR_Player_Setup";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 60"/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 30"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
@ -1044,48 +1055,37 @@ class FSM
name = "Check_New_Player"; name = "Check_New_Player";
itemno = 60; itemno = 60;
init = /*%FSM<STATEINIT""">*/"_myTime = diag_tickTime;" \n init = /*%FSM<STATEINIT""">*/"_myTime = diag_tickTime;" \n
"" \n
"player reveal _playerObject;" \n "player reveal _playerObject;" \n
"" \n
"_playerPos = getpos _playerObject;" \n
"" \n
"""Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n
"progressLoadingScreen 0.6;" \n "progressLoadingScreen 0.6;" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {
/*%FSM<LINK "check_new__player">*/ /*%FSM<LINK "check_1_new__pla">*/
class check_new__player class check_1_new__pla
{ {
itemno = 61; itemno = 61;
priority = 0.000000; priority = 0.000000;
to="Setup_Player_Obj"; to="Check_New_Player_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"" \n condition=/*%FSM<CONDITION""">*/"_state = false;" \n
"_state = false;" \n
"_playerCheck = !(isNull _playerObject);" \n "_playerCheck = !(isNull _playerObject);" \n
"_playerCheckSetup = false;" \n "_PlayerPosCheck = false;" \n
"_playerCheckObjectsReady = false;" \n "_playerCheckMass = false;" \n
"_playerCheckFinal = false;" \n
"if (_playerCheck) then {" \n "if (_playerCheck) then {" \n
" _playerCheckSetup = _playerObject getVariable [""SETUP"",false];" \n " _PlayerPosCheck = !((_playerObject getVariable [""FinalDest"",[]]) isequalto []);" \n
" if (_playerCheckSetup) then {" \n " if (_PlayerPosCheck) then {" \n
" _playerCheckObjectsReady = _playerPos nearObjectsReady 10;" \n " _playerCheckMass = (_loadabs == (loadabs _playerObject));" \n
" if (_playerCheckObjectsReady) then {" \n " if (_playerCheckMass) then {" \n
" _playerCheckFinal = (_mass isEqualTo (loadAbs _playerObject));" \n " _state = true;" \n
" if (_playerCheckFinal) then {" \n
" _state = true;" \n
" };" \n
" };" \n " };" \n
" };" \n " };" \n
"};" \n "};" \n
"if (_debug) then {" \n "if (_debug) then {" \n
" diag_log format[""DEBUG: Checking Player Object: %1"", [""FAILED"",""OK""] select _playerCheck];" \n " diag_log format[""DEBUG: Checking Player Object: %1"", [""FAILED"",""OK""] select _playerCheck];" \n
" diag_log format[""DEBUG: Checking Player is setup: %1"", [""FAILED"",""OK""] select _playerCheckSetup];" \n " diag_log format[""DEBUG: Checking Player PosVar: %1"", [""FAILED"",""OK""] select _PlayerPosCheck];" \n
" diag_log format[""DEBUG: Checking world preloaded: %1"", [""FAILED"",""OK""] select _playerCheckObjectsReady];" \n " diag_log format[""DEBUG: Final Player mass check: %1 (%2 != %3)"", [""FAILED"",""OK""] select _playerCheckMass, _loadabs, (loadabs _playerObject)];" \n
" diag_log format[""DEBUG: Final Player mass check: %1 (%2 != %3)"", [""FAILED"",""OK""] select _playerCheckFinal, _mass, (loadAbs _playerObject)];" \n
" diag_log format[""DEBUG: Pos check: %1 == %2"", getpos _playerObject, getpos player];" \n
"};" \n "};" \n
"_state"/*%FSM</CONDITION""">*/; "_state"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
@ -1098,7 +1098,7 @@ class FSM
priority = 0.000000; priority = 0.000000;
to="ERROR_Server_not"; to="ERROR_Server_not";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 120"/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 30"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
@ -1373,7 +1373,7 @@ class FSM
priority = 0.000000; priority = 0.000000;
to="ERROR_Server_not_4"; to="ERROR_Server_not_4";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 120"/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 30"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
@ -1388,7 +1388,7 @@ class FSM
action=/*%FSM<ACTION""">*/"_playerObject = _C_SET deleteAt 0;" \n action=/*%FSM<ACTION""">*/"_playerObject = _C_SET deleteAt 0;" \n
"_playerVariables = _C_SET deleteAt 0;" \n "_playerVariables = _C_SET deleteAt 0;" \n
"_currentWeapon = _C_SET deleteAt 0;" \n "_currentWeapon = _C_SET deleteAt 0;" \n
"_mass = _C_SET deleteAt 0;" \n "_loadabs = _C_SET deleteAt 0;" \n
"" \n "" \n
"Epoch_my_GroupUID = _C_SET deleteAt 0;" \n "Epoch_my_GroupUID = _C_SET deleteAt 0;" \n
"Epoch_my_tempGroupUID = """";" \n "Epoch_my_tempGroupUID = """";" \n
@ -1436,6 +1436,103 @@ class FSM
}; };
}; };
/*%FSM</STATE>*/ /*%FSM</STATE>*/
/*%FSM<STATE "Check_New_Player_1">*/
class Check_New_Player_1
{
name = "Check_New_Player_1";
itemno = 85;
init = /*%FSM<STATEINIT""">*/"_myTime = diag_tickTime;" \n
"_playerPos = (_playerObject getvariable [""FinalDest"",[[0,0,0],0]]) select 0;" \n
"[player,_playerobject] remoteexec [""EPOCH_server_SetFinalPlayerPos"",2];" \n
"""Setting final Player Position... Please wait!"" call Epoch_updateLoadingScreen;" \n
"progressLoadingScreen 0.7;" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "Timeout_No_Respo">*/
class Timeout_No_Respo
{
itemno = 87;
priority = 0.000000;
to="ERROR_Server_not_5";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 30"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "check_2_new__pla">*/
class check_2_new__pla
{
itemno = 86;
priority = 0.000000;
to="Setup_Player_Obj";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"_state = false;" \n
"_playerCheck = !(isNull _playerObject);" \n
"_playerCheckSetup = false;" \n
"_playerCheckObjectsReady = false;" \n
"_playerPosCheck = false;" \n
"_HiddenCheck = false;" \n
"if (_playerCheck) then {" \n
" _playerCheckSetup = _playerObject getVariable [""SETUP"",false];" \n
" if (_playerCheckSetup) then {" \n
" _playerCheckObjectsReady = _playerPos nearObjectsReady 10;" \n
" if (_playerCheckObjectsReady) then {" \n
" _playerPosCheck = (getposatl _playerObject distance _playerPos < 100);" \n
" if (_playerPosCheck) then {" \n
" _HiddenCheck = !(isObjectHidden _playerObject);" \n
" if (_HiddenCheck) then {" \n
" _state = true;" \n
" };" \n
" };" \n
" };" \n
" };" \n
"};" \n
"if (_debug) then {" \n
" diag_log format[""DEBUG: Checking Player Object: %1"", [""FAILED"",""OK""] select _playerCheck];" \n
" diag_log format[""DEBUG: Checking Player is setup: %1"", [""FAILED"",""OK""] select _playerCheckSetup];" \n
" diag_log format[""DEBUG: Checking world preloaded: %1"", [""FAILED"",""OK""] select _playerCheckObjectsReady];" \n
" diag_log format[""DEBUG: Pos check: _playerObj: %1 - Player: %2 - dist: %3"", getposatl _playerObject, _playerPos, getposatl _playerObject distance _playerPos];" \n
" diag_log format[""DEBUG: Checking is Object is visible: %1"", [""FAILED"",""OK""] select _HiddenCheck];" \n
"};" \n
"_state"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "ERROR_Server_not_5">*/
class ERROR_Server_not_5
{
name = "ERROR_Server_not_5";
itemno = 88;
init = /*%FSM<STATEINIT""">*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
"" \n
"_rejectPlayer = {" \n
" PLAYER_REJECT_NoResponse2 = true;" \n
" publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n
"};"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
}; };
initState="INIT"; initState="INIT";
finalStates[] = finalStates[] =

View File

@ -0,0 +1,130 @@
/*
Author: He-Man
Contributors:
Description: BaseCam Script
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_CamUse.sqf
*/
private ["_mycams","_buildingJammerRange","_curcam"];
_mycams = EPOCH_BaseCams select {(_x getVariable["BUILD_OWNER", "-1"]) in [getPlayerUID player, Epoch_my_GroupUID]};
if (["CfgEpochClient", "BaseCamOnlyHome",true] call EPOCH_fnc_returnConfigEntryV2) then {
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange",75] call EPOCH_fnc_returnConfigEntryV2;
_mycams = _mycams select {!(((nearestobjects [_x,["Plotpole_EPOCH"],_buildingJammerRange]) select {(_x getVariable["BUILD_OWNER", "-1"]) in [getPlayerUID player, Epoch_my_GroupUID]}) isequalto [])};
};
if !(_mycams isequalto []) then {
_curcam = _mycams find Epoch_ActiveCam;
if (_curcam > -1 && (count _mycams) > (_curcam + 1)) then {
Epoch_ActiveCam = _mycams select (_curcam + 1);
}
else {
Epoch_ActiveCam = _mycams select 0;
};
}
else {
Epoch_ActiveCam = objnull;
};
if !(isnull (finddisplay -1200)) exitwith {};
if (isnull Epoch_ActiveCam) exitwith {
["No Camera found",5] call Epoch_Message;
};
_mycams spawn {
private ["_mycams","_display","_AutoCam","_ActiveCam","_campos","_CamFov","_CamDir","_CamDist","_EpochCam","_targetheight","_targetpos","_dirs","_intensity","_sharpness","_h","_oldalpha","_newalpha"];
_mycams = _this;
createdialog 'Epoch_CamDialog';
waituntil {!isnull finddisplay -1200};
_display = finddisplay -1200;
(_display displayctrl 1000) ctrlsettext format ["Cam %1",(_mycams find Epoch_ActiveCam) + 1];
(_display displayctrl 1001) ctrlsetstructuredtext parseText format [
"<t align='center' color='#FFFF00' size='1'>Controls:</t><br/><br/>Cam Up: %1<br/>Cam Down: %2<br/>Cam Left: %3<br/>Cam Right: %4<br/>Zoom In: %5<br/>Zoom Out: %6<br/><br/>AutoCam: %7<br/>NextCam: %8",
keyName Epoch_KB_BaseCamUp,keyName Epoch_KB_BaseCamDown,keyName Epoch_KB_BaseCamLeft,keyName Epoch_KB_BaseCamRight,keyName Epoch_KB_BaseCamZoomIn,keyName Epoch_KB_BaseCamZoomOut,keyName Epoch_KB_BaseCamAutoCam,keyName Epoch_KB_BaseCamNextCam
];
Epoch_AutoCam = true;
_AutoCam = Epoch_AutoCam;
Epoch_CamAdjust = [0,0,0];
_ActiveCam = Epoch_ActiveCam;
_campos = Epoch_ActiveCam getRelPos [0.2,180];
_campos set [2,(getposatl Epoch_ActiveCam select 2)];
if (isnil "Epoch_CamFilmGrain") then {
Epoch_CamFilmGrain = ppEffectCreate ["FilmGrain", 2000 + 25];
};
Epoch_CamFilmGrain ppEffectEnable true;
_intensity = ((player distance Epoch_ActiveCam) / 10000) min 1;
_sharpness = 1.25 - _intensity;
Epoch_CamFilmGrain ppEffectAdjust [_intensity,_sharpness,2.01,0.75,1.0,true];
Epoch_CamFilmGrain ppEffectCommit 0;
_CamFov = 0.7;
_CamDir = 0;
_CamDist = 250;
_EpochCam = 'camera' camCreate _campos;
showCinemaBorder true;
_EpochCam cameraEffect ['internal', 'front'];
_EpochCam camCommit 0;
_targetheight = ((getposasl Epoch_ActiveCam) select 2)-50;
_targetpos = Epoch_ActiveCam getRelPos [_CamDist, 180+_CamDir];
_targetpos set [2,_targetheight];
if !(surfaceiswater _targetpos) then {
_targetpos = ASLtoATL _targetpos;
};
_EpochCam camSetTarget _targetpos;
_EpochCam camCommit 0;
_dirs = [5,10,15,20,25,30,35,40,45,40,35,30,25,20,15,10,5,0,-5,-10,-15,-20,-25,-30,-35,-40,-45,-40,-35,-30,-25,-20,-15,-10,-5,0];
while {!isnull _display} do {
Epoch_CamAdjust params ["_dir","_height","_zoom"];
_AutoCam = Epoch_AutoCam;
if !(_ActiveCam isequalto Epoch_ActiveCam) then {
_ActiveCam = Epoch_ActiveCam;
camDestroy _EpochCam;
_campos = Epoch_ActiveCam getRelPos [0.2,180];
_campos set [2,(getposatl Epoch_ActiveCam select 2)];
_CamFov = 0.7;
_CamDir = 0;
_EpochCam = 'camera' camCreate _campos;
showCinemaBorder true;
_EpochCam cameraEffect ['internal', 'front'];
_EpochCam camCommit 0;
_targetheight = ((getposasl Epoch_ActiveCam) select 2)-50;
_intensity = ((player distance Epoch_ActiveCam) / 10000) min 1;
_sharpness = 1.25 - _intensity;
Epoch_CamFilmGrain ppEffectAdjust [_intensity,_sharpness,2.01,0.75,1.0,true];
Epoch_CamFilmGrain ppEffectCommit 0;
(_display displayctrl 1000) ctrlsettext format ["Cam %1",(_mycams find Epoch_ActiveCam) + 1];
};
if !(Epoch_AutoCam) then {
_targetheight = ((_targetheight + _height) min 50) max -150;
_CamDir = ((_CamDir + _dir) max -45) min 45;
_CamFov = ((_CamFov + _zoom) min 1.25) max 0.35;
}
else {
_targetheight = ((getposasl Epoch_ActiveCam) select 2)-50;
_CamFov = 0.7;
_CamDir = _dirs deleteat 0;
_dirs pushback _CamDir;
};
_targetpos = Epoch_ActiveCam getRelPos [_CamDist, 180+_CamDir];
_targetpos set [2,_targetheight];
if !(surfaceiswater _targetpos) then {
_targetpos = ASLtoATL _targetpos;
};
_EpochCam camSetTarget _targetpos;
_EpochCam camSetFov _CamFov;
_EpochCam camCommit 0.75;
Epoch_CamAdjust = [0,0,0];
waitUntil {camCommitted _EpochCam || isnull _display || isnull Epoch_ActiveCam || !(_ActiveCam isequalto Epoch_ActiveCam)};
if (isnull Epoch_ActiveCam) exitwith {};
};
player cameraEffect ['Terminate', 'FRONT'];
camDestroy _EpochCam;
_display closedisplay 0;
Epoch_ActiveCam = objnull;
Epoch_CamFilmGrain ppEffectEnable false;
};

View File

@ -0,0 +1,57 @@
/*
Author: He-Man - EpochMod.com
Contributors:
Description:
Epoch use Defibrillator function
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_DefibrillatorUse.sqf
*/
private ["_item","_energyneeded","_totalDefis","_CurDefiArr"];
params ["_unit"];
if (isplayer _unit) then {
_item = 'ItemDefibrillator';
if (_item in magazines player) then {
_energyneeded = 3;
_totalDefis = (magazinesammo player) select {(_x select 0) isequalto _item};
_CurDefiArr = [];
{
if ((_x select 1) >= _energyneeded) exitwith {
_CurDefiArr = _totalDefis deleteat _foreachindex;
};
} foreach _totalDefis;
if (_CurDefiArr isequalto []) exitwith {
["Defibrillator needs more Energy",5] call Epoch_Message;
};
if ((_CurDefiArr select 1) - _energyneeded > 0) then {
_CurDefiArr set [1,(_CurDefiArr select 1) - _energyneeded];
_totalDefis pushback _CurDefiArr;
};
player removemagazines _item;
{
_x call EPOCH_fnc_addMagazineOverflow;
} foreach _totalDefis;
_unit spawn {
player playMove 'AinvPknlMstpSnonWrflDnon_medic0';
player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd';
uisleep 8;
if (alive player && isplayer _this) then {
[_this,player,Epoch_personalToken] remoteExec ['EPOCH_server_revivePlayer',2];
};
};
}
else {
['You need a Defibrillator to Revive',5] call Epoch_Message;
};
}
else {
['This Player can not be revived',5] call Epoch_Message;
};

View File

@ -12,10 +12,14 @@
Github: Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_PutHandler.sqf https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_PutHandler.sqf
*/ */
private _class = param [2]; params ["_unit", "_container", "_class"];
//Radio Check //Radio Check
if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _class)) == "ItemRadio") then { if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _class)) == "ItemRadio") then {
if !(_class in(assignedItems player)) then { if !(_class in(assignedItems player)) then {
EPOCH_equippedItem_PVS = [_class,false,player]; EPOCH_equippedItem_PVS = [_class,false,player];
}; };
}; };
if (_class in ["EnergyPack","EnergyPackLg"] && (typeof _container) in ["SolarCharger_EPOCH","SolarChargerXL_EPOCH"]) then {
["Charging ...",5,[[0,1,0,0.2],[1,1,1,1]]] call Epoch_Message;
};

View File

@ -49,6 +49,10 @@ if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _item)) == "ItemRadio"
}; };
}; };
if (_item in ["EnergyPack","EnergyPackLg"] && (typeof _container) in ["SolarCharger_EPOCH","SolarChargerXL_EPOCH"]) then {
["Stop Charging ...",5,[[1,0,0,0.2],[1,1,1,1]]] call Epoch_Message;
};
// Unisex vest check // Unisex vest check
_woman = getNumber(configFile >> "CfgVehicles" >> (typeOf player) >> "woman"); _woman = getNumber(configFile >> "CfgVehicles" >> (typeOf player) >> "woman");
_config = configfile >> "cfgweapons" >> _item; _config = configfile >> "cfgweapons" >> _item;

View File

@ -42,13 +42,32 @@ if (_inputCount >= 3) then {
_removeItem = {([player,_this] call BIS_fnc_invRemove) == 1}; _removeItem = {([player,_this] call BIS_fnc_invRemove) == 1};
_unifiedInteract = { _unifiedInteract = {
private _removed = _item call _removeItem; private ["_removed","_multi","_maxMagRnd","_totalMags","_remove"];
_removed = false;
_multi = 1;
_maxMagRnd = getnumber (configfile >> "cfgMagazines" >> _item >> "count");
if (_maxMagRnd > 1) then {
_totalMags = (magazinesammo player) select {(_x select 0) isequalto _item};
if !(_totalMags isequalto []) then {
_remove = _totalMags deleteat 0;
_removed = true;
_remove params ["_class","_rounds"];
_multi = _rounds / _maxMagRnd;
player removemagazines _item;
{
_x call EPOCH_fnc_addMagazineOverflow;
} foreach _totalMags;
};
}
else {
_removed = _item call _removeItem;
};
if (_removed) then { if (_removed) then {
if (_interactReturnOnUse != "") then { if (_interactReturnOnUse != "") then {
_interactReturnOnUse call EPOCH_fnc_addItemOverflow; _interactReturnOnUse call EPOCH_fnc_addItemOverflow;
}; };
{ {
_output = _x call EPOCH_giveAttributes; _output = [_x select 0, round ((_x select 1) * _multi)] call EPOCH_giveAttributes;
if (_output != "") then { if (_output != "") then {
[_output, 5] call Epoch_message_stack; [_output, 5] call Epoch_message_stack;
}; };
@ -412,6 +431,47 @@ switch _interactOption do {
[format["%1 is not needed at this time",_item call EPOCH_itemDisplayName], 5] call Epoch_message; [format["%1 is not needed at this time",_item call EPOCH_itemDisplayName], 5] call Epoch_message;
}; };
}; };
case 17: { // Defibrillator
_maxMagRnd = getnumber (configfile >> "cfgMagazines" >> _item >> "count");
_totalDefis = (magazinesammo player) select {(_x select 0) isequalto _item};
_totalMags = (magazinesammo player) select {(_x select 0) in ["EnergyPackLg","EnergyPack"]};
if (_totalDefis isequalto []) exitwith {};
if !(_totalMags isequalto []) then {
_CurDefiArr = [];
{
if ((_x select 1) < _maxMagRnd) exitwith {
_CurDefiArr = _totalDefis deleteat _foreachindex;
};
} foreach _totalDefis;
if (_CurDefiArr isequalto []) exitwith {
["Defibrillator is already fully charged",5] call Epoch_Message;
};
_remove = _totalMags deleteat 0;
_remove params ["_class","_rounds"];
_charge = _rounds min (_maxMagRnd - (_CurDefiArr select 1));
if (_rounds - _charge > 0) then {
_remove set [1,_rounds - _charge];
_totalMags pushback _remove;
};
if (_charge > 0) then {
_CurDefiArr set [1,(_CurDefiArr select 1) + _charge];
_totalDefis pushback _CurDefiArr;
player removemagazines _item;
player removemagazines "EnergyPackLg";
player removemagazines "EnergyPack";
{
_x call EPOCH_fnc_addMagazineOverflow;
} foreach _totalMags;
{
_x call EPOCH_fnc_addMagazineOverflow;
} foreach _totalDefis;
[format ["Recharged Defibrillator with %1 Energy",_charge],5] call Epoch_Message;
};
}
else {
["You need an Energy Pack",5] call Epoch_Message;
};
};
default { default {
["Found nothing", 5] call Epoch_message; ["Found nothing", 5] call Epoch_message;

View File

@ -23,7 +23,7 @@
BOOL BOOL
*/ */
//[[[cog import generate_private_arrays ]]] //[[[cog import generate_private_arrays ]]]
private ["_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 ["_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]]] //[[[end]]]
_buildingAllowed = true; _buildingAllowed = true;
@ -49,6 +49,7 @@ _storageCountPerMember = getNumber(_config >> "storageCountPerMember");
_minJammerDistance = getNumber(_config >> "minJammerDistance"); _minJammerDistance = getNumber(_config >> "minJammerDistance");
_maxBuildingHeight = getNumber(_config >> "maxBuildingHeight"); _maxBuildingHeight = getNumber(_config >> "maxBuildingHeight");
_jammerPerGroup = getNumber(_config >> "jammerPerGroup"); _jammerPerGroup = getNumber(_config >> "jammerPerGroup");
_CamCountLimit = getNumber(_config >> "maxCams");
if(getNumber(_config >> "useGroupCountLimits") == 0)then{_useGroupCountLimits=false}; if(getNumber(_config >> "useGroupCountLimits") == 0)then{_useGroupCountLimits=false};
if(getNumber(_config >> "splitCountLimits") == 1)then{_useSplitCountLimits=true}; if(getNumber(_config >> "splitCountLimits") == 1)then{_useSplitCountLimits=true};
if(getNumber(_config >> "jammerGLOnly") == 0)then{_jammerGLOnly=false}; if(getNumber(_config >> "jammerGLOnly") == 0)then{_jammerGLOnly=false};
@ -59,6 +60,7 @@ if(_storageCountLeader == 0)then{_storageCountLeader = 100};
if(_minJammerDistance == 0)then{_minJammerDistance = _buildingJammerRange*3}; if(_minJammerDistance == 0)then{_minJammerDistance = _buildingJammerRange*3};
if(_maxBuildingHeight == 0)then{_maxBuildingHeight = 100}; if(_maxBuildingHeight == 0)then{_maxBuildingHeight = 100};
if(_jammerPerGroup == 0)then{_jammerPerGroup = 2}; if(_jammerPerGroup == 0)then{_jammerPerGroup = 2};
if(_CamCountLimit == 0)then{_CamCountLimit = 2};
// input // input
params ["_objType"]; params ["_objType"];
@ -133,6 +135,12 @@ if !(_jammer isEqualTo []) then {
_buildingAllowed = false; _buildingAllowed = false;
["Building Disallowed: Max building height reached",5] call Epoch_message; ["Building Disallowed: Max building height reached",5] call Epoch_message;
}; };
if (_objType isequalto "BaseCam_EPOCH" && _buildingAllowed) then {
if ((count (nearestObjects[_nearestJammer,["BaseCam_EPOCH","BaseCam_SIM_EPOCH","BaseCam_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _CamCountLimit) then {
_buildingAllowed = false;
[format["Building Disallowed: Max %1 Cams per Base!", _CamCountLimit], 5] call Epoch_message;
};
};
}; };
}; };
} }

View File

@ -101,7 +101,7 @@ if (_object isKindOf "Constructions_static_F") then {
_canUpgrade = true; _canUpgrade = true;
_canUpgradePartCount = 0; _canUpgradePartCount = 0;
_missingParts = ""; _missingParts = "Missing: ";
{ {
_part = _x select 0; _part = _x select 0;
_req = _x select 1; _req = _x select 1;
@ -111,27 +111,27 @@ if (_object isKindOf "Constructions_static_F") then {
_missingCount = _req - _partCheck; _missingCount = _req - _partCheck;
_canUpgrade = false; _canUpgrade = false;
_missingParts = _missingParts + format["Missing %1 %2, ", _missingCount, (_part call EPOCH_itemDisplayName)]; _missingParts = _missingParts + format["%1 %2, ", _missingCount, (_part call EPOCH_itemDisplayName)];
}; };
_canUpgradePartCount = _canUpgradePartCount + _req; _canUpgradePartCount = _canUpgradePartCount + _req;
} forEach _upgradeParts; } forEach _upgradeParts;
_doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH"]; _doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH","WoodStairs3_EPOCH"];
_gates = ["CinderWallGarage_EPOCH"]; _gates = ["CinderWallGarage_EPOCH","WoodWallGarage_EPOCH","MetalWallGarage_EPOCH"];
if (_canUpgrade) then { if (_canUpgrade) then {
_upgradeto = _upgrade select 0; _upgradeto = _upgrade select 0;
if (_upgradeto in _doors) then { if (_upgradeto in _doors) then {
_countdoors = count (nearestobjects [_nearestJammer,_doors,_buildingJammerRange]); _countdoors = count (nearestobjects [_nearestJammer,_doors,_buildingJammerRange]);
if (_countdoors >= _maxdoors) then { if (_countdoors >= _maxdoors) then {
_canUpgrade = false; _canUpgrade = false;
_missingParts = _missingParts + format["Can not upgrade to locked Door! Max %1 allowed per Base!", _maxdoors]; _missingParts = format["Can not upgrade to locked Door / Stairs! Max %1 allowed per Base!", _maxdoors];
}; };
}; };
if (_upgradeto in _gates) then { if (_upgradeto in _gates) then {
_countgates = count (nearestobjects [_nearestJammer,_gates,_buildingJammerRange]); _countgates = count (nearestobjects [_nearestJammer,_gates,_buildingJammerRange]);
if (_countgates >= _maxgates) then { if (_countgates >= _maxgates) then {
_canUpgrade = false; _canUpgrade = false;
_missingParts = _missingParts + format["Can not upgrade to Gate! Max %1 allowed per Base!", _maxgates]; _missingParts = format["Can not upgrade to Gate! Max %1 allowed per Base!", _maxgates];
}; };
}; };
}; };

View File

@ -13,7 +13,7 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/functions/EPOCH_fn_returnConfigEntryV2.sqf https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/functions/EPOCH_fn_returnConfigEntryV2.sqf
Example: Example:
_sapperRndChance = ["CfgEpochClient", "sapperRngChance", 100] call EPOCH_fnc_returnConfigEntryV2; _config = ["CfgEpochClient", "sapperRngChance", 100] call EPOCH_fnc_returnConfigEntryV2;
Parameter(s): Parameter(s):
_this select 0: STRING - Config Class _this select 0: STRING - Config Class
@ -24,7 +24,7 @@
MIXED MIXED
*/ */
//[[[cog import generate_private_arrays ]]] //[[[cog import generate_private_arrays ]]]
private ["_config","_finalconfig","_missionconfig","_sapperRndChance","_varData"]; private ["_config","_finalconfig","_missionconfig","_varData"];
//[[[end]]] //[[[end]]]
params ["_configClass","_variableName","_defaultData"]; params ["_configClass","_variableName","_defaultData"];
_varData = _defaultData; _varData = _defaultData;

View File

@ -37,7 +37,7 @@ switch true do {
if (!isNull cursorTarget) then { if (!isNull cursorTarget) then {
_cursorTarget = cursorTarget; _cursorTarget = cursorTarget;
_repaired = false; _repaired = false;
if ((player distance _cursorTarget) <= 6) then { if ((player distance _cursorTarget) <= (((SizeOf (TypeOf _cursorTarget))/2) max 6) min 12) then {
_attachments = handgunItems player; _attachments = handgunItems player;
_heal = false; _heal = false;
if (_cursorTarget isKindOf "Man") then { if (_cursorTarget isKindOf "Man") then {
@ -97,12 +97,14 @@ switch true do {
}; };
case (_ammo isKindOf "B_Swing" || _ammo isKindOf "B_Stick") : { case (_ammo isKindOf "B_Swing" || _ammo isKindOf "B_Stick") : {
player playActionNow "SledgeSwing"; player playActionNow "SledgeSwing";
if (_weapon in ["MeleeSword","Power_Sword"]) then {
call EPOCH_mineRocks;
call EPOCH_chopWood;
};
if (_weapon isEqualTo "MeleeRod") then { if (_weapon isEqualTo "MeleeRod") then {
call EPOCH_fish; call EPOCH_fish;
}
else {
call EPOCH_mineRocks;
if (_weapon in ["MeleeSword","Power_Sword"]) then {
call EPOCH_chopWood;
};
}; };
}; };
case (_ammo isKindOf "ChainSaw_Bullet"): { case (_ammo isKindOf "ChainSaw_Bullet"): {

View File

@ -161,10 +161,10 @@ if (vehicle player == player) then {
}; };
if (Epoch_target iskindof 'Const_Ghost_EPOCH') then { if (Epoch_target iskindof 'Const_Ghost_EPOCH') then {
switch (_dikCode) do { switch (_dikCode) do {
case eXpoch_keysVectorTiltL: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionRoll = (EPOCH_buildDirectionRoll - _adj) max -180; EPOCH_doRotate = true; _handled = true }; case eXpoch_keysVectorTiltL: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionRoll = (EPOCH_buildDirectionRoll - _adj) max -EPOCH_MaxBuildingTilt; EPOCH_doRotate = true; _handled = true };
case eXpoch_keysVectorTiltR: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionRoll = (EPOCH_buildDirectionRoll + _adj) min 180; EPOCH_doRotate = true; _handled = true }; case eXpoch_keysVectorTiltR: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionRoll = (EPOCH_buildDirectionRoll + _adj) min EPOCH_MaxBuildingTilt; EPOCH_doRotate = true; _handled = true };
case eXpoch_keysVectorTiltAwy: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionPitch = (EPOCH_buildDirectionPitch - _adj) max -180; EPOCH_doRotate = true; _handled = true }; case eXpoch_keysVectorTiltAwy: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionPitch = (EPOCH_buildDirectionPitch - _adj) max -EPOCH_MaxBuildingTilt; EPOCH_doRotate = true; _handled = true };
case eXpoch_keysVectorTiltTwd: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionPitch = (EPOCH_buildDirectionPitch + _adj) min 180; EPOCH_doRotate = true; _handled = true }; case eXpoch_keysVectorTiltTwd: {_adj = 1;if(_shift)then{_adj = 2.5};if(_alt)then{_adj = 0.5};EPOCH_buildDirectionPitch = (EPOCH_buildDirectionPitch + _adj) min EPOCH_MaxBuildingTilt; EPOCH_doRotate = true; _handled = true };
}; };
}; };
}; };
@ -270,19 +270,22 @@ if (_dikCode in (actionKeys "NightVision")) then {
}; };
if(!_ctrl && (_dikCode in (actionKeys "HeliRopeAction")))then{ if(!_ctrl && (_dikCode in (actionKeys "HeliRopeAction")))then{
if (player == vehicle player) exitwith {};
_msg = ""; _msg = "";
if(EPOCH_ArmaSlingLoad)then{ if(EPOCH_ArmaSlingLoad)then{
if(driver vehicle player isEqualTo player)then{ if (["CfgEpochClient", "ActionHookRope", true] call EPOCH_fnc_returnConfigEntryV2) then {
_slung = ropeAttachedObjects vehicle player; if(driver vehicle player isEqualTo player)then{
if(_slung isEqualTo [])then{ _slung = ropeAttachedObjects vehicle player;
if!('ItemRope' in magazines player) then { if(_slung isEqualTo [])then{
_msg = "You need rope to hook"; if!('ItemRope' in magazines player) then {
_handled = true; _msg = "You need rope to hook";
_handled = true;
}else{
player removeItem 'ItemRope';
};
}else{ }else{
player removeItem 'ItemRope'; player addItem 'ItemRope';
}; };
}else{
player addItem 'ItemRope';
}; };
}; };
}else{ }else{
@ -294,4 +297,47 @@ if(!_ctrl && (_dikCode in (actionKeys "HeliRopeAction")))then{
}; };
}; };
if (!isnull (finddisplay -1200) && !isnull Epoch_ActiveCam) then {
_multi = 1;
if (isnil 'Epoch_CamTrigger') then {
Epoch_CamTrigger = diag_ticktime - 0.2;
};
if (diag_ticktime - Epoch_CamTrigger < 0.1) then {
_multi = 3;
};
Epoch_CamTrigger = diag_ticktime;
switch _dikCode do {
case Epoch_KB_BaseCamNextCam: { /* Num Enter */
call Epoch_CamUse;
};
case Epoch_KB_BaseCamLeft: { /* Num 4 */
Epoch_AutoCam = false;
Epoch_CamAdjust = [-3*_multi,0,0];
};
case Epoch_KB_BaseCamRight: { /* Num 6 */
Epoch_AutoCam = false;
Epoch_CamAdjust = [3*_multi,0,0];
};
case Epoch_KB_BaseCamUp: { /* Num 8 */
Epoch_AutoCam = false;
Epoch_CamAdjust = [0,8*_multi,0];
};
case Epoch_KB_BaseCamDown: { /* Num 2 */
Epoch_AutoCam = false;
Epoch_CamAdjust = [0,-8*_multi,0];
};
case Epoch_KB_BaseCamZoomOut: { /* Num - */
Epoch_AutoCam = false;
Epoch_CamAdjust = [0,0,0.1*_multi];
};
case Epoch_KB_BaseCamZoomIn: { /* Num + */
Epoch_AutoCam = false;
Epoch_CamAdjust = [0,0,-0.1*_multi];
};
case Epoch_KB_BaseCamAutoCam: { /* Num 0 */
Epoch_AutoCam = true;
Epoch_CamAdjust = [0,0,0];
};
};
};
_handled _handled

View File

@ -26,39 +26,46 @@ params [
_blocked = false; _blocked = false;
_msg = ''; _msg = '';
_type = typeOf _actionObj; _type = typeOf _actionObj;
switch(true)do{ _config = 'CfgEpochClient' call EPOCH_returnConfig;
case (_actionName isEqualTo 'FireInflame'): { switch(_actionName)do{
if!('lighter_epoch' in magazines player) then { case 'FireInflame': {
_msg = 'You need a lighter'; if (["CfgEpochClient", "ActionFireOnLighter", true] call EPOCH_fnc_returnConfigEntryV2) then {
_blocked = true; if!('lighter_epoch' in magazines player) then {
}else{ _msg = 'You need a lighter';
[player,'lighter_epoch',-1] call EPOCH_usedItemRepack;
//[_actionObj] remoteExec ['EPOCH_server_addToFireSystem',2];
};
};
case (_actionName isEqualTo 'FirePutDown'): {
if(_type isEqualTo 'BurnBarrel_EPOCH')then{
if!('ItemFireExtinguisher' in magazines player) then {
_msg = 'You need an extinguisher';
_blocked = true; _blocked = true;
}else{ }else{
[player,'ItemFireExtinguisher',-1] call EPOCH_usedItemRepack; [player,'lighter_epoch',-5] call EPOCH_usedItemRepack;
//[_actionObj] remoteExec ['EPOCH_server_addToFireSystem',2];
}; };
}; };
}; };
case (_actionName isEqualTo 'HookCargo'): { case 'FirePutDown': {
if(EPOCH_ArmaSlingLoad)then{ if (["CfgEpochClient", "ActionBurnBarrelOffExtinguisher", true] call EPOCH_fnc_returnConfigEntryV2) then {
if(driver vehicle player isEqualTo player)then{ if(_type isEqualTo 'BurnBarrel_EPOCH')then{
_slung = ropeAttachedObjects vehicle player; if!('ItemFireExtinguisher' in magazines player) then {
if(_slung isEqualTo [])then{ _msg = 'You need an extinguisher';
if!('ItemRope' in magazines player) then { _blocked = true;
_msg = 'You need rope to hook';
_blocked = true;
}else{
player removeItem 'ItemRope';
};
}else{ }else{
player addItem 'ItemRope'; [player,'ItemFireExtinguisher',-1] call EPOCH_usedItemRepack;
};
};
};
};
case 'HookCargo': {
if(EPOCH_ArmaSlingLoad)then{
if (["CfgEpochClient", "ActionHookRope", true] call EPOCH_fnc_returnConfigEntryV2) then {
if(driver vehicle player isEqualTo player)then{
_slung = ropeAttachedObjects vehicle player;
if(_slung isEqualTo [])then{
if!('ItemRope' in magazines player) then {
_msg = 'You need rope to hook';
_blocked = true;
}else{
player removeItem 'ItemRope';
};
}else{
player addItem 'ItemRope';
};
}; };
}; };
}else{ }else{
@ -66,9 +73,11 @@ switch(true)do{
_blocked = true; _blocked = true;
}; };
}; };
case (_actionName isEqualTo 'UnhookCargo'): { case 'UnhookCargo': {
if(EPOCH_ArmaSlingLoad)then{ if(EPOCH_ArmaSlingLoad)then{
player addItem 'ItemRope'; if (["CfgEpochClient", "ActionHookRope", true] call EPOCH_fnc_returnConfigEntryV2) then {
player addItem 'ItemRope';
};
}else{ }else{
_msg = 'Unhook Malfunction, overrode by R3F or AdvSlingLoad'; _msg = 'Unhook Malfunction, overrode by R3F or AdvSlingLoad';
_blocked = true; _blocked = true;

View File

@ -44,6 +44,9 @@ EPOCH_arr_snapObjects = [];
EPOCH_prevTarget = objNull; EPOCH_prevTarget = objNull;
EPOCH_interactOption = 0; EPOCH_interactOption = 0;
EPOCH_playerStaminaMax = 100; EPOCH_playerStaminaMax = 100;
Epoch_ActiveCam = objnull;
Epoch_AutoCam = true;
Epoch_CamAdjust = [0,0,0];
{ {
missionNamespace setVariable [format ["EPOCH_player%1",_x],EPOCH_defaultVars select _forEachIndex]; missionNamespace setVariable [format ["EPOCH_player%1",_x],EPOCH_defaultVars select _forEachIndex];

View File

@ -57,7 +57,16 @@ _keyMap =
["Build: Vector RIGHT", "eXpoch_keysVectorTiltR", 0xCD], ["Build: Vector RIGHT", "eXpoch_keysVectorTiltR", 0xCD],
["Build: Vector AWAY", "eXpoch_keysVectorTiltAwy", 0xC8], ["Build: Vector AWAY", "eXpoch_keysVectorTiltAwy", 0xC8],
["Build: Vector TOWARD", "eXpoch_keysVectorTiltTwd", 0xD0], ["Build: Vector TOWARD", "eXpoch_keysVectorTiltTwd", 0xD0],
["Build: Reset Object", "eXpoch_keysVectorResetObject", 0x4C] ["Build: Reset Object", "eXpoch_keysVectorResetObject", 0x4C],
["BaseCam: NextCam","Epoch_KB_BaseCamNextCam",0x9C],
["BaseCam: Left","Epoch_KB_BaseCamLeft",0x4B],
["BaseCam: Right","Epoch_KB_BaseCamRight",0x4D],
["BaseCam: Up","Epoch_KB_BaseCamUp",0x48],
["BaseCam: Down","Epoch_KB_BaseCamDown",0x50],
["BaseCam: Zoom -","Epoch_KB_BaseCamZoomOut",74],
["BaseCam: Zoom +","Epoch_KB_BaseCamZoomIn",78],
["BaseCam: AutoCam","Epoch_KB_BaseCamAutoCam",0x52]
]; ];
_keyMap call EPOCH_custom_KeyMap; _keyMap call EPOCH_custom_KeyMap;

View File

@ -8,4 +8,18 @@ if (EPOCH_IsAutoRunning) then {
EPOCH_IsAutoRunning = false; EPOCH_IsAutoRunning = false;
player switchMove ""; player switchMove "";
}; };
};
if (animationstate player in ['aadjpknlmstpsraswpstddown','aadjpknlmstpsraswrflddown'] && cameraview == 'GUNNER' && (player weapondirection (currentweapon player)) select 2 < -0.88) then {
_fadedblack = true;
TitleText ['Stop BugUsing!','BLACK FADED'];
}
else {
if(_fadedblack) then {
[] spawn {
uisleep 2;
TitleText ['','PLAIN DOWN'];
};
_fadedblack = false;
};
}; };

View File

@ -21,7 +21,7 @@ _energyValue = _chargeRate min _energyRegenMax;
_vehicle = vehicle player; _vehicle = vehicle player;
if (_vehicle != player && isEngineOn _vehicle) then { if (_vehicle != player && isEngineOn _vehicle) then {
if !(_vehicle iskindof "Bicycle") then { if !(_vehicle iskindof "Bicycle") then {
_energyValue = _energyValue + 5; _energyValue = _energyValue + _energyRegenInVeh;
}; };
}; };
if (currentVisionMode player == 1) then { //NV enabled if (currentVisionMode player == 1) then { //NV enabled
@ -36,8 +36,8 @@ if (currentVisionMode player == 1) then { //NV enabled
// Sets visual effect // Sets visual effect
_playerAlcohol = missionNamespace getVariable [_playerAlcoholKey, _playerAlcoholDefault]; _playerAlcohol = missionNamespace getVariable [_playerAlcoholKey, _playerAlcoholDefault];
if (_playerAlcohol > 20) then { if (_playerAlcohol > 20) then {
_drunkVal = linearConversion [0,100,_playerAlcohol,0.1,1,true]; _drunkVal = linearConversion [0,100,_playerAlcohol,0,10,true];
[_drunkVal, 2] call epoch_setDrunk; [(ceil _drunkVal)/10, 2] call epoch_setDrunk;
} else { } else {
[0, 2] call epoch_setDrunk; [0, 2] call epoch_setDrunk;
}; };

View File

@ -2,7 +2,7 @@ _position = getPosATL player;
_nearestLocations = nearestLocations[player, _radioactiveLocations, 300]; _nearestLocations = nearestLocations[player, _radioactiveLocations, 300];
EPOCH_nearestLocations = _nearestLocations; EPOCH_nearestLocations = _nearestLocations;
_powerSources = nearestObjects[player, ["Land_spp_Tower_F","Land_wpp_Turbine_V2_F","Land_wpp_Turbine_V1_F","SolarGen_EPOCH","Land_Wreck_Satellite_EPOCH"], _energyRange]; _powerSources = nearestObjects[player, _energyPowerSources, _energyRange];
// TODO: add more sources and config based check instead of global var // TODO: add more sources and config based check instead of global var
// _nearestLocations removed as they don't support getVariable // _nearestLocations removed as they don't support getVariable
@ -109,25 +109,26 @@ _chargeRate = 0;
if !(_powerSources isEqualTo[]) then { if !(_powerSources isEqualTo[]) then {
_totalCapacity = 0; _totalCapacity = 0;
{ {
_powerClass = typeOf _x; _powerClass = typeOf _x;
_powerCap = getNumber(_cfgBaseBuilding >> _powerClass >> "powerCapacity"); _powerCap = getNumber(_cfgBaseBuilding >> _powerClass >> "powerCapacity");
_powerType = getNumber(_cfgBaseBuilding >> _powerClass >> "powerType"); _powerType = getNumber(_cfgBaseBuilding >> _powerClass >> "powerType");
if (_powerCap == 0) then { if (_powerCap == 0) then {
_powerCap = 100; _powerCap = 100;
}; };
if (_powerType == 1) then { _powerCap = switch _powerType do {
if (sunOrMoon < 1) then { case 1: {if (sunOrMoon == 1) then {_powerCap * (1-overcast)} else {(_powerCap * (1 - overcast))/2}};
_powerCap = _powerCap/2; case 2: {_powerCap * windstr};
}; case 3: {_powerCap * (1 - ((player distance _x) / _energyRange))};
}; default {_powerCap};
_totalCapacity = _totalCapacity + _powerCap; };
_totalCapacity = _totalCapacity + _powerCap;
} forEach _powerSources; } forEach _powerSources;
if (_totalCapacity > 0) then { if (_totalCapacity > 0) then {
_players = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], _energyRange]; _players = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], _energyRange];
if (_players isEqualTo []) then { if (_players isEqualTo []) then {
_chargeRate = ceil _totalCapacity; _chargeRate = round _totalCapacity;
} else { } else {
_chargeRate = ceil (_totalCapacity / (count _players)); _chargeRate = round (_totalCapacity / (count _players));
}; };
}; };
}; };

View File

@ -13,6 +13,9 @@ EPOCH_forceUpdateNow = false;
// start alive timer // start alive timer
_clientAliveTimer = diag_tickTime; _clientAliveTimer = diag_tickTime;
// Fade Black Screen
_fadedblack = false;
// init player stat vars // 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; _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,""]}; _gModeVarNames = _gmVarsInit apply {_x param [0,""]};
@ -122,6 +125,8 @@ _baseThirstLoss = ["CfgEpochClient", "baseThirstLoss", 2] call EPOCH_fnc_returnC
_baseAlcoholLoss = ["CfgEpochClient", "baseAlcoholLoss", 0.17] call EPOCH_fnc_returnConfigEntryV2; _baseAlcoholLoss = ["CfgEpochClient", "baseAlcoholLoss", 0.17] call EPOCH_fnc_returnConfigEntryV2;
_lossMultiplier = if (["CfgEpochClient", "accelerateHTALoss", true] call EPOCH_fnc_returnConfigEntryV2) then {timeMultiplier} else {1}; _lossMultiplier = if (["CfgEpochClient", "accelerateHTALoss", true] call EPOCH_fnc_returnConfigEntryV2) then {timeMultiplier} else {1};
_energyCostNV = ["CfgEpochClient", "energyCostNV", 3] call EPOCH_fnc_returnConfigEntryV2; _energyCostNV = ["CfgEpochClient", "energyCostNV", 3] call EPOCH_fnc_returnConfigEntryV2;
_energyPowerSources = ["CfgEpochClient", "energyPowerSources", ["Land_spp_Tower_F","Land_wpp_Turbine_V2_F","Land_wpp_Turbine_V1_F","SolarGen_EPOCH","Land_Wreck_Satellite_EPOCH"]] call EPOCH_fnc_returnConfigEntryV2;
_energyRegenInVeh = ["CfgEpochClient", "energyChargeInVeh", 5] call EPOCH_fnc_returnConfigEntryV2;
_energyRegenMax = ["CfgEpochClient", "energyRegenMax", 5] call EPOCH_fnc_returnConfigEntryV2; _energyRegenMax = ["CfgEpochClient", "energyRegenMax", 5] call EPOCH_fnc_returnConfigEntryV2;
_energyRange = ["CfgEpochClient", "energyRange", 75] call EPOCH_fnc_returnConfigEntryV2; _energyRange = ["CfgEpochClient", "energyRange", 75] call EPOCH_fnc_returnConfigEntryV2;
_hudConfigs = ["CfgEpochClient", "hudConfigs", []] call EPOCH_fnc_returnConfigEntryV2; _hudConfigs = ["CfgEpochClient", "hudConfigs", []] call EPOCH_fnc_returnConfigEntryV2;

View File

@ -51,9 +51,15 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
{ {
_item = _x; _item = _x;
_rounds = 1; _rounds = 1;
_onHand = false;
if (_item isequaltype []) then { if (_item isequaltype []) then {
_item = _x select 0; _item = _x select 0;
_rounds = _x select 1; if ((_x select 1) isequalto "Hand") then {
_onHand = true;
}
else {
_rounds = _x select 1;
};
}; };
if !(_item isequalto "") then { if !(_item isequalto "") then {
_maxrnd = 1; _maxrnd = 1;
@ -66,7 +72,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
_tooltip = format ["%1 rounds left in Magazine",_rounds]; _tooltip = format ["%1 rounds left in Magazine",_rounds];
}; };
if (_index == 0 || (tolower _item) in _FilterArray) then { if (_index == 0 || (tolower _item) in _FilterArray) then {
_id = lbAdd [_PlayerItemsBox, _item call EPOCH_itemDisplayName]; _id = lbAdd [_PlayerItemsBox, (_item call EPOCH_itemDisplayName) + (if (_onHand) then {" (in Hand)"} else {""})];
lbSetData [_PlayerItemsBox, _id, _item]; lbSetData [_PlayerItemsBox, _id, _item];
lbSetValue [_PlayerItemsBox, _id, _rounds]; lbSetValue [_PlayerItemsBox, _id, _rounds];
lbSetPicture [_PlayerItemsBox, _id, _item call EPOCH_itemPicture]; lbSetPicture [_PlayerItemsBox, _id, _item call EPOCH_itemPicture];
@ -74,6 +80,9 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
lbSetTooltip [_PlayerItemsBox, _id, _tooltip]; lbSetTooltip [_PlayerItemsBox, _id, _tooltip];
lbSetColor [_PlayerItemsBox,_id,[1,(_rounds/_maxrnd),0,1]]; lbSetColor [_PlayerItemsBox,_id,[1,(_rounds/_maxrnd),0,1]];
}; };
if (_onHand) then {
lbSetColor [_PlayerItemsBox,_id,[1,1,1,0.5]];
};
}; };
}; };
} forEach EPOCH_NpcTradePlayerItems; } forEach EPOCH_NpcTradePlayerItems;

View File

@ -13,8 +13,8 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/traders/EPOCH_npcTraderAdd.sqf https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/traders/EPOCH_npcTraderAdd.sqf
*/ */
private [ "_PlayerFilerDropDown","_PlayerItemsBox","_PlayerItemsOutBox","_TraderItemsOutBox","_CryptoInCtrl","_CryptoOutCtrl","_allowAdd","_uiItem","_rounds","_itemIcon","_itemColor","_errormsg","_stockLimit","_config", private [ "_PlayerFilerDropDown","_PlayerItemsBox","_PlayerItemsOutBox","_TraderItemsOutBox","_CryptoInCtrl","_CryptoOutCtrl","_allowAdd","_uiItem","_rounds","_itemIcon","_itemColor","_errormsg","_config",
"_itemClasses","_itemQtys","_qtyIndex","_limit","_sizeOut","_item","_vehicle","_itemName","_index","_maxrnd","_ItemIndex","_cryptoCount","_worth","_itemTax","_tax" "_sizeOut","_item","_vehicle","_itemName","_index","_maxrnd","_ItemIndex","_cryptoCount","_worth","_itemTax","_tax"
]; ];
params ["_control","_selected"]; params ["_control","_selected"];
_selected params ["_CurControl","_id"]; _selected params ["_CurControl","_id"];
@ -33,36 +33,10 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
_itemIcon = _CurControl lbPicture _id; _itemIcon = _CurControl lbPicture _id;
_itemColor = _CurControl lbColor _id; _itemColor = _CurControl lbColor _id;
_errormsg = ""; _errormsg = "";
_stockLimit = false;
_config = 'CfgPricing' call EPOCH_returnConfig; _config = 'CfgPricing' call EPOCH_returnConfig;
if (isClass (_config >> _uiItem)) then { if (isClass (_config >> _uiItem)) then {
if (_control == _PlayerItemsOutBox) then { if (_control == _PlayerItemsOutBox) then {
_itemClasses = EPOCH_NpcTradeTraderItems select 0;
_itemQtys = EPOCH_NpcTradeTraderItems select 1;
_qtyIndex = _itemClasses find _uiItem;
if (_qtyIndex != -1) then {
_itemQty = _itemQtys select _qtyIndex;
_maxrnd = 1;
if ([_uiItem,"cfgMagazines"] call Epoch_fnc_isAny) then {
_maxrnd = getnumber (configfile >> "cfgMagazines" >> _uiItem >> "count");
};
_itemQty = _itemQty / _maxrnd;
_sizeIn = lbSize _PlayerItemsOutBox;
if (_sizeIn > 0) then {
for "_i" from 0 to (_sizeIn - 1) do {
_InItem = lbData [_PlayerItemsOutBox, _i];
if ((lbData [_PlayerItemsOutBox, _i]) == _uiItem) then {
_itemQty = _itemQty + ((lbValue [_PlayerItemsOutBox, _i])/_maxrnd);
};
};
};
_limit = ["CfgTraderLimits", _uiItem, 100] call EPOCH_fnc_returnConfigEntryV2;
if (_itemQty >= _limit) then{
_stockLimit = true;
_allowAdd = false;
};
};
if (_uiItem isKindOf "Air" || _uiItem isKindOf "Ship" || _uiItem isKindOf "LandVehicle" || _uiItem isKindOf "Tank") then { if (_uiItem isKindOf "Air" || _uiItem isKindOf "Ship" || _uiItem isKindOf "LandVehicle" || _uiItem isKindOf "Tank") then {
_sizeOut = lbSize _PlayerItemsOutBox; _sizeOut = lbSize _PlayerItemsOutBox;
if (_sizeOut > 0) then { if (_sizeOut > 0) then {
@ -114,7 +88,12 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
lbSetPicture [_control, _index, _itemIcon]; lbSetPicture [_control, _index, _itemIcon];
lbSetColor [_control,_index,_itemColor]; lbSetColor [_control,_index,_itemColor];
if (_control == _PlayerItemsBox && !(_uiItem iskindof "Landvehicle" || _uiItem iskindof "SHIP" || _uiItem iskindof "AIR" || _uiItem iskindof "TANK")) then { if (_control == _PlayerItemsBox && !(_uiItem iskindof "Landvehicle" || _uiItem iskindof "SHIP" || _uiItem iskindof "AIR" || _uiItem iskindof "TANK")) then {
EPOCH_NpcTradePlayerItems pushback [_uiItem,_rounds]; if ((_itemName find " (in Hand)") > -1) then {
EPOCH_NpcTradePlayerItems pushback [_uiItem,"Hand"];
}
else {
EPOCH_NpcTradePlayerItems pushback [_uiItem,_rounds];
};
} }
else { else {
if ([_uiItem,"cfgMagazines"] call Epoch_fnc_isAny) then { if ([_uiItem,"cfgMagazines"] call Epoch_fnc_isAny) then {
@ -124,9 +103,15 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
lbSetTooltip [_control,_index,_tooltip]; lbSetTooltip [_control,_index,_tooltip];
}; };
}; };
_ItemIndex = EPOCH_NpcTradePlayerItems find [_uiItem,_rounds]; _ItemIndex = -1;
if ((_itemName find " (in Hand)") > -1) then {
_ItemIndex = EPOCH_NpcTradePlayerItems find [_uiItem,"Hand"];
};
if (_ItemIndex < 0) then { if (_ItemIndex < 0) then {
_ItemIndex = EPOCH_NpcTradePlayerItems find _uiItem; _ItemIndex = EPOCH_NpcTradePlayerItems find _uiItem;
if (_ItemIndex < 0) then {
_ItemIndex = EPOCH_NpcTradePlayerItems find [_uiItem,_rounds];
};
}; };
if (_ItemIndex > -1) then { if (_ItemIndex > -1) then {
EPOCH_NpcTradePlayerItems deleteat _ItemIndex; EPOCH_NpcTradePlayerItems deleteat _ItemIndex;
@ -173,12 +158,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then {
}; };
} }
else { else {
if (_stockLimit) then{ [_errormsg, 5] call Epoch_message;
["Trader has the maximum amount of this item", 5] call Epoch_message;
}
else {
[_errormsg, 5] call Epoch_message;
};
}; };
}; };
} }

View File

@ -23,7 +23,13 @@ if (alive _target) then {
EPOCH_lastNPCtradeTarget = _target; EPOCH_lastNPCtradeTarget = _target;
EPOCH_NpcTradePlayerItems = (items player)+(magazinesammo player); EPOCH_NpcTradePlayerItems = (items player)+(magazinesammo player);
if (primaryWeapon player != "") then { if (primaryWeapon player != "") then {
EPOCH_NpcTradePlayerItems pushback primaryWeapon player; EPOCH_NpcTradePlayerItems pushback [primaryWeapon player,"Hand"];
};
if (secondaryWeapon player != "") then {
EPOCH_NpcTradePlayerItems pushback [secondaryWeapon player,"Hand"];
};
if (handgunWeapon player != "") then {
EPOCH_NpcTradePlayerItems pushback [handgunWeapon player,"Hand"];
}; };
if (count backpackItems player == 0 && count backpackmagazines player == 0 && backpack player != "") then { if (count backpackItems player == 0 && count backpackmagazines player == 0 && backpack player != "") then {
EPOCH_NpcTradePlayerItems pushback backpack player; EPOCH_NpcTradePlayerItems pushback backpack player;

View File

@ -13,12 +13,13 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/traders/EPOCH_startNpcTrade.sqf https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/traders/EPOCH_startNpcTrade.sqf
*/ */
private ["_PlayerItemsOutBox","_TraderItemsOutBox","_config","_current_crypto","_sizeIn","_arrayIn","_item","_rounds","_mags","_itemMags","_index","_sizeOut","_arrayOut","_itemWorth","_itemTax","_tax","_maxrnd"]; private ["_EnableTempVehTrade","_PlayerItemsOutBox","_TraderItemsOutBox","_config","_current_crypto","_sizeIn","_arrayIn","_item","_rounds","_mags","_itemMags","_index","_sizeOut","_arrayOut","_itemWorth","_itemTax","_tax","_maxrnd"];
if (!isNil "EPOCH_TRADE_STARTED") exitWith{}; if (!isNil "EPOCH_TRADE_STARTED") exitWith{};
if (isNull _this) exitWith{}; if (isNull _this) exitWith{};
if (alive _this) then { if (alive _this) then {
_EnableTempVehTrade = ["CfgEpochClient", "EnableTempVehTrade", false] call EPOCH_fnc_returnConfigEntryV2;
_PlayerItemsOutBox = 41501; _PlayerItemsOutBox = 41501;
_TraderItemsOutBox = 41502; _TraderItemsOutBox = 41502;
_config = 'CfgPricing' call EPOCH_returnConfig; _config = 'CfgPricing' call EPOCH_returnConfig;
@ -27,6 +28,11 @@ if (alive _this) then {
_arrayIn = []; _arrayIn = [];
if (_sizeIn > 0) then { if (_sizeIn > 0) then {
for "_i" from 0 to (_sizeIn - 1) do { for "_i" from 0 to (_sizeIn - 1) do {
_onHand = false;
_itemName = lbText [_PlayerItemsOutBox, _i];
if ((_itemName find " (in hand)") > -1) then {
_onHand = true;
};
_item = lbData [_PlayerItemsOutBox, _i]; _item = lbData [_PlayerItemsOutBox, _i];
_rounds = lbValue [_PlayerItemsOutBox, _i]; _rounds = lbValue [_PlayerItemsOutBox, _i];
if (isClass (_config >> _item)) then{ if (isClass (_config >> _item)) then{
@ -38,13 +44,36 @@ if (alive _this) then {
_itemWorth = round (_itemWorth*(_rounds/_maxrnd)); _itemWorth = round (_itemWorth*(_rounds/_maxrnd));
_added = false; _added = false;
if ([_item, "CfgWeapons"] call EPOCH_fnc_isAny) then { if ([_item, "CfgWeapons"] call EPOCH_fnc_isAny) then {
if (_item in items player) then { if (_item in items player && !_onHand) then {
player removeItem _item; player removeItem _item;
_arrayIn pushBack [_item,_rounds]; _arrayIn pushBack [_item,_rounds];
_added = true; _added = true;
} }
else { else {
if (_item == primaryweapon player) then { if (_item in [primaryweapon player,secondaryweapon player, handgunweapon player]) then {
_index = if (_item == primaryweapon player) then {0} else {if (_item == secondaryweapon player) then {1} else {2}};
{
if (_foreachindex > 0) then {
_weaponaddon = _x;
_count = 1;
if !(_weaponaddon isequalto [] || _weaponaddon isequalto "") then {
if (_weaponaddon isequaltype []) then {
if (count _weaponaddon > 1) then {
_weaponaddon = _x select 0;
_count = _x select 1;
};
};
if ([_weaponaddon, "CfgWeapons"] call EPOCH_fnc_isAny) then {
_weaponaddon call EPOCH_fnc_addItemOverflow;
}
else {
if ([_weaponaddon, "CfgMagazines"] call EPOCH_fnc_isAny) then {
[_weaponaddon,_count] call EPOCH_fnc_addMagazineOverflow;
};
};
};
};
} foreach ((getunitloadout player) select _index);
player removeweapon _item; player removeweapon _item;
_arrayIn pushBack [_item,_rounds]; _arrayIn pushBack [_item,_rounds];
_added = true; _added = true;
@ -65,7 +94,7 @@ if (alive _this) then {
if (!isNull _vehicle) then { if (!isNull _vehicle) then {
if (local _vehicle) then { if (local _vehicle) then {
_vehSlot = _vehicle getVariable["VEHICLE_SLOT", "ABORT"]; _vehSlot = _vehicle getVariable["VEHICLE_SLOT", "ABORT"];
if (_vehSlot != "ABORT") then { if (_vehSlot != "ABORT" || _EnableTempVehTrade) then {
_arrayIn pushBack [_item,_rounds]; _arrayIn pushBack [_item,_rounds];
_added = true; _added = true;
}; };

View File

@ -25,12 +25,13 @@ if (_veh iskindof "ebike_epoch") then {
}; };
_wheelcounter = 0; _wheelcounter = 0;
{ {
_HitPointName = _x; _x params ["_searchedhit","_limit1","_limit2"];
_Hit = (getAllHitPointsDamage _veh) select 2 select _foreachindex; _searchedhit = tolower _searchedhit;
{ {
_x params ["_searchedhit","_limit1","_limit2"]; _HitPointName = tolower _x;
_Hit = (getAllHitPointsDamage _veh) select 2 select _foreachindex;
if (_searchedhit isequalto _HitPointName) then { if (_searchedhit isequalto _HitPointName) then {
_wheel = ["wheel",tolower _searchedhit] call bis_fnc_instring; _wheel = ["wheel",_searchedhit] call bis_fnc_instring;
if (_wheel) then { if (_wheel) then {
_wheelcounter = _wheelcounter + 1; _wheelcounter = _wheelcounter + 1;
}; };
@ -42,7 +43,7 @@ _wheelcounter = 0;
_repairs pushback _searchedhit; _repairs pushback _searchedhit;
}; };
if (!((_veh getvariable ["vehicle_slot","-1"]) isequalto "-1") && _EnableRemoveParts) then { if (!((_veh getvariable ["vehicle_slot","-1"]) isequalto "-1") && _EnableRemoveParts) then {
if (_searchedhit in ["HitLFWheel","HitLF2Wheel","HitLMWheel","HitLBWheel","HitRFWheel","HitRF2Wheel","HitRMWheel","HitRBWheel","HitEngine"]) then { if (_searchedhit in ["hitlfwheel","hitlf2wheel","hitlmwheel","hitlbwheel","hitrfwheel","hitrf2wheel","hitrmwheel","hitrbwheel","hitengine"]) then {
_removes pushback _searchedhit; _removes pushback _searchedhit;
}; };
}; };
@ -50,7 +51,7 @@ _wheelcounter = 0;
else { else {
if (_searchedhit isequalto "glass") then { if (_searchedhit isequalto "glass") then {
if ("glass" in _repairs) exitwith {}; if ("glass" in _repairs) exitwith {};
_glass = ["glass",tolower _HitPointName] call bis_fnc_instring; _glass = ["glass",_HitPointName] call bis_fnc_instring;
if (_glass) then { if (_glass) then {
if (_Hit >= _limit1) exitwith { if (_Hit >= _limit1) exitwith {
_repairs pushback _searchedhit; _repairs pushback _searchedhit;
@ -58,12 +59,13 @@ _wheelcounter = 0;
}; };
}; };
}; };
} foreach _VehicleRepairs; } foreach ((getAllHitPointsDamage _veh) select 0);
} foreach ((getAllHitPointsDamage _veh) select 0); } foreach _VehicleRepairs;
_repairarrays = []; _repairarrays = [];
{ {
if (!(_x in _repairs || _x in _replaces || (["glass",tolower _x] call Bis_fnc_instring)) || _x isequalto "") then { _HitPointName = tolower _x;
if (!(_HitPointName in _repairs || _HitPointName in _replaces || (["glass",_HitPointName] call Bis_fnc_instring)) || _x isequalto "") then {
_repairarrays pushback [_foreachindex, 0]; _repairarrays pushback [_foreachindex, 0];
}; };
} foreach ((getAllHitPointsDamage _veh) select 0); } foreach ((getAllHitPointsDamage _veh) select 0);

View File

@ -14,6 +14,7 @@
*/ */
private ["_secondlocalcheck","_repairarrays","_config","_VehicleRepairs","_reqiredMat","_searchname","_line","_returnmat"]; private ["_secondlocalcheck","_repairarrays","_config","_VehicleRepairs","_reqiredMat","_searchname","_line","_returnmat"];
params ["_veh","_do","_hitpointname"]; params ["_veh","_do","_hitpointname"];
_hitpointname = tolower _hitpointname;
_secondlocalcheck = false; _secondlocalcheck = false;
_returnmat = ""; _returnmat = "";
_repairarrays = []; _repairarrays = [];
@ -31,25 +32,28 @@ EPOCH_Vehicle_MaintainLock = true;
switch _do do { switch _do do {
case 'repair': { case 'repair': {
_reqiredMat = ""; _reqiredMat = "NONE";
_searchname = _hitpointname; _searchname = _hitpointname;
if (["glass",tolower _hitpointname] call Bis_fnc_instring) then { if (["glass",_hitpointname] call Bis_fnc_instring) then {
_searchname = "glass"; _searchname = "glass";
}; };
{ {
_x params ["_name","","","_repairmat"]; _x params ["_name","","","_repairmat"];
_name = tolower _name;
if (_searchname isequalto _name) exitwith { if (_searchname isequalto _name) exitwith {
_reqiredMat = _repairmat; _reqiredMat = _repairmat;
}; };
} foreach _VehicleRepairs; } foreach _VehicleRepairs;
if (_reqiredMat isequalto "") exitwith { if (_reqiredMat isequalto "NONE") exitwith {
['Error - Can not find required Material',5] call Epoch_message; ['Error - Can not find required Material',5] call Epoch_message;
}; };
if !(_reqiredMat in (magazines player)) exitwith { if (!(_reqiredMat in (magazines player)) && !(_reqiredMat isequalto "")) exitwith {
_line = format ['You need %1 to repair',_reqiredMat call EPOCH_itemDisplayName]; _line = format ['You need %1 to repair',_reqiredMat call EPOCH_itemDisplayName];
[_line,5] call Epoch_message; [_line,5] call Epoch_message;
}; };
player removemagazine _reqiredMat; if !(_reqiredMat isequalto "") then {
player removemagazine _reqiredMat;
};
if (_hitpointname isequalto "glass") then { if (_hitpointname isequalto "glass") then {
{ {
if (["glass",tolower _x] call Bis_fnc_instring) then { if (["glass",tolower _x] call Bis_fnc_instring) then {
@ -62,25 +66,28 @@ switch _do do {
}; };
}; };
case 'replace': { case 'replace': {
_reqiredMat = ""; _reqiredMat = "NONE";
_searchname = _hitpointname; _searchname = _hitpointname;
if (["glass",tolower _hitpointname] call Bis_fnc_instring) then { if (["glass", _hitpointname] call Bis_fnc_instring) then {
_searchname = "glass"; _searchname = "glass";
}; };
{ {
_x params ["_name","","","","_replacemat"]; _x params ["_name","","","","_replacemat"];
_name = tolower _name;
if (_searchname isequalto _name) exitwith { if (_searchname isequalto _name) exitwith {
_reqiredMat = _replacemat; _reqiredMat = _replacemat;
}; };
} foreach _VehicleRepairs; } foreach _VehicleRepairs;
if (_reqiredMat isequalto "") exitwith { if (_reqiredMat isequalto "NONE") exitwith {
['Error - Can not find required Material',5] call Epoch_message; ['Error - Can not find required Material',5] call Epoch_message;
}; };
if !(_reqiredMat in (magazines player)) exitwith { if (!(_reqiredMat in (magazines player)) && !(_reqiredMat isequalto "")) exitwith {
_line = format ['You need %1 to repair',_reqiredMat call EPOCH_itemDisplayName]; _line = format ['You need %1 to repair',_reqiredMat call EPOCH_itemDisplayName];
[_line,5] call Epoch_message; [_line,5] call Epoch_message;
}; };
player removemagazine _reqiredMat; if !(_reqiredMat isequalto "") then {
player removemagazine _reqiredMat;
};
if (_hitpointname isequalto "glass") then { if (_hitpointname isequalto "glass") then {
{ {
if (["glass",tolower _x] call Bis_fnc_instring) then { if (["glass",tolower _x] call Bis_fnc_instring) then {
@ -100,6 +107,7 @@ switch _do do {
_searchname = _hitpointname; _searchname = _hitpointname;
{ {
_x params ["_name","","","","_replacemat"]; _x params ["_name","","","","_replacemat"];
_name = tolower _name;
if (_searchname isequalto _name) exitwith { if (_searchname isequalto _name) exitwith {
_returnmat = _replacemat; _returnmat = _replacemat;
}; };

View File

@ -68,13 +68,14 @@ _respawnButton ctrlEnable false;
[_display] spawn { [_display] spawn {
disableSerialization; disableSerialization;
params ["_display"]; params ["_display"];
_startTime = diag_tickTime+5; _startTime = diag_tickTime+4;
waitUntil { waitUntil {
uiSleep 0.2; uiSleep 0.2;
(isNull _display) || ((_startTime - diag_tickTime) <= 0) (isNull _display) || ((_startTime - diag_tickTime) <= 0)
}; };
if (!isNull _display) then { if (!isNull _display) then {
player setUnitLoadout (getUnitLoadout player); player setUnitLoadout (getUnitLoadout player);
uisleep 1; // give one second to broadcast clothing change
missionnamespace setvariable ["EPOCH_forceUpdateNow",true]; missionnamespace setvariable ["EPOCH_forceUpdateNow",true];
}; };
}; };

View File

@ -20,7 +20,7 @@ private ["_arr","_ctrl","_ctrlCurrent","_ctrlDefault","_ctrlEdit","_data","_defa
//[[[end]]] //[[[end]]]
params ["_ctrl"]; params ["_ctrl"];
_display = if (typeName _ctrl isEqualTo "CONTROL") then {ctrlParent _ctrl} else {displayNull}; _display = if (_ctrl isEqualType controlNull) then {ctrlParent _ctrl} else {displayNull};
_input = if (_ctrl isEqualType "STRING") then {_ctrl} else {str _ctrl}; _input = if (_ctrl isEqualType "STRING") then {_ctrl} else {str _ctrl};
switch (_input) do { switch (_input) do {

View File

@ -28,7 +28,7 @@ if !(false call EPOCH_crafting_checkResources) exitWith {};
//craft button //craft button
[] spawn { [] spawn {
private ["_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"];
disableSerialization; disableSerialization;
_fnc_UILock = { _fnc_UILock = {
@ -53,6 +53,8 @@ if !(false call EPOCH_crafting_checkResources) exitWith {};
_needBench = {"WorkBench_EPOCH" in (_x select 3 select 1)} count _nearbyReq; _needBench = {"WorkBench_EPOCH" in (_x select 3 select 1)} count _nearbyReq;
_craftCount = _craftItem param [15,1]; _craftCount = _craftItem param [15,1];
_craftReturn = _craftItem param [16,[]]; _craftReturn = _craftItem param [16,[]];
_BulletCalculateOnCraft = ["CfgEpochClient", "BulletCalculateOnCraft", false] call EPOCH_fnc_returnConfigEntryV2;
for "_c" from 1 to rmx_var_craftQTYOut do { for "_c" from 1 to rmx_var_craftQTYOut do {
false call _fnc_UILock; false call _fnc_UILock;
@ -64,19 +66,63 @@ if !(false call EPOCH_crafting_checkResources) exitWith {};
if !(_canCraft && rmx_var_craftingLOOPS) exitWith {}; if !(_canCraft && rmx_var_craftingLOOPS) exitWith {};
_GiveBackRounds = 0;
_TotalroundsIn = 0;
_TotalMaxRoundsIn = 0;
_roundsCheck = false;
_maxMagrnd = (getnumber (configfile >> "cfgMagazines" >> _item >> "count")) max 1;
{ {
if !(_x isEqualType []) then {_x = [_x,1]}; if !(_x isEqualType []) then {_x = [_x,1]};
for "_r" from 1 to (_x select 1) do { _x params ["_recipetype","_recipetypecount"];
player removeItem (_x select 0); //removes any type of item, but only if not in special slots _recipetype = tolower _recipetype;
_maxMagRndTmp = getnumber (configfile >> "cfgMagazines" >> _recipetype >> "count");
_roundsCheckTmp = ([_recipetype,"cfgMagazines"] call Epoch_fnc_isAny && [_item,"cfgMagazines"] call Epoch_fnc_isAny && _maxMagrnd > 1 && _maxMagRndTmp > 1 && _BulletCalculateOnCraft);
for "_r" from 1 to _recipetypecount do {
if (_roundsCheckTmp) then {
_roundsCheck = true;
_magsammosearched = [];
{
_x params ["_type","_rounds"];
if ((tolower _type) isequalto _recipetype) then {
_magsammosearched pushback _x;
};
} foreach (magazinesammo player);
_TotalMaxRoundsIn = _TotalMaxRoundsIn + _maxMagRndTmp;
_TotalroundsIn = _TotalroundsIn + ((_magsammosearched deleteat 0) select 1);
player removemagazines _recipetype;
{
_x call EPOCH_fnc_addMagazineOverflow;
} foreach _magsammosearched;
}
else {
player removeItem _recipetype; //removes any type of item, but only if not in special slots
};
}; };
} forEach _itemRecipeItems; } forEach _itemRecipeItems;
if (_roundsCheck) then {
_GiveBackRounds = (_maxMagrnd * (_TotalroundsIn / _TotalMaxRoundsIn));
};
_nearByBench = nearestObjects [player,["WorkBench_EPOCH"],3]; _nearByBench = nearestObjects [player,["WorkBench_EPOCH"],3];
if (!(_nearByBench isEqualTo []) && (_needBench > 0)) then { //adds item on top of bench if bench was required if (!(_nearByBench isEqualTo []) && (_needBench > 0)) then { //adds item on top of bench if bench was required
(_nearByBench select 0) addItemCargoGlobal [_item,_craftCount]; if (_roundsCheck) then {
} else { (_nearByBench select 0) addMagazineAmmoCargo [_item, _craftCount, ((ceil (_GiveBackRounds / _craftCount)) min _maxMagrnd) max 1];
[_item,_craftCount] call EPOCH_fnc_addItemOverflow; }
else {
(_nearByBench select 0) addItemCargoGlobal [_item,_craftCount];
};
}
else {
if (_roundsCheck) then {
for "_i" from 1 to _craftCount do {
[_item,((ceil (_GiveBackRounds / _craftCount)) min _maxMagrnd) max 1] call EPOCH_fnc_addMagazineOverflow;
};
}
else {
[_item,_craftCount] call EPOCH_fnc_addItemOverflow;
};
}; };
// return items // return items

View File

@ -21,7 +21,7 @@ _arrIn = _this;
_cfg = 'CfgEpochClient' call EPOCH_returnConfig; _cfg = 'CfgEpochClient' call EPOCH_returnConfig;
_Suppressed = getarray (_cfg >> "SuppressedCraftingItems"); _Suppressed = getarray (_cfg >> "SuppressedCraftingItems");
if !(typeName (_arrIn select 0) isEqualTo "CONFIG") exitWith {[]}; if !((_arrIn select 0) isEqualType configNull) exitWith {[]};
_type0 = []; _type1 = []; _type2 = []; _type3 = []; _out = []; _type0 = []; _type1 = []; _type2 = []; _type3 = []; _out = [];
{ {

View File

@ -32,7 +32,7 @@ if(_customCol isEqualTo [])then{
_txtCol = if((_customCol select 1)isEqualTypeAll 0) then [{_customCol select 1},{_txtCol = [1,1,1,0.95]}]; _txtCol = if((_customCol select 1)isEqualTypeAll 0) then [{_customCol select 1},{_txtCol = [1,1,1,0.95]}];
}; };
if !(typeName _msg isEqualTo "STRING") then { //Needed to remove quotations from strings if !(_msg isEqualType "STRING") then { //Needed to remove quotations from strings
_msg = str (parseText str _msg); //Parses and converts text back to small string _msg = str (parseText str _msg); //Parses and converts text back to small string
}; };

View File

@ -12,7 +12,7 @@
Usage: Usage:
"TEST" call Epoch_message_stack "TEST" call Epoch_message_stack
["===================================",5,[[0,0,0,0.2],[1,0.5,0,1]]] call Epoch_message_stack; ["===================================",5,[[0,0,0,0.2],[1,0.5,0,1]]] call Epoch_message_stack;
["World!",5,[[0,0,0,0.2],[1,1,1,1]]] call Epoch_message_stack; ["World!",5,[[0,0,0,0.2],[1,1,1,1]]] call Epoch_message_stack;
["Hello",5,[[0,0,0,0.2],[1,1,1,1]]] call Epoch_message_stack; ["Hello",5,[[0,0,0,0.2],[1,1,1,1]]] call Epoch_message_stack;
@ -34,7 +34,7 @@ if(_customCol isEqualTo [])then{
_bgCol = if((_customCol select 0)isEqualTypeAll 0) then [{_customCol select 0},{_bgCol = [0,0,0,0.2]}]; _bgCol = if((_customCol select 0)isEqualTypeAll 0) then [{_customCol select 0},{_bgCol = [0,0,0,0.2]}];
_txtCol = if((_customCol select 1)isEqualTypeAll 0) then [{_customCol select 1},{_txtCol = [1,1,1,0.95]}]; _txtCol = if((_customCol select 1)isEqualTypeAll 0) then [{_customCol select 1},{_txtCol = [1,1,1,0.95]}];
}; };
if !(typeName _msg isEqualTo "STRING") then { //Needed to remove quotations from strings if !(_msg isEqualType "STRING") then { //Needed to remove quotations from strings
_msg = str (parseText str _msg); //Parses and converts text back to small string _msg = str (parseText str _msg); //Parses and converts text back to small string
}; };
@ -53,7 +53,7 @@ rmx_var_msgStackQueue = [[_msg, _time, [_bgCol,_txtCol]] ];
_cStartPos = [safeZoneX,((_yPos - _ySize) * GUI_GRID_H + GUI_GRID_Y),safeZoneW, _ySize * GUI_GRID_H]; _cStartPos = [safeZoneX,((_yPos - _ySize) * GUI_GRID_H + GUI_GRID_Y),safeZoneW, _ySize * GUI_GRID_H];
_ctrlArr = [1]; _ctrlArr = [1];
_fnc_reorganizeCtrls = { _fnc_reorganizeCtrls = {
if !(_ctrlArr isEqualTo []) then { if !(_ctrlArr isEqualTo []) then {
{ {
@ -64,7 +64,7 @@ rmx_var_msgStackQueue = [[_msg, _time, [_bgCol,_txtCol]] ];
} forEach _ctrlArr; } forEach _ctrlArr;
}; };
}; };
while {(count _ctrlArr) > 0} do { while {(count _ctrlArr) > 0} do {
if ((_ctrlArr select 0) isEqualTo 1) then {_ctrlArr = [];}; if ((_ctrlArr select 0) isEqualTo 1) then {_ctrlArr = [];};
if !(rmx_var_msgStackQueue isEqualTo []) then { if !(rmx_var_msgStackQueue isEqualTo []) then {
@ -72,19 +72,19 @@ rmx_var_msgStackQueue = [[_msg, _time, [_bgCol,_txtCol]] ];
_time = diag_tickTime + (rmx_var_msgStackQueue select 0 select 1); _time = diag_tickTime + (rmx_var_msgStackQueue select 0 select 1);
_col = (rmx_var_msgStackQueue select 0)select 2; _col = (rmx_var_msgStackQueue select 0)select 2;
rmx_var_msgStackQueue deleteAt 0; rmx_var_msgStackQueue deleteAt 0;
_c = _dsp ctrlCreate ["rmx_t1", call epoch_getIDC]; _c = _dsp ctrlCreate ["rmx_t1", call epoch_getIDC];
_c ctrlSetBackgroundColor (_col select 0); _c ctrlSetBackgroundColor (_col select 0);
_c ctrlSetText _msg; _c ctrlSetText _msg;
_c ctrlSetTextColor (_col select 1); _c ctrlSetTextColor (_col select 1);
_c ctrlSetPosition _cStartPos; _c ctrlSetPosition _cStartPos;
_c ctrlSetFade 1; _c ctrlSetFade 1;
_c ctrlCommit 0; _c ctrlCommit 0;
_c ctrlSetFade 0; _c ctrlSetFade 0;
_c ctrlCommit 0.5; _c ctrlCommit 0.5;
_ctrlArr pushBack [_c,_time]; _ctrlArr pushBack [_c,_time];
call _fnc_reorganizeCtrls; call _fnc_reorganizeCtrls;
}; };

View File

@ -24,19 +24,21 @@ private ["_priority","_wd","_db"];
params [["_level",0,[0]],["_speed",0,[0]]]; params [["_level",0,[0]],["_speed",0,[0]]];
if (isNil "rmx_var_drunkHandles") then { if (isNil "rmx_var_drunkHandles") then {
_priority = 15; _priority = 15;
_wd = ["wetdistortion",_priority] call epoch_postProcessCreate; _wd = ["wetdistortion",_priority] call epoch_postProcessCreate;
_db = ["dynamicBlur",_priority] call epoch_postProcessCreate; _db = ["dynamicBlur",_priority] call epoch_postProcessCreate;
rmx_var_drunkHandles = [_wd,_db]; rmx_var_drunkHandles = [_wd,_db];
// Preload defaults
[(rmx_var_drunkHandles select 0), 0, [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] call epoch_postprocessAdjust;
[(rmx_var_drunkHandles select 1), 0, [0]] call epoch_postprocessAdjust;
}; };
switch _level do { switch _level do {
case 0: case 0:
{ {
rmx_var_drunkHandles call epoch_postprocessDestroy; (rmx_var_drunkHandles select 0) ppEffectEnable false;
rmx_var_drunkHandles = nil; (rmx_var_drunkHandles select 1) ppEffectEnable false;
}; };
case 0.1: case 0.1:
{ {

View File

@ -25,25 +25,25 @@ private ["_cc","_ci","_fg","_priority"];
params [["_level",0,[0]],["_speed",0,[0]] ]; params [["_level",0,[0]],["_speed",0,[0]] ];
if (isNil "rmx_var_RadiationHandles") then { if (isNil "rmx_var_RadiationHandles") then {
_priority = 16; _priority = 16;
_fg = ["filmGrain",_priority] call epoch_postProcessCreate; _fg = ["filmGrain",_priority] call epoch_postProcessCreate;
_cc = ["colorCorrections",_priority] call epoch_postProcessCreate; _cc = ["colorCorrections",_priority] call epoch_postProcessCreate;
_ci = ["colorInversion",_priority] call epoch_postProcessCreate; _ci = ["colorInversion",_priority] call epoch_postProcessCreate;
rmx_var_RadiationHandles = [_fg,_cc,_ci]; rmx_var_RadiationHandles = [_fg,_cc,_ci];
// Preload defaults
[(rmx_var_RadiationHandles select 0), 0, [0.005,1.25,2.01,0.75,1.0,true]] call epoch_postprocessAdjust;
[(rmx_var_RadiationHandles select 1), 0, [1,1,0,[0,0,0,0],[1,1,1,1],[0.299,0.587,0.114,0],[-1,-1,0,0,0,0,0]]] call epoch_postprocessAdjust;
[(rmx_var_RadiationHandles select 2), 0, [0,0,0]] call epoch_postprocessAdjust;
}; };
switch _level do { switch _level do {
case 0: case 0;
{
rmx_var_RadiationHandles call epoch_postprocessDestroy;
rmx_var_RadiationHandles = nil;
};
case 0.1: case 0.1:
{ {
rmx_var_RadiationHandles call epoch_postprocessDestroy; (rmx_var_RadiationHandles select 0) ppEffectEnable false;
rmx_var_RadiationHandles = nil; (rmx_var_RadiationHandles select 1) ppEffectEnable false;
(rmx_var_RadiationHandles select 2) ppEffectEnable false;
}; };
case 0.2: case 0.2:
{ {

View File

@ -83,6 +83,7 @@ EPOCH_keysActionPressed = false; //prevents EH spam
// load some frequently used configs to variables // load some frequently used configs to variables
EPOCH_maxBuildingHeight = ["CfgEpochClient", "maxBuildingHeight", 100] call EPOCH_fnc_returnConfigEntryV2; EPOCH_maxBuildingHeight = ["CfgEpochClient", "maxBuildingHeight", 100] call EPOCH_fnc_returnConfigEntryV2;
EPOCH_MaxBuildingTilt = ["CfgEpochClient", "MaxBuildingTilt", 180] call EPOCH_fnc_returnConfigEntryV2;
Epoch_NuisanceMulti = ["CfgEpochClient", "NuisanceMulti", 0.5] call EPOCH_fnc_returnConfigEntryV2; Epoch_NuisanceMulti = ["CfgEpochClient", "NuisanceMulti", 0.5] call EPOCH_fnc_returnConfigEntryV2;
//ON INIT and RESPAWN //ON INIT and RESPAWN

View File

@ -29,7 +29,7 @@ class CfgActionMenu
dyna_buildMode = "([10] call EPOCH_fnc_cursorTarget) call EPOCH_checkBuild;"; dyna_buildMode = "([10] call EPOCH_fnc_cursorTarget) call EPOCH_checkBuild;";
dyna_isVehicle = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'LandVehicle') || (dyna_cursorTarget isKindOf 'Air') || (dyna_cursorTarget isKindOf 'Ship') || (dyna_cursorTarget isKindOf 'Tank'))} else {false}"; dyna_isVehicle = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'LandVehicle') || (dyna_cursorTarget isKindOf 'Air') || (dyna_cursorTarget isKindOf 'Ship') || (dyna_cursorTarget isKindOf 'Tank'))} else {false}";
dyna_isTrader = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'Man') && (dyna_cursorTarget != player) && (!isPlayer dyna_cursorTarget) && ((dyna_cursorTarget getVariable['AI_SLOT', -1]) != -1))} else {false}"; dyna_isTrader = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget != player) && (!isPlayer dyna_cursorTarget) && ((dyna_cursorTarget getVariable['AI_SLOT', -1]) != -1))} else {false}";
dyna_isPlayer = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'Man') && (dyna_cursorTarget != player) && (isPlayer dyna_cursorTarget))} else {false}"; dyna_isPlayer = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'Man') && (dyna_cursorTarget != player) && (isPlayer dyna_cursorTarget))} else {false}";
dyna_isDeadPlayer = "if (!(isNull dyna_cursorTarget) && !(alive dyna_cursorTarget)) then {(dyna_cursorTargetType in ['Epoch_Male_F','Epoch_Female_F'])} else {false}"; dyna_isDeadPlayer = "if (!(isNull dyna_cursorTarget) && !(alive dyna_cursorTarget)) then {(dyna_cursorTargetType in ['Epoch_Male_F','Epoch_Female_F'])} else {false}";
dyna_canAcceptTrade = "if (!(isNull EPOCH_pendingP2ptradeTarget) && alive EPOCH_pendingP2ptradeTarget) then {((EPOCH_pendingP2ptradeTarget isKindOf 'Man') && (dyna_cursorTarget isEqualTo EPOCH_pendingP2ptradeTarget))} else {false}"; dyna_canAcceptTrade = "if (!(isNull EPOCH_pendingP2ptradeTarget) && alive EPOCH_pendingP2ptradeTarget) then {((EPOCH_pendingP2ptradeTarget isKindOf 'Man') && (dyna_cursorTarget isEqualTo EPOCH_pendingP2ptradeTarget))} else {false}";
@ -50,6 +50,7 @@ class CfgActionMenu
dyna_mapDeathMarker = "(((getArray(('CfgMarkerSets' call EPOCH_returnConfig) >> 'DeathMarker' >> 'markerArray') select 0) select 0) in allMapMarkers)"; dyna_mapDeathMarker = "(((getArray(('CfgMarkerSets' call EPOCH_returnConfig) >> 'DeathMarker' >> 'markerArray') select 0) select 0) in allMapMarkers)";
dyna_AtHome = "call {_config = 'CfgEpochClient' call EPOCH_returnConfig;_buildingJammerRange = getNumber(_config >> 'buildingJammerRange');_nearjammers = nearestobjects [player,['Plotpole_EPOCH'],_buildingJammerRange];if (_nearjammers isEqualTo []) exitwith {false};_nearestJammer = _nearjammers select 0;((_nearestJammer getVariable['BUILD_OWNER', '-1']) in[getPlayerUID player, Epoch_my_GroupUID])}"; dyna_AtHome = "call {_config = 'CfgEpochClient' call EPOCH_returnConfig;_buildingJammerRange = getNumber(_config >> 'buildingJammerRange');_nearjammers = nearestobjects [player,['Plotpole_EPOCH'],_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}";
}; };
class self class self

View File

@ -95,7 +95,7 @@ class base_mode_snap_direction
{ {
condition = "EPOCH_buildMode == 1"; condition = "EPOCH_buildMode == 1";
action = "EPOCH_snapDirection = EPOCH_snapDirection + 1; if (EPOCH_snapDirection > 3) then {EPOCH_snapDirection = 0};[format['SNAP DIRECTION: %1°', EPOCH_snapDirection*90], 5] call Epoch_message;"; action = "EPOCH_snapDirection = EPOCH_snapDirection + 1; if (EPOCH_snapDirection > 3) then {EPOCH_snapDirection = 0};[format['SNAP DIRECTION: %1°', EPOCH_snapDirection*90], 5] call Epoch_message;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_move.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_rotate.paa";
tooltip = "Build Mode: Rotate 90°"; tooltip = "Build Mode: Rotate 90°";
tooltipcode = "format ['Build Mode: Switch Snap Direction to %1° (current %2°)',if (EPOCH_snapDirection < 3) then {(EPOCH_snapDirection+1)*90} else {0},EPOCH_snapDirection*90]"; tooltipcode = "format ['Build Mode: Switch Snap Direction to %1° (current %2°)',if (EPOCH_snapDirection < 3) then {(EPOCH_snapDirection+1)*90} else {0},EPOCH_snapDirection*90]";
}; };
@ -103,23 +103,30 @@ class base_mode_detach
{ {
condition = "EPOCH_buildMode > 0 && !isnull EPOCH_target && EPOCH_target_attachedTo isequalto player && Epoch_target iskindof 'Const_Ghost_EPOCH'"; condition = "EPOCH_buildMode > 0 && !isnull EPOCH_target && EPOCH_target_attachedTo isequalto player && Epoch_target iskindof 'Const_Ghost_EPOCH'";
action = "EPOCH_target_attachedTo = objnull; ['Object Detached', 5] call Epoch_message;"; action = "EPOCH_target_attachedTo = objnull; ['Object Detached', 5] call Epoch_message;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_move.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_detach.paa";
tooltip = "Build Mode: Detach Object"; tooltip = "Build Mode: Detach Object";
}; };
class base_mode_attach class base_mode_attach
{ {
condition = "EPOCH_buildMode > 0 && !isnull EPOCH_target && !(EPOCH_target_attachedTo isequalto player) && Epoch_target iskindof 'Const_Ghost_EPOCH'"; condition = "EPOCH_buildMode > 0 && !isnull EPOCH_target && !(EPOCH_target_attachedTo isequalto player) && Epoch_target iskindof 'Const_Ghost_EPOCH'";
action = "EPOCH_target_attachedTo = player; ['Object Attached', 5] call Epoch_message;"; action = "EPOCH_target_attachedTo = player; ['Object Attached', 5] call Epoch_message;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_move.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_attach.paa";
tooltip = "Build Mode: Attach Object"; tooltip = "Build Mode: Attach Object";
}; };
class Drink class Drink
{ {
condition = "_nearObjects = nearestObjects [player, [], 2];_check = 'water';_ok = false;{if (alive _x) then {_ok = [_x, _check] call EPOCH_worldObjectType;};if (_ok) exitWith {};} forEach _nearObjects;_ok"; condition = "dyna_Watersource";
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 [['Toxicity',4,1],['Stamina',10],['Thirst',100]];"; 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"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Drink.paa";
tooltip = "Drink"; tooltip = "Drink";
}; };
class Wash
{
condition = "dyna_Watersource";
action = "if !('Soap_Epoch' in magazines player) exitwith {['You need a Soap to wash yourself',5] call Epoch_Message;};[] spawn {player playMove 'AinvPknlMstpSnonWrflDnon_medic0';player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd';['Washing ...',5] call Epoch_Message;player removeitem 'Soap_Epoch';uisleep 6;{_output = _x call EPOCH_giveAttributes; if (_output != '') then {[_output, 5] call Epoch_message_stack;};} foreach [['Soiled',-25]];};";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Washing.paa";
tooltip = "Wash yourself";
};
class ServicePoint class ServicePoint
{ {
condition = "call EPOCH_SP_Check"; condition = "call EPOCH_SP_Check";

View File

@ -13,7 +13,6 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_target.hpp https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_target.hpp
*/ */
//Build mode enabled
class build_upgrade class build_upgrade
{ {
condition = "dyna_buildMode select 0"; condition = "dyna_buildMode select 0";
@ -27,7 +26,7 @@ class build_remove
{ {
condition = "dyna_buildMode select 1"; condition = "dyna_buildMode select 1";
action = "dyna_cursorTarget call EPOCH_removeBUILD;"; action = "dyna_cursorTarget call EPOCH_removeBUILD;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_remove.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_trash.paa";
tooltipcode = "format['Remove %1',getText(configFile >> 'CfgVehicles' >> (typeof dyna_cursorTarget) >> 'displayName')]"; tooltipcode = "format['Remove %1',getText(configFile >> 'CfgVehicles' >> (typeof dyna_cursorTarget) >> 'displayName')]";
}; };
class build_move class build_move
@ -111,7 +110,7 @@ class select_jammer
{ {
condition = "dyna_cursorTargetType isEqualTo 'PlotPole_EPOCH' && (damage dyna_cursorTarget < 1)"; condition = "dyna_cursorTargetType isEqualTo 'PlotPole_EPOCH' && (damage dyna_cursorTarget < 1)";
action = "[dyna_cursorTarget,player,Epoch_personalToken] remoteExec [""EPOCH_server_makeSP"",2];"; action = "[dyna_cursorTarget,player,Epoch_personalToken] remoteExec [""EPOCH_server_makeSP"",2];";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\player_inspect.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\spawnpoint.paa";
tooltip = "Make Spawnpoint"; tooltip = "Make Spawnpoint";
}; };
@ -175,29 +174,29 @@ class VehMaintanance
tooltip = "Repair Vehicle"; tooltip = "Repair Vehicle";
class RepairHull class RepairHull
{ {
condition = "'HitHull' in (EPOCH_VehicleRepairs select 0)"; condition = "'hithull' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitHull'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hithull'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_HullBody.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_HullBody.paa";
tooltip = "Repair Hull"; tooltip = "Repair Hull";
}; };
class ReplaceHull class ReplaceHull
{ {
condition = "'HitHull' in (EPOCH_VehicleRepairs select 2)"; condition = "'hithull' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitHull'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hithull'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_HullBody.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_HullBody.paa";
tooltip = "Repair Hull"; tooltip = "Repair Hull";
}; };
class RepairEngine class RepairEngine
{ {
condition = "'HitEngine' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitengine' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitEngine'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitengine'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Engine.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Engine.paa";
tooltip = "Repair Engine"; tooltip = "Repair Engine";
}; };
class ReplaceEngine class ReplaceEngine
{ {
condition = "'HitEngine' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitengine' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitEngine'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitengine'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Engine.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Engine.paa";
tooltip = "Replace Engine"; tooltip = "Replace Engine";
}; };
@ -210,183 +209,211 @@ class VehMaintanance
}; };
class RepairBody class RepairBody
{ {
condition = "'HitBody' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitbody' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitBody'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitbody'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_HullBody.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_HullBody.paa";
tooltip = "Repair Body"; tooltip = "Repair Body";
}; };
class ReplaceBody class ReplaceBody
{ {
condition = "'HitBody' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitbody' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitBody'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitbody'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_HullBody.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_HullBody.paa";
tooltip = "Repair Body"; tooltip = "Repair Body";
}; };
class RepairFuel class RepairFuel
{ {
condition = "'HitFuel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitfuel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitFuel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitfuel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Fuel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Fuel.paa";
tooltip = "Repair Fuel Hose"; tooltip = "Repair Fuel Hose";
}; };
class RepairMainRotor class RepairMainRotor
{ {
condition = "'HitHRotor' in (EPOCH_VehicleRepairs select 0)"; condition = "'hithrotor' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitHRotor'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hithrotor'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_MainRotor.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_MainRotor.paa";
tooltip = "Repair Main Rotor"; tooltip = "Repair Main Rotor";
}; };
class ReplaceFuel class ReplaceFuel
{ {
condition = "'HitFuel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitfuel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitFuel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitfuel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Fuel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Fuel.paa";
tooltip = "Replace Fuel Hose"; tooltip = "Replace Fuel Hose";
}; };
class ReplaceMainRotor class ReplaceMainRotor
{ {
condition = "'HitHRotor' in (EPOCH_VehicleRepairs select 2)"; condition = "'hithrotor' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitHRotor'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hithrotor'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_MainRotor.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_MainRotor.paa";
tooltip = "Replace Main Rotor"; tooltip = "Replace Main Rotor";
}; };
class RepairTailRotor class RepairTailRotor
{ {
condition = "'HitVRotor' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitvrotor' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitVRotor'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitvrotor'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_TailRotor.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_TailRotor.paa";
tooltip = "Repair Tail Rotor"; tooltip = "Repair Tail Rotor";
}; };
class ReplaceTailRotor class ReplaceTailRotor
{ {
condition = "'HitVRotor' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitvrotor' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitVRotor'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitvrotor'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_TailRotor.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_TailRotor.paa";
tooltip = "Replace Tail Rotor"; tooltip = "Replace Tail Rotor";
}; };
class ReplaceWinch class ReplaceWinch
{ {
condition = "'HitWinch' in (EPOCH_VehicleRepairs select 0) || 'HitWinch' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitwinch' in (EPOCH_VehicleRepairs select 0) || 'hitwinch' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitWinch'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitwinch'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_SLG.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_SLG.paa";
tooltip = "Replace Winch"; tooltip = "Replace Winch";
}; };
class RepairTireBike1
{
condition = "'hitfwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','hitfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 1st Wheel";
};
class RepairTireBike2
{
condition = "'hitbwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','hitbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 2nd Wheel";
};
class RepairTire1 class RepairTire1
{ {
condition = "'HitLFWheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitlfwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitLFWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitlfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 1st Left Wheel"; tooltip = "Repair 1st Left Wheel";
}; };
class RepairTire2 class RepairTire2
{ {
condition = "'HitLF2Wheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitlf2wheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitLF2Wheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitlf2wheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 2nd Left Wheel"; tooltip = "Repair 2nd Left Wheel";
}; };
class RepairTire3 class RepairTire3
{ {
condition = "'HitLMWheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitlmwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitLMWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitlmwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 3rd Left Wheel"; tooltip = "Repair 3rd Left Wheel";
}; };
class RepairTire4 class RepairTire4
{ {
condition = "'HitLBWheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitlbwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitLBWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitlbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 4th Left Wheel"; tooltip = "Repair 4th Left Wheel";
}; };
class RepairTire5 class RepairTire5
{ {
condition = "'HitRFWheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitrfwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitRFWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitrfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 1st Right Wheel"; tooltip = "Repair 1st Right Wheel";
}; };
class RepairTire6 class RepairTire6
{ {
condition = "'HitRF2Wheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitrf2wheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitRF2Wheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitrf2wheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 2nd Right Wheel"; tooltip = "Repair 2nd Right Wheel";
}; };
class RepairTire7 class RepairTire7
{ {
condition = "'HitRMWheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitrmwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitRMWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitrmwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 3rd Right Wheel"; tooltip = "Repair 3rd Right Wheel";
}; };
class RepairTire8 class RepairTire8
{ {
condition = "'HitRBWheel' in (EPOCH_VehicleRepairs select 0)"; condition = "'hitrbwheel' in (EPOCH_VehicleRepairs select 0)";
action = "[dyna_cursorTarget,'repair','HitRBWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'repair','hitrbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Wheel.paa";
tooltip = "Repair 4th Right Wheel"; tooltip = "Repair 4th Right Wheel";
}; };
class ReplaceTireBike1
{
condition = "'hitfwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','hitfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 1st Wheel";
};
class ReplaceTireBike2
{
condition = "'hitbwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','hitbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 2nd Wheel";
};
class ReplaceTire1 class ReplaceTire1
{ {
condition = "'HitLFWheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitlfwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitLFWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitlfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 1st Left Wheel"; tooltip = "Replace 1st Left Wheel";
}; };
class ReplaceTire2 class ReplaceTire2
{ {
condition = "'HitLF2Wheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitlf2wheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitLF2Wheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitlf2wheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 2nd Left Wheel"; tooltip = "Replace 2nd Left Wheel";
}; };
class ReplaceTire3 class ReplaceTire3
{ {
condition = "'HitLMWheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitlmwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitLMWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitlmwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 3rd Left Wheel"; tooltip = "Replace 3rd Left Wheel";
}; };
class ReplaceTire4 class ReplaceTire4
{ {
condition = "'HitLBWheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitlbwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitLBWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitlbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 4th Left Wheel"; tooltip = "Replace 4th Left Wheel";
}; };
class ReplaceTire5 class ReplaceTire5
{ {
condition = "'HitRFWheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitrfwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitRFWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitrfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 1st Right Wheel"; tooltip = "Replace 1st Right Wheel";
}; };
class ReplaceTire6 class ReplaceTire6
{ {
condition = "'HitRF2Wheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitrf2wheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitRF2Wheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitrf2wheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 2nd Right Wheel"; tooltip = "Replace 2nd Right Wheel";
}; };
class ReplaceTire7 class ReplaceTire7
{ {
condition = "'HitRMWheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitrmwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitRMWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitrmwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 3rd Right Wheel"; tooltip = "Replace 3rd Right Wheel";
}; };
class ReplaceTire8 class ReplaceTire8
{ {
condition = "'HitRBWheel' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitrbwheel' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitRBWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitrbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Wheel.paa";
tooltip = "Replace 4th Right Wheel"; tooltip = "Replace 4th Right Wheel";
}; };
class RepairAvionics class RepairAvionics
{ {
condition = "'HitAvionics' in (EPOCH_VehicleRepairs select 0) || 'HitAvionics' in (EPOCH_VehicleRepairs select 2)"; condition = "'hitavionics' in (EPOCH_VehicleRepairs select 0) || 'hitavionics' in (EPOCH_VehicleRepairs select 2)";
action = "[dyna_cursorTarget,'replace','HitAvionics'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'replace','hitavionics'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Avionics.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Repair_Avionics.paa";
tooltip = "Repair Avionics"; tooltip = "Repair Avionics";
}; };
@ -399,64 +426,64 @@ class VehMaintanance
tooltip = "Remove Parts"; tooltip = "Remove Parts";
class RemoveEngine class RemoveEngine
{ {
condition = "'HitEngine' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitengine' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitEngine'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitengine'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Engine.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Engine.paa";
tooltip = "Remove Engine"; tooltip = "Remove Engine";
}; };
class RemoveTire1 class RemoveTire1
{ {
condition = "'HitLFWheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitlfwheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitLFWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitlfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 1st Left Wheel"; tooltip = "Remove 1st Left Wheel";
}; };
class RemoveTire2 class RemoveTire2
{ {
condition = "'HitLF2Wheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitlf2wheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitLF2Wheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitlf2wheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 2nd Left Wheel"; tooltip = "Remove 2nd Left Wheel";
}; };
class RemoveTire3 class RemoveTire3
{ {
condition = "'HitLMWheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitlmwheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitLMWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitlmwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 3rd Left Wheel"; tooltip = "Remove 3rd Left Wheel";
}; };
class RemoveTire4 class RemoveTire4
{ {
condition = "'HitLBWheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitlbwheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitLBWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitlbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 4th Left Wheel"; tooltip = "Remove 4th Left Wheel";
}; };
class RemoveTire5 class RemoveTire5
{ {
condition = "'HitRFWheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitrfwheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitRFWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitrfwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 1st Right Wheel"; tooltip = "Remove 1st Right Wheel";
}; };
class RemoveTire6 class RemoveTire6
{ {
condition = "'HitRF2Wheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitrf2wheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitRF2Wheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitrf2wheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 2nd Right Wheel"; tooltip = "Remove 2nd Right Wheel";
}; };
class RemoveTire7 class RemoveTire7
{ {
condition = "'HitRMWheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitrmwheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitRMWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitrmwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 3rd Right Wheel"; tooltip = "Remove 3rd Right Wheel";
}; };
class RemoveTire8 class RemoveTire8
{ {
condition = "'HitRBWheel' in (EPOCH_VehicleRepairs select 1)"; condition = "'hitrbwheel' in (EPOCH_VehicleRepairs select 1)";
action = "[dyna_cursorTarget,'remove','HitRBWheel'] spawn EPOCH_client_VehicleMaintananceDo"; action = "[dyna_cursorTarget,'remove','hitrbwheel'] spawn EPOCH_client_VehicleMaintananceDo";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Wheel.paa";
tooltip = "Remove 4th Right Wheel"; tooltip = "Remove 4th Right Wheel";
}; };
@ -546,8 +573,18 @@ class player_tempGroup_requests
class player_revive class player_revive
{ {
condition = "dyna_isDeadPlayer && ('ItemDefibrillator' in dyna_magazinesPlayer)"; condition = "dyna_isDeadPlayer && isplayer dyna_cursorTarget";
action = "[dyna_cursorTarget, player, Epoch_personalToken] remoteExec ['EPOCH_server_revivePlayer',2];"; action = "dyna_cursorTarget call EPOCH_DefibrillatorUse;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\group_requests_ca.paa"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Revive.paa";
tooltip = "Revive Player"; tooltipcode = "format ['Revive %1',name dyna_cursorTarget]";
}; };
class BaseCam
{
condition = "dyna_cursorTargetType isEqualTo 'BaseCamTerminal_EPOCH'";
action = "call Epoch_CamUse;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Camera.paa";
tooltip = "Watch BaseCam";
};

View File

@ -8,6 +8,25 @@
*/ */
class CfgBaseBuilding class CfgBaseBuilding
{ {
// Power Sources (only for Energy Calculations)
class Land_spp_Tower_F
{
powerCapacity = 10;
powerType = 1; // Solar
};
class Land_wpp_Turbine_V1_F
{
powerCapacity = 10;
powerType = 2; // Wind
};
class Land_wpp_Turbine_V2_F : Land_wpp_Turbine_V1_F {};
class Land_Wreck_Satellite_EPOCH
{
powerCapacity = 10;
powerType = 3; // Satellite
};
// BaseBuilding
class Default class Default
{ {
upgradeBuilding[] = {}; upgradeBuilding[] = {};
@ -45,10 +64,10 @@ class CfgBaseBuilding
maxSnapDistance = 4.5; maxSnapDistance = 4.5;
// snap points for Foundation_EPOCH // snap points for Foundation_EPOCH
C[] = {0,0,0.806411}; C[] = {0,0,0.806411};
N[] = {0,10.463,0}; N[] = {0,10.474,0};
E[] = {10.463,0,0}; E[] = {10.474,0,0};
S[] = {0,-10.463,0}; S[] = {0,-10.474,0};
W[] = {-10.463,0,0}; W[] = {-10.474,0,0};
NE[] = {2.47112,2.46379,0.269223}; NE[] = {2.47112,2.46379,0.269223};
NW[] = {-2.4783,2.46379,0.269223}; NW[] = {-2.4783,2.46379,0.269223};
SE[] = {2.47112,-2.46097,0.269223}; SE[] = {2.47112,-2.46097,0.269223};
@ -76,10 +95,10 @@ class CfgBaseBuilding
maxSnapDistance = 3; maxSnapDistance = 3;
// snap points for Foundation_EPOCH // snap points for Foundation_EPOCH
C[] = {0,0,0.806411}; C[] = {0,0,0.806411};
N[] = {0,10.463,0}; N[] = {0,10.474,0};
E[] = {10.463,0,0}; E[] = {10.474,0,0};
S[] = {0,-10.463,0}; S[] = {0,-10.474,0};
W[] = {-10.463,0,0}; W[] = {-10.474,0,0};
NE[] = {2.47112,2.46379,0.269223}; NE[] = {2.47112,2.46379,0.269223};
NW[] = {-2.4783,2.46379,0.269223}; NW[] = {-2.4783,2.46379,0.269223};
SE[] = {2.47112,-2.46097,0.269223}; SE[] = {2.47112,-2.46097,0.269223};
@ -473,21 +492,22 @@ class CfgBaseBuilding
energyCost = 0.5; energyCost = 0.5;
// snap points for CinderWall_EPOCH // snap points for CinderWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.18644,0,0}; E[] = {5.237,0,0};
W[] = {-5.19304,0,0}; W[] = {-5.237,0,0};
}; };
class CinderWall_window_EPOCH : Default class CinderWall_window_EPOCH : Default
{ {
removeParts[] = {{"CinderBlocks",4},{"ItemCorrugatedLg",2},{"ItemGlass",1}}; removeParts[] = {{"CinderBlocks",4},{"ItemCorrugatedLg",2},{"ItemGlass",1}};
staticClass = "CinderWall_window_EPOCH"; staticClass = "CinderWall_window_EPOCH";
snapType = "snapPointsPara"; snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.5; energyCost = 0.5;
// snap points for CinderWall_EPOCH // snap points for CinderWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.18644,0,0}; E[] = {5.237,0,0};
W[] = {-5.19304,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,2.8};
}; };
// Kit_Garden // Kit_Garden
class Garden_EPOCH : Default class Garden_EPOCH : Default
@ -543,7 +563,7 @@ class CfgBaseBuilding
class CinderWallGarage_SIM_EPOCH : CinderWallGarage_EPOCH class CinderWallGarage_SIM_EPOCH : CinderWallGarage_EPOCH
{ {
allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F"}; allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F","Const_WoodWalls_static_F"};
removeParts[] = {}; removeParts[] = {};
}; };
class CinderWallHalf_EPOCH : Default class CinderWallHalf_EPOCH : Default
@ -555,17 +575,17 @@ class CfgBaseBuilding
GhostPreview = "CinderWallHalf_Ghost_EPOCH"; GhostPreview = "CinderWallHalf_Ghost_EPOCH";
energyCost = 0.2; energyCost = 0.2;
snapType = "snapPointsPara"; snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
// snap points for CinderWallHalf_EPOCH // snap points for CinderWallHalf_EPOCH
N[] = {0,0,1.57378}; N[] = {0,0,1.57378};
E[] = {5.18644,0,0}; E[] = {5.237,0,0};
W[] = {-5.19304,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,1.4};
}; };
class CinderWallHalf_SIM_EPOCH : CinderWallHalf_EPOCH class CinderWallHalf_SIM_EPOCH : CinderWallHalf_EPOCH
{ {
allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F"}; allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F","Const_WoodWalls_static_F"};
removeParts[] = {}; removeParts[] = {};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
}; };
@ -578,18 +598,18 @@ class CfgBaseBuilding
staticClass = "CinderWall_EPOCH"; staticClass = "CinderWall_EPOCH";
GhostPreview = "CinderWall_EPOCH"; GhostPreview = "CinderWall_EPOCH";
snapType = "snapPointsPara"; snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.4; energyCost = 0.4;
// snap points for CinderWall_EPOCH // snap points for CinderWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.18644,0,0}; E[] = {5.237,0,0};
W[] = {-5.19304,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,2.8};
}; };
class CinderWall_SIM_EPOCH : CinderWall_EPOCH class CinderWall_SIM_EPOCH : CinderWall_EPOCH
{ {
allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F"}; allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F","Const_WoodWalls_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
}; };
@ -598,12 +618,13 @@ class CfgBaseBuilding
removeParts[] = {{"CinderBlocks",4},{"ItemCorrugatedLg",1},{"CircuitParts",1}}; removeParts[] = {{"CinderBlocks",4},{"ItemCorrugatedLg",1},{"CircuitParts",1}};
staticClass = "CinderWallDoorwHatch_EPOCH"; staticClass = "CinderWallDoorwHatch_EPOCH";
snapType = "snapPointsPara"; snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
// snap points for CinderWall_EPOCH // snap points for CinderWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.18644,0,0}; E[] = {5.237,0,0};
W[] = {-5.19304,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,2.8};
}; };
class WoodLargeWall_EPOCH : Default class WoodLargeWall_EPOCH : Default
{ {
@ -617,35 +638,58 @@ class CfgBaseBuilding
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
}; };
class WoodLargeWall_SIM_EPOCH : WoodLargeWall_EPOCH class WoodLargeWall_SIM_EPOCH : WoodLargeWall_EPOCH
{ {
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
}; };
class WoodLargeWall_Ghost_EPOCH : WoodLargeWall_SIM_EPOCH {}; class WoodLargeWall_Ghost_EPOCH : WoodLargeWall_SIM_EPOCH {};
class PlyThirdWall_EPOCH : Default
{
upgradeBuilding[] = {};
removeParts[] = {{"PartPlankPack",1},{"ItemPlywoodPack",1}};
simulClass = "PlyThirdWall_SIM_EPOCH";
staticClass = "PlyThirdWall_EPOCH";
GhostPreview = "PlyThirdWall_Ghost_EPOCH";
snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"};
allowedSnapPoints[] = {"N","S","E","W"};
// snap points for WoodLargeWall_EPOCH
N[] = {0,0,1.02012};
E[] = {5.237,0,0};
W[] = {-5.237,0,0};
};
class PlyThirdWall_SIM_EPOCH : PlyThirdWall_EPOCH
{
upgradeBuilding[] = {};
removeParts[] = {};
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
};
class PlyThirdWall_Ghost_EPOCH : PlyThirdWall_SIM_EPOCH {};
class WoodWall1_EPOCH : Default class WoodWall1_EPOCH : Default
{ {
upgradeBuilding[] = {{"WoodWall2_EPOCH",{{"PartPlankPack",1}}},{"WoodLargeWallCor_EPOCH",{{"ItemCorrugated",1}}},{"WoodWallWindow_EPOCH",{{"ItemGlass",2}}}}; upgradeBuilding[] = {{"WoodWall2_EPOCH",{{"PartPlankPack",1}}},{"WoodLargeWallCor_EPOCH",{{"ItemCorrugated",1}}},{"WoodWallWindow_EPOCH",{{"ItemGlass",2}}},{"WoodWallGarage_EPOCH",{{"ItemPlywoodPack",1},{"PartPlankPack",4},{"CircuitParts",1}}}};
removeParts[] = {{"PartPlankPack",2}}; removeParts[] = {{"PartPlankPack",2}};
simulClass = "WoodWall1_SIM_EPOCH"; simulClass = "WoodWall1_SIM_EPOCH";
staticClass = "WoodWall1_EPOCH"; staticClass = "WoodWall1_EPOCH";
GhostPreview = "WoodWall1_EPOCH"; GhostPreview = "WoodWall1_EPOCH";
snapType = "snapPointsPara"; snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.2; energyCost = 0.2;
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.4,2.8};
}; };
class WoodWall1_SIM_EPOCH : WoodWall1_EPOCH class WoodWall1_SIM_EPOCH : WoodWall1_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
energyCost = 0.2; energyCost = 0.2;
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
@ -655,36 +699,78 @@ class CfgBaseBuilding
removeParts[] = {{"ItemGlass",2},{"PartPlankPack",2}}; removeParts[] = {{"ItemGlass",2},{"PartPlankPack",2}};
staticClass = "WoodWallWindow_EPOCH"; staticClass = "WoodWallWindow_EPOCH";
snapType = "snapPointsPara"; snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.5; energyCost = 0.5;
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.4,2.8};
}; };
class WoodLargeWallCor_EPOCH : Default class WoodLargeWallCor_EPOCH : Default
{ {
upgradeBuilding[] = {{"WoodLargeWallDoorway_EPOCH",{{"PartPlankPack",1}}}}; upgradeBuilding[] = {{"WoodLargeWallDoorway_EPOCH",{{"PartPlankPack",1}}},{"MetalWallGarage_EPOCH",{{"ItemCorrugated",1},{"PartPlankPack",4},{"CircuitParts",1}}}};
removeParts[] = {{"PartPlankPack",2},{"ItemCorrugated",1}}; removeParts[] = {{"PartPlankPack",2},{"ItemCorrugated",1}};
simulClass = "WoodLargeWallCor_SIM_EPOCH"; simulClass = "WoodLargeWallCor_SIM_EPOCH";
staticClass = "WoodLargeWallCor_EPOCH"; staticClass = "WoodLargeWallCor_EPOCH";
GhostPreview = "WoodLargeWallCor_EPOCH"; GhostPreview = "WoodLargeWallCor_EPOCH";
snapType = "snapPointsPara"; snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.2; energyCost = 0.2;
availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"}; availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"};
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,2.8};
}; };
class WoodLargeWallCor_SIM_EPOCH : WoodLargeWallCor_EPOCH class WoodLargeWallCor_SIM_EPOCH : WoodLargeWallCor_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
};
class MetalWallGarage_EPOCH : Default
{
removeParts[] = {{"PartPlankPack",2},{"ItemScraps",2},{"CircuitParts",1}};
simulClass = "MetalWallGarage_SIM_EPOCH";
staticClass = "MetalWallGarage_EPOCH";
GhostPreview = "MetalWallGarage_EPOCH";
snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"};
allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.5;
// snap points for CinderWall_EPOCH
N[] = {0,0,3.06034};
E[] = {5.237,0,0};
W[] = {-5.237,0,0};
};
class MetalWallGarage_SIM_EPOCH : MetalWallGarage_EPOCH
{
allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F","Const_WoodWalls_static_F"};
removeParts[] = {};
};
class WoodWallGarage_EPOCH : Default
{
removeParts[] = {{"PartPlankPack",2},{"CircuitParts",1}};
simulClass = "WoodWallGarage_SIM_EPOCH";
staticClass = "WoodWallGarage_EPOCH";
GhostPreview = "WoodWallGarage_EPOCH";
snapType = "snapPointsPara";
snapPointsPara[] = {"N","E","W"};
allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.5;
// snap points for CinderWall_EPOCH
N[] = {0,0,3.06034};
E[] = {5.237,0,0};
W[] = {-5.237,0,0};
};
class WoodWallGarage_SIM_EPOCH : MetalWallGarage_EPOCH
{
allowedSnapObjects[] = {"Const_Cinder_static_F","Const_floors_static_F","Const_WoodWalls_static_F"};
removeParts[] = {};
}; };
class WoodWall2_EPOCH : Default class WoodWall2_EPOCH : Default
{ {
@ -693,17 +779,18 @@ class CfgBaseBuilding
simulClass = "WoodWall2_SIM_EPOCH"; simulClass = "WoodWall2_SIM_EPOCH";
staticClass = "WoodWall2_EPOCH"; staticClass = "WoodWall2_EPOCH";
GhostPreview = "WoodWall2_EPOCH"; GhostPreview = "WoodWall2_EPOCH";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.2; energyCost = 0.2;
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.4,2.8};
}; };
class WoodWall2_SIM_EPOCH : WoodWall2_EPOCH class WoodWall2_SIM_EPOCH : WoodWall2_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
}; };
@ -714,18 +801,19 @@ class CfgBaseBuilding
simulClass = "WoodLargeWallDoorway_SIM_EPOCH"; simulClass = "WoodLargeWallDoorway_SIM_EPOCH";
staticClass = "WoodLargeWallDoorway_EPOCH"; staticClass = "WoodLargeWallDoorway_EPOCH";
GhostPreview = "WoodLargeWallDoorway_EPOCH"; GhostPreview = "WoodLargeWallDoorway_EPOCH";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.2; energyCost = 0.2;
availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"}; availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"};
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,2.8};
}; };
class WoodLargeWallDoorway_SIM_EPOCH : WoodLargeWallDoorway_EPOCH class WoodLargeWallDoorway_SIM_EPOCH : WoodLargeWallDoorway_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
}; };
@ -736,17 +824,18 @@ class CfgBaseBuilding
simulClass = "WoodWall3_SIM_EPOCH"; simulClass = "WoodWall3_SIM_EPOCH";
staticClass = "WoodWall3_EPOCH"; staticClass = "WoodWall3_EPOCH";
GhostPreview = "WoodWall3_EPOCH"; GhostPreview = "WoodWall3_EPOCH";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.2; energyCost = 0.2;
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.4,2.8};
}; };
class WoodWall3_SIM_EPOCH : WoodWall3_EPOCH class WoodWall3_SIM_EPOCH : WoodWall3_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
}; };
@ -757,18 +846,19 @@ class CfgBaseBuilding
simulClass = "WoodLargeWallDoor_SIM_EPOCH"; simulClass = "WoodLargeWallDoor_SIM_EPOCH";
staticClass = "WoodLargeWallDoor_EPOCH"; staticClass = "WoodLargeWallDoor_EPOCH";
GhostPreview = "WoodLargeWallDoor_EPOCH"; GhostPreview = "WoodLargeWallDoor_EPOCH";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"}; availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"};
energyCost = 0.2; energyCost = 0.2;
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,2.8};
}; };
class WoodLargeWallDoor_SIM_EPOCH : WoodLargeWallDoor_EPOCH class WoodLargeWallDoor_SIM_EPOCH : WoodLargeWallDoor_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
}; };
@ -778,17 +868,18 @@ class CfgBaseBuilding
simulClass = "WoodWall4_SIM_EPOCH"; simulClass = "WoodWall4_SIM_EPOCH";
staticClass = "WoodWall4_EPOCH"; staticClass = "WoodWall4_EPOCH";
GhostPreview = "WoodWall4_EPOCH"; GhostPreview = "WoodWall4_EPOCH";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
energyCost = 0.2; energyCost = 0.2;
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.4,2.8};
}; };
class WoodWall4_SIM_EPOCH : WoodWall4_EPOCH class WoodWall4_SIM_EPOCH : WoodWall4_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
}; };
@ -798,18 +889,19 @@ class CfgBaseBuilding
simulClass = "WoodLargeWallDoorL_SIM_EPOCH"; simulClass = "WoodLargeWallDoorL_SIM_EPOCH";
staticClass = "WoodLargeWallDoorL_EPOCH"; staticClass = "WoodLargeWallDoorL_EPOCH";
GhostPreview = "WoodLargeWallDoorL_EPOCH"; GhostPreview = "WoodLargeWallDoorL_EPOCH";
snapPointsPara[] = {"N","E","W"}; snapPointsPara[] = {"N","E","W","CAM"};
allowedSnapPoints[] = {"N","S","E","W"}; allowedSnapPoints[] = {"N","S","E","W"};
availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"}; availableTextures[] = {"\x\addons\a3_epoch_assets\textures\cor\corrugated_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_black_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_blue_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_brown_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_green_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_orange_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_purple_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_red_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_teal_co.paa","\x\addons\a3_epoch_assets\textures\cor\corrugated_yellow_co.paa"};
energyCost = 0.2; energyCost = 0.2;
// snap points for WoodLargeWall_EPOCH // snap points for WoodLargeWall_EPOCH
N[] = {0,0,3.06034}; N[] = {0,0,3.06034};
E[] = {5.23785,0,0}; E[] = {5.237,0,0};
W[] = {-5.26294,0,0}; W[] = {-5.237,0,0};
CAM[] = {0,-0.47,2.8};
}; };
class WoodLargeWallDoorL_SIM_EPOCH : WoodLargeWallDoorL_EPOCH class WoodLargeWallDoorL_SIM_EPOCH : WoodLargeWallDoorL_EPOCH
{ {
allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Const_WoodWalls_static_F","Const_Cinder_static_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
}; };
@ -871,7 +963,7 @@ class CfgBaseBuilding
}; };
class WoodStairs_SIM_EPOCH : WoodStairs_EPOCH class WoodStairs_SIM_EPOCH : WoodStairs_EPOCH
{ {
allowedSnapPoints[] = {"NF","SF","EF","WF","CB"}; allowedSnapPoints[] = {"NF","SF","EF","WF","CB","CS"};
allowedSnapObjects[] = {"Const_floors_static_F","Constructions_foundation_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Constructions_foundation_F"};
upgradeBuilding[] = {}; upgradeBuilding[] = {};
removeParts[] = {}; removeParts[] = {};
@ -879,6 +971,7 @@ class CfgBaseBuilding
class WoodStairs_Ghost_EPOCH : WoodStairs_SIM_EPOCH {}; class WoodStairs_Ghost_EPOCH : WoodStairs_SIM_EPOCH {};
class WoodStairs2_EPOCH : Default class WoodStairs2_EPOCH : Default
{ {
upgradeBuilding[] = {{"WoodStairs3_EPOCH",{{"ItemPipe",1},{"CircuitParts",1}}}};
removeParts[] = {{"PartPlankPack",4}}; removeParts[] = {{"PartPlankPack",4}};
simulClass = "WoodStairs2_SIM_EPOCH"; simulClass = "WoodStairs2_SIM_EPOCH";
staticClass = "WoodStairs2_EPOCH"; staticClass = "WoodStairs2_EPOCH";
@ -893,6 +986,7 @@ class CfgBaseBuilding
WF2[] = {-5.237,-0.003,0}; WF2[] = {-5.237,-0.003,0};
C[] = {-0.000251044,-0.00293543,6.37273}; C[] = {-0.000251044,-0.00293543,6.37273};
CB[] = {-0.000299305,-0.000390954,3.32902}; CB[] = {-0.000299305,-0.000390954,3.32902};
CS[] = {-0.000251044,-0.00293543,3.060298}; // 2x WoodStairs without Space for Floor
CinN[] = {0.0214193,2.87136,3.05972}; CinN[] = {0.0214193,2.87136,3.05972};
CinE[] = {2.87868,-0.000390954,3.05972}; CinE[] = {2.87868,-0.000390954,3.05972};
CinS[] = {0.0214193,-2.86826,3.05972}; CinS[] = {0.0214193,-2.86826,3.05972};
@ -938,6 +1032,68 @@ class CfgBaseBuilding
allowedSnapObjects[] = {"Const_floors_static_F","Constructions_foundation_F"}; allowedSnapObjects[] = {"Const_floors_static_F","Constructions_foundation_F"};
removeParts[] = {}; removeParts[] = {};
}; };
class WoodStairs3_EPOCH : Default
{
removeParts[] = {{"PartPlankPack",4},{"ItemPipe",1},{"CircuitParts",1}};
simulClass = "WoodStairs3_SIM_EPOCH";
staticClass = "WoodStairs3_EPOCH";
GhostPreview = "WoodStairs3_EPOCH";
snapPointsPara[] = {"NF2","SF2","EF2","WF2","NF","SF","EF","WF","C","CB","NWQF","NQF","NEQF","SWQF","SQF","SEQF","ENQF","EQF","ESQF","WNQF","WQF","WSQF","NWHF","NEHF","SWHF","SEHF","WNHF","WSHF","ENHF","ESHF"};
snapPointsPerp[] = {"N","S","E","W","CinN","CinS","CinE","CinW"};
energyCost = 0.3;
// snap points for WoodStairs_EPOCH
NF2[] = {0,5.237,0};
SF2[] = {0,-5.237,0};
EF2[] = {5.237,0,0};
WF2[] = {-5.237,-0.003,0};
C[] = {-0.000251044,-0.00293543,6.37273};
CB[] = {-0.000299305,-0.000390954,3.32902};
CS[] = {-0.000251044,-0.00293543,3.060298}; // 2x WoodStairs without Space for Floor
CinN[] = {0.0214193,2.87136,3.05972};
CinE[] = {2.87868,-0.000390954,3.05972};
CinS[] = {0.0214193,-2.86826,3.05972};
CinW[] = {-2.88969,-0.000390954,3.05972};
N[] = {0.0195083,2.46379,3.32952};
E[] = {2.47112,-0.000253316,3.32952};
S[] = {0.0195083,-2.46097,3.32952};
W[] = {-2.4783,-0.000253316,3.32952};
NE[] = {2.47112,2.46379,3.32952};
NW[] = {-2.4783,2.46379,3.32952};
SE[] = {2.47112,-2.46097,3.32952};
SW[] = {-2.4783,-2.46097,3.32952};
NF[] = {0,5.237,3.06};
SF[] = {0,-5.237,3.06};
EF[] = {5.237,0,3.06};
WF[] = {-5.237,0,3.06};
NWQF[] = {-1.30925,3.92775,3.06};
NQF[] = {0,3.92775,3.06};
NEQF[] = {1.30925,3.92775,3.06};
SWQF[] = {-1.30925,-3.92775,3.06};
SQF[] = {0,-3.92775,3.06};
SEQF[] = {1.30925,-3.92775,3.06};
ENQF[] = {3.92775,1.30925,3.06};
EQF[] = {3.92775,0,3.06};
ESQF[] = {3.92775,-1.30925,3.06};
WNQF[] = {-3.92775,1.30925,3.06};
WQF[] = {-3.92775,0,3.06};
WSQF[] = {-3.92775,-1.30925,3.06};
NWHF[] = {-1.30925,5.237,3.06};
NEHF[] = {1.30925,5.237,3.06};
SWHF[] = {-1.30925,-5.237,3.06};
SEHF[] = {1.30925,-5.237,3.06};
WNHF[] = {-5.237,1.30925,3.06};
WSHF[] = {-5.237,-1.30925,3.06};
ENHF[] = {5.237,1.30925,3.06};
ESHF[] = {5.237,-1.30925,3.06};
};
class WoodStairs3_SIM_EPOCH : WoodStairs3_EPOCH
{
allowedSnapPoints[] = {"NF","SF","EF","WF","CB"};
allowedSnapObjects[] = {"Const_floors_static_F","Constructions_foundation_F"};
removeParts[] = {};
};
class WoodTower_EPOCH : Default class WoodTower_EPOCH : Default
{ {
removeParts[] = {{"PartPlankPack",4}}; removeParts[] = {{"PartPlankPack",4}};
@ -1111,6 +1267,30 @@ class CfgBaseBuilding
removeParts[] = {}; removeParts[] = {};
}; };
class WorkBench_Ghost_EPOCH : WorkBench_SIM_EPOCH {}; class WorkBench_Ghost_EPOCH : WorkBench_SIM_EPOCH {};
class SolarCharger_EPOCH : Default
{
removeParts[] = {{"KitSolarCharger",1}};
GhostPreview = "SolarCharger_Ghost_EPOCH";
staticClass = "SolarCharger_EPOCH";
simulClass = "SolarCharger_SIM_EPOCH";
};
class SolarCharger_SIM_EPOCH : SolarCharger_EPOCH
{
removeParts[] = {};
};
class SolarCharger_Ghost_EPOCH : SolarCharger_SIM_EPOCH {};
class SolarChargerXL_EPOCH : Default
{
removeParts[] = {{"KitSolarChargerXL",1}};
GhostPreview = "SolarChargerXL_Ghost_EPOCH";
staticClass = "SolarChargerXL_EPOCH";
simulClass = "SolarChargerXL_SIM_EPOCH";
};
class SolarChargerXL_SIM_EPOCH : SolarChargerXL_EPOCH
{
removeParts[] = {};
};
class SolarChargerXL_Ghost_EPOCH : SolarChargerXL_SIM_EPOCH {};
class LockBox_EPOCH : Default class LockBox_EPOCH : Default
{ {
returnOnPack[] = {{"ItemLockbox",1}}; returnOnPack[] = {{"ItemLockbox",1}};
@ -1391,6 +1571,44 @@ class CfgBaseBuilding
removeParts[] = {}; removeParts[] = {};
}; };
class WaterPump_Ghost_EPOCH : WaterPump_SIM_EPOCH {}; class WaterPump_Ghost_EPOCH : WaterPump_SIM_EPOCH {};
class BaseCam_EPOCH : Default
{
removeParts[] = {{"BaseCam",1}};
GhostPreview = "BaseCam_Ghost_EPOCH";
staticClass = "BaseCam_EPOCH";
simulClass = "BaseCam_SIM_EPOCH";
};
class BaseCam_SIM_EPOCH : BaseCam_EPOCH
{
removeParts[] = {};
allowedSnapPoints[] = {"CAM"};
allowedSnapObjects[] = {"Const_WoodWalls_static_F","Const_Cinder_static_F"};
};
class BaseCam_Ghost_EPOCH : BaseCam_SIM_EPOCH {};
class BaseCamTerminal_EPOCH : Default
{
removeParts[] = {{"BaseCamTerminal",1}};
GhostPreview = "BaseCamTerminal_Ghost_EPOCH";
staticClass = "BaseCamTerminal_EPOCH";
simulClass = "BaseCamTerminal_SIM_EPOCH";
};
class BaseCamTerminal_SIM_EPOCH : BaseCamTerminal_EPOCH
{
removeParts[] = {};
};
class BaseCamTerminal_Ghost_EPOCH : BaseCamTerminal_SIM_EPOCH {};
class snowman_EPOCH : Default
{
removeParts[] = {{1,"KitSnowman"}};
GhostPreview = "snowman_Ghost_EPOCH";
staticClass = "snowman_EPOCH";
simulClass = "snowman_SIM_EPOCH";
};
class snowman_SIM_EPOCH : snowman_EPOCH
{
removeParts[] = {};
};
class snowman_Ghost_EPOCH : snowman_SIM_EPOCH {};
}; };
/*[[[end]]]*/ /*[[[end]]]*/

View File

@ -51,6 +51,8 @@ class CfgClientFunctions
class unit_onKilledEH {}; class unit_onKilledEH {};
class AutoRun_Check {}; class AutoRun_Check {};
class AutoRun {}; class AutoRun {};
class DefibrillatorUse {};
class CamUse {};
}; };
class building class building
{ {

View File

@ -99,7 +99,7 @@ class CfgCrafting
/** --------- RECIPES BELOW --------- **/ /** --------- RECIPES BELOW --------- **/
class ItemCoolerE : Part class ItemCoolerE : Part
{ {
usedIn[] = {"ItemCooler0","ItemCooler1","ItemCooler2","ItemCooler3","ItemCooler4"}; usedIn[] = {"ItemCooler0","ItemCooler1","ItemCooler2","ItemCooler3","ItemCooler4","KitSnowman"};
previewPosition[] = {0.795709,1,0.415296}; previewPosition[] = {0.795709,1,0.415296};
previewScale = 0.8; previewScale = 0.8;
previewVector = 0; previewVector = 0;
@ -148,7 +148,7 @@ class CfgCrafting
}; };
class CircuitParts : Part class CircuitParts : Part
{ {
usedIn[] = {"EnergyPack","EnergyPackLg","KitPlotPole","ItemBattery","KitSolarGen","KitVehicleUpgradeI_200_EPOCH","KitVehicleUpgradeIV_200_EPOCH","BarrelBomb_EPOCH_Remote_Mag","BarrelBomb2_EPOCH_Remote_Mag","KitPortableLight_Single","KitPortableLight_Double"}; usedIn[] = {"EnergyPack","EnergyPackLg","KitPlotPole","ItemBattery","KitSolarGen","KitSolarCharger","KitSolarChargerXL","KitVehicleUpgradeI_200_EPOCH","KitVehicleUpgradeIV_200_EPOCH","BarrelBomb_EPOCH_Remote_Mag","BarrelBomb2_EPOCH_Remote_Mag","KitPortableLight_Single","KitPortableLight_Double","BaseCam","BaseCamTerminal"};
previewPosition[] = {0.791044,1,0.256956}; previewPosition[] = {0.791044,1,0.256956};
previewScale = 2; previewScale = 2;
previewVector = 2.3; previewVector = 2.3;
@ -415,7 +415,7 @@ class CfgCrafting
}; };
class ItemScraps : Item class ItemScraps : Item
{ {
usedIn[] = {"ItemCorrugated","KitMetalTrap","MeleeRod","KitVehicleUpgradeIV_200_EPOCH","KitBarbedWire"}; usedIn[] = {"ItemCorrugated","KitMetalTrap","MeleeRod","KitVehicleUpgradeIV_200_EPOCH","KitBarbedWire","BaseCam","BaseCamTerminal"};
nearby[] = {{"Fire","","fire",{1,{"ALL"}},3,1,1,0}}; nearby[] = {{"Fire","","fire",{1,{"ALL"}},3,1,1,0}};
recipe[] = {{"PartOre",2}}; recipe[] = {{"PartOre",2}};
previewPosition[] = {0.797144,1,0.309158}; previewPosition[] = {0.797144,1,0.309158};
@ -466,10 +466,17 @@ class CfgCrafting
}; };
class ItemDuctTape : Part class ItemDuctTape : Part
{ {
usedIn[] = {"SpareTire","EngineParts","ItemRotor"}; usedIn[] = {"SpareTire","EngineParts","ItemRotor","BaseCam","BaseCamTerminal"};
previewPosition[] = {0.807346,1,0.27}; previewPosition[] = {0.807346,1,0.27};
previewScale = 1.8; previewScale = 1.8;
previewVector = -3.9; previewVector = -3.9;
};
class ItemGlass : Part
{
usedIn[] = {"BaseCam", "BaseCamTerminal"};
previewPosition[] = {0.807346,1,0.27};
previewScale = 0.55;
previewVector = -3.9;
}; };
class EngineParts : Item class EngineParts : Item
{ {
@ -786,6 +793,13 @@ class CfgCrafting
previewScale = 0.4; previewScale = 0.4;
previewVector = 2.1; previewVector = 2.1;
}; };
class icecream_epoch : Part
{
usedIn[] = {"KitSnowman"};
previewPosition[] = {0.796141,1,0.27};
previewScale = 0.7;
previewVector = 2.1;
};
class emptyjar_epoch : Part class emptyjar_epoch : Part
{ {
usedIn[] = {"water_epoch"}; usedIn[] = {"water_epoch"};
@ -802,7 +816,7 @@ class CfgCrafting
}; };
class clean_water_epoch : Item class clean_water_epoch : Item
{ {
usedIn[] = {"EnergyPack"}; usedIn[] = {"EnergyPack","KitSnowman"};
nearby[] = {{"Fire","","fire",{1,{"ALL"}},3,1,1,0}}; nearby[] = {{"Fire","","fire",{1,{"ALL"}},3,1,1,0}};
recipe[] = {"water_epoch"}; recipe[] = {"water_epoch"};
previewPosition[] = {0.807346,1,0.43035}; previewPosition[] = {0.807346,1,0.43035};
@ -819,7 +833,7 @@ class CfgCrafting
}; };
class ItemCorrugatedLg : Item class ItemCorrugatedLg : Item
{ {
usedIn[] = {"KitPlotPole","KitTankTrap","KitHesco3","KitSolarGen","ItemRotor","EngineBlock","KitMetalFloor","KitMetalHalfFloor","KitMetalQuarterFloor","KitMetalTower","KitFieldToilet","KitSink","KitPortableLight_Single","KitPortableLight_Double","KitBarbedWire"}; usedIn[] = {"KitPlotPole","KitTankTrap","KitHesco3","KitSolarGen","KitSolarCharger","KitSolarChargerXL","ItemRotor","EngineBlock","KitMetalFloor","KitMetalHalfFloor","KitMetalQuarterFloor","KitMetalTower","KitFieldToilet","KitSink","KitPortableLight_Single","KitPortableLight_Double","KitBarbedWire"};
recipe[] = {{"ItemCorrugated",3}}; recipe[] = {{"ItemCorrugated",3}};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}}; nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
previewPosition[] = {0.797491,1,0.32899}; previewPosition[] = {0.797491,1,0.32899};
@ -828,7 +842,7 @@ class CfgCrafting
}; };
class PartPlankPack : Item class PartPlankPack : Item
{ {
usedIn[] = {"KitStudWall","KitWoodFloor","KitWoodFoundation","KitWoodStairs","KitWoodRamp","KitWoodLadder","KitWoodTower","KitTiPi","KitWorkbench","KitSpikeTrap","KitMetalTrap","KitWoodQuarterFloor","KitWoodHalfFloor","KitBarGate","KitBagBunker","KitWatchTower","KitLightPole","KitScaffolding"}; usedIn[] = {"KitStudWall","KitWoodFloor","KitWoodFoundation","KitWoodStairs","KitWoodRamp","KitWoodLadder","KitWoodTower","KitTiPi","KitWorkbench","KitSpikeTrap","KitMetalTrap","KitWoodQuarterFloor","KitWoodHalfFloor","KitBarGate","KitBagBunker","KitWatchTower","KitLightPole","KitScaffolding","KitPlyThirdWall_EPOCH"};
recipe[] = {{"WoodLog_EPOCH",2}}; recipe[] = {{"WoodLog_EPOCH",2}};
previewPosition[] = {0.797837,1,0.288258}; previewPosition[] = {0.797837,1,0.288258};
previewScale = 0.2; previewScale = 0.2;
@ -837,7 +851,7 @@ class CfgCrafting
}; };
class ItemPlywoodPack : Item class ItemPlywoodPack : Item
{ {
usedIn[] = {}; usedIn[] = {"KitPlyThirdWall_EPOCH"};
recipe[] = {{"WoodLog_EPOCH",3}}; recipe[] = {{"WoodLog_EPOCH",3}};
previewPosition[] = {0.797837,1,0.288258}; previewPosition[] = {0.797837,1,0.288258};
previewScale = 0.2; previewScale = 0.2;
@ -879,6 +893,17 @@ class CfgCrafting
previewScale = 0.07; previewScale = 0.07;
previewVector = 0; previewVector = 0;
}; };
class KitPlyThirdWall_EPOCH : Kit
{
recipe[] = {{"PartPlankPack",2},{"ItemPlywoodPack",1}};
model = "\x\addons\a3_epoch_community\models\third_ply_wall.p3d";
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
previewPosition[] = {0.797675,1,0.398882};
previewScale = 0.07;
previewVector = 0;
descriptionShort = "1/3 Plywood Wall";
descriptionFull = "Base building material";
};
class KitWoodFloor : Kit class KitWoodFloor : Kit
{ {
usedIn[] = {"KitWoodTower","KitBagBunker"}; usedIn[] = {"KitWoodTower","KitBagBunker"};
@ -1117,9 +1142,20 @@ class CfgCrafting
previewScale = 0.055; previewScale = 0.055;
previewVector = 0; previewVector = 0;
}; };
class KitSnowman : Kit
{
recipe[] = {{"ItemCoolerE",1},{"icecream_epoch",1},{"clean_water_epoch",2}};
model = "\x\addons\a3_epoch_community\models\hol_x\epoch_snowman.p3d";
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
previewPosition[] = {0.801378,1,0.29};
previewScale = 0.15;
previewVector = 0;
descriptionShort = "Snowman";
descriptionFull = "Nice deco for Wintertime";
};
class ItemSolar : Part class ItemSolar : Part
{ {
usedIn[] = {"KitSolarGen"}; usedIn[] = {"KitSolarGen","KitSolarCharger","KitSolarChargerXL"};
previewPosition[] = {0.802374,1,0.26}; previewPosition[] = {0.802374,1,0.26};
previewScale = 0.19; previewScale = 0.19;
previewVector = 3.3; previewVector = 3.3;
@ -1133,7 +1169,7 @@ class CfgCrafting
}; };
class ItemCables : Item class ItemCables : Item
{ {
usedIn[] = {"KitSolarGen","KitPlotPole","ItemCopperBar","KitVehicleUpgradeI_200_EPOCH"}; usedIn[] = {"KitSolarGen","KitSolarCharger","KitSolarChargerXL","KitPlotPole","ItemCopperBar","KitVehicleUpgradeI_200_EPOCH","BaseCam","BaseCamTerminal"};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}}; nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
recipe[] = {{"ItemCopperBar",1}}; recipe[] = {{"ItemCopperBar",1}};
previewPosition[] = {0.802374,1,0.26}; previewPosition[] = {0.802374,1,0.26};
@ -1227,7 +1263,7 @@ class CfgCrafting
}; };
class ItemBattery : Item class ItemBattery : Item
{ {
usedIn[] = {"KitSolarGen","KitPlotPole","BarrelBomb_EPOCH_Remote_Mag","BarrelBomb2_EPOCH_Remote_Mag"}; usedIn[] = {"KitSolarGen","KitSolarCharger","KitSolarChargerXL","KitPlotPole","BarrelBomb_EPOCH_Remote_Mag","BarrelBomb2_EPOCH_Remote_Mag"};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}}; nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
recipe[] = {{"EnergyPackLg",3},{"CircuitParts",1}}; recipe[] = {{"EnergyPackLg",3},{"CircuitParts",1}};
previewPosition[] = {0.802374,1,0.276733}; previewPosition[] = {0.802374,1,0.276733};
@ -1241,6 +1277,50 @@ class CfgCrafting
previewPosition[] = {0.804979,1,0.39189}; previewPosition[] = {0.804979,1,0.39189};
previewScale = 0.11; previewScale = 0.11;
previewVector = 0; previewVector = 0;
};
class KitSolarCharger : Kit
{
recipe[] = {{"ItemSolar",1},{"ItemCables",1},{"ItemBattery",1},{"ItemCorrugatedLg",2},{"CircuitParts",2}};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
model = "\x\addons\a3_epoch_assets_3\CfgVehicles\Solar_Generator_Complete\Solar_generator.p3d";
previewPosition[] = {0.804979,1,0.39189};
previewScale = 0.11;
previewVector = 0;
descriptionShort = "Solar Charger Kit";
descriptionFull = "Used to charge small Energy Packs";
};
class KitSolarChargerXL : Kit
{
recipe[] = {{"ItemSolar",2},{"ItemCables",2},{"ItemBattery",2},{"ItemCorrugatedLg",2},{"CircuitParts",2}};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
model = "\x\addons\a3_epoch_assets_3\CfgVehicles\Solar_Generator_Complete\Solar_generator.p3d";
previewPosition[] = {0.804979,1,0.39189};
previewScale = 0.11;
previewVector = 0;
descriptionShort = "Solar Charger Kit XL";
descriptionFull = "Used to charge large Energy Packs";
};
class BaseCam : Kit
{
recipe[] = {{"ItemCables",1},{"ItemGlass",1},{"ItemDuctTape",1},{"ItemScraps",2},{"CircuitParts",2}};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
model = "\x\addons\a3_epoch_community\models\base_cam.p3d";
previewPosition[] = {0.804979,1,0.3};
previewScale = 0.5;
previewVector = 0;
descriptionShort = "Base Camera";
descriptionFull = "Protect your Base with a Camera.<br/>A BaseCam Terminal is needed,<br/>to check your Base Cameras";
};
class BaseCamTerminal : Kit
{
recipe[] = {{"ItemCables",1},{"ItemGlass",1},{"ItemDuctTape",1},{"ItemScraps",2},{"CircuitParts",2}};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
model = "\x\addons\a3_epoch_community\models\base_cam_terminal.p3d";
previewPosition[] = {0.804979,1,0.3};
previewScale = 0.5;
previewVector = 0;
descriptionShort = "Base Camera Terminal";
descriptionFull = "Check your Base Cameras with this Terminal";
}; };
class MeleeRod : Kit class MeleeRod : Kit
{ {
@ -1395,7 +1475,7 @@ class CfgCrafting
}; };
class ItemCanvas : Item class ItemCanvas : Item
{ {
usedIn[] = {"KitTentA","KitTentDome","KitSunShade","KitWatchTower","KitScaffolding"}; usedIn[] = {"KitTentA","KitTentDome","KitSunShade","KitWatchTower","KitScaffolding","ItemSeedBag"};
nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}}; nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH"}},3,1,0,1}};
recipe[] = {{"ItemKiloHemp",1}}; recipe[] = {{"ItemKiloHemp",1}};
previewPosition[] = {0.802443,1,0.254301}; previewPosition[] = {0.802443,1,0.254301};

View File

@ -14,7 +14,7 @@
/*[[[cog from arma_config_tools import *; json_to_arma()]]]*/ /*[[[cog from arma_config_tools import *; json_to_arma()]]]*/
class CfgEpochClient class CfgEpochClient
{ {
epochVersion = "1.1.0"; epochVersion = "1.2.0";
ArmAVersion = 176; ArmAVersion = 176;
debug = "true"; // true = enable extra rpt debug lines, false to disable debug = "true"; // true = enable extra rpt debug lines, false to disable
@ -55,9 +55,16 @@ class CfgEpochClient
storageCountPerMember = 5; //ignore if "splitCountLimits=0" & "useGroupCountLimits=0" storageCountPerMember = 5; //ignore if "splitCountLimits=0" & "useGroupCountLimits=0"
maxdoors = 10; // Max allowed doors per Group maxdoors = 10; // Max allowed doors per Group
maxgates = 5; // Max allowed Gates per Group maxgates = 5; // Max allowed Gates per Group
maxCams = 2; // Max allowed BaseCams per Group
MaxBuildingTilt = 180; // Max degrees players can tilt building elements
AtmBlockedAtPlot = "true"; // Block ATM's in Plotpole-Range AtmBlockedAtPlot = "true"; // Block ATM's in Plotpole-Range
disableRemoteSensors = "true"; // disableRemoteSensors true/false disableRemoteSensors = "true"; // disableRemoteSensors true/false
ActionFireOnLighter = "true"; // Lighter is needed to inflame fires
ActionBurnBarrelOffExtinguisher = "true"; // FireExtinguisher is needed to put off Burn Barrels
ActionHookRope = "true"; // Rope is needed to hook vehicles (get back on release)
epochMessageBackgroundCol[] = {0,0,0,0.2}; //Epoch_message background color (format: {R,G,B,A}) epochMessageBackgroundCol[] = {0,0,0,0.2}; //Epoch_message background color (format: {R,G,B,A})
epochMessageTextCol[] = {1,1,1,0.95}; //Epoch_message text color (format: {R,G,B,A}) epochMessageTextCol[] = {1,1,1,0.95}; //Epoch_message text color (format: {R,G,B,A})
@ -189,6 +196,19 @@ class CfgEpochClient
playerDeathMarkerGPSOnly = 1; // Map marker toggle in map dyna menu on death with assigned GPS only playerDeathMarkerGPSOnly = 1; // Map marker toggle in map dyna menu on death with assigned GPS only
mapOnZoomSetMarkerSize = 1; // When in map markers will change to larger size as player zooms in mapOnZoomSetMarkerSize = 1; // When in map markers will change to larger size as player zooms in
bankTransferTime[] = {0.0006,1.2,0.06}; bankTransferTime[] = {0.0006,1.2,0.06};
// Player (Building) Energy
energyPowerSources[] = { // Add PowerCapacity and PowerType in CfgBaseBuilding, if you add something here!
"Land_spp_Tower_F",
"Land_wpp_Turbine_V2_F",
"Land_wpp_Turbine_V1_F",
"SolarGen_EPOCH",
"Land_Wreck_Satellite_EPOCH"
};
energyRange = 75; // Range to check for energy sources
energyRegenMax = 5; // Max energy increase value (every 10 seconds)
energyCostNV = 3; // Energy loss value by using nightvision (every 10 seconds)
energyRegenInVeh = 5; // Energy increase value in Vehicles with Engine On (every 10 seconds)
// Favorite Bar // Favorite Bar
Fav_enableFavoriteBar = "true"; // If disabled, players will not be able to use favorite bar Fav_enableFavoriteBar = "true"; // If disabled, players will not be able to use favorite bar
@ -196,6 +216,9 @@ class CfgEpochClient
Fav_FastWeaponSwitching = "false"; // If enabled, same slot weapons from favorites bar are equipped instantly, otherwise reload action is played (recommended for immersion) Fav_FastWeaponSwitching = "false"; // If enabled, same slot weapons from favorites bar are equipped instantly, otherwise reload action is played (recommended for immersion)
Fav_BannedItems[] = {"FAK"}; // Items that users are not allowed to pin Fav_BannedItems[] = {"FAK"}; // Items that users are not allowed to pin
EnableTempVehTrade = "false"; // Enable selling of temp Vehicles (not handled by Epoch). Temp Vehicles will not be stored in Traders, but can be sold
BulletCalculateOnCraft = "true"; // Enable Bullet Calculation on Crafting - Example: If you craft a large EnergyPack with 3 half full EnergyPacks, you will only get a half filled large EnergyPack back
// Advanced Vehicle Repair // Advanced Vehicle Repair
UseAdvancedVehicleRepair = "true"; // Switch On / Off Advanced Vehicle Repair (Does not effect SuppressedCraftingItems !) UseAdvancedVehicleRepair = "true"; // Switch On / Off Advanced Vehicle Repair (Does not effect SuppressedCraftingItems !)
EnableRemoveParts = "true"; // Enable removing Tires / Engines from Vehicles EnableRemoveParts = "true"; // Enable removing Tires / Engines from Vehicles
@ -214,21 +237,25 @@ class CfgEpochClient
VehicleRepairs[] = { // {Hitpoint, dmg to repair, dmg to replace, mat to repair, mat to replace} VehicleRepairs[] = { // {Hitpoint, dmg to repair, dmg to replace, mat to repair, mat to replace}
{"HitHull",0.33,0.66,"ItemScraps","ItemCorrugated"}, {"HitHull",0.33,0.66,"ItemScraps","ItemCorrugated"},
{"HitBody",0.33,1,"ItemScraps","ItemCorrugated"}, {"HitBody",0.33,1,"ItemScraps","ItemCorrugated"},
{"HitLFWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitLF2Wheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitLMWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitLBWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRFWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRF2Wheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRMWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRBWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitEngine",0.33,0.91,"EngineParts","EngineBlock"}, {"HitEngine",0.33,0.91,"EngineParts","EngineBlock"},
{"glass",0.33,1,"ItemGlass","ItemGlass"}, {"glass",0.33,1,"ItemGlass","ItemGlass"},
{"HitFuel",0.1,0.66,"ItemDuctTape","FuelTank"}, {"HitFuel",0.1,0.66,"ItemDuctTape","FuelTank"},
{"HitHRotor",0.33,1,"ItemCorrugated","ItemRotor"}, {"HitHRotor",0.33,1,"ItemCorrugated","ItemRotor"},
{"HitVRotor",0.33,1,"ItemCorrugated","ItemRotor"}, {"HitVRotor",0.33,1,"ItemCorrugated","ItemRotor"},
{"HitWinch",0.33,0.91,"ItemCables","ItemCables"}, {"HitWinch",0.33,0.91,"ItemCables","ItemCables"},
{"HitAvionics",0.33,0.91,"CircuitParts","CircuitParts"} {"HitAvionics",0.33,0.91,"CircuitParts","CircuitParts"},
// Wheels - Do not change the order (front to back wheels) here!
{"HitLFWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRFWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitLF2Wheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRF2Wheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitLMWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRMWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitLBWheel",0.33,1,"VehicleRepair","SpareTire"},
{"HitRBWheel",0.33,1,"VehicleRepair","SpareTire"},
// Mountainbike wheels
{"HitFWheel",0.33,0.91,"",""},
{"HitBWheel",0.33,0.91,"",""}
}; };
// include configs // include configs

View File

@ -504,6 +504,16 @@ class CfgItemInteractions
buildClass = "Garden_EPOCH"; buildClass = "Garden_EPOCH";
isStorage = 1; isStorage = 1;
}; };
class KitSolarCharger : Item_Build_base
{
buildClass = "SolarCharger_EPOCH";
isStorage = 1;
};
class KitSolarChargerXL : Item_Build_base
{
buildClass = "SolarChargerXL_EPOCH";
isStorage = 1;
};
class KitBurnBarrel : Item_Build_base class KitBurnBarrel : Item_Build_base
{ {
buildClass = "BurnBarrel_EPOCH"; buildClass = "BurnBarrel_EPOCH";
@ -588,6 +598,10 @@ class CfgItemInteractions
{ {
buildClass = "BarbedWire_EPOCH"; buildClass = "BarbedWire_EPOCH";
}; };
class BaseCam : Item_Build_base
{
buildClass = "BaseCam_EPOCH";
};
class PaintCanBase : Default class PaintCanBase : Default
{ {
interactAction = 12; interactAction = 12;
@ -985,7 +999,7 @@ class CfgItemInteractions
}; };
class ItemCanteen_Clean : Drink_base class ItemCanteen_Clean : Drink_base
{ {
interactAttributes[] = {{"Thirst",1000},{"Stamina",50}}; interactAttributes[] = {{"Thirst",1000},{"Stamina",100}};
interactReturnOnUse = "ItemCanteen_Empty"; interactReturnOnUse = "ItemCanteen_Empty";
}; };
class ItemBottlePlastic_Dirty: Drink_base class ItemBottlePlastic_Dirty: Drink_base
@ -996,7 +1010,7 @@ class CfgItemInteractions
class ItemCanteen_Dirty : Drink_base class ItemCanteen_Dirty : Drink_base
{ {
interactAttributes[] = {{"Thirst",1000},{"Toxicity",5,1},{"Stamina",50},{"Radiation",2,1}}; interactAttributes[] = {{"Thirst",1000},{"Toxicity",10,1},{"Stamina",100},{"Radiation",4,1}};
interactReturnOnUse = "ItemCanteen_Empty"; interactReturnOnUse = "ItemCanteen_Empty";
}; };
class adrenaline_epoch : Drink_base class adrenaline_epoch : Drink_base
@ -1045,5 +1059,23 @@ class CfgItemInteractions
interactText = "USE"; interactText = "USE";
interactAttributes[] = {{"Radiation",-15},{"Thirst",-50},{"Immunity",5}}; interactAttributes[] = {{"Radiation",-15},{"Thirst",-50},{"Immunity",5}};
}; };
class ItemDefibrillator : Default
{
interactAction = 17;
interactText = "ReCharge";
};
class BaseCamTerminal : Item_Build_base
{
buildClass = "BaseCamTerminal_EPOCH";
interactActions[] = {{"Watch","call Epoch_CamUse;"}};
};
class KitSnowman : Item_Build_base
{
buildClass = "snowman_EPOCH";
};
class KitPlyThirdWall_EPOCH : Item_Build_base
{
buildClass = "PlyThirdWall_EPOCH";
};
}; };
/*[[[end]]]*/ /*[[[end]]]*/

View File

@ -171,6 +171,10 @@ class CfgItemSort
"U_O_FullGhillie_sard", "U_O_FullGhillie_sard",
"U_O_FullGhillie_ard", "U_O_FullGhillie_ard",
// Radiation Suits
"U_RadiationSuit_M_uniform",
"U_RadiationSuit_F_uniform",
// CIV // CIV
"U_I_OfficerUniform", "U_I_OfficerUniform",
"U_I_C_Soldier_Para_1_F", "U_I_C_Soldier_Para_1_F",
@ -431,6 +435,8 @@ class CfgItemSort
"H_F3_EPOCH", "H_F3_EPOCH",
"H_F4_EPOCH", "H_F4_EPOCH",
"H_F5_EPOCH", "H_F5_EPOCH",
"thor_mask_epoch",
"iron_mask_epoch",
"wolf_mask_epoch", "wolf_mask_epoch",
"pkin_mask_epoch", "pkin_mask_epoch",
"clown_mask_epoch", "clown_mask_epoch",
@ -948,6 +954,7 @@ class CfgItemSort
Medical[] = { Medical[] = {
"FAK", "FAK",
"Soap_Epoch",
"Towelette", "Towelette",
"HeatPack", "HeatPack",
"ColdPack", "ColdPack",
@ -1051,11 +1058,13 @@ class CfgItemSort
"ItemCorrugated", "ItemCorrugated",
"ItemCorrugatedLg", "ItemCorrugatedLg",
"KitStudWall", "KitStudWall",
"KitPlyThirdWall_EPOCH",
"KitWoodFloor", "KitWoodFloor",
"KitWoodHalfFloor", "KitWoodHalfFloor",
"KitWoodQuarterFloor", "KitWoodQuarterFloor",
"KitWoodStairs", "KitWoodStairs",
"KitWoodRamp", "KitWoodRamp",
"KitSnowman",
"KitFirePlace", "KitFirePlace",
"KitTiPi", "KitTiPi",
"KitShelf", "KitShelf",
@ -1064,6 +1073,10 @@ class CfgItemSort
"KitPlotPole", "KitPlotPole",
"KitCinderWall", "KitCinderWall",
"KitSolarGen", "KitSolarGen",
"KitSolarCharger",
"KitSolarChargerXL",
"BaseCam",
"BaseCamTerminal",
"KitWorkbench", "KitWorkbench",
"KitWoodLadder", "KitWoodLadder",
"KitWoodTower", "KitWoodTower",
@ -1187,6 +1200,11 @@ class CfgItemSort
"ItemFireExtinguisher" "ItemFireExtinguisher"
}; };
Vehicles_Land[] = { Vehicles_Land[] = {
"hoverboard_epoch_1",
"hoverboard_epoch_bttf",
"hoverboard_epoch_a3",
"hoverboard_epoch_cargo",
"MBK_01_EPOCH",
"ebike_epoch", // Motorcycle "ebike_epoch", // Motorcycle
"C_Offroad_01_EPOCH", // Offroader "C_Offroad_01_EPOCH", // Offroader
"C_Offroad_01_EPOCH1", "C_Offroad_01_EPOCH1",
@ -1392,6 +1410,7 @@ class CfgItemSort
"O_Heli_Transport_04_box_EPOCH", "O_Heli_Transport_04_box_EPOCH",
"O_Heli_Transport_04_covered_EPOCH", "O_Heli_Transport_04_covered_EPOCH",
"B_Heli_Light_01_EPOCH", "B_Heli_Light_01_EPOCH",
"uh1h_Epoch",
"B_Heli_Light_01_armed_F", "B_Heli_Light_01_armed_F",
"B_Heli_Transport_01_EPOCH", "B_Heli_Transport_01_EPOCH",

View File

@ -70,6 +70,14 @@ class CfgObjectInteractions
{ {
interactMode = 4; interactMode = 4;
}; };
class SolarCharger_EPOCH : Default
{
interactMode = 4;
};
class SolarChargerXL_EPOCH : Default
{
interactMode = 4;
};
class FieldToilet_EPOCH : Default class FieldToilet_EPOCH : Default
{ {
interactMode = 4; interactMode = 4;
@ -231,6 +239,7 @@ class CfgObjectInteractions
ppEffect[] = {}; ppEffect[] = {};
}; };
class SmokeShellToxic_Ammo : SmokeShellCustom {}; class SmokeShellToxic_Ammo : SmokeShellCustom {};
class SmokeShellToxicSapper : SmokeShellCustom {};
class Epoch_Cloak_F : Default class Epoch_Cloak_F : Default
{ {
distance = 30; distance = 30;

View File

@ -112,6 +112,10 @@ class CfgPricing
{ {
price = 25; price = 25;
}; };
class ItemWaterPurificationTablets
{
price = 10;
};
class ItemBulb class ItemBulb
{ {
price = 10; price = 10;
@ -2096,6 +2100,10 @@ class CfgPricing
{ {
price = 3; price = 3;
}; };
class Soap_Epoch
{
price = 4;
};
class Towelette class Towelette
{ {
price = 1; price = 1;
@ -3074,6 +3082,9 @@ class CfgPricing
{ {
price = 16; price = 16;
}; };
class KitPlyThirdWall_EPOCH {
price = 18;
};
class KitWoodQuarterFloor class KitWoodQuarterFloor
{ {
price = 8; // price of 2 planks price = 8; // price of 2 planks
@ -3130,6 +3141,10 @@ class CfgPricing
{ {
price = 24; // price of 6 planks price = 24; // price of 6 planks
}; };
class KitSnowman
{
price = 72;
};
class KitSpikeTrap class KitSpikeTrap
{ {
price = 42; price = 42;
@ -3250,6 +3265,22 @@ class CfgPricing
{ {
price = 325; price = 325;
}; };
class KitSolarCharger
{
price = 325;
};
class KitSolarChargerXL
{
price = 325;
};
class BaseCam
{
price = 250;
};
class BaseCamTerminal
{
price = 250;
};
class KitCinderWall class KitCinderWall
{ {
price = 80; price = 80;
@ -3514,6 +3545,14 @@ class CfgPricing
{ {
price = 22; price = 22;
}; };
class U_RadiationSuit_M_uniform
{
price = 7;
};
class U_RadiationSuit_F_uniform
{
price = 7;
};
class U_O_FullGhillie_lsh class U_O_FullGhillie_lsh
{ {
price = 7; price = 7;
@ -4352,20 +4391,40 @@ class CfgPricing
}; };
class C_Offroad_01_EPOCH class C_Offroad_01_EPOCH
{ {
price = 750; price = 7500;
tax = 0.9;
}; };
class C_Offroad_01_EPOCH1: C_Offroad_01_EPOCH{}; class C_Offroad_01_EPOCH1: C_Offroad_01_EPOCH{};
class C_Offroad_01_EPOCH2: C_Offroad_01_EPOCH{}; class C_Offroad_01_EPOCH2: C_Offroad_01_EPOCH{};
class C_Offroad_01_EPOCH3: C_Offroad_01_EPOCH{}; class C_Offroad_01_EPOCH3: C_Offroad_01_EPOCH{};
class C_Offroad_01_EPOCH4: C_Offroad_01_EPOCH{}; class C_Offroad_01_EPOCH4: C_Offroad_01_EPOCH{};
class C_Offroad_01_EPOCH5: C_Offroad_01_EPOCH{}; class C_Offroad_01_EPOCH5: C_Offroad_01_EPOCH{};
class hoverboard_epoch_1
{
price = 1000;
tax = 0.9;
};
class hoverboard_epoch_bttf: hoverboard_epoch_1{};
class hoverboard_epoch_a3: hoverboard_epoch_1{};
class hoverboard_epoch_cargo
{
price = 1200;
tax = 0.9;
};
class MBK_01_EPOCH
{
price = 1250;
tax = 0.9;
};
class C_Quadbike_01_EPOCH class C_Quadbike_01_EPOCH
{ {
price = 500; price = 2500;
tax = 0.9;
}; };
class C_Hatchback_01_EPOCH class C_Hatchback_01_EPOCH
{ {
price = 750; price = 7500;
tax = 0.9;
}; };
class C_Hatchback_01_EPOCH1: C_Hatchback_01_EPOCH{}; class C_Hatchback_01_EPOCH1: C_Hatchback_01_EPOCH{};
class C_Hatchback_01_EPOCH2: C_Hatchback_01_EPOCH{}; class C_Hatchback_01_EPOCH2: C_Hatchback_01_EPOCH{};
@ -4373,7 +4432,8 @@ class CfgPricing
class C_Hatchback_01_EPOCH4: C_Hatchback_01_EPOCH{}; class C_Hatchback_01_EPOCH4: C_Hatchback_01_EPOCH{};
class C_Hatchback_02_EPOCH class C_Hatchback_02_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class C_Hatchback_02_EPOCH1: C_Hatchback_02_EPOCH{}; class C_Hatchback_02_EPOCH1: C_Hatchback_02_EPOCH{};
class C_Hatchback_02_EPOCH2: C_Hatchback_02_EPOCH{}; class C_Hatchback_02_EPOCH2: C_Hatchback_02_EPOCH{};
@ -4381,7 +4441,8 @@ class CfgPricing
class C_Hatchback_02_EPOCH4: C_Hatchback_02_EPOCH{}; class C_Hatchback_02_EPOCH4: C_Hatchback_02_EPOCH{};
class C_SUV_01_EPOCH class C_SUV_01_EPOCH
{ {
price = 750; price = 7500;
tax = 0.9;
}; };
class C_SUV_01_EPOCH1: C_SUV_01_EPOCH{}; class C_SUV_01_EPOCH1: C_SUV_01_EPOCH{};
class C_SUV_01_EPOCH2: C_SUV_01_EPOCH{}; class C_SUV_01_EPOCH2: C_SUV_01_EPOCH{};
@ -4390,22 +4451,27 @@ class CfgPricing
class C_Rubberboat_EPOCH class C_Rubberboat_EPOCH
{ {
price = 500; price = 500;
tax = 0.9;
}; };
class C_Rubberboat_02_EPOCH class C_Rubberboat_02_EPOCH
{ {
price = 500; price = 500;
tax = 0.9;
}; };
class C_Rubberboat_03_EPOCH class C_Rubberboat_03_EPOCH
{ {
price = 500; price = 500;
tax = 0.9;
}; };
class C_Rubberboat_04_EPOCH class C_Rubberboat_04_EPOCH
{ {
price = 500; price = 500;
tax = 0.9;
}; };
class C_Van_01_box_EPOCH class C_Van_01_box_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class C_Van_01_box_EPOCH1: C_Van_01_box_EPOCH{}; class C_Van_01_box_EPOCH1: C_Van_01_box_EPOCH{};
class C_Van_01_box_EPOCH2: C_Van_01_box_EPOCH{}; class C_Van_01_box_EPOCH2: C_Van_01_box_EPOCH{};
@ -4413,7 +4479,8 @@ class CfgPricing
class C_Van_01_box_EPOCH4: C_Van_01_box_EPOCH{}; class C_Van_01_box_EPOCH4: C_Van_01_box_EPOCH{};
class C_Van_01_transport_EPOCH class C_Van_01_transport_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class C_Van_01_transport_EPOCH1: C_Van_01_transport_EPOCH{}; class C_Van_01_transport_EPOCH1: C_Van_01_transport_EPOCH{};
class C_Van_01_transport_EPOCH2: C_Van_01_transport_EPOCH{}; class C_Van_01_transport_EPOCH2: C_Van_01_transport_EPOCH{};
@ -4421,27 +4488,33 @@ class CfgPricing
class C_Van_01_transport_EPOCH4: C_Van_01_transport_EPOCH{}; class C_Van_01_transport_EPOCH4: C_Van_01_transport_EPOCH{};
class C_Boat_Civil_01_EPOCH class C_Boat_Civil_01_EPOCH
{ {
price = 750; price = 7500;
tax = 0.9;
}; };
class C_Boat_Civil_01_police_EPOCH class C_Boat_Civil_01_police_EPOCH
{ {
price = 750; price = 7500;
tax = 0.9;
}; };
class C_Boat_Civil_01_rescue_EPOCH class C_Boat_Civil_01_rescue_EPOCH
{ {
price = 750; price = 7500;
tax = 0.9;
}; };
class B_Heli_Light_01_EPOCH class B_Heli_Light_01_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class B_SDV_01_EPOCH class B_SDV_01_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class B_MRAP_01_EPOCH class B_MRAP_01_EPOCH
{ {
price = 2500; price = 45000;
tax = 0.9;
}; };
class B_MRAP_01_EPOCH1: B_MRAP_01_EPOCH{}; class B_MRAP_01_EPOCH1: B_MRAP_01_EPOCH{};
class B_MRAP_01_EPOCH2: B_MRAP_01_EPOCH{}; class B_MRAP_01_EPOCH2: B_MRAP_01_EPOCH{};
@ -4449,7 +4522,8 @@ class CfgPricing
class B_MRAP_01_EPOCH4: B_MRAP_01_EPOCH{}; class B_MRAP_01_EPOCH4: B_MRAP_01_EPOCH{};
class O_MRAP_02_EPOCH class O_MRAP_02_EPOCH
{ {
price = 2500; price = 45000;
tax = 0.9;
}; };
class O_MRAP_02_EPOCH1: O_MRAP_02_EPOCH{}; class O_MRAP_02_EPOCH1: O_MRAP_02_EPOCH{};
class O_MRAP_02_EPOCH2: O_MRAP_02_EPOCH{}; class O_MRAP_02_EPOCH2: O_MRAP_02_EPOCH{};
@ -4457,7 +4531,8 @@ class CfgPricing
class O_MRAP_02_EPOCH4: O_MRAP_02_EPOCH{}; class O_MRAP_02_EPOCH4: O_MRAP_02_EPOCH{};
class I_MRAP_03_EPOCH class I_MRAP_03_EPOCH
{ {
price = 2500; price = 45000;
tax = 0.9;
}; };
class I_MRAP_03_EPOCH1: I_MRAP_03_EPOCH{}; class I_MRAP_03_EPOCH1: I_MRAP_03_EPOCH{};
class I_MRAP_03_EPOCH2: I_MRAP_03_EPOCH{}; class I_MRAP_03_EPOCH2: I_MRAP_03_EPOCH{};
@ -4465,7 +4540,8 @@ class CfgPricing
class I_MRAP_03_EPOCH4: I_MRAP_03_EPOCH{}; class I_MRAP_03_EPOCH4: I_MRAP_03_EPOCH{};
class B_G_Offroad_01_armed_EPOCH class B_G_Offroad_01_armed_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class B_G_Offroad_01_armed_EPOCH1: B_G_Offroad_01_armed_EPOCH{}; class B_G_Offroad_01_armed_EPOCH1: B_G_Offroad_01_armed_EPOCH{};
class B_G_Offroad_01_armed_EPOCH2: B_G_Offroad_01_armed_EPOCH{}; class B_G_Offroad_01_armed_EPOCH2: B_G_Offroad_01_armed_EPOCH{};
@ -4473,7 +4549,8 @@ class CfgPricing
class B_G_Offroad_01_armed_EPOCH4: B_G_Offroad_01_armed_EPOCH{}; class B_G_Offroad_01_armed_EPOCH4: B_G_Offroad_01_armed_EPOCH{};
class B_Truck_01_mover_EPOCH class B_Truck_01_mover_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class B_Truck_01_mover_EPOCH1: B_Truck_01_mover_EPOCH {}; class B_Truck_01_mover_EPOCH1: B_Truck_01_mover_EPOCH {};
class B_Truck_01_mover_EPOCH2: B_Truck_01_mover_EPOCH {}; class B_Truck_01_mover_EPOCH2: B_Truck_01_mover_EPOCH {};
@ -4481,7 +4558,8 @@ class CfgPricing
class B_Truck_01_mover_EPOCH4: B_Truck_01_mover_EPOCH {}; class B_Truck_01_mover_EPOCH4: B_Truck_01_mover_EPOCH {};
class B_Truck_01_transport_EPOCH class B_Truck_01_transport_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class B_Truck_01_transport_EPOCH1: B_Truck_01_transport_EPOCH {}; class B_Truck_01_transport_EPOCH1: B_Truck_01_transport_EPOCH {};
class B_Truck_01_transport_EPOCH2: B_Truck_01_transport_EPOCH {}; class B_Truck_01_transport_EPOCH2: B_Truck_01_transport_EPOCH {};
@ -4489,7 +4567,8 @@ class CfgPricing
class B_Truck_01_transport_EPOCH4: B_Truck_01_transport_EPOCH {}; class B_Truck_01_transport_EPOCH4: B_Truck_01_transport_EPOCH {};
class B_Truck_01_covered_EPOCH class B_Truck_01_covered_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class B_Truck_01_covered_EPOCH1: B_Truck_01_covered_EPOCH {}; class B_Truck_01_covered_EPOCH1: B_Truck_01_covered_EPOCH {};
class B_Truck_01_covered_EPOCH2: B_Truck_01_covered_EPOCH {}; class B_Truck_01_covered_EPOCH2: B_Truck_01_covered_EPOCH {};
@ -4497,7 +4576,8 @@ class CfgPricing
class B_Truck_01_covered_EPOCH4: B_Truck_01_covered_EPOCH {}; class B_Truck_01_covered_EPOCH4: B_Truck_01_covered_EPOCH {};
class B_Truck_01_box_EPOCH class B_Truck_01_box_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class B_Truck_01_box_EPOCH1: B_Truck_01_box_EPOCH {}; class B_Truck_01_box_EPOCH1: B_Truck_01_box_EPOCH {};
class B_Truck_01_box_EPOCH2: B_Truck_01_box_EPOCH {}; class B_Truck_01_box_EPOCH2: B_Truck_01_box_EPOCH {};
@ -4505,7 +4585,8 @@ class CfgPricing
class B_Truck_01_box_EPOCH4: B_Truck_01_box_EPOCH {}; class B_Truck_01_box_EPOCH4: B_Truck_01_box_EPOCH {};
class O_Truck_02_transport_EPOCH class O_Truck_02_transport_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class O_Truck_02_transport_EPOCH1: O_Truck_02_transport_EPOCH {}; class O_Truck_02_transport_EPOCH1: O_Truck_02_transport_EPOCH {};
class O_Truck_02_transport_EPOCH2: O_Truck_02_transport_EPOCH {}; class O_Truck_02_transport_EPOCH2: O_Truck_02_transport_EPOCH {};
@ -4513,7 +4594,8 @@ class CfgPricing
class O_Truck_02_transport_EPOCH4: O_Truck_02_transport_EPOCH {}; class O_Truck_02_transport_EPOCH4: O_Truck_02_transport_EPOCH {};
class O_Truck_02_covered_EPOCH class O_Truck_02_covered_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class O_Truck_02_covered_EPOCH1: O_Truck_02_covered_EPOCH {}; class O_Truck_02_covered_EPOCH1: O_Truck_02_covered_EPOCH {};
class O_Truck_02_covered_EPOCH2: O_Truck_02_covered_EPOCH {}; class O_Truck_02_covered_EPOCH2: O_Truck_02_covered_EPOCH {};
@ -4521,7 +4603,8 @@ class CfgPricing
class O_Truck_02_covered_EPOCH4: O_Truck_02_covered_EPOCH {}; class O_Truck_02_covered_EPOCH4: O_Truck_02_covered_EPOCH {};
class O_Truck_02_box_EPOCH class O_Truck_02_box_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class O_Truck_02_box_EPOCH1: O_Truck_02_box_EPOCH {}; class O_Truck_02_box_EPOCH1: O_Truck_02_box_EPOCH {};
class O_Truck_02_box_EPOCH2: O_Truck_02_box_EPOCH {}; class O_Truck_02_box_EPOCH2: O_Truck_02_box_EPOCH {};
@ -4529,7 +4612,8 @@ class CfgPricing
class O_Truck_02_box_EPOCH4: O_Truck_02_box_EPOCH {}; class O_Truck_02_box_EPOCH4: O_Truck_02_box_EPOCH {};
class O_Truck_03_transport_EPOCH class O_Truck_03_transport_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class O_Truck_03_transport_EPOCH1: O_Truck_03_transport_EPOCH {}; class O_Truck_03_transport_EPOCH1: O_Truck_03_transport_EPOCH {};
class O_Truck_03_transport_EPOCH2: O_Truck_03_transport_EPOCH {}; class O_Truck_03_transport_EPOCH2: O_Truck_03_transport_EPOCH {};
@ -4537,49 +4621,64 @@ class CfgPricing
class O_Truck_03_transport_EPOCH4: O_Truck_03_transport_EPOCH {}; class O_Truck_03_transport_EPOCH4: O_Truck_03_transport_EPOCH {};
class O_Truck_03_covered_EPOCH class O_Truck_03_covered_EPOCH
{ {
price = 1000; price = 10000;
tax = 0.9;
}; };
class O_Truck_03_covered_EPOCH1: O_Truck_03_covered_EPOCH {}; class O_Truck_03_covered_EPOCH1: O_Truck_03_covered_EPOCH {};
class O_Truck_03_covered_EPOCH2: O_Truck_03_covered_EPOCH {}; class O_Truck_03_covered_EPOCH2: O_Truck_03_covered_EPOCH {};
class O_Truck_03_covered_EPOCH3: O_Truck_03_covered_EPOCH {}; class O_Truck_03_covered_EPOCH3: O_Truck_03_covered_EPOCH {};
class O_Truck_03_covered_EPOCH4: O_Truck_03_covered_EPOCH {}; class O_Truck_03_covered_EPOCH4: O_Truck_03_covered_EPOCH {};
class uh1h_Epoch
{
price = 22500;
tax = 0.9;
};
class O_Heli_Light_02_unarmed_EPOCH class O_Heli_Light_02_unarmed_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class I_Heli_Transport_02_EPOCH class I_Heli_Transport_02_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class I_Heli_light_03_unarmed_EPOCH class I_Heli_light_03_unarmed_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class C_Heli_Light_01_civil_EPOCH class C_Heli_Light_01_civil_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class C_Heli_Light_01_civil_2seat_EPOCH: C_Heli_Light_01_civil_EPOCH {}; class C_Heli_Light_01_civil_2seat_EPOCH: C_Heli_Light_01_civil_EPOCH {};
class C_Heli_Light_01_civil_4seat_EPOCH: C_Heli_Light_01_civil_EPOCH {}; class C_Heli_Light_01_civil_4seat_EPOCH: C_Heli_Light_01_civil_EPOCH {};
class O_Heli_Transport_04_EPOCH class O_Heli_Transport_04_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class O_Heli_Transport_04_bench_EPOCH class O_Heli_Transport_04_bench_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class O_Heli_Transport_04_box_EPOCH class O_Heli_Transport_04_box_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class O_Heli_Transport_04_covered_EPOCH class O_Heli_Transport_04_covered_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class B_Heli_Transport_03_unarmed_EPOCH class B_Heli_Transport_03_unarmed_EPOCH
{ {
price = 2500; price = 25000;
tax = 0.9;
}; };
class I_UAV_01_F class I_UAV_01_F
{ {
@ -4588,275 +4687,343 @@ class CfgPricing
class jetski_epoch class jetski_epoch
{ {
price = 500; price = 500;
tax = 0.9;
}; };
class ebike_epoch class ebike_epoch
{ {
price = 1500; price = 3500;
tax = 0.9;
}; };
class mosquito_epoch class mosquito_epoch
{ {
price = 1500; price = 1500;
tax = 0.9;
}; };
class K01 class K01
{ {
price = 300; price = 300;
tax = 0.9;
}; };
class K02 class K02
{ {
price = 300; price = 300;
tax = 0.9;
}; };
class K03 class K03
{ {
price = 300; price = 300;
tax = 0.9;
}; };
class K04 class K04
{ {
price = 300; price = 300;
tax = 0.9;
}; };
class CUP_C_Fishing_Boat_Chernarus class CUP_C_Fishing_Boat_Chernarus
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_LR_Transport_CTK class CUP_C_LR_Transport_CTK
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_B_Zodiac_USMC class CUP_B_Zodiac_USMC
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Skoda_Red_CIV class CUP_C_Skoda_Red_CIV
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Skoda_White_CIV class CUP_C_Skoda_White_CIV
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Skoda_Blue_CIV class CUP_C_Skoda_Blue_CIV
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Skoda_Green_CIV class CUP_C_Skoda_Green_CIV
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_SUV_CIV class CUP_C_SUV_CIV
{ {
price = 1500; price = 1500;
tax = 0.9;
}; };
class CUP_B_HMMWV_Transport_USA class CUP_B_HMMWV_Transport_USA
{ {
price = 2500; price = 2500;
tax = 0.9;
}; };
class CUP_B_HMMWV_Unarmed_USA class CUP_B_HMMWV_Unarmed_USA
{ {
price = 2500; price = 2500;
tax = 0.9;
}; };
class CUP_C_SUV_TK class CUP_C_SUV_TK
{ {
price = 2000; price = 2000;
tax = 0.9;
}; };
class CUP_B_LR_Transport_CZ_D class CUP_B_LR_Transport_CZ_D
{ {
price = 1100; price = 1100;
tax = 0.9;
}; };
class CUP_C_Datsun_Covered class CUP_C_Datsun_Covered
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Datsun_Plain class CUP_C_Datsun_Plain
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Datsun_Tubeframe class CUP_C_Datsun_Tubeframe
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Datsun_4seat class CUP_C_Datsun_4seat
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Datsun class CUP_C_Datsun
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_green_Civ class CUP_C_Golf4_green_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_red_Civ class CUP_C_Golf4_red_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_blue_Civ class CUP_C_Golf4_blue_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_black_Civ class CUP_C_Golf4_black_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_kitty_Civ class CUP_C_Golf4_kitty_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_reptile_Civ class CUP_C_Golf4_reptile_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_camodigital_Civ class CUP_C_Golf4_camodigital_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_camodark_Civ class CUP_C_Golf4_camodark_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_camo_Civ class CUP_C_Golf4_camo_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_B_M1030 class CUP_B_M1030
{ {
price = 500; price = 500;
tax = 0.9;
}; };
class CUP_C_Ural_Civ_03 class CUP_C_Ural_Civ_03
{ {
price = 1200; price = 1200;
tax = 0.9;
}; };
class CUP_C_Ural_Open_Civ_03 class CUP_C_Ural_Open_Civ_03
{ {
price = 1200; price = 1200;
tax = 0.9;
}; };
class CUP_C_Ural_Civ_02 class CUP_C_Ural_Civ_02
{ {
price = 1200; price = 1200;
tax = 0.9;
}; };
class CUP_B_TowingTractor_USMC class CUP_B_TowingTractor_USMC
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_C47_CIV class CUP_C_C47_CIV
{ {
price = 1600; price = 1600;
tax = 0.9;
}; };
class CUP_B_LR_Transport_CZ_W class CUP_B_LR_Transport_CZ_W
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_white_Civ class CUP_C_Golf4_white_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_whiteblood_Civ class CUP_C_Golf4_whiteblood_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Golf4_yellow_Civ class CUP_C_Golf4_yellow_Civ
{ {
price = 800; price = 800;
tax = 0.9;
}; };
class CUP_C_Octavia_CIV class CUP_C_Octavia_CIV
{ {
price = 1600; price = 1600;
tax = 0.9;
}; };
class CUP_C_Ural_Civ_01 class CUP_C_Ural_Civ_01
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_C_Ural_Open_Civ_01 class CUP_C_Ural_Open_Civ_01
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_B_Ural_CDF class CUP_B_Ural_CDF
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_B_Ural_Open_CDF class CUP_B_Ural_Open_CDF
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_C_Ural_Open_Civ_02 class CUP_C_Ural_Open_Civ_02
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_B_HMMWV_Ambulance_USA class CUP_B_HMMWV_Ambulance_USA
{ {
price = 1500; price = 1500;
tax = 0.9;
}; };
class CUP_C_UAZ_Unarmed_TK_CIV class CUP_C_UAZ_Unarmed_TK_CIV
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_C_UAZ_Open_TK_CIV class CUP_C_UAZ_Open_TK_CIV
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_B_UAZ_Unarmed_CDF class CUP_B_UAZ_Unarmed_CDF
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_B_Ural_Empty_CDF class CUP_B_Ural_Empty_CDF
{ {
price = 1000; price = 1000;
tax = 0.9;
}; };
class CUP_C_DC3_CIV class CUP_C_DC3_CIV
{ {
price = 2400; price = 2400;
tax = 0.9;
}; };
class C_Boat_Transport_02_F class C_Boat_Transport_02_F
{ {
price = 1200; price = 1200;
tax = 0.9;
}; };
class C_Scooter_Transport_01_F class C_Scooter_Transport_01_F
{ {
price = 1200; price = 1200;
tax = 0.9;
}; };
class C_Offroad_02_unarmed_F class C_Offroad_02_unarmed_F
{ {
price = 3500; price = 3500;
tax = 0.9;
}; };
class I_C_Offroad_02_unarmed_F class I_C_Offroad_02_unarmed_F
{ {
price = 3500; price = 3500;
tax = 0.9;
}; };
class B_T_LSV_01_unarmed_F class B_T_LSV_01_unarmed_F
{ {
price = 4400; price = 4400;
tax = 0.9;
}; };
class O_LSV_02_unarmed_F class O_LSV_02_unarmed_F
{ {
price = 4300; price = 4300;
tax = 0.9;
}; };
class O_T_LSV_02_unarmed_F class O_T_LSV_02_unarmed_F
{ {
price = 4600; price = 4600;
tax = 0.9;
}; };
class C_Plane_Civil_01_F class C_Plane_Civil_01_F
{ {
price = 5000; price = 5000;
tax = 0.9;
}; };
class C_Plane_Civil_01_racing_F class C_Plane_Civil_01_racing_F
{ {
price = 5000; price = 5000;
tax = 0.9;
}; };
class B_CTRG_LSV_01_light_F class B_CTRG_LSV_01_light_F
{ {
price = 4400; price = 4400;
tax = 0.9;
}; };
class B_LSV_01_unarmed_F class B_LSV_01_unarmed_F
{ {
price = 4400; price = 4400;
tax = 0.9;
}; };
class B_T_VTOL_01_vehicle_blue_EPOCH class B_T_VTOL_01_vehicle_blue_EPOCH
{ {
price = 10000; price = 10000;
tax = 0.9;
}; };
class B_T_VTOL_01_infantry_olive_EPOCH: B_T_VTOL_01_vehicle_blue_EPOCH {}; class B_T_VTOL_01_infantry_olive_EPOCH: B_T_VTOL_01_vehicle_blue_EPOCH {};
class O_T_VTOL_02_infantry_EPOCH class O_T_VTOL_02_infantry_EPOCH
{ {
price = 10000; price = 10000;
tax = 0.9;
}; };
class O_T_VTOL_02_vehicle_grey_EPOCH: O_T_VTOL_02_infantry_EPOCH {}; class O_T_VTOL_02_vehicle_grey_EPOCH: O_T_VTOL_02_infantry_EPOCH {};
class B_UavTerminal class B_UavTerminal
@ -5784,6 +5951,14 @@ class CfgPricing
{ {
price = 5; price = 5;
}; };
class thor_mask_epoch
{
price = 30;
};
class iron_mask_epoch
{
price = 30;
};
class hockey_mask_epoch class hockey_mask_epoch
{ {
price = 30; price = 30;

View File

@ -26,6 +26,11 @@ class CfgRemoteExec
{ {
mode = 1; mode = 1;
jip = 0; jip = 0;
class EPOCH_server_SetFinalPlayerPos
{
allowedTargets=2;
jip = 0;
};
class bis_fnc_reviveinitaddplayer class bis_fnc_reviveinitaddplayer
{ {
allowedTargets = 2; allowedTargets = 2;

View File

@ -28,6 +28,10 @@ class CfgSnapChecks
class CinderWallDoorwHatch_EPOCH : WoodLargeWall_EPOCH {}; class CinderWallDoorwHatch_EPOCH : WoodLargeWall_EPOCH {};
class CinderWall_EPOCH : WoodLargeWall_EPOCH {}; class CinderWall_EPOCH : WoodLargeWall_EPOCH {};
class CinderWallHalf_EPOCH : WoodLargeWall_EPOCH {}; class CinderWallHalf_EPOCH : WoodLargeWall_EPOCH {};
class PlyThirdWall_EPOCH : WoodLargeWall_EPOCH
{
nails[] = {{{2.46932,0,0.120775},{2.46932,0,-0.190775}},{{-2.46932,0,0.120775},{-2.46932,0,-0.190775}},{{0,0,1},{2.76932,0,1}},{{0,0,1},{-2.76932,0,1}}};
};
class WoodFloor_Epoch class WoodFloor_Epoch
{ {
nails[] = {{{0,0,0.15},{2.8555,0,0.15}},{{0,0,0.15},{0,2.8555,0.15}},{{0,0,0.15},{-2.8555,0,0.15}},{{0,0,0.15},{0,-2.8555,0.15}},{{2.5555,0,0.15},{2.5555,0,-0.15}},{{-2.5555,0,0.15},{-2.5555,0,-0.15}},{{0,-2.5555,0.15},{0,-2.5555,-0.15}},{{0,2.5555,0.15},{0,2.5555,-0.15}}}; nails[] = {{{0,0,0.15},{2.8555,0,0.15}},{{0,0,0.15},{0,2.8555,0.15}},{{0,0,0.15},{-2.8555,0,0.15}},{{0,0,0.15},{0,-2.8555,0.15}},{{2.5555,0,0.15},{2.5555,0,-0.15}},{{-2.5555,0,0.15},{-2.5555,0,-0.15}},{{0,-2.5555,0.15},{0,-2.5555,-0.15}},{{0,2.5555,0.15},{0,2.5555,-0.15}}};
@ -51,6 +55,15 @@ class CfgSnapChecks
class MetalTower_EPOCH : WoodStairs_EPOCH {}; class MetalTower_EPOCH : WoodStairs_EPOCH {};
class CinderTower_EPOCH : WoodStairs_EPOCH {}; class CinderTower_EPOCH : WoodStairs_EPOCH {};
class WoodRamp_EPOCH : WoodStairs_EPOCH {}; class WoodRamp_EPOCH : WoodStairs_EPOCH {};
class BaseCam_EPOCH
{
nails[] = {
{{0,0.15,-0.06},{0,0.3,0.04}},
{{0,0.15,-0.06},{0,0.3,-0.16}},
{{0,0.15,-0.06},{-0.1,0.3,-0.06}},
{{0,0.15,-0.06},{0.1,0.3,-0.06}}
};
};
}; };
/*[[[end]]]*/ /*[[[end]]]*/

View File

@ -15,6 +15,7 @@
//[[[cog import generate_private_arrays ]]] //[[[cog import generate_private_arrays ]]]
private ["_Simulated","_DamageAllowed","_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_VAL","_ammoClass","_ammoObj","_anims","_animsData","_arr","_arrCount","_baseObj","_buildingJammerRange","_cfgBaseBuilding","_cfgEpochClient","_class","_color","_damage","_location","_marker","_maxTTL","_owner","_response","_serverSettingsConfig","_storageSlot","_textureSlot","_ttl","_vehHiveKey","_worldspace"]; private ["_Simulated","_DamageAllowed","_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_VAL","_ammoClass","_ammoObj","_anims","_animsData","_arr","_arrCount","_baseObj","_buildingJammerRange","_cfgBaseBuilding","_cfgEpochClient","_class","_color","_damage","_location","_marker","_maxTTL","_owner","_response","_serverSettingsConfig","_storageSlot","_textureSlot","_ttl","_vehHiveKey","_worldspace"];
//[[[end]]] //[[[end]]]
EPOCH_BaseCams = [];
_maxTTL = parseNumber EPOCH_expiresBuilding; _maxTTL = parseNumber EPOCH_expiresBuilding;
_serverSettingsConfig = configFile >> "CfgEpochServer"; _serverSettingsConfig = configFile >> "CfgEpochServer";
_baseDynamicSimulationSystem = [_serverSettingsConfig, "baseDynamicSimulationSystem", true] call EPOCH_fnc_returnConfigEntry; _baseDynamicSimulationSystem = [_serverSettingsConfig, "baseDynamicSimulationSystem", true] call EPOCH_fnc_returnConfigEntry;
@ -142,8 +143,18 @@ for "_i" from 0 to _this do {
}; };
// Handle Jammers and create marker if EPOCH_SHOW_JAMMERS set true. // Handle Jammers and create marker if EPOCH_SHOW_JAMMERS set true.
if (_class isKindOf "PlotPole_EPOCH") then { if (_class in ["PlotPole_EPOCH","BaseCam_EPOCH"]) then {
if (EPOCH_SHOW_JAMMERS) then { if (_owner != "-1") then {
_baseObj setVariable ["BUILD_OWNER", _owner, true];
};
// add BaseCam to public array
if (_class isequalto "BaseCam_EPOCH") then {
EPOCH_BaseCams pushBackUnique _baseObj;
// Set PubVar later after all Cams are loaded in
};
if (_class isequalto "PlotPole_EPOCH" && EPOCH_SHOW_JAMMERS) then {
_marker = createMarker [str(_location), _location]; _marker = createMarker [str(_location), _location];
_marker setMarkerShape "ICON"; _marker setMarkerShape "ICON";
// TODO allow players to change this per base // TODO allow players to change this per base
@ -159,10 +170,6 @@ for "_i" from 0 to _this do {
}; };
_baseObj setVariable ["BUILD_SLOT", _i, true]; _baseObj setVariable ["BUILD_SLOT", _i, true];
if (_owner != "-1") then {
_baseObj setVariable ["BUILD_OWNER", _owner, true];
};
if (_textureSlot != 0) then { if (_textureSlot != 0) then {
// get texture path from index // get texture path from index
_color = getArray (_cfgBaseBuilding >> _class >> "availableTextures"); _color = getArray (_cfgBaseBuilding >> _class >> "availableTextures");
@ -188,5 +195,6 @@ for "_i" from 0 to _this do {
EPOCH_BuildingSlots set [_i,0]; EPOCH_BuildingSlots set [_i,0];
}; };
}; };
publicvariable "EPOCH_BaseCams";
missionNamespace setVariable ["EPOCH_BuildingSlotCount", {_x == 0} count EPOCH_BuildingSlots, true]; missionNamespace setVariable ["EPOCH_BuildingSlotCount", {_x == 0} count EPOCH_BuildingSlots, true];
true true

View File

@ -46,6 +46,10 @@ if (isText _staticClassConfig) then {
if (_staticClass isEqualTo "Garden_EPOCH") then { if (_staticClass isEqualTo "Garden_EPOCH") then {
EPOCH_activeGardens pushBackUnique _storageObj; EPOCH_activeGardens pushBackUnique _storageObj;
}; };
if (_staticClass in ["SolarCharger_EPOCH","SolarChargerXL_EPOCH"]) then {
EPOCH_activeSolars pushBackUnique _storageObj;
};
if (getNumber(_cfgBaseBuilding >> _staticClass >> "isSecureStorage") == 1) then{ if (getNumber(_cfgBaseBuilding >> _staticClass >> "isSecureStorage") == 1) then{
_storageObj setVariable["EPOCH_Locked", false, true]; _storageObj setVariable["EPOCH_Locked", false, true];
@ -81,8 +85,21 @@ if (isText _staticClassConfig) then {
if (_objSlot != -1) then { if (_objSlot != -1) then {
_newVehicle = [_vehicle, false] call EPOCH_server_simulSwap; _newVehicle = [_vehicle, false] call EPOCH_server_simulSwap;
_newVehicle setVariable["BUILD_OWNER", _playerUID, true]; // add BaseCam to public array
if (_newVehicle iskindof "BaseCam_EPOCH") then {
_playerGroup = _player getVariable["GROUP", ""];
_Owner = _playerUID;
if (_playerGroup != "") then {
_Owner = _playerGroup;
};
_newVehicle setVariable["BUILD_OWNER", _Owner, true];
EPOCH_BaseCams pushBackUnique _newVehicle;
publicvariable "EPOCH_BaseCams";
}
else {
_newVehicle setVariable["BUILD_OWNER", _playerUID, true];
};
_newVehicle call EPOCH_saveBuilding; _newVehicle call EPOCH_saveBuilding;
}; };

View File

@ -58,7 +58,7 @@ if ((_response select 0) == 1 && (_response select 1) isEqualType []) then {
if (_selectedPlayerName == "Dead Player") then { if (_selectedPlayerName == "Dead Player") then {
_memberrange = ["PlayerData", _selectedPlayerUID] call EPOCH_fnc_server_hiveGETRANGE; _memberrange = ["PlayerData", _selectedPlayerUID] call EPOCH_fnc_server_hiveGETRANGE;
if (count (_memberrange select 1) > 0) then { if (count (_memberrange select 1) > 0) then {
if (typename (_memberrange select 1 select 0) == "STRING") then { if ((_memberrange select 1 select 0) isEqualType "STRING") then {
_selectedPlayerName = _memberrange select 1 select 0; _selectedPlayerName = _memberrange select 1 select 0;
}; };
}; };

View File

@ -31,7 +31,7 @@ _contentArray = [];
} forEach (allPlayers select {getPlayerUID _x == _groupID}); } forEach (allPlayers select {getPlayerUID _x == _groupID});
if !(_contentArray isEqualTo []) then { if !(_contentArray isEqualTo []) then {
_contentArray params ["_groupName","_leaderName","_groupSize","_modArray","_memberArray"]; _contentArray params ["_groupName","_leaderName","_groupSize","_modArray","_memberArray"];
_allPlayers = allPlayers select {alive _x}; _allPlayers = allPlayers select {alive _x};
@ -54,13 +54,13 @@ if !(_contentArray isEqualTo []) then {
[_x] joinSilent _group; [_x] joinSilent _group;
}; };
} forEach (_allPlayers select {getPlayerUID _x == _selectedPlayerUID}); } forEach (_allPlayers select {getPlayerUID _x == _selectedPlayerUID});
// find player name from DB // find player name from DB
if (_selectedPlayerName == "Dead Player") then { if (_selectedPlayerName == "Dead Player") then {
_memberrange = ["PlayerData", _selectedPlayerUID] call EPOCH_fnc_server_hiveGETRANGE; _memberrange = ["PlayerData", _selectedPlayerUID] call EPOCH_fnc_server_hiveGETRANGE;
if (count (_memberrange select 1) > 0) then { if (count (_memberrange select 1) > 0) then {
if (typename (_memberrange select 1 select 0) == "STRING") then { if ((_memberrange select 1 select 0) isEqualType "STRING") then {
_selectedPlayerName = _memberrange select 1 select 0; _selectedPlayerName = _memberrange select 1 select 0;
}; };
}; };

View File

@ -18,7 +18,7 @@ private ["_allowedVehicleListName","_allowedVehiclesList","_backpacks","_cfgPric
params ["_player",["_token","",[""]],["_objArr",[]],["_pos",[]],["_wepHolder",objNull],["_clearCargo",true],["_objSpc","CAN_COLLIDE"],["_driverType",""],["_gunnerType",""],["_commanderType",""],["_crewType",""],["_doDamage",false]]; params ["_player",["_token","",[""]],["_objArr",[]],["_pos",[]],["_wepHolder",objNull],["_clearCargo",true],["_objSpc","CAN_COLLIDE"],["_driverType",""],["_gunnerType",""],["_commanderType",""],["_crewType",""],["_doDamage",false]];
if !([_player,_token]call EPOCH_server_getPToken) exitWith {}; if !([_player,_token]call EPOCH_server_getPToken) exitWith {};
if (typeName _objArr != "ARRAY")then{_objArr = [_objArr];}; if !(_objArr isEqualType [])then{_objArr = [_objArr];};
if (count _objArr < 1) exitWith {}; if (count _objArr < 1) exitWith {};
diag_log format["Epoch: Attempt Create Object: %1 for %2",_objArr, name _player]; diag_log format["Epoch: Attempt Create Object: %1 for %2",_objArr, name _player];

View File

@ -0,0 +1,43 @@
/*
Author: He-Man - EpochMod.com
Contributors:
Description:
Set final Player position on login
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_server/compile/epoch_player/EPOCH_server_SetFinalPlayerPos.sqf
*/
params ["_player","_newPlyr"];
private ["_finalpos","_fallbackpos"];
if (isnull _player || isnull _newPlyr) exitwith {
diag_log "DEBUG: SetFinalPlayerPos failed - Player or PlayerObj is Null";
};
if !(typeof _player isequalto "VirtualMan_EPOCH") exitwith {
diag_log "DEBUG: SetFinalPlayerPos failed - PlayerObj != VirtualMan_EPOCH";
};
_finalpos = _newPlyr getvariable ["FinalDest",[]];
if (_finalpos isequalto []) exitwith {
diag_log "DEBUG: SetFinalPlayerPos failed - No FinalPos Variable set";
};
if !(_finalpos isequaltype []) exitwith {
diag_log "DEBUG: SetFinalPlayerPos failed - FinalPos is not an Array";
};
if (count _finalpos < 2) exitwith {
diag_log "DEBUG: SetFinalPlayerPos failed - count FinalPos < 2";
};
_fallbackpos = getmarkerpos "respawn_west";
_fallbackpos set [2,0];
_finalpos params [["_location",_fallbackpos],["_dir",0]];
_newPlyr setDir _dir;
_newPlyr setPosATL _location;
_newPlyr setVariable["SETUP", true, true];
_player setPosATL _location;
_newPlyr allowdamage true;
_newPlyr hideobjectglobal false;

View File

@ -13,7 +13,7 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_SetUnitLoadout.sqf https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_SetUnitLoadout.sqf
*/ */
//[[[cog import generate_private_arrays ]]] //[[[cog import generate_private_arrays ]]]
private ["_type"]; private ["_type","_loadabs"];
//[[[end]]] //[[[end]]]
params ["_newPlyr","_loadout"]; params ["_newPlyr","_loadout"];
@ -83,6 +83,11 @@ if !(_bpack isequalto "") then {
[Vestcontainer _newPlyr, _vestitems], [Vestcontainer _newPlyr, _vestitems],
[BackpackContainer _newPlyr, _bpackitems] [BackpackContainer _newPlyr, _bpackitems]
]; ];
true _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

View File

@ -61,7 +61,7 @@ if (_playerObj isEqualType objNull) then {
[_fsmHandle,['_checkPlayer_PVC', _dead]] remoteExecCall ['setFSMVariable', _playerObj]; [_fsmHandle,['_checkPlayer_PVC', _dead]] remoteExecCall ['setFSMVariable', _playerObj];
if (!_dead) then { //Load old Char if (!_dead) then { //Load old Char
[_playerObj, _isMale, _fsmHandle] call EPOCH_server_loadPlayer; [_playerObj, _isMale, _fsmHandle, _arr] call EPOCH_server_loadPlayer;
}; };
}; };
}; };

View File

@ -17,7 +17,7 @@ private ["_Primary","_CheckLocation","_allGroupMembers","_alreadyDead","_assigne
//[[[end]]] //[[[end]]]
_reject = true; _reject = true;
params [["_player",objNull,[objNull]],["_isMale",true],["_fsmHandle",0]]; params [["_player",objNull,[objNull]],["_isMale",true],["_fsmHandle",0],["_playerData",[]]];
if (!isNull _player) then { if (!isNull _player) then {
@ -30,16 +30,17 @@ if (!isNull _player) then {
if (_playerUID != "") then { if (_playerUID != "") then {
// Make Hive call if (_playerdata isequalto []) then {
_playerData = []; // Make Hive call
(["Player", _playerUID] call EPOCH_fnc_server_hiveGETRANGE) params [ (["Player", _playerUID] call EPOCH_fnc_server_hiveGETRANGE) params [
["_status", 0 ], ["_status", 0 ],
["_playerDataTmp", [] ] ["_playerDataTmp", [] ]
]; ];
if (_status == 1 && _playerDataTmp isEqualType []) then { if (_status == 1 && _playerDataTmp isEqualType []) then {
_playerData = _playerDataTmp; _playerData = _playerDataTmp;
};
}; };
// Apperance defaults // Apperance defaults
_uniform = [_serverSettingsConfig, "defaultUniformFemale", "U_Test_uniform"] call EPOCH_fnc_returnConfigEntry; _uniform = [_serverSettingsConfig, "defaultUniformFemale", "U_Test_uniform"] call EPOCH_fnc_returnConfigEntry;
_class = "Epoch_Female_F"; _class = "Epoch_Female_F";
@ -177,9 +178,8 @@ if (!isNull _player) then {
_group = createGroup [west, true]; _group = createGroup [west, true];
}; };
_player setPosATL _location; _newPlyr = _group createUnit[_class, getMarkerPos "respawn_west", [], 0, "CAN_COLLIDE"];
_newPlyr hideobjectglobal true;
_newPlyr = _group createUnit[_class, _location, [], 0, "CAN_COLLIDE"];
if !(isNull _newPlyr) then { if !(isNull _newPlyr) then {
// disable AI on temp unit // disable AI on temp unit
@ -199,126 +199,17 @@ if (!isNull _player) then {
// disable further damage server side // disable further damage server side
_newPlyr allowDamage false; _newPlyr allowDamage false;
_newPlyr setDir _dir;
_newPlyr setPosATL _location;
// set player loadout // set player loadout
if (_schemaVersion >= 1.0) then { _playerData params ["","","_appearance","","","_loadout"];
_playerData params ["","","_appearance","","","_loadout"]; // get current weapon to send to param for selectWeapon
// get current weapon to send to param for selectWeapon _currentWeapon = _appearance param [4,""];
_currentWeapon = _appearance param [4,""];
// _newPlyr setUnitLoadout [_loadout, false]; // _newPlyr setUnitLoadout [_loadout, false];
// Workaround for Client / Server synchronizing issue in SetUnitLoadout // Workaround for Client / Server synchronizing issue in SetUnitLoadout
[_newPlyr,_loadout] call Epoch_server_SetUnitLoadout; _loadabs = [_newPlyr,_loadout] call Epoch_server_SetUnitLoadout;
if (_loadabs isequalto -1) then {
diag_log format["DEBUG: loaded player %1 with new schema Version %2", _newPlyr, _schemaVersion]; deleteVehicle _newPlyr;
};
} else {
// Legacy code start
// Apperance + Weapons
_playerData params ["","","_appearance","","","_weaponsAndItems","_linkedItems","_normalMagazines","_itemsInContainers","_weaponsInContainers"];
// load Apperance
_appearance params ["_goggles","_headgear","_vest","_backpack","_uniform"];
// old data format for 0.5 and prior.
// Load Apperance START
if (_uniform != "") then {
_newPlyr addUniform _uniform;
};
if (_backpack != "") then {
_newPlyr addBackpack _backpack;
};
if (_goggles != "") then {
_newPlyr addGoggles _goggles;
};
if (_headgear != "") then {
_newPlyr addHeadgear _headgear;
};
if (_vest != "") then {
_newPlyr addVest _vest;
};
// Load Apperance END
// Load inventory + defaults START
if (count _weaponsAndItems >= 3) then {
_weaponsAndItems params ["_currentWeaponTmp","_weaponsAndItemsArray","_equipped"];
_currentWeapon = _currentWeaponTmp;
{
_weapon = _x deleteAt 0;
_type = getNumber(configfile >> "cfgweapons" >> _weapon >> "type");
_attachments = [];
_wMags = false;
_wMagsArray = [];
// suppressor, laser, optics, magazines(array), bipods
{
// magazines
if (_x isEqualType []) then{
_wMags = true;
_wMagsArray pushback _x;
} else {
// attachments
if (_x != "") then{
_attachments pushBack _x;
};
};
} forEach _x;
if (_wMags) then {
{
_newPlyr addMagazine _x;
} foreach _wMagsArray;
};
// add weapon if equiped
if (_weapon in _equipped) then {
_equipped = _equipped - [_weapon];
if (_weapon != "") then {
_newPlyr addWeapon _weapon;
};
switch (_type) do {
case 1: { // primary
removeAllPrimaryWeaponItems _newPlyr;
{ _newPlyr addPrimaryWeaponItem _x } forEach _attachments;
};
case 2: { // handgun
removeAllHandgunItems _newPlyr;
{ _newPlyr addHandgunItem _x } forEach _attachments;
};
case 4: { // secondary
// removeAllSecondaryWeaponItems player; does not exist ?
{
_newPlyr removeSecondaryWeaponItem _x;
} forEach (secondaryWeaponItems _newPlyr);
{ _newPlyr addSecondaryWeaponItem _x } forEach _attachments;
};
};
}else{
{
_newPlyr addItem _x;
} forEach _attachments;
};
} forEach _weaponsAndItemsArray;
};
// Linked items
{
if (_x in["Binocular", "Rangefinder","Laserdesignator","Laserdesignator_02","Laserdesignator_03","Laserdesignator_01_khk_F","Laserdesignator_02_ghex_F"]) then {
_newPlyr addWeapon _x;
} else {
_newPlyr linkItem _x;
};
} forEach _linkedItems;
// add items to containers
[_newPlyr, _itemsInContainers] call EPOCH_fnc_addItemToX;
// add weapons to containers
[_newPlyr, _weaponsInContainers] call EPOCH_fnc_addItemToX;
// Add magazines
{_newPlyr addMagazine _x} forEach _normalMagazines;
// Load inventory + defaults END
// Legacy code stop
};
// Final Push // Final Push
if (isNull _player) then { if (isNull _player) then {
@ -354,15 +245,11 @@ if (!isNull _player) then {
_communityStats = (_communityStatsArray param [1,[]]) param [0,[]]; _communityStats = (_communityStatsArray param [1,[]]) param [0,[]];
_newPlyr setVariable["COMMUNITY_STATS", _communityStats]; _newPlyr setVariable["COMMUNITY_STATS", _communityStats];
// re enable damage server side
_newPlyr allowDamage true;
// Flag new body as ready for use. // Flag new body as ready for use.
_newPlyr setVariable["SETUP", true, true]; _newPlyr setVariable["FinalDest", [_location,_dir], true];
// Send message to player so they can take over the new body. // Send message to player so they can take over the new body.
[_playerNetID, _playerUID, [_newPlyr, _vars, _currentWeapon, loadAbs _newPlyr, _playerGroup, _canBeRevived, _newPlyr call EPOCH_server_setPToken,_playerGroupArray, _communityStats, _hitpoints], _fsmHandle, _player] call EPOCH_server_pushPlayer; [_playerNetID, _playerUID, [_newPlyr, _vars, _currentWeapon, _loadabs, _playerGroup, _canBeRevived, _newPlyr call EPOCH_server_setPToken,_playerGroupArray, _communityStats, _hitpoints], _fsmHandle, _player] call EPOCH_server_pushPlayer;
// diag_log str([_playerNetID, _playerUID, _player, [_newPlyr, (_player isEqualTo _newPlyr), _vars, _currentWeapon, loadAbs _newPlyr, _playerGroup, _canBeRevived, [],_playerGroupArray, _communityStats, _hitpoints], _fsmHandle]);
// revive test // revive test
_newPlyr setVariable ['#rev_enabled', true, true]; _newPlyr setVariable ['#rev_enabled', true, true];

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