arma2-epoch-server/@DayZ_Epoch_Server/addons/dayz_server/DZAI/compile/createRandomSpawns.sqf

56 lines
2.4 KiB
Plaintext
Raw Permalink Normal View History

2022-04-21 16:15:41 +03:00
private ["_maxRandomSpawns","_debugMarkers","_triggerArea","_attempts","_trigPos","_trigger","_markername","_marker"];
_maxRandomSpawns = _this;
_debugMarkers = ((!isNil "DZAI_debugMarkersEnabled") && {DZAI_debugMarkersEnabled});
_triggerArea = 600;
//waitUntil {sleep 1; !isNil "DZAI_locations_ready"};
if (DZAI_debugLevel > 0) then {diag_log format ["DZAI Debug: Attempting to place %1 random spawns on the map...",_maxRandomSpawns];};
for "_i" from 1 to _maxRandomSpawns do {
_attempts = 0;
_keepSearching = true;
_trigPos = [0,0,0];
while {
_keepSearching
} do {
_trigPos = ["DZAI_centerMarker",false,DZAI_randAreaBlacklist] call SHK_pos;
_attempts = _attempts + 1;
_keepSearching = ((count ((nearestLocations [_trigPos, ["Strategic"], 650])) > 0) && {_attempts < 3});
if (_keepSearching) then {uiSleep 0.25};
};
if (_attempts < 3) then {
_trigger = createTrigger ["EmptyDetector",_trigPos];
_location = createLocation ["Strategic",(getPosASL _trigger),600,600]; //Create temporary dynamic spawn blacklist area
_trigger setVariable ["triggerLocation",_location];
[_trigger,"DZAI_randTriggerArray"] call DZAI_updateSpawnCount;
_trigger setTriggerArea [_triggerArea, _triggerArea, 0, false];
_trigger setTriggerActivation ["ANY", "PRESENT", true];
_trigger setTriggerTimeout [5, 5, 5, true];
_trigger setTriggerStatements ["{isPlayer _x} count thisList > 0;","0 = [300,thisTrigger,thisList] call fnc_spawnBandits_random;", "[thisTrigger] spawn fnc_despawnBandits_random;"];
if (_debugMarkers) then {
_markername = str(_trigger);
_marker = createMarker[_markername,_trigPos];
_marker setMarkerShape "ELLIPSE";
_marker setMarkerType "Flag";
_marker setMarkerBrush "SOLID";
_marker setMarkerSize [_triggerArea, _triggerArea];
_marker setMarkerColor "ColorYellow";
_marker setMarkerAlpha 0.6;
DZAI_mapMarkerArray set [(count DZAI_mapMarkerArray),_marker];
};
_trigger setTriggerText format ["Random Spawn at %1",(mapGridPosition _trigger)];
_trigger setVariable ["timestamp",diag_tickTime];
if (DZAI_debugLevel > 0) then {diag_log format["DZAI Debug: Random spawn %1 of %2 placed at %3 (Retries: %4).",_i,_maxRandomSpawns,_trigPos,_attempts];};
//DZAI_randTriggerArray set [(count DZAI_randTriggerArray),_trigger];
} else {
if (DZAI_debugLevel > 0) then {diag_log format["DZAI Debug: Could not find suitable location to place random spawn %1 of %2.",_i,_maxRandomSpawns];};
};
uiSleep 3;
};