mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Prevent Trader in PlotRange
This commit is contained in:
parent
2d63886e5d
commit
4ba1ae9cc8
@ -16,7 +16,7 @@
|
||||
private [ "_TraderGodMode","_StaticTraderItemPurge","_DynamicTraderRespawnCount","_TraderItemsDeleteRestart","_TraderInit","_TraderItemsClean","_newstock","_agent","_aiTables",
|
||||
"_arr","_config","_currentStock","_existingStock","_indexStock","_markers","_objHiveKey","_pos","_randomAIUniform","_response","_response2","_schedule",
|
||||
"_serverSettingsConfig","_staticTrader","_staticTradersArrCount","_staticTradersArray","_storedVehicleLimit","_traderSlotIndex","_work","_arrchanged","_deleteat","_maxrnd",
|
||||
"_WinterDeco","_HelloweenDeco"
|
||||
"_WinterDeco","_HelloweenDeco","_buildingJammerRange"
|
||||
];
|
||||
//[[[end]]]
|
||||
params [["_maxTraderLimit",0]];
|
||||
@ -34,6 +34,7 @@ _StaticTraderItemPurge = [_serverSettingsConfig, "StaticTraderItemPurge", []] ca
|
||||
_DynamicTraderRespawnCount = [_serverSettingsConfig, "DynamicTraderRespawnCount", 150] call EPOCH_fnc_returnConfigEntry;
|
||||
_TraderItemCountPerItem = [_serverSettingsConfig, "TraderItemCountPerItem", [100,100]] call EPOCH_fnc_returnConfigEntry;
|
||||
_TraderItemsDeleteRestart = [_serverSettingsConfig, "TraderItemsDeleteRestart", []] call EPOCH_fnc_returnConfigEntry;
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange", 75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
_WinterDeco = (Epoch_ServerRealtime select 1) isequalto 12;
|
||||
_HelloweenDeco = ((Epoch_ServerRealtime select 1) == 10 && (Epoch_ServerRealtime select 2) >= 24) || ((Epoch_ServerRealtime select 1) == 11 && (Epoch_ServerRealtime select 2) <= 3);
|
||||
@ -199,7 +200,7 @@ for "_i" from 0 to (_maxTraderLimit-1) do {
|
||||
if (daytime > (_schedule select 0) && daytime < (_schedule select 1)) then {
|
||||
_pos = (_work select 0);
|
||||
};
|
||||
if !(count (_arr select 0) >= _DynamicTraderRespawnCount) then {
|
||||
if (!(count (_arr select 0) >= _DynamicTraderRespawnCount) && (nearestobjects [_pos,["Plotpole_EPOCH"],_buildingJammerRange]) isequalto []) then {
|
||||
EPOCH_TraderSlots deleteAt _traderSlotIndex;
|
||||
_agent = objnull;
|
||||
if (_WinterDeco) then {
|
||||
|
@ -15,7 +15,7 @@
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private [ "_serverSettingsConfig","_acceptableBlds","_agent","_aiClass","_aiTables","_buildingHome","_buildingWork","_buildings","_checkBuilding","_config","_endTime","_home",
|
||||
"_homes","_markers","_objHiveKey","_pos","_position","_randomAIUniform","_return","_schedule","_slot","_spawnCount","_startTime","_traderHomes","_usedBuildings","_work",
|
||||
"_WinterDeco","_HelloweenDeco"
|
||||
"_WinterDeco","_HelloweenDeco","_buildingJammerRange"
|
||||
];
|
||||
//[[[end]]]
|
||||
_serverSettingsConfig = configFile >> "CfgEpochServer";
|
||||
@ -25,6 +25,7 @@ _config = (configFile >> "CfgEpoch" >> worldName);
|
||||
_aiTables = getArray(_config >> "traderUniforms");
|
||||
_acceptableBlds = getArray(_config >> "traderBlds");
|
||||
_traderHomes = getArray(_config >> "traderHomes");
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange", 75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
_WinterDeco = (Epoch_ServerRealtime select 1) isequalto 12;
|
||||
_HelloweenDeco = ((Epoch_ServerRealtime select 1) == 10 && (Epoch_ServerRealtime select 2) >= 24) || ((Epoch_ServerRealtime select 1) == 11 && (Epoch_ServerRealtime select 2) <= 3);
|
||||
@ -55,46 +56,48 @@ for "_i" from 1 to _spawnCount do {
|
||||
_usedBuildings pushBack _buildingWork;
|
||||
_home = selectRandom (_buildingHome buildingPos -1);
|
||||
_work = selectRandom (_buildingWork buildingPos -1);
|
||||
_startTime = floor(random 16);
|
||||
_endTime = _startTime + 8;
|
||||
_schedule = [_startTime, _endTime];
|
||||
_pos = _home;
|
||||
if (daytime > _startTime && daytime < _endTime) then {
|
||||
_pos = _work;
|
||||
};
|
||||
_agent = objnull;
|
||||
if (_WinterDeco) then {
|
||||
_agent = createvehicle ["snowmanDeco_EPOCH", _pos, [], 0, "NONE"];
|
||||
}
|
||||
else {
|
||||
_agent = createAgent [_aiClass, _pos, [], 0, "CAN_COLLIDE"];
|
||||
addToRemainsCollector[_agent];
|
||||
_agent addUniform _randomAIUniform;
|
||||
if !(EPOCH_forceStaticTraders) then {
|
||||
[_agent, _home, [_work, _schedule]] execFSM "\epoch_server\system\Trader_brain.fsm";
|
||||
if ((nearestobjects [_home,["Plotpole_EPOCH"],_buildingJammerRange]) isequalto [] && (nearestobjects [_work,["Plotpole_EPOCH"],_buildingJammerRange]) isequalto []) then {
|
||||
_startTime = floor(random 16);
|
||||
_endTime = _startTime + 8;
|
||||
_schedule = [_startTime, _endTime];
|
||||
_pos = _home;
|
||||
if (daytime > _startTime && daytime < _endTime) then {
|
||||
_pos = _work;
|
||||
};
|
||||
if (_HelloweenDeco) then {
|
||||
removeHeadgear _agent;
|
||||
_agent addHeadgear (selectrandom ["thor_mask_epoch","iron_mask_epoch","wolf_mask_epoch","pkin_mask_epoch","clown_mask_epoch","hockey_mask_epoch","plague_mask_epoch","ghostface_mask_epoch","skull_mask_epoch","witch_mask_epoch"]);
|
||||
_agent = objnull;
|
||||
if (_WinterDeco) then {
|
||||
_agent = createvehicle ["snowmanDeco_EPOCH", _pos, [], 0, "NONE"];
|
||||
}
|
||||
else {
|
||||
_agent = createAgent [_aiClass, _pos, [], 0, "CAN_COLLIDE"];
|
||||
addToRemainsCollector[_agent];
|
||||
_agent addUniform _randomAIUniform;
|
||||
if !(EPOCH_forceStaticTraders) then {
|
||||
[_agent, _home, [_work, _schedule]] execFSM "\epoch_server\system\Trader_brain.fsm";
|
||||
};
|
||||
if (_HelloweenDeco) then {
|
||||
removeHeadgear _agent;
|
||||
_agent addHeadgear (selectrandom ["thor_mask_epoch","iron_mask_epoch","wolf_mask_epoch","pkin_mask_epoch","clown_mask_epoch","hockey_mask_epoch","plague_mask_epoch","ghostface_mask_epoch","skull_mask_epoch","witch_mask_epoch"]);
|
||||
};
|
||||
};
|
||||
_agent allowdamage !_TraderGodMode;
|
||||
if (surfaceiswater _pos) then {
|
||||
_agent setPosASL _pos;
|
||||
}
|
||||
else {
|
||||
_agent setPosATL _pos;
|
||||
};
|
||||
_slot = EPOCH_TraderSlots deleteAt 0;
|
||||
_agent setVariable["AI_SLOT", _slot, true];
|
||||
_agent setVariable["AI_ITEMS", EPOCH_starterTraderItems, true];
|
||||
_objHiveKey = format["%1:%2", (call EPOCH_fn_InstanceID), _slot];
|
||||
["AI_ITEMS", _objHiveKey, EPOCH_expiresAIdata, EPOCH_starterTraderItems] call EPOCH_fnc_server_hiveSETEX;
|
||||
_agent addEventHandler["Killed", { _this call EPOCH_server_traderKilled; }];
|
||||
["AI", _objHiveKey, [_aiClass, _home, [_work, _schedule]] ] call EPOCH_fnc_server_hiveSET;
|
||||
if (EPOCH_SHOW_TRADERS) then {
|
||||
_markers = ["NewDynamicTrader",_pos] call EPOCH_server_createGlobalMarkerSet;
|
||||
_agent setVariable["MARKER_REF", _markers];
|
||||
};
|
||||
};
|
||||
_agent allowdamage !_TraderGodMode;
|
||||
if (surfaceiswater _pos) then {
|
||||
_agent setPosASL _pos;
|
||||
}
|
||||
else {
|
||||
_agent setPosATL _pos;
|
||||
};
|
||||
_slot = EPOCH_TraderSlots deleteAt 0;
|
||||
_agent setVariable["AI_SLOT", _slot, true];
|
||||
_agent setVariable["AI_ITEMS", EPOCH_starterTraderItems, true];
|
||||
_objHiveKey = format["%1:%2", (call EPOCH_fn_InstanceID), _slot];
|
||||
["AI_ITEMS", _objHiveKey, EPOCH_expiresAIdata, EPOCH_starterTraderItems] call EPOCH_fnc_server_hiveSETEX;
|
||||
_agent addEventHandler["Killed", { _this call EPOCH_server_traderKilled; }];
|
||||
["AI", _objHiveKey, [_aiClass, _home, [_work, _schedule]] ] call EPOCH_fnc_server_hiveSET;
|
||||
if (EPOCH_SHOW_TRADERS) then {
|
||||
_markers = ["NewDynamicTrader",_pos] call EPOCH_server_createGlobalMarkerSet;
|
||||
_agent setVariable["MARKER_REF", _markers];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user