mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-18 09:32:02 +03:00
Prevent Zed + loot spawn in safezones
thanks BaroN for the idea
This commit is contained in:
@@ -39,27 +39,25 @@ if (_lootChance <= 0) exitWith {};
|
||||
_lootPos = getArray (_config >> "lootPos");
|
||||
_lootGroup = Loot_GetGroup(getText(_config >> "lootGroup"));
|
||||
|
||||
{
|
||||
//Get the world position of the spawn position
|
||||
_worldPos = _this modelToWorld _x;
|
||||
_worldPos set [2, 0 max (_worldPos select 2)];
|
||||
|
||||
//Delete existing lootpiles within 1m of spawn location if no player is right next to it
|
||||
if (!(_this call DZE_SafeZonePosCheck)) then {
|
||||
{
|
||||
if ({isPlayer _x} count (_x nearEntities ["CAManBase",4]) == 0) then {
|
||||
deleteVehicle _x;
|
||||
dayz_currentWeaponHolders = dayz_currentWeaponHolders - 1;
|
||||
//Get the world position of the spawn position
|
||||
_worldPos = _this modelToWorld _x;
|
||||
_worldPos set [2, 0 max (_worldPos select 2)];
|
||||
//Delete existing lootpiles within 1m of spawn location if no player is right next to it
|
||||
{
|
||||
if ({isPlayer _x} count (_x nearEntities ["CAManBase",4]) == 0) then {
|
||||
deleteVehicle _x;
|
||||
dayz_currentWeaponHolders = dayz_currentWeaponHolders - 1;
|
||||
};
|
||||
} foreach (_worldPos nearObjects ["ReammoBox", 1]);
|
||||
|
||||
if (_lootChance > random 1 && {dayz_currentWeaponHolders < dayz_maxMaxWeaponHolders}) then
|
||||
{
|
||||
Loot_SpawnGroup(_lootGroup, _worldPos);
|
||||
};
|
||||
}
|
||||
foreach (_worldPos nearObjects ["ReammoBox", 1]);
|
||||
|
||||
if (_lootChance > random 1 && {dayz_currentWeaponHolders < dayz_maxMaxWeaponHolders}) then
|
||||
{
|
||||
Loot_SpawnGroup(_lootGroup, _worldPos);
|
||||
};
|
||||
}
|
||||
foreach _lootPos;
|
||||
|
||||
} foreach _lootPos;
|
||||
};
|
||||
// EPOCH ADDITION
|
||||
// lootPosSmall are additional positions in lockers, on shelves, etc. for small objects only.
|
||||
// Example: soda cans, small ammo, pistols, bandage, etc.
|
||||
@@ -68,24 +66,25 @@ if (isArray (_config >> "lootPosSmall")) then {
|
||||
_lootPos = getArray (_config >> "lootPosSmall");
|
||||
_lootGroup = Loot_GetGroup((getText(_config >> "lootGroup")) + "Small");
|
||||
if (_lootGroup >= 1) then {
|
||||
{
|
||||
//Get the world position of the spawn position
|
||||
_worldPos = _this modelToWorld _x;
|
||||
_worldPos set [2, 0 max (_worldPos select 2)];
|
||||
|
||||
//Delete existing lootpiles within 1m of spawn location
|
||||
if (!(_this call DZE_SafeZonePosCheck)) then {
|
||||
{
|
||||
deleteVehicle _x;
|
||||
dayz_currentWeaponHolders = dayz_currentWeaponHolders - 1;
|
||||
}
|
||||
foreach (_worldPos nearObjects ["ReammoBox", 1]);
|
||||
//Get the world position of the spawn position
|
||||
_worldPos = _this modelToWorld _x;
|
||||
_worldPos set [2, 0 max (_worldPos select 2)];
|
||||
//Delete existing lootpiles within 1m of spawn location if no player is right next to it
|
||||
{
|
||||
if ({isPlayer _x} count (_x nearEntities ["CAManBase",4]) == 0) then {
|
||||
deleteVehicle _x;
|
||||
dayz_currentWeaponHolders = dayz_currentWeaponHolders - 1;
|
||||
};
|
||||
} foreach (_worldPos nearObjects ["ReammoBox", 1]);
|
||||
|
||||
if (_lootChance > random 1 && {dayz_currentWeaponHolders < dayz_maxMaxWeaponHolders}) then
|
||||
{
|
||||
Loot_SpawnGroup(_lootGroup, _worldPos);
|
||||
};
|
||||
}
|
||||
foreach _lootPos;
|
||||
if (_lootChance > random 1 && {dayz_currentWeaponHolders < dayz_maxMaxWeaponHolders}) then
|
||||
{
|
||||
Loot_SpawnGroup(_lootGroup, _worldPos);
|
||||
};
|
||||
} foreach _lootPos;
|
||||
};
|
||||
} else {
|
||||
diag_log format["Loot group small: %1 does not exist", ((getText(_config >> "lootGroup")) + "Small")];
|
||||
};
|
||||
|
||||
@@ -33,12 +33,13 @@ if (_canLoot ) then {
|
||||
//Walking Zombies
|
||||
_num = (round(random _max)) max _min; // + round(_max / 3);
|
||||
//diag_log ("Class: " + _type + " / Zombies: " + str(_unitTypes) + " / Walking: " + str(_num));
|
||||
|
||||
for "_i" from 0 to _num do
|
||||
{
|
||||
//_iPos = _obj modelToWorld _originalPos;
|
||||
if ((_maxlocalspawned < _maxControlledZombies) and (dayz_CurrentNearByZombies < dayz_maxNearByZombies) and (dayz_currentGlobalZombies < dayz_maxGlobalZeds)) then {
|
||||
[_originalPos,true,_unitTypes,_wreck] call zombie_generate;
|
||||
if(!(_originalPos call DZE_SafeZonePosCheck)) then {
|
||||
for "_i" from 0 to _num do
|
||||
{
|
||||
//_iPos = _obj modelToWorld _originalPos;
|
||||
if ((_maxlocalspawned < _maxControlledZombies) and (dayz_CurrentNearByZombies < dayz_maxNearByZombies) and (dayz_currentGlobalZombies < dayz_maxGlobalZeds)) then {
|
||||
[_originalPos,true,_unitTypes,_wreck] call zombie_generate;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -51,7 +52,7 @@ if (_canLoot ) then {
|
||||
{
|
||||
_Pos = [_x select 0, _x select 1, 0];
|
||||
_rnd = random 1;
|
||||
if (_rnd < _zombieChance) then {
|
||||
if (_rnd < _zombieChance && {!(_Pos call DZE_SafeZonePosCheck)}) then {
|
||||
_iPos = _obj modelToWorld _Pos;
|
||||
_nearByZed = {alive _x} count (_iPos nearEntities ["zZombie_Base",(((sizeOf _type) * 2) + 10)]) > 0;
|
||||
_nearByPlayer = ({isPlayer _x} count (_iPos nearEntities ["CAManBase",30])) > 0;
|
||||
|
||||
@@ -108,9 +108,7 @@ if !(dayz_playerUID in DZE_PlotManagementAdmins) then {
|
||||
_buildCheck = call _checkClass;
|
||||
|
||||
if (_buildCheck select 0) then {
|
||||
{
|
||||
if ((player distance (_x select 0)) < _buildCheck select 1) exitWith {_canBuild = false;};
|
||||
} count DZE_safeZonePosArray;
|
||||
_canBuild = !((getPosATL player) call DZE_SafeZonePosCheck);
|
||||
};
|
||||
|
||||
if !(_canBuild) exitWith {dayz_actionInProgress = false; format [localize "STR_EPOCH_PLAYER_166",_text,_buildCheck select 1] call dayz_rollingMessages; [false, _isPole];};
|
||||
|
||||
@@ -12,7 +12,7 @@ while {_counter < _amount} do {
|
||||
_type = "swarm_newBase"; //"_unitTypes call BIS_fnc_selectRandom;
|
||||
//_type = "Pastor";
|
||||
_position = [position _player,50,100,0] call fn_selectRandomLocation;
|
||||
|
||||
if(_position call DZE_SafeZonePosCheck) exitWith {};
|
||||
_agent = createAgent [_type, _position, [], 0, "NONE"];
|
||||
|
||||
_agent setVariable["agentObjectSwarm",_agent,true];
|
||||
|
||||
@@ -62,11 +62,11 @@ _cantSee = {
|
||||
_skipFOV = false;
|
||||
|
||||
if ((_maxlocalspawned < _maxControlledZombies) && (dayz_CurrentNearByZombies < dayz_maxNearByZombies) && (dayz_currentGlobalZombies < dayz_maxGlobalZeds)) then {
|
||||
if (_bypass) then {
|
||||
if (_bypass) then {
|
||||
_skipFOV = true;
|
||||
_position = [_position,3,20,1] call fn_selectRandomLocation;
|
||||
};
|
||||
|
||||
if(_position call DZE_SafeZonePosCheck) exitWith {};
|
||||
if (surfaceIsWater _position) exitWith { diag_log "Location is in Water Abort"; };
|
||||
|
||||
if ((_skipFOV) or {([_position, 15, 10, 70] call _cantSee)}) then {
|
||||
|
||||
Reference in New Issue
Block a user