Sorting out bugs in mission spawner and other functions
bug fixes coding efficiency improvements
This commit is contained in:
parent
69591a6c9b
commit
b369c1ae9d
@ -20,41 +20,50 @@ _obj = [];
|
|||||||
|
|
||||||
while {true} do
|
while {true} do
|
||||||
{
|
{
|
||||||
uiSleep blck_mainThreadUpdateInterval; // defined in custom_server\compiles\blck_variables.sqf
|
uiSleep 5; // defined in custom_server\compiles\blck_variables.sqf
|
||||||
if ((diag_tickTime - _timer5sec) > 5) then
|
if ((diag_tickTime - _timer5sec) > 5) then
|
||||||
{
|
{
|
||||||
[] call blck_fnc_vehicleMonitor;
|
[] call blck_fnc_vehicleMonitor;
|
||||||
_timer5sec = diag_tickTime;
|
_timer5sec = diag_tickTime;
|
||||||
};
|
};
|
||||||
if ((diag_tickTime - _timer1min) > 60) then
|
if ((diag_tickTime - _timer1min) > 15) then
|
||||||
{
|
{
|
||||||
|
diag_log format["_fnc_mainThread:: (30) diag_tickTime = %1", diag_tickTime];
|
||||||
|
diag_log format["_fnc_mainThread:: (31) blck_liveMissionAI = %1", blck_liveMissionAI];
|
||||||
_ai = blck_liveMissionAI;
|
_ai = blck_liveMissionAI;
|
||||||
{
|
{
|
||||||
|
diag_log format["_fnc_mainThread:: (34) evaluating liveAIArray %1 with diag_tickTime %2", _x,diag_tickTime];
|
||||||
if (diag_tickTime > (_x select 1) ) then {
|
if (diag_tickTime > (_x select 1) ) then {
|
||||||
//diag_log format["_fnc_mainTread:: cleaning up AI group %1",_x];
|
diag_log format["_fnc_mainTread:: cleaning up AI group %1",_x];
|
||||||
[_x select 0] call blck_fnc_cleanupAliveAI;
|
[_x select 0] call blck_fnc_cleanupAliveAI;
|
||||||
|
blck_liveMissionAI set[ _forEachIndex, -1];
|
||||||
|
blck_liveMissionAI = blck_liveMissionAI - [-1]; // Remove that list of live AI from the list.
|
||||||
|
diag_log format["_fnc_mainTread:: blck_liveMissionAI updated from %1",_ai];
|
||||||
|
diag_log format["_fnc_mainTread:: blck_liveMissionAI updated to %1",blck_liveMissionAI];
|
||||||
};
|
};
|
||||||
blck_liveMissionAI = blck_liveMissionAI - [_x]; // Remove that list of live AI from the list.
|
|
||||||
}forEach _ai;
|
}forEach _ai;
|
||||||
|
diag_log format["_fnc_mainThread:: (44) blck_oldMissionObjects = %1", blck_oldMissionObjects];
|
||||||
_obj = blck_oldMissionObjects;
|
_obj = blck_oldMissionObjects;
|
||||||
|
|
||||||
{
|
{
|
||||||
//diag_log format["mainThread::-->> missionObjects _x = %1",_x];
|
diag_log format["mainThread::-->> evaluating missionObjects = %1 diag_tickTime %2",_x,diag_tickTime];
|
||||||
if (diag_tickTime > (_x select 1) ) then {
|
if (diag_tickTime > (_x select 1) ) then {
|
||||||
//diag_log format["_fnc_mainTread:: cleaning up mission objects %1",_x];
|
diag_log format["_fnc_mainTread:: cleaning up mission objects %1",_x];
|
||||||
[_x select 0] call blck_fnc_cleanupObjects;
|
[_x select 0] call blck_fnc_cleanupObjects;
|
||||||
|
blck_oldMissionObjects set[_forEachIndex, -1];
|
||||||
|
blck_oldMissionObjects = blck_oldMissionObjects - [-1];
|
||||||
|
diag_log format["_fnc_mainTread:: blck_oldMissionObjects updated from %1",_obj];
|
||||||
|
diag_log format["_fnc_mainTread:: blck_oldMissionObjects updated to %1",blck_oldMissionObjects];
|
||||||
};
|
};
|
||||||
blck_oldMissionObjects = blck_oldMissionObjects - [_x];
|
|
||||||
}forEach _obj;
|
}forEach _obj;
|
||||||
|
|
||||||
[] call GMS_fnc_cleanupDeadAI;
|
[] call blck_fnc_cleanupDeadAI;
|
||||||
|
|
||||||
if (_modType isEqualTo "Epoch") then {
|
if (_modType isEqualTo "Epoch") then {
|
||||||
//diag_log "calling blck_fnc_cleanEmptyGroups";
|
|
||||||
[] call blck_fnc_cleanEmptyGroups;
|
[] call blck_fnc_cleanEmptyGroups;
|
||||||
}; // Exile cleans up empty groups automatically so this should not be needed with that mod.
|
}; // Exile cleans up empty groups automatically so this should not be needed with that mod.
|
||||||
|
|
||||||
/* [Jan 14, 2017] reverted the the approach based on mission timers for now
|
/* [Jan 13, 2017] reverted the the approach based on mission timers for now
|
||||||
{
|
{
|
||||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_mainThread:: -- >> _x = %1 and _x select 6 = %2",_x, _x select 6];};
|
if (blck_debugLevel > 2) then {diag_log format["_fnc_mainThread:: -- >> _x = %1 and _x select 6 = %2",_x, _x select 6];};
|
||||||
if (_x select 6 > 0) then // The mission is not running, check the time left till it is spawned
|
if (_x select 6 > 0) then // The mission is not running, check the time left till it is spawned
|
||||||
@ -78,8 +87,9 @@ while {true} do
|
|||||||
};
|
};
|
||||||
}forEach blck_pendingMissions;
|
}forEach blck_pendingMissions;
|
||||||
_timer1min = diag_tickTime;
|
_timer1min = diag_tickTime;
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
*/
|
|
||||||
if ((diag_tickTime - _timer5min) > 300) then {
|
if ((diag_tickTime - _timer5min) > 300) then {
|
||||||
if (blck_timeAcceleration) then
|
if (blck_timeAcceleration) then
|
||||||
{
|
{
|
||||||
|
@ -27,7 +27,7 @@ if (blck_debugLevel isEqualTo 3) then
|
|||||||
_groupSpawned = createGroup blck_AI_Side;
|
_groupSpawned = createGroup blck_AI_Side;
|
||||||
if !(isNull _groupSpawned) then
|
if !(isNull _groupSpawned) then
|
||||||
{
|
{
|
||||||
diag_log format["_fnc_spawnGroup:: -- >> Group created = %1",_groupSpawned];
|
if (blck_debugON) then {diag_log format["_fnc_spawnGroup:: -- >> Group created = %1",_groupSpawned]};
|
||||||
_groupSpawned setcombatmode blck_combatMode;
|
_groupSpawned setcombatmode blck_combatMode;
|
||||||
_groupSpawned allowfleeing 0;
|
_groupSpawned allowfleeing 0;
|
||||||
_groupSpawned setspeedmode "FULL";
|
_groupSpawned setspeedmode "FULL";
|
||||||
|
@ -3,10 +3,11 @@
|
|||||||
call as [ [list of AI], time] call blck_fnc_addLiveAItoQue; where time is the time delay before deletion occurs
|
call as [ [list of AI], time] call blck_fnc_addLiveAItoQue; where time is the time delay before deletion occurs
|
||||||
|
|
||||||
by Ghostrider-DbD-
|
by Ghostrider-DbD-
|
||||||
Last modified 10-14-16
|
Last modified 1-14-17
|
||||||
*/
|
*/
|
||||||
|
//diag_log format["_fnc_addLiveAIToQue:: -> when called, blck_liveMissionAI = %1",blck_liveMissionAI];
|
||||||
params["_aiList","_timeDelay"];
|
params["_aiList","_timeDelay"];
|
||||||
if (blck_debugON) then {diag_log format["_fnc_addLiveAIToQue:: -->> _aiList = %1 || _timeDelay = %2",_aiList,_timeDelay];};
|
//diag_log format["_fnc_addLiveAIToQue:: -->> _aiList = %1 || _timeDelay = %2",_aiList,_timeDelay];
|
||||||
blck_liveMissionAI pushback [_aiList, (diag_tickTime + _timeDelay)];
|
blck_liveMissionAI pushback [_aiList, (diag_tickTime + _timeDelay)];
|
||||||
|
//diag_log format["_fnc_addLiveAIToQue:: -> blck_fnc_addLiveAI updated to %1",blck_liveMissionAI];
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
params["_objList","_timeDelay"];
|
params["_objList","_timeDelay"];
|
||||||
if (blck_debugON) then {diag_log format["_fnc_addObjToQue:: -- >> _objList = %1 || _timeDelay = %2",_objList,_timeDelay];};
|
//diag_log format["_fnc_addObjToQue:: -- >> _objList = %1 || _timeDelay = %2",_objList,_timeDelay];
|
||||||
|
//diag_log format["_fnc_addObjToQue:: (11) -- >> blck_oldMissionObjects prior to update = %1",blck_oldMissionObjects];
|
||||||
blck_oldMissionObjects pushback [_objList, (diag_tickTime + _timeDelay)];
|
blck_oldMissionObjects pushback [_objList, (diag_tickTime + _timeDelay)];
|
||||||
|
//diag_log format["_fnc_addObjToQue:: (11) -- >> blck_oldMissionObjects after update = %1",blck_oldMissionObjects];
|
||||||
|
|
||||||
|
@ -6,13 +6,20 @@
|
|||||||
for DBD Clan
|
for DBD Clan
|
||||||
By Ghostrider-DBD-
|
By Ghostrider-DBD-
|
||||||
Copyright 2016
|
Copyright 2016
|
||||||
Last Modified 8-13-16
|
Last Modified 1-13-17
|
||||||
*/
|
*/
|
||||||
params["_buildings"];
|
|
||||||
|
params["_objects"];
|
||||||
|
{
|
||||||
|
if ((typeOf _x) isKindOf "LandVehicle") then
|
||||||
{
|
{
|
||||||
//diag_log format["cleanupObjects.sqf: -- >> object %1 is typeOf %2",_x, typeOf _x];
|
private _crew = crew _x;
|
||||||
deleteVehicle _x;
|
{
|
||||||
} forEach _buildings;
|
[_x] call blck_deleteAI;
|
||||||
|
}forEach _crew;
|
||||||
|
};
|
||||||
|
deleteVehicle _x;
|
||||||
|
} forEach _objects;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,232 @@
|
|||||||
|
/*
|
||||||
|
Generic Mission Spawner
|
||||||
|
for DBD Clan
|
||||||
|
By Ghostrider-DBD-
|
||||||
|
Copyright 2016
|
||||||
|
Last modified 1/12/17
|
||||||
|
*/
|
||||||
|
|
||||||
|
private ["_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_AI_Vehicles"];
|
||||||
|
params["_coords","_missionType","_aiDifficultyLevel"];
|
||||||
|
waitUntil {blck_missionSpawning isEqualTo false};
|
||||||
|
blck_missionSpawning = true;
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: Initializing mission: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
|
||||||
|
private["_chanceHeliPatrol","_noPara","_reinforcementLootCounts","_chanceLoot","_heliCrew"];
|
||||||
|
if (isNil "_chanceReinforcements") then
|
||||||
|
{
|
||||||
|
_chanceReinforcements = 0;
|
||||||
|
_noPara = 0;
|
||||||
|
_reinforcementLootCounts = [0,0,0,0,0,0];
|
||||||
|
_chanceHeliPatrol = 0;
|
||||||
|
_chanceLoot = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
private["_timeOut","_blck_AllMissionAI"]; // _timeOut is the time in seconds after which a mission is deactivated.
|
||||||
|
if (isNil "_markerColor") then {_markerColor = "ColorBlack"};
|
||||||
|
if (isNil "_markerType") then {_markerType = ["mil_box",[]]};
|
||||||
|
if (isNil "_timeOut") then {_timeOut = -1;};
|
||||||
|
if (isNil "_noPara") then {_noPara = 0};
|
||||||
|
if (isNil "_chanceHeliPatrol") then {_chanceHeliPatrol = 0;};
|
||||||
|
if (isNil "_chanceLoot") then {_chanceLoot = 0};
|
||||||
|
if (isNil "_heliCrew") then {_heliCrew = 3};
|
||||||
|
|
||||||
|
if (isNil "_reinforcementLootCounts") then
|
||||||
|
{
|
||||||
|
private["__weap","_mags","_backpacks","_optics","_loadout"];
|
||||||
|
_weap = 2 + floor(random(4));
|
||||||
|
_mags = 5 + floor(random(6));
|
||||||
|
_backpacks = 1 + floor(random(2));
|
||||||
|
_optics = 1 + floor(random(6));
|
||||||
|
_loadout = 1 + floor(random(3));
|
||||||
|
_reinforcementLootCounts = [_weap,_mags,_optics,0,0,_backpacks];
|
||||||
|
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: default values used for _reinforcementLootCounts";};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: Mission specific values used for _reinforcementLootCounts";};
|
||||||
|
};
|
||||||
|
|
||||||
|
if (blck_debugLevel > 0) then {
|
||||||
|
diag_log format["[blckEagle] Mission Reinforcement Parameters: changeReinforcements %1 numAI %2 changePatrol %3 chanceLoot %4",_chanceReinforcements,_noPara,_chanceHeliPatrol,_chanceLoot];
|
||||||
|
};
|
||||||
|
|
||||||
|
private["_useMines","_abortMissionSpawner","_blck_AllMissionAI","_delayTime","_groupPatrolRadius"];
|
||||||
|
if (isNil "_useMines") then {_useMines = blck_useMines;};
|
||||||
|
|
||||||
|
_objects = [];
|
||||||
|
_mines = [];
|
||||||
|
_crates = [];
|
||||||
|
_aiGroup = [];
|
||||||
|
_missionAIVehicles = [];
|
||||||
|
_blck_AllMissionAI = [];
|
||||||
|
_AI_Vehicles = [];
|
||||||
|
_blck_localMissionMarker = [_missionType,_coords,"","",_markerColor,_markerType];
|
||||||
|
_delayTime = 1;
|
||||||
|
_groupPatrolRadius = 50;
|
||||||
|
_abortMissionSpawner = false;
|
||||||
|
|
||||||
|
[_blck_localMissionMarker select 0,"Active",_coords] call blck_fnc_updateMissionQue;
|
||||||
|
|
||||||
|
if (blck_labelMapMarkers select 0) then
|
||||||
|
{
|
||||||
|
//diag_log "SM1.sqf: labeling map markers *****";
|
||||||
|
_blck_localMissionMarker set [2, _markerMissionName];
|
||||||
|
};
|
||||||
|
if !(blck_preciseMapMarkers) then
|
||||||
|
{
|
||||||
|
//diag_log "SM1.sqf: Map marker will be OFFSET from the mission position";
|
||||||
|
_blck_localMissionMarker set [1,[_coords,75] call blck_fnc_randomPosition];
|
||||||
|
};
|
||||||
|
_blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow labeled with the mission name?
|
||||||
|
[["start",_startMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
||||||
|
[_blck_localMissionMarker] execVM "debug\spawnMarker.sqf";
|
||||||
|
|
||||||
|
uiSleep 1;
|
||||||
|
blck_missionSpawning = false;
|
||||||
|
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: waiting for player to trigger the mission";};
|
||||||
|
private _missionStartTime = diag_tickTime;
|
||||||
|
waitUntil{[_coords,blck_TriggerDistance,blck_MissionTimout] call blck_fnc_missionStartConditionsMet;};
|
||||||
|
if (((diag_tickTime - _missionStartTime) > blck_MissionTimout)) exitWith
|
||||||
|
{
|
||||||
|
//["timeOut",_endMsg,_blck_localMissionMarker select 2] call blck_fnc_messageplayers;
|
||||||
|
[_blck_localMissionMarker select 0] execVM "debug\deleteMarker.sqf";
|
||||||
|
[_objects, 1] spawn blck_fnc_cleanupObjects;
|
||||||
|
[_blck_localMissionMarker select 0,"Completed"] call blck_fnc_updateMissionQue;
|
||||||
|
if (blck_debugLevel > 0) then
|
||||||
|
{
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: Mission Timed Out: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
if (blck_debugLevel > 0) then
|
||||||
|
{ diag_log format["[blckeagls] missionSpawner:: -- >> Mission tripped by nearby player: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (count _missionLootBoxes > 0) then
|
||||||
|
{
|
||||||
|
_crates = [_coords,_missionLootBoxes] call blck_fnc_spawnMissionCrates;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_crates = [_coords,[[selectRandom blck_crateTypes /*"Box_NATO_Wps_F"*/,[0,0,0],_crateLoot,_lootCounts]]] call blck_fnc_spawnMissionCrates;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
if (blck_debugLevel > 0) then
|
||||||
|
{
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: Crates Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
};
|
||||||
|
|
||||||
|
uiSleep _delayTime;
|
||||||
|
private ["_temp"];
|
||||||
|
if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate
|
||||||
|
{
|
||||||
|
|
||||||
|
_temp = [_coords,blck_SmokeAtMissions select 1] call blck_fnc_smokeAtCrates;
|
||||||
|
_objects append _temp;
|
||||||
|
};
|
||||||
|
uiSleep _delayTime;
|
||||||
|
if (_useMines) then
|
||||||
|
{
|
||||||
|
_mines = [_coords] call blck_fnc_spawnMines;
|
||||||
|
uiSleep _delayTime;;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (_missionLandscapeMode isEqualTo "random") then
|
||||||
|
{
|
||||||
|
_temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape;
|
||||||
|
} else {
|
||||||
|
_temp = [_coords, floor(random(360)),_missionLandscape,true] call blck_fnc_spawnCompositionObjects;
|
||||||
|
};
|
||||||
|
_objects append _temp;
|
||||||
|
diag_log format["_fnc_missionSpawner::->> mission objects spawned = %1",_objects];
|
||||||
|
|
||||||
|
if (blck_debugON) then
|
||||||
|
{
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: Landscape spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
};
|
||||||
|
|
||||||
|
uiSleep _delayTime;;
|
||||||
|
|
||||||
|
if ((count _missionLootVehicles) > 0) then // spawn loot vehicles
|
||||||
|
{
|
||||||
|
diag_log "[blckEagles] _fnc_missionSpawner:: Spawning Mission Loot Vehicles";
|
||||||
|
private _vehs = [_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles;
|
||||||
|
};
|
||||||
|
|
||||||
|
uiSleep _delayTime;
|
||||||
|
diag_log "[blckEagle] _fnc_missionSpawner:: spawning AI";
|
||||||
|
_blck_AllMissionAI = [_coords,_minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionAI;
|
||||||
|
diag_log format["[blckeagls] _fnc_missionSpawner (190):-> _blck_AllMissionAI = %1",_blck_AllMissionAI];
|
||||||
|
if (blck_debugON) then
|
||||||
|
{
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: AI Patrols Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
};
|
||||||
|
|
||||||
|
uiSleep _delayTime;
|
||||||
|
private _emp = [];
|
||||||
|
diag_log format["[blckeagls] _fnc_missionSpawner (197):-> _noEmplacedWeapons = %1",_noEmplacedWeapons];
|
||||||
|
if (!blck_useStatic && (_noEmplacedWeapons > 0)) then
|
||||||
|
{
|
||||||
|
private ["_emplacedGroup","_emplacedPositions"];
|
||||||
|
|
||||||
|
_emplacedPositions = [_coords,_count,35,50] call blck_fnc_findPositionsAlongARadius;
|
||||||
|
//diag_log format["missionSpawner:: _emplacedPositions = %1",_emplacedPositions];
|
||||||
|
{
|
||||||
|
_emplacedGroup = [_x,1,1,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
|
if !(isNull _emplacedGroup) then
|
||||||
|
{
|
||||||
|
_blck_AllMissionAI = _blck_AllMissionAI + (units _emplacedGroup);
|
||||||
|
_emplacedWeapon = [_x,_emplacedGroup,blck_staticWeapons,5,15] call blck_fnc_spawnEmplacedWeapon;
|
||||||
|
_missionAIVehicles pushback _emplacedWeapon;
|
||||||
|
uiSleep _delayTime;
|
||||||
|
};
|
||||||
|
}forEach _emplacedPositions;
|
||||||
|
};
|
||||||
|
if (blck_debugLevel > 0) then {diag_log format["[blckeagls] _fnc_missionSpawner (208):-> _blck_AllMissionAI = %1",_blck_AllMissionAI];};
|
||||||
|
uiSleep _delayTime;
|
||||||
|
if (blck_useVehiclePatrols && (_noVehiclePatrols > 0)) then
|
||||||
|
{
|
||||||
|
diag_log "[blckEagles] _fnc_missionSpawner:: spawning patrol vehicles";
|
||||||
|
private _return = [_coords,_noVehiclePatrols,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionVehiclePatrols;
|
||||||
|
if (count _return isEqualTo 2) then
|
||||||
|
{
|
||||||
|
_blck_AllMissionAI = _blck_AllMissionAI + (_return select 0);
|
||||||
|
_AI_Vehicles = _AI_Vehicles + (_return select 1);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if ((random(1) < _chanceReinforcements)) then
|
||||||
|
{
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: calling in reinforcements: _heliCrew = %1",4];
|
||||||
|
private["_grpPilot","_supplyHeli"];
|
||||||
|
_grpPilot = createGroup blck_AI_Side;
|
||||||
|
_grpPara = createGroup blck_AI_Side;
|
||||||
|
if (!(isNulL _grpPilot) && !(isNull _grpPara)) then
|
||||||
|
{
|
||||||
|
//_supplyHeli = [_coords,_grpPilot,_chanceLoot] call blck_fnc_spawnMissionHeli;
|
||||||
|
//[_coords,_grpPara,_noPara,_aiDifficultyLevel,_chanceLoot,_reinforcementLootCounts,_uniforms,_headgear,_supplyHeli,_grpPilot] spawn blck_fnc_callInReinforcements;
|
||||||
|
} else { deleteGroup _grpPilot; deleteGroup _grpPara;};
|
||||||
|
};
|
||||||
|
|
||||||
|
if (blck_debugON) then {diag_log "[blckeagls] _fnc_missionSpawner (214) :: waiting for mission completion criterion to be met";
|
||||||
|
waitUntil{[_crates,_blck_AllMissionAI,_endCondition] call blck_fnc_missionEndConditionsMet;};
|
||||||
|
if (blck_debugLevel > 0) then
|
||||||
|
{
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: Mission completion criteria fulfilled: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (blck_useSignalEnd) then
|
||||||
|
{
|
||||||
|
[_crates select 0] spawn blck_fnc_signalEnd;
|
||||||
|
};
|
||||||
|
[_mines] spawn blck_fnc_clearMines;
|
||||||
|
[_objects, blck_cleanupCompositionTimer] call blck_fnc_addObjToQue;
|
||||||
|
[_blck_AllMissionAI,blck_AliveAICleanUpTime] call blck_fnc_addLiveAItoQue;
|
||||||
|
[["end",_endMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
||||||
|
[_blck_localMissionMarker select 1, _missionType] execVM "debug\missionCompleteMarker.sqf";
|
||||||
|
[_blck_localMissionMarker select 0] execVM "debug\deleteMarker.sqf";
|
||||||
|
[_blck_localMissionMarker select 0,"Completed"] call blck_fnc_updateMissionQue;
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: end of mission: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
@ -78,17 +78,6 @@ _blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow
|
|||||||
[["start",_startMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
[["start",_startMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
||||||
[_blck_localMissionMarker] execVM "debug\spawnMarker.sqf";
|
[_blck_localMissionMarker] execVM "debug\spawnMarker.sqf";
|
||||||
|
|
||||||
_fn_playerWithinRange = {
|
|
||||||
params["_pos"];
|
|
||||||
private["_return"];
|
|
||||||
_return = false;
|
|
||||||
{
|
|
||||||
if (isPlayer _x and _x distance _pos <= blck_TriggerDistance) then {_return = true};
|
|
||||||
|
|
||||||
}forEach allPlayers; // playableunits; changed for Arma 1.66
|
|
||||||
_return;
|
|
||||||
};
|
|
||||||
|
|
||||||
uiSleep 1;
|
uiSleep 1;
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// Everything has been set up for the mission and it is now waiting to be triggered by a nearby player or to time out.
|
// Everything has been set up for the mission and it is now waiting to be triggered by a nearby player or to time out.
|
||||||
@ -96,7 +85,7 @@ uiSleep 1;
|
|||||||
////////////////////////////
|
////////////////////////////
|
||||||
blck_missionSpawning = false;
|
blck_missionSpawning = false;
|
||||||
|
|
||||||
diag_log "missionSpawner:: waiting for player to trigger the mission";
|
if (blck_debugON) then {diag_log "missionSpawner:: waiting for player to trigger the mission";};
|
||||||
private["_wait","_missionStartTime","_playerInRange","_missionTimedOut"];
|
private["_wait","_missionStartTime","_playerInRange","_missionTimedOut"];
|
||||||
_missionStartTime = diag_tickTime;
|
_missionStartTime = diag_tickTime;
|
||||||
_playerInRange = false;
|
_playerInRange = false;
|
||||||
@ -109,7 +98,7 @@ while {_wait} do
|
|||||||
_wait = false;
|
_wait = false;
|
||||||
_playerInRange = true;
|
_playerInRange = true;
|
||||||
} else {
|
} else {
|
||||||
if ([_coords] call _fn_playerWithinRange) then
|
if ({isPlayer _x && _x distance _coords < blck_TriggerDistance} count allPlayers > 0) then
|
||||||
{
|
{
|
||||||
_wait = false;
|
_wait = false;
|
||||||
_playerInRange = true;
|
_playerInRange = true;
|
||||||
@ -156,7 +145,7 @@ if (_playerInRange) then
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_crates = [_coords,[[selectRandom blck_crateTypes /*"Box_NATO_Wps_F"*/,[0,0,0],_crateLoot,_lootCounts]]] call blck_fnc_spawnMissionCrates;
|
_crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]]] call blck_fnc_spawnMissionCrates;
|
||||||
|
|
||||||
};
|
};
|
||||||
//_objects append _crates;
|
//_objects append _crates;
|
||||||
@ -167,33 +156,35 @@ if (_playerInRange) then
|
|||||||
};
|
};
|
||||||
|
|
||||||
uiSleep _delayTime;
|
uiSleep _delayTime;
|
||||||
|
private ["_temp"];
|
||||||
if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate
|
if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate
|
||||||
{
|
{
|
||||||
private ["_temp"];
|
|
||||||
_temp = [_coords,blck_SmokeAtMissions select 1] call blck_fnc_smokeAtCrates;
|
_temp = [_coords,blck_SmokeAtMissions select 1] call blck_fnc_smokeAtCrates;
|
||||||
_objects append _temp;
|
if (typeName _temp isEqualTo "ARRAY") then
|
||||||
_temp = nil;
|
{
|
||||||
|
_objects append _temp;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
uiSleep _delayTime;
|
uiSleep _delayTime;
|
||||||
if (_useMines) then
|
if (_useMines) then
|
||||||
{
|
{
|
||||||
_mines = [_coords] call blck_fnc_spawnMines;
|
_mines = [_coords] call blck_fnc_spawnMines;
|
||||||
//waitUntil{!(_mines isEqualTo [];);
|
|
||||||
uiSleep _delayTime;;
|
uiSleep _delayTime;;
|
||||||
};
|
};
|
||||||
uiSleep _delayTime;
|
uiSleep _delayTime;
|
||||||
_obj = [];
|
_temp = [];
|
||||||
if (_missionLandscapeMode isEqualTo "random") then
|
if (_missionLandscapeMode isEqualTo "random") then
|
||||||
{
|
{
|
||||||
_obj = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape;
|
_temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape;
|
||||||
} else {
|
} else {
|
||||||
_obj = [_coords, floor(random(360)),_missionLandscape,true] call blck_fnc_spawnCompositionObjects;
|
_temp = [_coords, floor(random(360)),_missionLandscape,true] call blck_fnc_spawnCompositionObjects;
|
||||||
};
|
};
|
||||||
//diag_log format["_fnc_missionSpawner::->> _obj = %1",_obj];
|
if (typeName _temp isEqualTo "ARRAY") then
|
||||||
_objects append _obj;
|
{
|
||||||
//diag_log format["_fnc_missionSpawner::->> _objects = %1",_objects];
|
_objects append _temp;
|
||||||
_obj= nil;
|
};
|
||||||
|
//diag_log format["_fnc_missionSpawner:: (181)->> _objects = %1",_objects];
|
||||||
|
|
||||||
if (blck_debugON) then
|
if (blck_debugON) then
|
||||||
{
|
{
|
||||||
diag_log format["[blckeagls] missionSpawner:: Landscape spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
diag_log format["[blckeagls] missionSpawner:: Landscape spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
@ -201,56 +192,123 @@ if (_playerInRange) then
|
|||||||
|
|
||||||
uiSleep _delayTime;;
|
uiSleep _delayTime;;
|
||||||
|
|
||||||
|
// ========
|
||||||
|
// Old version
|
||||||
|
// ========
|
||||||
|
/*
|
||||||
if ((count _missionLootVehicles) > 0) then // spawn loot vehicles
|
if ((count _missionLootVehicles) > 0) then // spawn loot vehicles
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
//diag_log format["spawnMissionCVehicles.sqf _x = %1",_x];
|
//diag_log format["spawnMissionCVehicles.sqf _x = %1",_x];
|
||||||
_offset = _x select 1; // offset relative to _coords at which to spawn the vehicle
|
_offset = _x select 1; // offset relative to _coords at which to spawn the vehicle
|
||||||
_pos = [(_coords select 0)+(_offset select 0),(_coords select 1) + (_offset select 1),(_coords select 2)+(_offset select 2)];
|
_pos = [(_coords select 0)+(_offset select 0),(_coords select 1) + (_offset select 1),(_coords select 2)+(_offset select 2)];
|
||||||
_veh = [_x select 0 /* vehicle class name*/, _pos] call blck_fnc_spawnVehicle;
|
_veh = [_x select 0, _pos] call blck_fnc_spawnVehicle;
|
||||||
_vehs pushback _veh;
|
_vehs pushback _veh;
|
||||||
[_veh,_x select 2 /*loot array*/, _x select 3 /*array of values specifying number of items of each loot type to load*/] call blck_fnc_fillBoxes;
|
[_veh,_x select 2, _x select 3] call blck_fnc_fillBoxes;
|
||||||
}forEach _missionLootVehicles;
|
}forEach _missionLootVehicles;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
// ========
|
||||||
|
// Modular Version
|
||||||
|
// ========
|
||||||
|
[_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles;
|
||||||
|
// ==========
|
||||||
|
|
||||||
uiSleep _delayTime;
|
uiSleep _delayTime;
|
||||||
|
private _precise = false;
|
||||||
if (blck_useStatic && (_noEmplacedWeapons > 0)) then
|
if (blck_useStatic && (_noEmplacedWeapons > 0)) then
|
||||||
{
|
{
|
||||||
private["_static","_count"];
|
// =======
|
||||||
if ( count (_missionEmplacedWeapons) > 0 ) then
|
// Old version
|
||||||
|
// =======
|
||||||
|
/*if ( count (_missionEmplacedWeapons) isEqualTo 0 ) then
|
||||||
{
|
{
|
||||||
_static = _missionCfg select 4 select 1;
|
_missionEmplacedWeapons = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius;
|
||||||
_count = _missionCfg select 4 select 0;
|
_precise = true;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_static = blck_staticWeapons;
|
|
||||||
_count = _noEmplacedWeapons;
|
|
||||||
};
|
};
|
||||||
private ["_emplacedGroup","_emplacedPositions"];
|
|
||||||
|
|
||||||
_emplacedPositions = [_coords,_count,35,50] call blck_fnc_findPositionsAlongARadius;
|
|
||||||
//diag_log format["missionSpawner:: _emplacedPositions = %1",_emplacedPositions];
|
|
||||||
{
|
{
|
||||||
_emplacedGroup = [_x,1,1,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_emplacedGroup = [_x,1,1,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
//_emplacedUnits = units _emplacedGroup;
|
if !(isNull _emplacedGroup) then
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + (units _emplacedGroup);
|
{
|
||||||
_emplacedWeapon = [_x,_emplacedGroup,blck_staticWeapons,5,15] call blck_fnc_spawnEmplacedWeapon;
|
_blck_AllMissionAI append (units _emplacedGroup);
|
||||||
_missionAIVehicles pushback _emplacedWeapon;
|
_emplacedWeapon = [_x,_emplacedGroup,blck_staticWeapons,5,15,_precise] call blck_fnc_spawnEmplacedWeapon;
|
||||||
uiSleep _delayTime;
|
};
|
||||||
}forEach _emplacedPositions;
|
}forEach _missionEmplacedWeapons;
|
||||||
//diag_log format["missionSpawner:: emplaced weapons data: _AI_Vehicles %1 _blck_AllMissionAI %1",_AI_Vehicles,_blck_AllMissionAI];
|
//===============================
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ======
|
||||||
|
// Modular Version
|
||||||
|
// ======
|
||||||
|
private ["_emplacedUnits"];
|
||||||
|
_emplacedUnits = [_missionEmplacedWeapons,_noEmplacedWeapons,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnMissionEmplacedWeapons;
|
||||||
|
//diag_log format["missionSpawner :: (247) _emplacedUnits = %1",_emplacedUnits];
|
||||||
|
uisleep 0.1;
|
||||||
|
if (typeName _emplacedUnits isEqualTo "ARRAY") then
|
||||||
|
{
|
||||||
|
if (typeName _emplacedUnits isEqualTo "ARRAY") then
|
||||||
|
{
|
||||||
|
_blck_AllMissionAI append _emplacedUnits;
|
||||||
|
};
|
||||||
|
//diag_log format["missionSpawner :: (255) _blck_AllMissionAI updated to = %1",_blck_AllMissionAI];
|
||||||
|
};
|
||||||
|
//==============================
|
||||||
if (blck_debugON) then
|
if (blck_debugON) then
|
||||||
{
|
{
|
||||||
diag_log format["[blckeagls] missionSpawner:: Static Weapons Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
diag_log format["[blckeagls] missionSpawner:: Static Weapons Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
uiSleep _delayTime;
|
uisleep _delayTime;
|
||||||
//diag_log format["_fnc_missionSpawner:: after adding any static weapons, _blck_AllMissionAI is %1",_blck_AllMissionAI];
|
if (blck_useVehiclePatrols && (_noVehiclePatrols > 0)) then
|
||||||
|
{
|
||||||
|
// ==============
|
||||||
|
// Old code
|
||||||
|
// ===============
|
||||||
|
/*
|
||||||
|
private["_vehGroup","_patrolVehicle"];
|
||||||
|
//_vehiclePatrolSpawns= [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;
|
||||||
|
{
|
||||||
|
_vehGroup = [_x,3,3,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
|
diag_log format["missionSpawner:: (249) group for AI Patrol vehicle spawn: group is %1 with units of %2",_vehGroup, units _vehGroup];
|
||||||
|
diag_log format["missionSpawner:: (250) _blck_AllMissionAI prior to appending _vehGroup units = %1",_blck_AllMissionAI];
|
||||||
|
uiSleep 0.1;
|
||||||
|
if !(isNull _vehGroup) then
|
||||||
|
{
|
||||||
|
if (typeName (units _vehGroup) isEqualTo "ARRAY") then
|
||||||
|
{
|
||||||
|
_blck_AllMissionAI = _blck_AllMissionAI append (units _vehGroup);
|
||||||
|
diag_log format["missionSpawner:: _blck_AllMissionAI after appending _vehGroup units = %1",_blck_AllMissionAI];
|
||||||
|
_randomVehicle = selectRandom blck_AIPatrolVehicles;
|
||||||
|
_patrolVehicle = [_coords,_x,_randomVehicle,(_x distance _coords) -5,(_x distance _coords) + 5,_vehGroup] call blck_fnc_spawnVehiclePatrol;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}forEach [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;;
|
||||||
|
*/
|
||||||
|
// =====================
|
||||||
|
// Modular version
|
||||||
|
// =====================
|
||||||
|
private["_vehUnits"];
|
||||||
|
_vehUnits = [_coords,_noVehiclePatrols,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionVehiclePatrols;
|
||||||
|
//diag_log format["missionSpawner :: (240) _vehUnits = %1",_vehUnits];
|
||||||
|
if (typeName _vehUnits isEqualTo "ARRAY") then
|
||||||
|
{
|
||||||
|
_blck_AllMissionAI append _vehUnits;
|
||||||
|
};
|
||||||
|
|
||||||
//diag_log format["_fnc_missionSpawner:: after adding any vehicle patrols, _blck_AllMissionAI is %1",_blck_AllMissionAI];
|
uiSleep _delayTime;
|
||||||
//diag_log format["missionSpawner:: _noAIGroups = %1; spawning AI Groups now",_noAIGroups];
|
if (blck_debugON) then
|
||||||
|
{
|
||||||
|
diag_log format["[blckeagls] missionSpawner:: Vehicle Patrols Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
|
};
|
||||||
|
};
|
||||||
uiSleep _delayTime;
|
uiSleep _delayTime;
|
||||||
|
|
||||||
|
// =====
|
||||||
|
// Old Version
|
||||||
|
// +++++++++++
|
||||||
|
/*
|
||||||
private["_unitsToSpawn","_unitsPerGroup","_ResidualUnits","_newGroup"];
|
private["_unitsToSpawn","_unitsPerGroup","_ResidualUnits","_newGroup"];
|
||||||
_unitsToSpawn = round(_minNoAI + round(random(_maxNoAI - _minNoAI)));
|
_unitsToSpawn = round(_minNoAI + round(random(_maxNoAI - _minNoAI)));
|
||||||
_unitsPerGroup = floor(_unitsToSpawn/_noAIGroups);
|
_unitsPerGroup = floor(_unitsToSpawn/_noAIGroups);
|
||||||
@ -261,9 +319,8 @@ if (_playerInRange) then
|
|||||||
case 1: { // spawn the group near the mission center
|
case 1: { // spawn the group near the mission center
|
||||||
//params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear] ];
|
//params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear] ];
|
||||||
_newGroup = [_coords,_unitsToSpawn,_unitsToSpawn,_aiDifficultyLevel,_coords,3,18,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_newGroup = [_coords,_unitsToSpawn,_unitsToSpawn,_aiDifficultyLevel,_coords,3,18,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
_newAI = units _newGroup;
|
_blck_AllMissionAI = _blck_AllMissionAI append (units _newGroup);
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + _newAI;
|
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=1 _newGroup=%1 _newAI = %2",_newGroup, (units _newGroup)];
|
||||||
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=1 _newGroup=%1 _newAI = %2",_newGroup, _newAI];
|
|
||||||
};
|
};
|
||||||
case 2: {
|
case 2: {
|
||||||
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=2"]; // spawn groups on either side of the mission area
|
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=2"]; // spawn groups on either side of the mission area
|
||||||
@ -278,42 +335,50 @@ if (_playerInRange) then
|
|||||||
_adjusttedGroupSize = _unitsPerGroup;
|
_adjusttedGroupSize = _unitsPerGroup;
|
||||||
};
|
};
|
||||||
_newGroup = [_x,_adjusttedGroupSize,_adjusttedGroupSize,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_newGroup = [_x,_adjusttedGroupSize,_adjusttedGroupSize,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
_newAI = units _newGroup;
|
_blck_AllMissionAI = _blck_AllMissionAI append (units _newGroup);
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + _newAI;
|
//diag_log format["missionSpawner: Spawning 2 Groups: _newGroup=%1 _newAI = %2",_newGroup, (units _newGroup)];
|
||||||
//diag_log format["missionSpawner: Spawning 2 Groups: _newGroup=%1 _newAI = %2",_newGroup, _newAI];
|
|
||||||
}forEach _groupLocations;
|
}forEach _groupLocations;
|
||||||
|
|
||||||
};
|
};
|
||||||
case 3: { // spawn one group near the center of the mission and the rest on the perimeter
|
case 3: { // spawn one group near the center of the mission and the rest on the perimeter
|
||||||
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=3"];
|
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=3"];
|
||||||
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
_newAI = units _newGroup;
|
_blck_AllMissionAI = _blck_AllMissionAI append (units _newGroup);
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + _newAI;
|
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=3 _newGroup=%1 _newAI = %2",_newGroup, append (units _newGroup)];
|
||||||
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=3 _newGroup=%1 _newAI = %2",_newGroup, _newAI];
|
|
||||||
_groupLocations = [_coords,2,20,35] call blck_fnc_findPositionsAlongARadius;
|
_groupLocations = [_coords,2,20,35] call blck_fnc_findPositionsAlongARadius;
|
||||||
{
|
{
|
||||||
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
_newAI = units _newGroup;
|
_blck_AllMissionAI = _blck_AllMissionAI append (units _newGroup);
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + _newAI;
|
//diag_log format["missionSpawner: Spawning 2 Groups:_newGroup=%1 _newAI = %2",_newGroup, (units _newGroup)];
|
||||||
//diag_log format["missionSpawner: Spawning 2 Groups:_newGroup=%1 _newAI = %2",_newGroup, _newAI];
|
|
||||||
}forEach _groupLocations;
|
}forEach _groupLocations;
|
||||||
|
|
||||||
};
|
};
|
||||||
default { // spawn one group near the center of the mission and the rest on the perimeter
|
default { // spawn one group near the center of the mission and the rest on the perimeter
|
||||||
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=default"];
|
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=default"];
|
||||||
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
_newAI = units _newGroup;
|
_blck_AllMissionAI = _blck_AllMissionAI append (units _newGroup);
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + _newAI;
|
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=%3 _newGroup=%1 _newAI = %2",_newGroup, (units _newGroup),_noAIGroups];
|
||||||
//diag_log format["missionSpawner: Spawning Groups: _noAIGroups=%3 _newGroup=%1 _newAI = %2",_newGroup, _newAI,_noAIGroups];
|
|
||||||
_groupLocations = [_coords,(_noAIGroups - 1),20,40] call blck_fnc_findPositionsAlongARadius;
|
_groupLocations = [_coords,(_noAIGroups - 1),20,40] call blck_fnc_findPositionsAlongARadius;
|
||||||
{
|
{
|
||||||
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
_newAI = units _newGroup;
|
_blck_AllMissionAI = _blck_AllMissionAI append (units _newGroup);
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + _newAI;
|
//diag_log format["missionSpawner: Spawning %3 Groups: _newGroup=%1 _newAI = %2",_newGroup, (units _newGroup),_noAIGroups];
|
||||||
//diag_log format["missionSpawner: Spawning %3 Groups: _newGroup=%1 _newAI = %2",_newGroup, _newAI,_noAIGroups];
|
|
||||||
}forEach _groupLocations;
|
}forEach _groupLocations;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
////////
|
||||||
|
// Modular Version
|
||||||
|
// =====
|
||||||
|
private ["_infantry"];
|
||||||
|
_infantry = [_coords, _minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionAI;
|
||||||
|
//diag_log format["missionSpawner:: (337) -> _infantry = %1",_infantry];
|
||||||
|
if (typeName _infantry isEqualto "ARRAY") then
|
||||||
|
{
|
||||||
|
_blck_AllMissionAI append _infantry;
|
||||||
|
};
|
||||||
|
|
||||||
uiSleep _delayTime;
|
uiSleep _delayTime;
|
||||||
if (blck_debugON) then
|
if (blck_debugON) then
|
||||||
{
|
{
|
||||||
@ -336,7 +401,7 @@ if (_playerInRange) then
|
|||||||
private["_grpReinforcements"];
|
private["_grpReinforcements"];
|
||||||
_grpReinforcements = grpNull;
|
_grpReinforcements = grpNull;
|
||||||
|
|
||||||
diag_log format["[blckeagls] missionSpawner:: calling in reinforcements: Current mission: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
//diag_log format["[blckeagls] missionSpawner:: calling in reinforcements: Current mission: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
[] spawn {
|
[] spawn {
|
||||||
//[_coords,_noPara,_aiDifficultyLevel,_chanceLoot,_reinforcementLootCounts,_weaponList,_uniforms,_headgear,_chanceHeliPatrol] call blck_fnc_Reinforcements;
|
//[_coords,_noPara,_aiDifficultyLevel,_chanceLoot,_reinforcementLootCounts,_weaponList,_uniforms,_headgear,_chanceHeliPatrol] call blck_fnc_Reinforcements;
|
||||||
//waitUntil {_grpReinforcements != grpNull};
|
//waitUntil {_grpReinforcements != grpNull};
|
||||||
@ -349,31 +414,6 @@ if (_playerInRange) then
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (blck_useVehiclePatrols && (_noVehiclePatrols > 0)) then
|
|
||||||
{
|
|
||||||
private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns"];
|
|
||||||
_vehiclePatrolSpawns= [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;
|
|
||||||
//diag_log format["missionSpawner:: _vehiclePatrolSpawns = %1",_vehiclePatrolSpawns];
|
|
||||||
//for "_i" from 1 to _noVehiclePatrols do
|
|
||||||
{
|
|
||||||
_vehGroup = [_x,3,3,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
|
||||||
//diag_log format["missionSpawner:: group for AI Patrol vehicle spawn: group is %1 with units of %2",_vehGroup, units _vehGroup];
|
|
||||||
_blck_AllMissionAI = _blck_AllMissionAI + (units _vehGroup);
|
|
||||||
_randomVehicle = blck_AIPatrolVehicles call BIS_fnc_selectRandom;
|
|
||||||
//diag_log format["missionSpawner:: vehicle selected is %1", _randomVehicle];
|
|
||||||
_patrolVehicle = [_coords,_x,_randomVehicle,(_x distance _coords) -5,(_x distance _coords) + 5,_vehGroup] call blck_fnc_spawnVehiclePatrol;
|
|
||||||
//diag_log format["missionSpawner:: patrol vehicle spawned was %1",_patrolVehicle];
|
|
||||||
_vehGroup setVariable["groupVehicle",_patrolVehicle,true];
|
|
||||||
//uiSleep _delayTime;
|
|
||||||
_AI_Vehicles pushback _patrolVehicle;
|
|
||||||
}forEach _vehiclePatrolSpawns;
|
|
||||||
//diag_log format["missionSpawner:: vehicle patrols data: _AI_Vehicles %1 _blck_AllMissionAI %1",_AI_Vehicles,_blck_AllMissionAI];
|
|
||||||
uiSleep _delayTime;
|
|
||||||
if (blck_debugON) then
|
|
||||||
{
|
|
||||||
diag_log format["[blckeagls] missionSpawner:: Vehicle Patrols Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
// Trigger for mission end
|
// Trigger for mission end
|
||||||
//diag_log format["[blckeagls] mission Spawner _endCondition = %1",_endCondition];
|
//diag_log format["[blckeagls] mission Spawner _endCondition = %1",_endCondition];
|
||||||
private["_missionComplete"];
|
private["_missionComplete"];
|
||||||
@ -434,11 +474,15 @@ if (_playerInRange) then
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
[_mines] spawn blck_fnc_clearMines;
|
[_mines] spawn blck_fnc_clearMines;
|
||||||
[_objects, blck_cleanupCompositionTimer] call blck_fnc_addObjToQue;
|
//diag_log format["missionSpawner:: (473) _objects = %1",_objects];
|
||||||
[_blck_AllMissionAI,blck_AliveAICleanUpTime] call blck_fnc_addLiveAItoQue;
|
uisleep 0.1;
|
||||||
|
[_objects, blck_cleanupCompositionTimer] spawn blck_fnc_addObjToQue;
|
||||||
|
//diag_log format["missionSpawner:: (476) _blck_AllMissionAI = %1",_blck_AllMissionAI];
|
||||||
|
uisleep 0.1;
|
||||||
|
[_blck_AllMissionAI,blck_AliveAICleanUpTimer] spawn blck_fnc_addLiveAItoQue;
|
||||||
[["end",_endMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
[["end",_endMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
||||||
[_blck_localMissionMarker select 1, _missionType] execVM "debug\missionCompleteMarker.sqf";
|
[_blck_localMissionMarker select 1, _missionType] execVM "debug\missionCompleteMarker.sqf";
|
||||||
[_blck_localMissionMarker select 0] execVM "debug\deleteMarker.sqf";
|
[_blck_localMissionMarker select 0] execVM "debug\deleteMarker.sqf";
|
||||||
//[_blck_localMissionMarker select 0,"Completed"] call blck_fnc_updateMissionQue;
|
uisleep 0.1;
|
||||||
diag_log format["[blckeagls] missionSpawner:: end of mission: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
diag_log format["[blckeagls] missionSpawner:: end of mission: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
};
|
};
|
||||||
|
@ -2,11 +2,10 @@
|
|||||||
Spawn objects from an array using offsects from a central location.
|
Spawn objects from an array using offsects from a central location.
|
||||||
The code provided by M3Editor EDEN has been addapted to add checks for vehicles, should they be present.
|
The code provided by M3Editor EDEN has been addapted to add checks for vehicles, should they be present.
|
||||||
Returns an array of spawned objects.
|
Returns an array of spawned objects.
|
||||||
version of 11/9/16
|
version of 1/13/17
|
||||||
*/
|
*/
|
||||||
//diag_log format["_fnc_spawnBaseObjects: _this = %1",_this];
|
|
||||||
params["_center","_azi","_objects","_setVector"];
|
params["_center","_azi","_objects","_setVector"];
|
||||||
//diag_log format["_fnc_spawnBaseObjects: _objs = %1",_objects];
|
|
||||||
|
|
||||||
private ["_newObjs"];
|
private ["_newObjs"];
|
||||||
|
|
||||||
@ -23,21 +22,7 @@ _newObjs = [];
|
|||||||
// Lock any vehicles placed as part of the mission landscape. Note that vehicles that can be taken by players can be added via the mission template.
|
// Lock any vehicles placed as part of the mission landscape. Note that vehicles that can be taken by players can be added via the mission template.
|
||||||
if ( (typeOf _obj) isKindOf "LandVehicle" || (typeOf _obj) isKindOf "Air" || (typeOf _obj) isKindOf "Sea") then
|
if ( (typeOf _obj) isKindOf "LandVehicle" || (typeOf _obj) isKindOf "Air" || (typeOf _obj) isKindOf "Sea") then
|
||||||
{
|
{
|
||||||
//diag_log format["_fnc_spawnBaseObjects:: Locking vehicle of type %1",typeOf _obj];
|
[_obj] call blck_fnc_configureMissionVehicle;
|
||||||
//_obj = _x select 0;
|
|
||||||
_obj setVehicleLock "LOCKEDPLAYER";
|
|
||||||
_obj addEventHandler ["GetIn",{ // forces player to be ejected if he/she tries to enter the vehicle
|
|
||||||
private ["_theUnit"];
|
|
||||||
_theUnit = _this select 2;
|
|
||||||
_theUnit action ["Eject", vehicle _theUnit];
|
|
||||||
hint "Use of this vehicle is forbidden";
|
|
||||||
}];
|
|
||||||
|
|
||||||
clearItemCargoGlobal _obj;
|
|
||||||
clearWeaponCargoGlobal _obj;
|
|
||||||
clearMagazineCargoGlobal _obj;
|
|
||||||
clearBackpackCargoGlobal _obj;
|
|
||||||
};
|
};
|
||||||
} forEach _objects;
|
} forEach _objects;
|
||||||
//diag_log format["_fnc_spawnBaseObjects _newObjs = %1",_newObjs];
|
|
||||||
_newObjs
|
_newObjs
|
||||||
|
@ -5,57 +5,31 @@
|
|||||||
*/
|
*/
|
||||||
// [_missionEmplacedWeapons,_noEmplacedWeapons,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnMissionEmplacedWeapons;
|
// [_missionEmplacedWeapons,_noEmplacedWeapons,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnMissionEmplacedWeapons;
|
||||||
params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"];
|
params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"];
|
||||||
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons(9):: - > _noEmplacedWeapons = %1",_noEmplacedWeapons];
|
private ["_emplacedGroup","_emplacedAI"];
|
||||||
private ["_emplacedGroup","_emplacedPositions","_missionGroups","_missionAI","_missionStatics","_false","_return","_count"];
|
_emplacedAI = [];
|
||||||
_missionGroups = [];
|
|
||||||
_missionAI = [];
|
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons(10):: - > _noEmplacedWeapons = %1",_noEmplacedWeapons];
|
||||||
_missionStatics = [];
|
|
||||||
_return = [];
|
if ( count (_missionEmplacedWeapons) isEqualTo 0 ) then
|
||||||
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons(15):: - > _noEmplacedWeapons = %1",_noEmplacedWeapons];
|
|
||||||
if (count _missionEmplacedWeapons > 0) then
|
|
||||||
{
|
{
|
||||||
{
|
_missionEmplacedWeapons = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius;
|
||||||
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons (19):: - > _spawning from _missionEmplacedWeapons %1",_missionEmplacedWeapons];
|
_precise = false;
|
||||||
_emplacedGroup = [_x,1,1,_aiDifficultyLevel,_coords,0,0.1,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
|
||||||
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons (21):: - > _spawned group %1",_emplacedGroup];
|
|
||||||
if !(isNull _emplacedGroup) then
|
|
||||||
{
|
|
||||||
_missionGroups pushback _emplacedGroup;
|
|
||||||
{_x allowDamage false;} forEach units _emplacedGroup;
|
|
||||||
_emplacedWeapon = [_x,_emplacedGroup,blck_staticWeapons,5,15] call blck_fnc_spawnEmplacedWeapon;
|
|
||||||
_emplacedWeapon setPosATL _x;
|
|
||||||
_missionStatics pushback _missionStatics;
|
|
||||||
uiSleep _delayTime;
|
|
||||||
{_x allowDamage true;} forEach units _emplacedGroup;
|
|
||||||
};
|
|
||||||
} forEach _missionEmplacedWeapons;
|
|
||||||
} else {
|
|
||||||
_emplacedPositions = [_coords,_count,35,50] call blck_fnc_findPositionsAlongARadius;
|
|
||||||
{
|
|
||||||
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons (36):: - > _noEmplacedWeapons = %1",_noEmplacedWeapons];
|
|
||||||
_emplacedGroup = [_x,1,1,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
|
||||||
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons (38):: - > _spawned group %1",_emplacedGroup];
|
|
||||||
if !(isNull _emplacedGroup) then
|
|
||||||
{
|
|
||||||
_missionGroups pushback _emplacedGroup;
|
|
||||||
_emplacedWeapon = [_x,_emplacedGroup,blck_staticWeapons,5,15] call blck_fnc_spawnEmplacedWeapon;
|
|
||||||
_missionStatics pushback _missionStatics;
|
|
||||||
uiSleep _delayTime;
|
|
||||||
};
|
|
||||||
}forEach _emplacedPositions;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
if !(isNull _x) then {_missionAI pushback (units _x);
|
_emplacedGroup = [_x,1,1,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
}forEach _missionGroups;
|
if !(isNull _emplacedGroup) then
|
||||||
|
{
|
||||||
|
diag_log format["_fnc_spawnMissionEmplacedWeapons:: (23) -> spawning _blck_fnc_spawnEmplaceWeapon with group %1",_emplacedGroup];
|
||||||
|
[_x,_emplacedGroup,blck_staticWeapons,5,15,_precise] call blck_fnc_spawnEmplacedWeapon;
|
||||||
|
} else {
|
||||||
|
diag_log format["[blckeagls] _fnc_spawnMissionEmplacedWeapons(26):: - > Null group spawned"];
|
||||||
|
};
|
||||||
|
if (typeName (units _emplacedGroup) isEqualTo "ARRAY") then
|
||||||
|
{
|
||||||
|
_emplacedAI append (units _emplacedGroup);
|
||||||
|
diag_log format["_fnc_spawnMissionEmplacedWeapons:: (31)-> _emplacedAI updated to %1",_emplacedAI];
|
||||||
|
};
|
||||||
|
}forEach _missionEmplacedWeapons;
|
||||||
|
|
||||||
if ( (count _missionAI) < 1) then
|
_emplacedAI
|
||||||
{
|
|
||||||
{deleteVehicle _x} forEach _missionStatics;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_return = [_missionAI,_missionStatics];
|
|
||||||
};
|
|
||||||
|
|
||||||
_return;
|
|
@ -1,46 +1,30 @@
|
|||||||
/*
|
/*
|
||||||
[_coords,_noVehiclePatrols,_aiDifficultyLevel,_uniforms,_headGear] call _fnc_spawnMissionVehiclePatrols
|
[_coords,_noVehiclePatrols,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionVehiclePatrols
|
||||||
by Ghostrider-DbD-
|
by Ghostrider-DbD-
|
||||||
1/9/17
|
1/13/17
|
||||||
returns [] if no groups could be created
|
returns [] if no groups could be created
|
||||||
returns [_AI_Vehicles,_missionAI] otherwise;
|
returns [_AI_Vehicles,_missionAI] otherwise;
|
||||||
*/
|
*/
|
||||||
params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_uniforms","_headGear"];
|
params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_uniforms","_headGear"];
|
||||||
private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns","_missionAI","_missiongroups","_AI_Vehicles","_abort","_vehiclePatrolSpawns","_randomVehicle","_return"];
|
private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns","_missionAI","_missiongroups","_AI_Vehicles","_abort","_vehiclePatrolSpawns","_randomVehicle","_return"];
|
||||||
_missionAI = [];
|
_missionAI = [];
|
||||||
_missiongroups = [];
|
|
||||||
_AI_Vehicles = [];
|
|
||||||
_return = [];
|
|
||||||
_abort = false;
|
|
||||||
_vehiclePatrolSpawns= [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;
|
_vehiclePatrolSpawns= [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;
|
||||||
{
|
{
|
||||||
_vehGroup = [_x,3,3,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
_vehGroup = [_x,3,3,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear] call blck_fnc_spawnGroup;
|
||||||
if (isNull _vehGroup) exitWith {_abort = true;};
|
//if (isNull _vehGroup) exitWith {_abort = true;};
|
||||||
_missiongroups pushback _vehGroup;
|
diag_log format["_fnc_spawnMissionVehiclePatrols:: -> _vehGroup = %1 and units _vehGroup = %2",_vehGroup, units _vehGroup];
|
||||||
_randomVehicle = blck_AIPatrolVehicles call BIS_fnc_selectRandom;
|
if (typename (units _vehGroup) isEqualTo "ARRAY") then
|
||||||
_patrolVehicle = [_coords,_x,_randomVehicle,(_x distance _coords) -5,(_x distance _coords) + 5,_vehGroup] call blck_fnc_spawnVehiclePatrol;
|
{
|
||||||
_vehGroup setVariable["groupVehicle",_patrolVehicle,true];
|
_randomVehicle = selectRandom blck_AIPatrolVehicles;
|
||||||
_AI_Vehicles pushback _patrolVehicle;
|
_patrolVehicle = [_coords,_x,_randomVehicle,(_x distance _coords) -5,(_x distance _coords) + 5,_vehGroup] call blck_fnc_spawnVehiclePatrol;
|
||||||
|
_vehGroup setVariable["groupVehicle",_patrolVehicle,true];
|
||||||
|
_missionAI append (units _vehGroup);
|
||||||
|
};
|
||||||
}forEach _vehiclePatrolSpawns;
|
}forEach _vehiclePatrolSpawns;
|
||||||
if (blck_debugLevel > 1) then
|
if (blck_debugLevel > 1) then
|
||||||
{
|
{
|
||||||
diag_log format["[blckeagls] missionSpawner:: Vehicle Patrols Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
diag_log format["[blckeagls] _fnc_spawnMissionVehiclePatrols :: Vehicle Patrols Spawned: _cords %1 : _missionType %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_missionType,_aiDifficultyLevel,_markerMissionName];
|
||||||
};
|
|
||||||
if (_abort) then
|
|
||||||
{
|
|
||||||
{deleteVehicle _x} forEach _AI_Vehicles;
|
|
||||||
{
|
|
||||||
{deleteVehicle _x} forEach (units _x);
|
|
||||||
deleteGroup _x;
|
|
||||||
} forEach _missiongroups;
|
|
||||||
|
|
||||||
};
|
|
||||||
if !(_abort) then
|
|
||||||
{
|
|
||||||
{
|
|
||||||
_missionAI append (units _x);
|
|
||||||
}forEach _missiongroups;
|
|
||||||
_return = [_missionAI,_AI_Vehicles];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_return;
|
_missionAI;
|
@ -5,40 +5,10 @@
|
|||||||
Last updated 10/22/16
|
Last updated 10/22/16
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private["_ai","_veh"];
|
|
||||||
params["_aiList"];
|
params["_aiList"];
|
||||||
|
|
||||||
//diag_log format["_fnc_cleanupAliveAI:: called with blck_AICleanUpTimer = %1 and count of alive AI = %2",0, count _aiList];
|
|
||||||
{
|
{
|
||||||
//diag_log format["cleanupAliveAI:: for unit _x, alive = %1, GMS_DiedAt = %2",(alive _x), _x getVariable["GMS_DiedAt", -1]];
|
diag_log format["_fnc_cleanupAliveAI:: -> deleteing AI Unit %1",_x];
|
||||||
if ( alive _x && (_x getVariable["GMS_DiedAt", -1] < 0)) then { // The unit has not been processed by a kill handler. This double test is probably not needed.
|
[_x] call blck_fnc_deleteAI;
|
||||||
_ai = _x;
|
|
||||||
|
|
||||||
if ( vehicle _ai != _ai) then // the AI is in a vehicle of some sort so lets be sure to delete it
|
|
||||||
{
|
|
||||||
_veh = vehicle _ai;
|
|
||||||
//diag_log format["cleanupAliveAI:: deleting vehicle %1",_veh];
|
|
||||||
_veh setDamage 1;
|
|
||||||
deleteVehicle _veh;
|
|
||||||
};
|
|
||||||
|
|
||||||
//diag_log format["_fnc_cleanupAliveAI:: _x is %4, typeOf _x %1 typeOf vehicle _x %2, blck_vehicle %3", (typeOf _x), (typeOf (vehicle _x)),_veh,_x];
|
|
||||||
{
|
|
||||||
_ai removeAllEventHandlers _x;
|
|
||||||
}forEach ["Killed","Fired","HandleDamage","HandleHeal","FiredNear"];
|
|
||||||
|
|
||||||
{
|
|
||||||
deleteVehicle _x;
|
|
||||||
}forEach nearestObjects [getPos _ai,["WeaponHolderSimulated","GroundWeapoonHolder"],3];
|
|
||||||
|
|
||||||
//_group = group _ai;
|
|
||||||
[_ai] joinSilent grpNull;
|
|
||||||
|
|
||||||
if (count units group _ai < 1) then
|
|
||||||
{
|
|
||||||
deletegroup group _ai;
|
|
||||||
};
|
|
||||||
deleteVehicle _ai;
|
|
||||||
};
|
|
||||||
}forEach _aiList;
|
}forEach _aiList;
|
||||||
diag_log format["_fnc_cleanupAliveAI:: AI Cleanup Completed"];
|
|
||||||
|
@ -1,28 +1,20 @@
|
|||||||
/*
|
/*
|
||||||
Delete Dead AI and nearby weapons after an appropriate period.
|
Delete Dead AI and nearby weapons after an appropriate period.
|
||||||
by Ghostrider
|
by Ghostrider
|
||||||
Last updated 10/22/16
|
Last updated 1/13/17
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private["_aiList","_ai"];
|
private["_aiList","_ai"];
|
||||||
//diag_log format["_fnc_cleanupDeadAI Called"];
|
|
||||||
_aiList = blck_deadAI;
|
_aiList = blck_deadAI;
|
||||||
{
|
{
|
||||||
// As written, this ignores any bodies that do not have GMS_DiedAt defined.
|
if ( diag_tickTime > _x getVariable ["blck_cleanupAt",0] ) then // DBD_DeleteAITimer
|
||||||
|
|
||||||
if ( (_x getVariable ["GMS_DiedAt",0]) > 0 ) then
|
|
||||||
{
|
{
|
||||||
if ( diag_tickTime > ((_x getVariable ["GMS_DiedAt",0]) + blck_bodyCleanUpTimer) ) then // DBD_DeleteAITimer
|
_ai = _x;
|
||||||
{
|
{
|
||||||
_ai = _x;
|
deleteVehicle _x;
|
||||||
{
|
}forEach nearestObjects [getPos _ai,["WeaponHolderSimulated","GroundWeapoonHolder"],3];
|
||||||
deleteVehicle _x;
|
blck_deadAI = blck_deadAI - [_ai];
|
||||||
}forEach nearestObjects [getPos _x,["WeaponHolder"],3];
|
deleteVehicle _ai;
|
||||||
uiSleep 0.1;
|
|
||||||
//diag_log ["deleting AI %2 at _pos %1",getPos _ai,_ai];
|
|
||||||
blck_deadAI = blck_deadAI - [_ai];
|
|
||||||
deleteVehicle _ai;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
} forEach _aiList;
|
} forEach _aiList;
|
||||||
|
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
Delete a unit.
|
||||||
|
by Ghostrider
|
||||||
|
Last updated 1/13/17
|
||||||
|
*/
|
||||||
|
|
||||||
|
private["_ai"];
|
||||||
|
params["_unit"];
|
||||||
|
|
||||||
|
diag_log format["_fnc_deleteAI::-> deleting unit = %1",_unit];
|
||||||
|
{
|
||||||
|
_unit removeAllEventHandlers _x;
|
||||||
|
}forEach ["Killed","Fired","HandleDamage","HandleHeal","FiredNear"];
|
||||||
|
private _group = (group _unit);
|
||||||
|
deleteVehicle _unit;
|
||||||
|
if (count units _group < 1) then
|
||||||
|
{
|
||||||
|
deletegroup _group;
|
||||||
|
};
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Handle AI Deaths
|
Handle AI Deaths
|
||||||
Last Modified 1/4/17
|
Last Modified 1/13/17
|
||||||
By Ghostrider-DBD-
|
By Ghostrider-DBD-
|
||||||
Copyright 2016
|
Copyright 2016
|
||||||
*/
|
*/
|
||||||
@ -8,8 +8,7 @@
|
|||||||
private["_group","_isLegal","_weapon","_lastkill","_kills","_message","_killstreakMsg"];
|
private["_group","_isLegal","_weapon","_lastkill","_kills","_message","_killstreakMsg"];
|
||||||
params["_unit","_killer","_isLegal"];
|
params["_unit","_killer","_isLegal"];
|
||||||
|
|
||||||
//diag_log format["#- processAIKill.sqf -# called for unit %1",_unit];
|
_unit setVariable ["blck_cleanupAt", (diag_tickTime) + blck_bodyCleanUpTimer, true];
|
||||||
_unit setVariable ["GMS_DiedAt", (diag_tickTime),true];
|
|
||||||
|
|
||||||
blck_deadAI pushback _unit;
|
blck_deadAI pushback _unit;
|
||||||
_group = group _unit;
|
_group = group _unit;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Configures a mission vehicle
|
// Configures a mission vehicle
|
||||||
// by Ghostrider-DBD-
|
// by Ghostrider-DBD-
|
||||||
// Last Updated 10/25/16
|
// Last Updated 1/13/17
|
||||||
|
|
||||||
params["_veh"];
|
params["_veh"];
|
||||||
|
|
||||||
@ -9,14 +9,14 @@ clearMagazineCargoGlobal _veh;
|
|||||||
clearBackpackCargoGlobal _veh;
|
clearBackpackCargoGlobal _veh;
|
||||||
clearItemCargoGlobal _veh;
|
clearItemCargoGlobal _veh;
|
||||||
_veh setVehicleLock "LOCKEDPLAYER";
|
_veh setVehicleLock "LOCKEDPLAYER";
|
||||||
_veh addEventHandler ["GetIn",{
|
_veh addEventHandler ["GetIn",{ // Note: only fires when vehicle is local to player
|
||||||
private["_unit","_veh"];
|
private["_unit","_veh"];
|
||||||
_unit = _this select 2;
|
_unit = _this select 2;
|
||||||
_veh = _this select 0;
|
_veh = _this select 0;
|
||||||
if (isPlayer _unit) then
|
if (isPlayer _unit) then
|
||||||
{
|
{
|
||||||
_unit action ["eject",_veh];
|
_unit action ["eject",_veh];
|
||||||
cutText ["You are not allowed to enter that vehicle at this time","PLAIN DOWN"];
|
titleText ["You are not allowed to enter that vehicle at this time","PLAIN DOWN"];
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
by Ghostrider-Dbd-
|
||||||
|
1/13/17
|
||||||
|
*/
|
||||||
|
params["_vehicle"];
|
||||||
|
{
|
||||||
|
_vehicle removeAllEventHandlers _x;
|
||||||
|
}forEach ["GetIn","GetOut","Killed","Fired","HandleDamage","HandleHeal","FiredNear"];
|
||||||
|
deleteVehicle _vehicle;
|
@ -0,0 +1,21 @@
|
|||||||
|
// Spawns an emplaced weapons, man's it, and saves it to an array of monitored vehicles.
|
||||||
|
// by Ghostrider-DBD-
|
||||||
|
// Last Updated 10-25-16
|
||||||
|
|
||||||
|
private["_emplaced","_safepos","_emp","_gunner"];
|
||||||
|
params["_pos","_emplacedGroup","_emplacedTypes",["_minDist",20],["_maxDist",35],["_precise",false] ];
|
||||||
|
if (isNull _emplacedGroup) exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnEmplaced"; objNull;};
|
||||||
|
diag_log format["_fnc_spawnEmplacedGroup:: -- >> _emplacedGroup = %1",_emplacedGroup];
|
||||||
|
_safepos = [_pos,_minDist,_maxDist,0,0,20,0] call BIS_fnc_findSafePos;
|
||||||
|
_emplaced = selectRandom _emplacedTypes;
|
||||||
|
_emp = [_emplaced,_safepos] call blck_fnc_spawnVehicle;
|
||||||
|
_emp setVariable["DBD_vehType","emplaced"];
|
||||||
|
if (_precise) then {_emp setPosATL _pos];
|
||||||
|
_gunner = (units _emplacedGroup) select 0;
|
||||||
|
_gunner moveingunner _emp;
|
||||||
|
[_emp] call blck_fnc_configureMissionVehicle;
|
||||||
|
waitUntil { count crew _emp > 0};
|
||||||
|
blck_missionVehicles pushback _emp;
|
||||||
|
diag_log format["spawnEmplaced.sqf: Emplaced weapon %1 spawned"];
|
||||||
|
|
||||||
|
_emp
|
@ -5,47 +5,44 @@
|
|||||||
|
|
||||||
By Ghostrider-DBD-
|
By Ghostrider-DBD-
|
||||||
Copyright 2016
|
Copyright 2016
|
||||||
Last updated 1-17-17
|
Last updated 1-13-17
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private _vehList = blck_missionVehicles;
|
private ["_veh","_vehList"];
|
||||||
|
_vehList = blck_missionVehicles;
|
||||||
|
//diag_log format["_fnc_vehicleMonitor:: function called with blck_missionVehicles = %1",_vehList];
|
||||||
{
|
{
|
||||||
private ["_veh"];
|
|
||||||
_veh = _x;
|
_veh = _x;
|
||||||
|
if (_veh getVariable["blck_DeleteAt",0] > 0) then
|
||||||
|
{
|
||||||
|
if (diag_tickTime > (_veh getVariable["blck_DeleteAt",0])) then
|
||||||
|
{
|
||||||
|
[_veh] call blck_deleteVehicle;
|
||||||
|
blck_missionVehicles = blck_missionVehicles - [_veh];
|
||||||
|
};
|
||||||
|
};
|
||||||
if ({alive _x} count crew _veh < 1) then
|
if ({alive _x} count crew _veh < 1) then
|
||||||
{
|
{
|
||||||
if (_veh getVariable["DBD_vehType","none"] isEqualTo "emplaced") then
|
if (_veh getVariable["DBD_vehType","none"] isEqualTo "emplaced") then
|
||||||
{
|
{
|
||||||
[_veh] spawn {uiSleep 1;(_this select 0) setDamage 1;};
|
if (blck_debugOn) then
|
||||||
blck_missionVehicles = blck_missionVehicles - [_veh];
|
{
|
||||||
if (blck_debugOn) then{
|
diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];
|
||||||
diag_log format["_fnc_vehicleMonitor:: deleting emplaced weapon %1",_veh];
|
|
||||||
};
|
};
|
||||||
|
_veh setDamage 1;
|
||||||
|
_veh setVariable["blck_DeleteAt",diag_tickTime + 60];
|
||||||
}else {
|
}else {
|
||||||
if (blck_killEmptyAIVehicles) then
|
if (blck_killEmptyAIVehicles) then
|
||||||
{
|
{
|
||||||
blck_missionVehicles = blck_missionVehicles - [_veh];
|
if (blck_debugOn) then
|
||||||
[_veh] spawn {
|
{
|
||||||
params["_v"];
|
diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle destroyed where vehicle = %1",_veh];
|
||||||
//diag_log format["vehicleMonitor.sqf:: case of patrol vehicle: _veh %1 is about to be killed with getAllHitPointsDamage = %2",_v, (getAllHitPointsDamage _v)];
|
|
||||||
uiSleep 20;
|
|
||||||
{
|
|
||||||
_v setHitPointDamage [_x, 1];
|
|
||||||
//diag_log format["vehicleMonitor: hitpart %1 for vehicle %1 set to 1",_x,_v];
|
|
||||||
} forEach ["HitLFWheel","HitLF2Wheel","HitRFWheel","HitRF2Wheel","HitEngine","HitLBWheel","HitLMWheel","HitRBWheel","HitRMWheel","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun"];
|
|
||||||
if (blck_debugLevel isEqualTo 3) then
|
|
||||||
{
|
|
||||||
diag_log format["_fnc_vehicleMonitor:: damage applied to a patrol vehicle -- >> current damage for vehicle %1 is = %2",_v, (getAllHitPointsDamage _v)];
|
|
||||||
};
|
|
||||||
[_v] spawn { // spawn this so we don't hold up the rest the evaluations and cleanup needed.
|
|
||||||
private _v = _this select 0;
|
|
||||||
uiSleep 60;
|
|
||||||
if (blck_debugOn) then {
|
|
||||||
diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle:deleting vehicle _veh",_v];
|
|
||||||
};
|
|
||||||
deleteVehicle _v;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
{
|
||||||
|
_veh setHitPointDamage [_x, 1];
|
||||||
|
|
||||||
|
} forEach ["HitLFWheel","HitLF2Wheel","HitRFWheel","HitRF2Wheel","HitEngine","HitLBWheel","HitLMWheel","HitRBWheel","HitRMWheel","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun"];
|
||||||
|
_veh setVariable["blck_DeleteAt",diag_tickTime + 60];
|
||||||
} else {
|
} else {
|
||||||
//diag_log format["vehicleMonitor.sqf: make vehicle available to players; stripping eventHandlers from_veh %1",_veh];
|
//diag_log format["vehicleMonitor.sqf: make vehicle available to players; stripping eventHandlers from_veh %1",_veh];
|
||||||
blck_missionVehicles = blck_missionVehicles - [_veh];
|
blck_missionVehicles = blck_missionVehicles - [_veh];
|
||||||
|
@ -69,12 +69,13 @@ blck_fnc_setupWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\cus
|
|||||||
blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups
|
blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups
|
||||||
|
|
||||||
// Functions specific to vehicles, whether wheeled or static
|
// Functions specific to vehicles, whether wheeled or static
|
||||||
blck_fnc_spawnEmplacedWeapon = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnEmplaced.sqf"; // Self-evident
|
blck_fnc_spawnEmplacedWeapon = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnEmplacedWeapon.sqf";
|
||||||
blck_fnc_spawnVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"; // Spawn a temporary vehicle of a specified type at a specific position
|
blck_fnc_spawnVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf";
|
||||||
blck_fnc_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"; // Spawn an AI vehicle control and have it patrol the mission perimeter
|
blck_fnc_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf";
|
||||||
blck_fnc_protectVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf";
|
blck_fnc_protectVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf";
|
||||||
blck_fnc_configureMissionVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf";
|
blck_fnc_configureMissionVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf";
|
||||||
blck_fnc_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"; // Checks for vehicles for which all AI are dead and handles any changes needed when this is true.
|
blck_fnc_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf";
|
||||||
|
blck_fnc_deleteVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteVehicle.sqf";
|
||||||
|
|
||||||
// functions to support Units
|
// functions to support Units
|
||||||
blck_fnc_removeGear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"; // Strip an AI unit of all gear.
|
blck_fnc_removeGear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"; // Strip an AI unit of all gear.
|
||||||
@ -86,9 +87,10 @@ blck_fnc_removeLaunchers = compileFinal preprocessFileLineNumbers "\q\addons\cu
|
|||||||
blck_fnc_removeNVG = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf";
|
blck_fnc_removeNVG = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf";
|
||||||
blck_fnc_alertNearbyUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf";
|
blck_fnc_alertNearbyUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf";
|
||||||
blck_fnc_processIlleagalAIKills = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf";
|
blck_fnc_processIlleagalAIKills = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf";
|
||||||
GMS_fnc_cleanupDeadAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"; // handles deletion of AI bodies and gear when it is time.
|
blck_fnc_cleanupDeadAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"; // handles deletion of AI bodies and gear when it is time.
|
||||||
blck_fnc_setSkill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf";
|
blck_fnc_setSkill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf";
|
||||||
blck_fnc_cleanupAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf";
|
blck_fnc_cleanupAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf";
|
||||||
|
blck_fnc_deleteAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf";
|
||||||
|
|
||||||
diag_log "[blckeagls] Functions Loaded";
|
diag_log "[blckeagls] Functions Loaded";
|
||||||
blck_functionsCompiled = true;
|
blck_functionsCompiled = true;
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
Last modified 10/25/16
|
Last modified 10/25/16
|
||||||
*/
|
*/
|
||||||
//blck_variablesLoaded = false;
|
//blck_variablesLoaded = false;
|
||||||
blck_debugON = false;
|
blck_debugON = true;
|
||||||
blck_debugLevel = 0; // Sets level of detail for debugging info - WIP.
|
blck_debugLevel = 1; // Sets level of detail for debugging info - WIP.
|
||||||
blck_minFPS = 10;
|
blck_minFPS = 10;
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
|
@ -159,7 +159,7 @@ Last modified 8/1/15
|
|||||||
blck_bodyCleanUpTimer = 1200; // time in seconds after which dead AI bodies are deleted
|
blck_bodyCleanUpTimer = 1200; // time in seconds after which dead AI bodies are deleted
|
||||||
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
||||||
// values are ordered as follows [blue, red, green, orange];
|
// values are ordered as follows [blue, red, green, orange];
|
||||||
blck_AliveAICleanUpTime = 900; // Time after mission completion at which any remaining live AI are deleted.
|
blck_AliveAICleanUpTimer = 900; // Time after mission completion at which any remaining live AI are deleted.
|
||||||
blck_cleanupCompositionTimer = 1200;
|
blck_cleanupCompositionTimer = 1200;
|
||||||
blck_AIAlertDistance = [250,325,450,500];
|
blck_AIAlertDistance = [250,325,450,500];
|
||||||
//blck_AIAlertDistance = [150,225,400,500];
|
//blck_AIAlertDistance = [150,225,400,500];
|
||||||
|
@ -157,7 +157,7 @@ Last modified 8/1/15
|
|||||||
blck_bodyCleanUpTimer = 1200; // time in seconds after which dead AI bodies are deleted
|
blck_bodyCleanUpTimer = 1200; // time in seconds after which dead AI bodies are deleted
|
||||||
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
||||||
// values are ordered as follows [blue, red, green, orange];
|
// values are ordered as follows [blue, red, green, orange];
|
||||||
blck_AliveAICleanUpTime = 900; // Time after mission completion at which any remaining live AI are deleted.
|
blck_AliveAICleanUpTimer = 900; // Time after mission completion at which any remaining live AI are deleted.
|
||||||
blck_cleanupCompositionTimer = 1200;
|
blck_cleanupCompositionTimer = 1200;
|
||||||
blck_AIAlertDistance = [150,225,250,300];
|
blck_AIAlertDistance = [150,225,250,300];
|
||||||
//blck_AIAlertDistance = [150,225,400,500];
|
//blck_AIAlertDistance = [150,225,400,500];
|
||||||
|
@ -32,17 +32,17 @@ if (blck_debugON) then
|
|||||||
|
|
||||||
|
|
||||||
blck_cleanupCompositionTimer = 10; // Time after mission completion at which items in the composition are deleted.
|
blck_cleanupCompositionTimer = 10; // Time after mission completion at which items in the composition are deleted.
|
||||||
blck_AliveAICleanUpTime = 10; // Time after mission completion at which any remaining live AI are deleted.
|
blck_AliveAICleanUpTimer = 10; // Time after mission completion at which any remaining live AI are deleted.
|
||||||
blck_bodyCleanUpTimer = 10;
|
blck_bodyCleanUpTimer = 10;
|
||||||
|
|
||||||
blck_SpawnEmplaced_Orange = 4; // Number of static weapons at Orange Missions
|
blck_SpawnEmplaced_Orange = 4; // Number of static weapons at Orange Missions
|
||||||
blck_SpawnEmplaced_Green = 3; // Number of static weapons at Green Missions
|
blck_SpawnEmplaced_Green = 3; // Number of static weapons at Green Missions
|
||||||
blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
|
blck_SpawnEmplaced_Blue = 0; // Number of static weapons at Blue Missions
|
||||||
blck_SpawnEmplaced_Red = 2;
|
blck_SpawnEmplaced_Red = 2;
|
||||||
|
|
||||||
blck_SpawnVeh_Orange = 4; // Number of static weapons at Orange Missions
|
blck_SpawnVeh_Orange = 4; // Number of static weapons at Orange Missions
|
||||||
blck_SpawnVeh_Green = 3; // Number of static weapons at Green Missions
|
blck_SpawnVeh_Green = 3; // Number of static weapons at Green Missions
|
||||||
blck_SpawnVeh_Blue = 1; // Number of static weapons at Blue Missions
|
blck_SpawnVeh_Blue = 0; // Number of static weapons at Blue Missions
|
||||||
blck_SpawnVeh_Red = 2;
|
blck_SpawnVeh_Red = 2;
|
||||||
|
|
||||||
//blck_reinforcementsBlue = [0, 0, 0.0, 0]; // Chance of reinforcements, number of reinforcements, Chance of reinforcing heli patrols, chance of dropping supplies for the reinforcements
|
//blck_reinforcementsBlue = [0, 0, 0.0, 0]; // Chance of reinforcements, number of reinforcements, Chance of reinforcing heli patrols, chance of dropping supplies for the reinforcements
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
blck Mission system by Ghostrider-DBD-
|
blck Mission system by Ghostrider-DBD-
|
||||||
Loosely based on the AI mission system by blckeagls ver 2.0.2
|
Loosely based on the AI mission system by blckeagls ver 2.0.2
|
||||||
Contributions by Narines: bug fixes, testing, 'fired' event handler
|
Contributions by Narines: bug fixes, testing, infinite ammo fix.
|
||||||
Ideas or code from that by Vampire and KiloSwiss have been used for certain functions.
|
Ideas or code from that by Vampire and KiloSwiss have been used for certain functions.
|
||||||
|
|
||||||
|
1/13/17 Build 29.
|
||||||
|
Modularizing mission spawner.
|
||||||
|
Searching for bug that causes mission completion code to hang.
|
||||||
|
|
||||||
1/13/17 Version 6.54 Build 27
|
1/13/17 Version 6.54 Build 27
|
||||||
Rerverted back to the code that spawned a single instance of each mission until I can debug certain issues.
|
Rerverted back to the code that spawned a single instance of each mission until I can debug certain issues.
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
private ["_version","_versionDate"];
|
private ["_version","_versionDate"];
|
||||||
_blck_version = "6.54 Build 28";
|
_blck_version = "6.54 Build 29";
|
||||||
_blck_versionDate = "1-13-17 10:00 PM";
|
_blck_versionDate = "1-21-17 5:00 PM";
|
||||||
|
Loading…
Reference in New Issue
Block a user