Merge pull request #684 from EpochModTeam/experimental

release 0.4 b672
This commit is contained in:
vbawol 2016-12-13 07:53:09 -06:00 committed by GitHub
commit 241a247c08
43 changed files with 247 additions and 89 deletions

View File

@ -40,6 +40,22 @@ removevehmagazinesturret[] = { // Remove these Magazines from the given Turret f
{"200Rnd_40mm_G_belt",{0}} {"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 // Traders
taxRate = 0.1; // controls the price increase for purchases 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. 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.

View File

@ -121,21 +121,23 @@ switch _interactOption do {
if (_otherObjects isEqualTo []) then { if (_otherObjects isEqualTo []) then {
_object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"]; _object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"];
_object setDir ((getDir player) - 180); _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 { if (([player, _item] call BIS_fnc_invRemove) == 1) then {
[_object] spawn EPOCH_simulSwap; [_object] spawn EPOCH_simulSwap;
}; };
} else { }
else {
["Building Disallowed: Frequency Unstable", 5] call Epoch_message; ["Building Disallowed: Frequency Unstable", 5] call Epoch_message;
}; };
} else { }
else {
_object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"]; _object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"];
_object setDir ((getDir player) - 180); _object setDir ((getDir player) - 180);
[format["Press '%1' to drop object.", "1"], 5] call Epoch_message;
[_object,_item] spawn EPOCH_staticMove; [_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; ["Need Energy", 5] call Epoch_message;
}; };
}; };

View File

