diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server.pbo index a560bf01..3eea861e 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server.pbo differ diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo index 4a146c4e..6977f9b2 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo differ diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo index e25088ff..e353357e 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo differ diff --git a/Server_Install_Pack/@epochhive/epochconfig.hpp b/Server_Install_Pack/@epochhive/epochconfig.hpp index 6af055c9..3a93d922 100644 --- a/Server_Install_Pack/@epochhive/epochconfig.hpp +++ b/Server_Install_Pack/@epochhive/epochconfig.hpp @@ -40,6 +40,22 @@ removevehmagazinesturret[] = { // Remove these Magazines from the given Turret f {"200Rnd_40mm_G_belt",{0}} }; +// BaseBuilding +UseIndestructible = false; // Enable / Disable Indestructible BaseObjects +IndestructibleBaseObjects[] = { // Can be Names or Classes + "Constructions_static_F", + "Buildable_Storage", + "PlotPole_EPOCH", + "LockBox_EPOCH", + "Safe_EPOCH" + }; +ExceptedBaseObjects[] = { // Not Indestructible, also if in a Class of IndestructibleBaseObjects + "CinderWallGarage_EPOCH", + "WoodLargeWallDoorL_EPOCH", + "WoodLargeWallDoor_EPOCH", + "WoodWall4_EPOCH" + }; + // Traders taxRate = 0.1; // controls the price increase for purchases starterTraderItems[] = { { "ItemSodaBurst", "meatballs_epoch", "MortarBucket", "CinderBlocks", "VehicleRepair", "CircuitParts", "ItemCorrugated", "PartPlankPack", "ItemRock", "ItemRope", "ItemStick" }, { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 } }; // Starter Items for fresh spawned trader first array is classnames second is quantity. diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index 9b0f859e..3a85b9d8 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Altis.pbo and b/Server_Install_Pack/mpmissions/epoch.Altis.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Australia.pbo b/Server_Install_Pack/mpmissions/epoch.Australia.pbo index 80abd66b..199db257 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Australia.pbo and b/Server_Install_Pack/mpmissions/epoch.Australia.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo index 072cf918..6549d0ca 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo index ec89b1f7..c9a8ea87 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo and b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo index ae3b6cb8..bc007c1c 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo and b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo index 852d5883..18c0e157 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo and b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo index e12b6401..ad630e0a 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo and b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index 4046fab3..d84b6b24 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo and b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo index ec458c96..7b2ea3c0 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Napf.pbo b/Server_Install_Pack/mpmissions/epoch.Napf.pbo index 78e6d6f3..1d971433 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Napf.pbo and b/Server_Install_Pack/mpmissions/epoch.Napf.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Porto.pbo b/Server_Install_Pack/mpmissions/epoch.Porto.pbo index 44f416e7..5d5c5c4a 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Porto.pbo and b/Server_Install_Pack/mpmissions/epoch.Porto.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo index decd0f11..4ffb1150 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo and b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Sara.pbo b/Server_Install_Pack/mpmissions/epoch.Sara.pbo index c746286d..2d2a098f 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Sara.pbo and b/Server_Install_Pack/mpmissions/epoch.Sara.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo index c2a640f5..a7c8d8cc 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo and b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo index 5257a6c3..c29847df 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo and b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo index 02635780..32e89ee8 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo and b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo index 34b87479..3312ee45 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo and b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index 7277bc04..62e70c71 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo and b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo b/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo index d69c3e90..bd008c68 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo and b/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.VR.pbo b/Server_Install_Pack/mpmissions/epoch.VR.pbo index d695254c..0e88b07a 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.VR.pbo and b/Server_Install_Pack/mpmissions/epoch.VR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo index 7e2c15d2..f3e1fab6 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo index 88c58beb..5ee00d42 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo and b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.utes.pbo b/Server_Install_Pack/mpmissions/epoch.utes.pbo index 2900f267..6489eeb8 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.utes.pbo and b/Server_Install_Pack/mpmissions/epoch.utes.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo b/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo index 45020a97..9183eddf 100644 Binary files a/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo and b/Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo differ diff --git a/Sources/epoch_code/compile/EPOCH_consumeItem.sqf b/Sources/epoch_code/compile/EPOCH_consumeItem.sqf index 11801dd4..4d751f9f 100644 --- a/Sources/epoch_code/compile/EPOCH_consumeItem.sqf +++ b/Sources/epoch_code/compile/EPOCH_consumeItem.sqf @@ -121,21 +121,23 @@ switch _interactOption do { if (_otherObjects isEqualTo []) then { _object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"]; _object setDir ((getDir player) - 180); + [format["Press '%1' to drop object.", "1"], 5] call Epoch_message; if (([player, _item] call BIS_fnc_invRemove) == 1) then { [_object] spawn EPOCH_simulSwap; }; - } else { + } + else { ["Building Disallowed: Frequency Unstable", 5] call Epoch_message; }; - } else { + } + else { _object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"]; _object setDir ((getDir player) - 180); + [format["Press '%1' to drop object.", "1"], 5] call Epoch_message; [_object,_item] spawn EPOCH_staticMove; }; - // _object spawn EPOCH_countdown; - [format["Press '%1' to drop object.", "1"], 5] call Epoch_message; - - } else { + } + else { ["Need Energy", 5] call Epoch_message; }; }; diff --git a/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf b/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf index ca1ff449..7485d338 100644 --- a/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf +++ b/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf @@ -28,8 +28,8 @@ private ["_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountL _buildingAllowed = true; _ownedJammerExists = false; -_scl = false; -_gcl = true; +_useSplitCountLimits = false; +_useGroupCountLimits = true; _nearestJammer = objNull; // reject building if in vehicle @@ -48,8 +48,8 @@ _storageCountPerMember = getNumber(_config >> "storageCountPerMember"); _minJammerDistance = getNumber(_config >> "minJammerDistance"); _maxBuildingHeight = getNumber(_config >> "maxBuildingHeight"); _jammerPerGroup = getNumber(_config >> "jammerPerGroup"); -if(getNumber(_config >> "useGroupCountLimits") == 0)then{_gcl=false}; -if(getNumber(_config >> "splitCountLimits") == 1)then{_scl=true}; +if(getNumber(_config >> "useGroupCountLimits") == 0)then{_useGroupCountLimits=false}; +if(getNumber(_config >> "splitCountLimits") == 1)then{_useSplitCountLimits=true}; if(_buildingJammerRange == 0)then{_buildingJammerRange = 75}; if(_buildingCountLimit == 0)then{_buildingCountLimit = 200}; if(_buildingCountLeader == 0)then{_buildingCountLeader = _buildingCountLimit}; @@ -81,68 +81,55 @@ if !(_jammer isEqualTo []) then { ["Building Disallowed: Existing Jammer Signal", 5] call Epoch_message; }; } foreach _jammer; - } else { + } + else { { if (alive _x && (_x distance player) <= _buildingJammerRange) exitWith{ _nearestJammer = _x; }; } foreach _jammer; if !(isNull _nearestJammer) then { - if ((getPosATL player) select 2 < _maxBuildingHeight) then { - if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then { - _ownedJammerExists = true; - } else { - _buildingAllowed = false; - ["Building Disallowed: Frequency Blocked", 5] call Epoch_message; + if !((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) exitwith { + _buildingAllowed = false; + ["Building Disallowed: Frequency Blocked", 5] call Epoch_message; + }; + _ownedJammerExists = true; + if(_useGroupCountLimits)then{ + _membercount = 0; + if(count Epoch_my_Group > 0)then{ + _membercount = count (Epoch_my_Group select 3) + count (Epoch_my_Group select 4) }; - if(_gcl)then{ - _membercount = 0; - if(count Epoch_my_Group > 0)then{_membercount = count (Epoch_my_Group select 3) + count (Epoch_my_Group select 4)} - }; - if(_objType in ["WorkBench_EPOCH","StorageShelf_EPOCH","Tipi_EPOCH","LockBox_EPOCH","Safe_EPOCH","StorageShelf_SIM_EPOCH","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","Workbench_SIM_EPOCH","Tipi_SIM_EPOCH"])then[{ - if(_scl)then{ - if(_gcl)then{ - _storageCountLimit = _storageCountLeader + (_storageCountPerMember * _membercount); - if((_storageCountLeader + _storageCountPerMember) > _storageCountLimit)then{_storageCountLimit = _storageCountLeader} - }; - if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F",_ghostClass],_buildingJammerRange]) >= _storageCountLimit)then{ - _buildingAllowed = false; - [format["Building Disallowed: Max. %1 Storage Objects",_storageCountLimit],5] call Epoch_message - } - }else{ - if(_gcl)then{_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount)}; - if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= _buildingCountLimit)then{ - _buildingAllowed = false; - [format["Building Disallowed, Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message - } - } - },{ - //a try to prevent bugusing (TODO: not working for storage objects atm) - if((count nearestObjects[_nearestJammer,[_ghostClass],_buildingJammerRange]) >= 2)exitWith{ //setting this too low may not be player-friendly. Recommend: >= 2 + _storageCountLimit = _storageCountLeader + (_storageCountPerMember * _membercount); + _buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount); + }; + if (_useSplitCountLimits) then { + if(_objType in ["WorkBench_EPOCH","StorageShelf_EPOCH","Tipi_EPOCH","LockBox_EPOCH","Safe_EPOCH","StorageShelf_SIM_EPOCH","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","Workbench_SIM_EPOCH","Tipi_SIM_EPOCH"]) then { + if ((count (nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","StorageShelf_SIM_EPOCH","WorkBench_SIM_EPOCH"],_buildingJammerRange]-[_obj])) >= _storageCountLimit) exitwith { _buildingAllowed = false; - ["Building Disallowed: Frequency Unstable, Wait A Moment",5] call Epoch_message + [format["Building Disallowed: Max. %1 Storage Objects",_storageCountLimit],5] call Epoch_message }; - - if(_gcl)then{_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount)}; - if(_scl)then{ - if((count nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{ - _buildingAllowed = false; - [format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message - } - }else{ - if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{ - _buildingAllowed = false; - [format["Building Disallowed: Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message - } - } - }] - }else{ + } + else { + if ((count (nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith { + _buildingAllowed = false; + [format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message + }; + }; + } + else { + if ((count (nearestObjects [_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","StorageShelf_SIM_EPOCH","WorkBench_SIM_EPOCH","Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith { + _buildingAllowed = false; + [format["Building Disallowed, Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message + }; + }; + if !((getPosATL player) select 2 < _maxBuildingHeight) exitwith { _buildingAllowed = false; ["Building Disallowed: Max building height reached",5] call Epoch_message; }; }; }; -}else{ +} +else { if (_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then { // TODO: rework not ideal to use allmissionobjects _alljammer = allmissionobjects 'PlotPole_EPOCH'; @@ -166,9 +153,8 @@ if (!_ownedJammerExists) then{ if (_limitNearby > 0) then{ // remove current target from objects - _objectCount = count (nearestObjects[player, [_staticClass, _simulClass], _buildingJammerRange] - [_obj]); - // TODO: not properly limiting simulated objects - if (_objectCount >= _limitNearby) then{ + _objectscount = count (nearestObjects[player, [_staticClass, _simulClass], _buildingJammerRange]-[_obj]); + if (_objectscount >= _limitNearby) then{ _buildingAllowed = false; [format["Building Disallowed: Limit %1", _limitNearby], 5] call Epoch_message; }; diff --git a/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf b/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf index 09630fcd..c8725abf 100644 --- a/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf +++ b/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf @@ -37,7 +37,7 @@ _isSnap = false; if (EPOCH_playerEnergy <= 0) exitWith { ["Need Energy", 5] call Epoch_message; }; -if !(_objType call EPOCH_isBuildAllowed) exitWith{}; +if !(_object call EPOCH_isBuildAllowed) exitWith{}; EPOCH_simulSwap_Lock = true; _return = _object; diff --git a/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf b/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf index 83a748d5..df40071e 100644 --- a/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf +++ b/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf @@ -42,7 +42,7 @@ if (EPOCH_playerEnergy <= 0) exitWith{ }; // Remove object if not allowed -if !("" call EPOCH_isBuildAllowed) exitWith{ deleteVehicle _object }; +if !(_object call EPOCH_isBuildAllowed) exitWith{ deleteVehicle _object }; EPOCH_simulSwap_Lock = true; _objType = typeOf _object; @@ -117,7 +117,7 @@ if (_class != "") then { _rejectMove = false; if ((diag_tickTime - _lastCheckTime) > 10) then { _lastCheckTime = diag_tickTime; - _rejectMove = !(_objType call EPOCH_isBuildAllowed); + _rejectMove = !(_object call EPOCH_isBuildAllowed); }; if (_rejectMove) exitWith{ deleteVehicle EPOCH_target; diff --git a/Sources/epoch_config/Configs/CfgPricing.hpp b/Sources/epoch_config/Configs/CfgPricing.hpp index 1b5ffc7b..e329bebb 100644 --- a/Sources/epoch_config/Configs/CfgPricing.hpp +++ b/Sources/epoch_config/Configs/CfgPricing.hpp @@ -4366,6 +4366,121 @@ class CfgPricing { price = 10; }; + + /////////////////////////////////////////////////////////////////////////////// + // Apex Items & Weapons + /////////////////////////////////////////////////////////////////////////////// + class hgun_Pistol_01_F { price = 65; }; + class hgun_P07_khk_F { price = 65; }; + class SMG_05_F { price = 150; }; + class LMG_03_F { price = 300; }; + class arifle_MX_khk_F { price = 150; }; + class arifle_MX_GL_khk_F { price = 150; }; + class arifle_MXC_khk_F { price = 135; }; + class arifle_MXM_khk_F { price = 150; }; + class srifle_LRR_tna_F { price = 185; }; + class srifle_GM6_ghex_F { price = 190; }; + class srifle_DMR_07_blk_F { price = 175; }; + class srifle_DMR_07_hex_F { price = 175; }; + class srifle_DMR_07_ghex_F { price = 175; }; + class arifle_AK12_F { price = 165; }; + class arifle_AK12_GL_F { price = 170; }; + class arifle_AKM_F { price = 140; }; + class arifle_AKM_FL_F { price = 140; }; + class arifle_AKS_F { price = 135; }; + class arifle_ARX_blk_F { price = 190; }; + class arifle_ARX_ghex_F { price = 190; }; + class arifle_ARX_hex_F { price = 190; }; + class arifle_CTAR_blk_F { price = 145; }; + class arifle_CTAR_hex_F { price = 145; }; + class arifle_CTAR_ghex_F { price = 145; }; + class arifle_CTAR_GL_blk_F { price = 145; }; + class arifle_CTARS_blk_F { price = 145; }; + class arifle_CTARS_ghex_F { price = 145; }; + class arifle_CTARS_hex_F { price = 145; }; + class arifle_SPAR_01_blk_F { price = 140; }; + class arifle_SPAR_01_khk_F { price = 140; }; + class arifle_SPAR_01_snd_F { price = 140; }; + class arifle_SPAR_01_GL_blk_F { price = 150; }; + class arifle_SPAR_01_GL_khk_F { price = 150; }; + class arifle_SPAR_01_GL_snd_F { price = 150; }; + class arifle_SPAR_02_blk_F { price = 155; }; + class arifle_SPAR_02_khk_F { price = 155; }; + class arifle_SPAR_02_snd_F { price = 155; }; + class arifle_SPAR_03_blk_F { price = 160; }; + class arifle_SPAR_03_khk_F { price = 160; }; + class arifle_SPAR_03_snd_F { price = 160; }; + class muzzle_snds_H_khk_F { price = 5; }; + class muzzle_snds_H_snd_F { price = 5; }; + class muzzle_snds_58_blk_F { price = 2; }; + class muzzle_snds_m_khk_F { price = 1; }; + class muzzle_snds_m_snd_F { price = 1; }; + class muzzle_snds_B_khk_F { price = 5; }; + class muzzle_snds_B_snd_F { price = 5; }; + class muzzle_snds_58_wdm_F { price = 2; }; + class muzzle_snds_65_TI_blk_F { price = 7; }; + class muzzle_snds_65_TI_hex_F { price = 7; }; + class muzzle_snds_65_TI_ghex_F { price = 7; }; + class muzzle_snds_H_MG_blk_F { price = 2; }; + class muzzle_snds_H_MG_khk_F { price = 2; }; + class optic_Arco_blk_F { price = 10; }; + class optic_Arco_ghex_F { price = 10; }; + class optic_DMS_ghex_F { price = 15; }; + class optic_Hamr_khk_F { price = 20; }; + class optic_ERCO_blk_F { price = 12; }; + class optic_ERCO_khk_F { price = 12; }; + class optic_ERCO_snd_F { price = 12; }; + class optic_SOS_khk_F { price = 20; }; + class optic_LRPS_tna_F { price = 30; }; + class optic_LRPS_ghex_F { price = 30; }; + class optic_Holosight_blk_F { price = 5; }; + class optic_Holosight_khk_F { price = 5; }; + class optic_Holosight_smg_blk_F { price = 5; }; + class bipod_01_F_khk { price = 2; }; + class 30Rnd_9x21_Mag_SMG_02 { price = 3;}; + class 30Rnd_9x21_Mag_SMG_02_Tracer_Red { price = 2; }; + class 30Rnd_9x21_Mag_SMG_02_Tracer_Yellow { price = 2; }; + class 30Rnd_9x21_Mag_SMG_02_Tracer_Green { price = 2; }; + class 30Rnd_580x42_Mag_F { price = 2; }; + class 30Rnd_580x42_Mag_Tracer_F { price = 2; }; + class 100Rnd_580x42_Mag_F { price = 2; }; + class 100Rnd_580x42_Mag_Tracer_F { price = 2; }; + class 20Rnd_650x39_Cased_Mag_F { price = 2; }; + class 10Rnd_50BW_Mag_F { price = 4; }; + class 150Rnd_556x45_Drum_Mag_F { price = 8; }; + class 150Rnd_556x45_Drum_Mag_Tracer_F { price = 8; }; + class 30Rnd_762x39_Mag_F { price = 3; }; + class 30Rnd_762x39_Mag_Green_F { price = 3; }; + class 30Rnd_762x39_Mag_Tracer_F { price = 3; }; + class 30Rnd_762x39_Mag_Tracer_Green_F { price = 3; }; + class 30Rnd_545x39_Mag_F { price = 2; }; + class 30Rnd_545x39_Mag_Green_F { price = 2; }; + class 30Rnd_545x39_Mag_Tracer_F { price = 2; }; + class 30Rnd_545x39_Mag_Tracer_Green_F { price = 2; }; + class 200Rnd_556x45_Box_F { price = 9; }; + class 200Rnd_556x45_Box_Red_F { price = 9; }; + class 200Rnd_556x45_Box_Tracer_F { price = 9; }; + class 200Rnd_556x45_Box_Tracer_Red_F { price = 9; }; + class 10Rnd_9x21_Mag { price = 2; }; + class B_Bergen_mcamo_F { price = 40; }; + class B_Bergen_dgtl_F { price = 40; }; + class B_Bergen_hex_F { price = 40; }; + class B_Bergen_tna_F { price = 40; }; + class B_AssaultPack_tna_F { price = 10; }; + class B_Carryall_ghex_F { price = 30; }; + class B_FieldPack_ghex_F { price = 12; }; + class B_ViperHarness_base_F { price = 25; }; + class B_ViperHarness_blk_F { price = 25; }; + class B_ViperHarness_ghex_F { price = 25; }; + class B_ViperHarness_hex_F { price = 25; }; + class B_ViperHarness_khk_F { price = 25; }; + class B_ViperHarness_oli_F { price = 25; }; + class B_ViperLightHarness_base_F { price = 20; }; + class B_ViperLightHarness_blk_F { price = 20; }; + class B_ViperLightHarness_ghex_F { price = 20; }; + class B_ViperLightHarness_hex_F { price = 20; }; + class B_ViperLightHarness_khk_F { price = 20; }; + class B_ViperLightHarness_oli_F { price = 20; }; }; /*[[[end]]]*/ diff --git a/Sources/epoch_config/build.hpp b/Sources/epoch_config/build.hpp index 54aca9ec..d492c6ef 100644 --- a/Sources/epoch_config/build.hpp +++ b/Sources/epoch_config/build.hpp @@ -1 +1 @@ -build=668; +build=672; diff --git a/Sources/epoch_server/build.hpp b/Sources/epoch_server/build.hpp index 54aca9ec..d492c6ef 100644 --- a/Sources/epoch_server/build.hpp +++ b/Sources/epoch_server/build.hpp @@ -1 +1 @@ -build=668; +build=672; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf index 70155baf..57ba3528 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf @@ -14,6 +14,10 @@ */ _maxTTL = parseNumber EPOCH_expiresBuilding; +_serverSettingsConfig = configFile >> "CfgEpochServer"; +_UseIndestructible = [_serverSettingsConfig, "UseIndestructible", false] call EPOCH_fnc_returnConfigEntry; +_IndestructibleBaseObjects = [_serverSettingsConfig, "IndestructibleBaseObjects", []] call EPOCH_fnc_returnConfigEntry; +_ExceptedBaseObjects = [_serverSettingsConfig, "ExceptedBaseObjects", []] call EPOCH_fnc_returnConfigEntry; _cfgEpochClient = 'CfgEpochClient' call EPOCH_returnConfig; _cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig; _buildingJammerRange = getNumber(_cfgEpochClient >> "buildingJammerRange"); @@ -74,6 +78,15 @@ for "_i" from 0 to _this do { if (isClass (configFile >> "CfgVehicles" >> _class) && (_damage < 1) && !(_class isKindOf 'Constructions_lockedstatic_F')) then { _baseObj = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"]; + if (_UseIndestructible) then { + if ({_baseObj iskindof _x} count _ExceptedBaseObjects == 0) then { + { + if (_baseObj iskindof _x) exitwith { + _baseObj allowdamage false; + }; + } foreach _IndestructibleBaseObjects; + }; + }; _baseObj setVectorDirAndUp _worldspace; _baseObj setposATL _location; diff --git a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf index 808f1af9..70762910 100644 --- a/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf +++ b/Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf @@ -23,6 +23,10 @@ _playerUID = getPlayerUID _player; if (!isNull ropeAttachedTo _vehicle) exitWith{}; _oemType = typeOf _vehicle; +_serverSettingsConfig = configFile >> "CfgEpochServer"; +_UseIndestructible = [_serverSettingsConfig, "UseIndestructible", false] call EPOCH_fnc_returnConfigEntry; +_IndestructibleBaseObjects = [_serverSettingsConfig, "IndestructibleBaseObjects", []] call EPOCH_fnc_returnConfigEntry; +_ExceptedBaseObjects = [_serverSettingsConfig, "ExceptedBaseObjects", []] call EPOCH_fnc_returnConfigEntry; _cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig; _staticClassConfig = (_cfgBaseBuilding >> _oemType >> "staticClass"); if (isText _staticClassConfig) then { @@ -39,7 +43,17 @@ if (isText _staticClassConfig) then { _vehiclePos = getposATL _vehicle; _storageObj = [_staticClass,_vehicle] call EPOCH_swapBuilding; - + + if (_UseIndestructible) then { + if ({_storageObj iskindof _x} count _ExceptedBaseObjects == 0) then { + { + if (_storageObj iskindof _x) exitwith { + _storageObj allowdamage false; + }; + } foreach _IndestructibleBaseObjects; + }; + }; + if (getNumber(_cfgBaseBuilding >> _staticClass >> "isSecureStorage") == 1) then{ _storageObj setVariable["EPOCH_Locked", false, true]; }; @@ -73,6 +87,17 @@ if (isText _staticClassConfig) then { if (_objSlot != -1) then { _newVehicle = [_vehicle, false] call EPOCH_server_simulSwap; + + if (_UseIndestructible) then { + if ({_newVehicle iskindof _x} count _ExceptedBaseObjects == 0) then { + { + if (_newVehicle iskindof _x) exitwith { + _newVehicle allowdamage false; + }; + } foreach _IndestructibleBaseObjects; + }; + }; + _newVehicle setVariable["BUILD_OWNER", _playerUID, true]; _newVehicle call EPOCH_saveBuilding; }; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf index ce92226c..cb15e0e0 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf @@ -21,22 +21,18 @@ switch (_command) do { case 'kick': { _playerUID = _param1; if (_playerUID isEqualType objNull) then{ - if (!isNull(_playerUID)) then{ - _playerUID = getPlayerUID _playerUID; - }; + _playerUID = getPlayerUID _playerUID; }; - if (_playerUID != '') then{ + if !(_playerUID isEqualTo '') then{ 'epochserver' callExtension format['911|%1|%2', _playerUID, _param2]; }; }; case 'ban': { _playerUID = _param1; if (_playerUID isEqualType objNull) then{ - if (!isNull(_playerUID)) then{ - _playerUID = getPlayerUID _playerUID; - }; + _playerUID = getPlayerUID _playerUID; }; - if (_playerUID != '') then{ + if !(_playerUID isEqualTo '') then{ 'epochserver' callExtension format['921|%1|%2|%3', _playerUID, _param2, _param3]; }; }; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf index 4fa7b36f..31da38ad 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf @@ -15,6 +15,11 @@ private ["_inventory","_location","_dir","_textures","_colors","_textureSelectionIndex","_selections","_count","_color","_cfgBaseBuilding","_objTypes","_objQty","_wMags","_wMagsArray","_attachments","_magazineSizeMax","_magazineName","_magazineSize","_qty","_objType","_marker","_class_raw","_damage","_class","_worldspace","_wsCount","_vehicle","_arr","_storageSlotIndex","_vehHiveKey","_response","_diag"]; params [["_maxStorageLimit",0]]; +_serverSettingsConfig = configFile >> "CfgEpochServer"; +_UseIndestructible = [_serverSettingsConfig, "UseIndestructible", false] call EPOCH_fnc_returnConfigEntry; +_IndestructibleBaseObjects = [_serverSettingsConfig, "IndestructibleBaseObjects", []] call EPOCH_fnc_returnConfigEntry; +_ExceptedBaseObjects = [_serverSettingsConfig, "ExceptedBaseObjects", []] call EPOCH_fnc_returnConfigEntry; + _diag = diag_tickTime; EPOCH_StorageSlots = []; for "_i" from 1 to _maxStorageLimit do { @@ -67,6 +72,16 @@ for "_i" from 1 to _maxStorageLimit do { _vehicle = createVehicle[_class, [0,0,0], [], 0, "CAN_COLLIDE"]; + if (_UseIndestructible) then { + if ({_vehicle iskindof _x} count _ExceptedBaseObjects == 0) then { + { + if (_vehicle iskindof _x) exitwith { + _vehicle allowdamage false; + }; + } foreach _IndestructibleBaseObjects; + }; + }; + if (_dir isEqualType []) then { _vehicle setVectorDirAndUp _dir; _vehicle setposATL _location; diff --git a/Sources/epoch_server/init/server_init.sqf b/Sources/epoch_server/init/server_init.sqf index 52c4348d..42469024 100644 --- a/Sources/epoch_server/init/server_init.sqf +++ b/Sources/epoch_server/init/server_init.sqf @@ -80,17 +80,7 @@ addMissionEventHandler ["PlayerConnected", { ['Connected', [_uid, _name]] call EPOCH_fnc_server_hiveLog; }]; -onPlayerDisconnected { - params ["_id", "_uid", "_name"]; - _unit = objNull; - { - if ((_x getVariable["PUID", "0"]) == _uid) exitWith { - _unit = _x; - }; - } forEach allUnits; - [_unit,_id,_uid,_name] call EPOCH_server_onPlayerDisconnect -}; -// addMissionEventHandler ["HandleDisconnect", {_this call EPOCH_server_onPlayerDisconnect}]; +addMissionEventHandler ["HandleDisconnect", {_this call EPOCH_server_onPlayerDisconnect}]; diag_log "Epoch: Setup Side Settings"; //set side status diff --git a/Sources/epoch_server_core/build.hpp b/Sources/epoch_server_core/build.hpp index 54aca9ec..d492c6ef 100644 --- a/Sources/epoch_server_core/build.hpp +++ b/Sources/epoch_server_core/build.hpp @@ -1 +1 @@ -build=668; +build=672; diff --git a/Sources/epoch_server_settings/build.hpp b/Sources/epoch_server_settings/build.hpp index 54aca9ec..d492c6ef 100644 --- a/Sources/epoch_server_settings/build.hpp +++ b/Sources/epoch_server_settings/build.hpp @@ -1 +1 @@ -build=668; +build=672; diff --git a/build.txt b/build.txt index 877ad42a..3d406164 100644 --- a/build.txt +++ b/build.txt @@ -1 +1 @@ -668 +672