@ -28,8 +28,8 @@ private ["_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountL
_buildingAllowed = true; _buildingAllowed = true;
_ownedJammerExists = false; _ownedJammerExists = false;
_scl = false; _useSplitCountLimits = false;
_gcl = true; _useGroupCountLimits = true;
_nearestJammer = objNull; _nearestJammer = objNull;
// reject building if in vehicle // reject building if in vehicle
@ -48,8 +48,8 @@ _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");
if(getNumber(_config >> "useGroupCountLimits") == 0)then{_gcl=false}; if(getNumber(_config >> "useGroupCountLimits") == 0)then{_useGroupCountLimits=false};
if(getNumber(_config >> "splitCountLimits") == 1)then{_scl=true}; if(getNumber(_config >> "splitCountLimits") == 1)then{_useSplitCountLimits=true};
if(_buildingJammerRange == 0)then{_buildingJammerRange = 75}; if(_buildingJammerRange == 0)then{_buildingJammerRange = 75};
if(_buildingCountLimit == 0)then{_buildingCountLimit = 200}; if(_buildingCountLimit == 0)then{_buildingCountLimit = 200};
if(_buildingCountLeader == 0)then{_buildingCountLeader = _buildingCountLimit}; if(_buildingCountLeader == 0)then{_buildingCountLeader = _buildingCountLimit};
@ -81,68 +81,55 @@ if !(_jammer isEqualTo []) then {
["Building Disallowed: Existing Jammer Signal", 5] call Epoch_message; ["Building Disallowed: Existing Jammer Signal", 5] call Epoch_message;
}; };
} foreach _jammer; } foreach _jammer;
} else { }
else {
{ {
if (alive _x && (_x distance player) <= _buildingJammerRange) exitWith{ if (alive _x && (_x distance player) <= _buildingJammerRange) exitWith{
_nearestJammer = _x; _nearestJammer = _x;
}; };
} foreach _jammer; } foreach _jammer;
if !(isNull _nearestJammer) then { if !(isNull _nearestJammer) then {
if ((getPosATL player) select 2 < _maxBuildingHeight) then { if !((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) exitwith {
if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
_ownedJammerExists = true;
} else {
_buildingAllowed = false; _buildingAllowed = false;
["Building Disallowed: Frequency Blocked", 5] call Epoch_message; ["Building Disallowed: Frequency Blocked", 5] call Epoch_message;
}; };
if(_gcl)then{ _ownedJammerExists = true;
if(_useGroupCountLimits)then{
_membercount = 0; _membercount = 0;
if(count Epoch_my_Group > 0)then{_membercount = count (Epoch_my_Group select 3) + count (Epoch_my_Group select 4)} 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); _storageCountLimit = _storageCountLeader + (_storageCountPerMember * _membercount);
if((_storageCountLeader + _storageCountPerMember) > _storageCountLimit)then{_storageCountLimit = _storageCountLeader} _buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount);
}; };
if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F",_ghostClass],_buildingJammerRange]) >= _storageCountLimit)then{ 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; _buildingAllowed = false;
[format["Building Disallowed: Max. %1 Storage Objects",_storageCountLimit],5] call Epoch_message [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
_buildingAllowed = false;
["Building Disallowed: Frequency Unstable, Wait A Moment",5] call Epoch_message
}; };
}
if(_gcl)then{_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount)}; else {
if(_scl)then{ if ((count (nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith {
if((count nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{
_buildingAllowed = false; _buildingAllowed = false;
[format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message [format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message
};
};
} }
}else{ else {
if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{ 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; _buildingAllowed = false;
[format["Building Disallowed: Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message [format["Building Disallowed, Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message
} };
} };
}] if !((getPosATL player) select 2 < _maxBuildingHeight) exitwith {
}else{
_buildingAllowed = false; _buildingAllowed = false;
["Building Disallowed: Max building height reached",5] call Epoch_message; ["Building Disallowed: Max building height reached",5] call Epoch_message;
}; };
}; };
}; };
}else{ }
else {
if (_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then { if (_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then {
// TODO: rework not ideal to use allmissionobjects // TODO: rework not ideal to use allmissionobjects
_alljammer = allmissionobjects 'PlotPole_EPOCH'; _alljammer = allmissionobjects 'PlotPole_EPOCH';
@ -166,9 +153,8 @@ if (!_ownedJammerExists) then{
if (_limitNearby > 0) then{ if (_limitNearby > 0) then{
// remove current target from objects // remove current target from objects
_objectCount = count (nearestObjects[player, [_staticClass, _simulClass], _buildingJammerRange] - [_obj]); _objectscount = count (nearestObjects[player, [_staticClass, _simulClass], _buildingJammerRange]-[_obj]);
// TODO: not properly limiting simulated objects if (_objectscount >= _limitNearby) then{
if (_objectCount >= _limitNearby) then{
_buildingAllowed = false; _buildingAllowed = false;
[format["Building Disallowed: Limit %1", _limitNearby], 5] call Epoch_message; [format["Building Disallowed: Limit %1", _limitNearby], 5] call Epoch_message;
}; };

View File

@ -37,7 +37,7 @@ _isSnap = false;
if (EPOCH_playerEnergy <= 0) exitWith { if (EPOCH_playerEnergy <= 0) exitWith {
["Need Energy", 5] call Epoch_message; ["Need Energy", 5] call Epoch_message;
}; };
if !(_objType call EPOCH_isBuildAllowed) exitWith{}; if !(_object call EPOCH_isBuildAllowed) exitWith{};
EPOCH_simulSwap_Lock = true; EPOCH_simulSwap_Lock = true;
_return = _object; _return = _object;

View File

@ -42,7 +42,7 @@ if (EPOCH_playerEnergy <= 0) exitWith{
}; };
// Remove object if not allowed // Remove object if not allowed
if !("" call EPOCH_isBuildAllowed) exitWith{ deleteVehicle _object }; if !(_object call EPOCH_isBuildAllowed) exitWith{ deleteVehicle _object };
EPOCH_simulSwap_Lock = true; EPOCH_simulSwap_Lock = true;
_objType = typeOf _object; _objType = typeOf _object;
@ -117,7 +117,7 @@ if (_class != "") then {
_rejectMove = false; _rejectMove = false;
if ((diag_tickTime - _lastCheckTime) > 10) then { if ((diag_tickTime - _lastCheckTime) > 10) then {
_lastCheckTime = diag_tickTime; _lastCheckTime = diag_tickTime;
_rejectMove = !(_objType call EPOCH_isBuildAllowed); _rejectMove = !(_object call EPOCH_isBuildAllowed);
}; };
if (_rejectMove) exitWith{ if (_rejectMove) exitWith{
deleteVehicle EPOCH_target; deleteVehicle EPOCH_target;

View File

@ -4366,6 +4366,121 @@ class CfgPricing
{ {
price = 10; 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]]]*/ /*[[[end]]]*/

View File

@ -1 +1 @@
build=668; build=672;

View File

@ -1 +1 @@
build=668; build=672;

View File

@ -14,6 +14,10 @@
*/ */
_maxTTL = parseNumber EPOCH_expiresBuilding; _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; _cfgEpochClient = 'CfgEpochClient' call EPOCH_returnConfig;
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig; _cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
_buildingJammerRange = getNumber(_cfgEpochClient >> "buildingJammerRange"); _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 { if (isClass (configFile >> "CfgVehicles" >> _class) && (_damage < 1) && !(_class isKindOf 'Constructions_lockedstatic_F')) then {
_baseObj = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"]; _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 setVectorDirAndUp _worldspace;
_baseObj setposATL _location; _baseObj setposATL _location;

View File

@ -23,6 +23,10 @@ _playerUID = getPlayerUID _player;
if (!isNull ropeAttachedTo _vehicle) exitWith{}; if (!isNull ropeAttachedTo _vehicle) exitWith{};
_oemType = typeOf _vehicle; _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; _cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
_staticClassConfig = (_cfgBaseBuilding >> _oemType >> "staticClass"); _staticClassConfig = (_cfgBaseBuilding >> _oemType >> "staticClass");
if (isText _staticClassConfig) then { if (isText _staticClassConfig) then {
@ -40,6 +44,16 @@ if (isText _staticClassConfig) then {
_storageObj = [_staticClass,_vehicle] call EPOCH_swapBuilding; _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{ if (getNumber(_cfgBaseBuilding >> _staticClass >> "isSecureStorage") == 1) then{
_storageObj setVariable["EPOCH_Locked", false, true]; _storageObj setVariable["EPOCH_Locked", false, true];
}; };
@ -73,6 +87,17 @@ 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;
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 setVariable["BUILD_OWNER", _playerUID, true];
_newVehicle call EPOCH_saveBuilding; _newVehicle call EPOCH_saveBuilding;
}; };

View File

@ -21,22 +21,18 @@ switch (_command) do {
case 'kick': { case 'kick': {
_playerUID = _param1; _playerUID = _param1;
if (_playerUID isEqualType objNull) then{ if (_playerUID isEqualType objNull) then{
if (!isNull(_playerUID)) then{
_playerUID = getPlayerUID _playerUID; _playerUID = getPlayerUID _playerUID;
}; };
}; if !(_playerUID isEqualTo '') then{
if (_playerUID != '') then{
'epochserver' callExtension format['911|%1|%2', _playerUID, _param2]; 'epochserver' callExtension format['911|%1|%2', _playerUID, _param2];
}; };
}; };
case 'ban': { case 'ban': {
_playerUID = _param1; _playerUID = _param1;
if (_playerUID isEqualType objNull) then{ if (_playerUID isEqualType objNull) then{
if (!isNull(_playerUID)) then{
_playerUID = getPlayerUID _playerUID; _playerUID = getPlayerUID _playerUID;
}; };
}; if !(_playerUID isEqualTo '') then{
if (_playerUID != '') then{
'epochserver' callExtension format['921|%1|%2|%3', _playerUID, _param2, _param3]; 'epochserver' callExtension format['921|%1|%2|%3', _playerUID, _param2, _param3];
}; };
}; };

View File

@ -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"]; 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]]; 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; _diag = diag_tickTime;
EPOCH_StorageSlots = []; EPOCH_StorageSlots = [];
for "_i" from 1 to _maxStorageLimit do { 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"]; _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 { if (_dir isEqualType []) then {
_vehicle setVectorDirAndUp _dir; _vehicle setVectorDirAndUp _dir;
_vehicle setposATL _location; _vehicle setposATL _location;

View File

@ -80,17 +80,7 @@ addMissionEventHandler ["PlayerConnected", {
['Connected', [_uid, _name]] call EPOCH_fnc_server_hiveLog; ['Connected', [_uid, _name]] call EPOCH_fnc_server_hiveLog;
}]; }];
onPlayerDisconnected { addMissionEventHandler ["HandleDisconnect", {_this call EPOCH_server_onPlayerDisconnect}];
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}];
diag_log "Epoch: Setup Side Settings"; diag_log "Epoch: Setup Side Settings";
//set side status //set side status

View File

@ -1 +1 @@
build=668; build=672;

View File

@ -1 +1 @@
build=668; build=672;

View File

@ -1 +1 @@
668 672