Bug Fixes, setting for deleting loot crate and one for preserving static weapons.

This commit is contained in:
Ghostrider-DbD- 2017-01-25 01:01:16 -05:00
parent 90c9ffa809
commit b9d019e78a
23 changed files with 397 additions and 289 deletions

View File

@ -0,0 +1,74 @@
/*
Call as : [] call blck_fnc_mainThread;
Run a loop that checks data arrays regarding:
- whether it is time to delete the mission objects at a specific location
- whether it is time to delete live AI associated with a specific mission
By Ghostrider-DbD-
Last modified 1-22-17
*/
private ["_timer10Min","_timer1sec","_timer5sec","_timer5min","_modType","_coords"];
_timer1sec = diag_tickTime;
_timer5sec = diag_tickTime;
_timer20sec = diag_tickTime;
//_timer1min = diag_tickTime;
_timer5min = diag_tickTime;
//_timer10Min = diag_tickTime;
_modType = [] call blck_fnc_getModType;
while {true} do
{
uiSleep 1; // defined in custom_server\compiles\blck_variables.sqf
if ((diag_tickTime - _timer1sec) > 3) then
{
[] call blck_fnc_vehicleMonitor;
_timer1sec = diag_tickTime;
};
if ((diag_tickTime - _timer5sec) > 15) then
{
[] call blck_fnc_cleanupAliveAI;
[] call blck_fnc_cleanupObjects;
[] call blck_fnc_cleanupDeadAI;
if (_modType isEqualTo "Epoch") then {
[] call blck_fnc_cleanEmptyGroups;
}; // Exile cleans up empty groups automatically so this should not be needed with that mod.
diag_log format["_fnc_mainThread:: (37) blck_pendingMissions = %1", blck_pendingMissions];
{
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 (diag_tickTime > (_x select 6)) then // time to spawn the mission
{
private _coords = [] call blck_fnc_FindSafePosn;
_coords pushback 0;
private["_missionName","_missionPath"];
_missionName = selectRandom (_x select 0);
_missionPath = _x select 1;
[_coords,_x] execVM format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
};
};
}forEach blck_pendingMissions;
_timer5sec = diag_tickTime;
};
if ((diag_tickTime - _timer5min) > 300) then {
if (blck_timeAcceleration) then
{
//if (blck_debugON) then {diag_log "[blckeagls] calling time acceleration module";};
[] call blck_fnc_timeAcceleration;
};
if (blck_useHC) then {[] call blck_fnc_monitorHC;}; // Not working
_timer5min = diag_tickTime;
};
/*
if ((diag_tickTime - _timer10Min) > 600) then
{
// Reserved for future use
_timer10Min = diag_tickTime;
};
*/
};

View File

@ -5,99 +5,38 @@
- whether it is time to delete the mission objects at a specific location - whether it is time to delete the mission objects at a specific location
- whether it is time to delete live AI associated with a specific mission - whether it is time to delete live AI associated with a specific mission
By Ghostrider-DbD- By Ghostrider-DbD-
Last modified 1-22-17 Last modified 1-24-17
*/ */
private ["_timer10Min","_timer1min","_timer5min","_modType","_coords"]; diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime];
private["_modType","_timer1sec","_timer20sec","_timer5min"];
_timer1sec = diag_tickTime; _timer1sec = diag_tickTime;
_timer5sec = diag_tickTime;
_timer20sec = diag_tickTime; _timer20sec = diag_tickTime;
//_timer1min = diag_tickTime;
_timer5min = diag_tickTime; _timer5min = diag_tickTime;
//_timer10Min = diag_tickTime;
_modType = [] call blck_fnc_getModType; _modType = [] call blck_fnc_getModType;
_ai = [];
_obj = [];
while {true} do while {true} do
{ {
uiSleep 1; // defined in custom_server\compiles\blck_variables.sqf uiSleep 1;
if ((diag_tickTime - _timer1sec) > 1) then diag_log format["mainThread:: -- > time = %1",diag_tickTime];
if (diag_tickTime - _timer1sec > 1000) then
{ {
[] call blck_fnc_vehicleMonitor; [] call blck_fnc_vehicleMonitor;
_timer1sec = diag_tickTime; _timer1sec - diag_tickTime;
}; };
if ((diag_tickTime - _timer5sec) > 5) then if (diag_tickTime - _timer20sec > 20) then
{ {
//diag_log format["_fnc_mainThread:: (30) diag_tickTime = %1", diag_tickTime]; [] call blck_fnc_cleanupAliveAI;
//diag_log format["_fnc_mainThread:: (31) blck_liveMissionAI = %1", blck_liveMissionAI]; [] call blck_fnc_cleanupObjects;
_ai = +blck_liveMissionAI; [] call blck_fnc_cleanupDeadAI;
[] call blck_fnc_spawnPendingMissions;
if (_modType isEqualTo "Epoch") then
{ {
//diag_log format["_fnc_mainThread:: (34) evaluating liveAIArray %1 with diag_tickTime %2", _x,diag_tickTime];
if (diag_tickTime > (_x select 1) ) then {
//diag_log format["_fnc_mainTread:: cleaning up AI group %1",_x];
[_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];
if (blck_debugLevel > 1) then {diag_log format["_fnc_mainTread:: blck_liveMissionAI updated to %1",blck_liveMissionAI];};
};
}forEach _ai;
//diag_log format["_fnc_mainThread:: (44) blck_oldMissionObjects = %1", blck_oldMissionObjects];
_obj = +blck_oldMissionObjects;
{
//diag_log format["mainThread::-->> evaluating missionObjects = %1 diag_tickTime %2",_x,diag_tickTime];
if (diag_tickTime > (_x select 1) ) then {
//diag_log format["_fnc_mainTread:: cleaning up mission objects %1",_x];
[_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];
if (blck_debugLevel > 1) then {diag_log format["_fnc_mainTread:: blck_oldMissionObjects updated to %1",blck_oldMissionObjects];};
};
}forEach _obj;
//diag_log format["_fnc_mainThread:: (59) blck_fnc_cleanupDeadAI = %1", blck_deadAI];
[] call blck_fnc_cleanupDeadAI;
if (_modType isEqualTo "Epoch") then {
[] 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.
_timer20sec = diag_tickTime;
//diag_log format["_fnc_mainThread:: (66) blck_pendingMissions = %1", blck_pendingMissions];
{
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 (diag_tickTime > (_x select 6)) then // time to spawn the mission
{
private _coords = [] call blck_fnc_FindSafePosn;
_coords pushback 0;
private["_missionName","_missionPath"];
_missionName = selectRandom (_x select 0);
_missionPath = _x select 1;
[_coords,_x] execVM format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
};
};
}forEach blck_pendingMissions;
_timer5sec = diag_tickTime;
}; };
if (diag_tickTime - _timer5min > 300) then
if ((diag_tickTime - _timer5min) > 300) then {
if (blck_timeAcceleration) then
{
//if (blck_debugON) then {diag_log "[blckeagls] calling time acceleration module";};
[] call blck_fnc_timeAcceleration;
};
if (blck_useHC) then {[] call blck_fnc_monitorHC;}; // Not working
_timer5min = diag_tickTime;
};
/*
if ((diag_tickTime - _timer10Min) > 600) then
{ {
// Reserved for future use [] call blck_fnc_timeAcceleration;
_timer10Min = diag_tickTime;
}; };
*/
}; };

View File

@ -6,25 +6,49 @@
for DBD Clan for DBD Clan
By Ghostrider-DBD- By Ghostrider-DBD-
Copyright 2016 Copyright 2016
Last Modified 1-22-17 Last Modified 1-24-17
*/ */
params["_objects"]; _fn_deleteObjects = {
{ params["_objects"];
if ((typeOf _x) isKindOf "LandVehicle") then if (blck_debugLevel > 0) then {diag_log format["_fn_deleteObjects:: -> _objects = %1",_objects];};
{ {
if !(_x getVariable["releasedToPlayers",false]) then if ((typeOf _x) isKindOf "LandVehicle") then
{ {
private _crew = crew _x; if !(_x getVariable["releasedToPlayers",false]) then
{ {
[_x] call blck_fnc_deleteAI; private _crew = crew _x;
}forEach _crew; {
[_x] call blck_fnc_deleteAI;
}forEach _crew;
};
_x setVariable["blck_DeleteAt",0]; // Schedule it to be deleted by fnc_vehicleMonitor immediately
} else {
if (blck_debugLevel > 1) then {diag_log format["_fnc_cleanUpObjects: -> deleting object %1",_x];};
deleteVehicle _x;
}; };
_x setVariable["blck_DeleteAt",0]; // Schedule it to be deleted by fnc_vehicleMonitor immediately } forEach _objects;
}; };
} forEach _objects;
diag_log format["_fnc_cleanUpObjects called at %1",diag_tickTime];
private["_oldObjs"];
for "_i" from 1 to (count blck_oldMissionObjects) do
{
if (_i <= count blck_oldMissionObjects) then
{
_oldObjs = blck_oldMissionObjects select (_i - 1);
diag_log format["_fnc_cleanUpObjects ::-->> evaluating missionObjects = %1 with delete time of %3 and diag_tickTime %2",_oldObjs,diag_tickTime, _oldObjs select 1];
if (diag_tickTime > (_oldObjs select 1) ) then {
diag_log format["_fn_deleteObjects:: (50) cleaning up mission objects %1",_oldObjs];
[_oldObjs select 0] call _fn_deleteObjects;
uiSleep 0.1;
blck_oldMissionObjects set[(_i - 1), -1];
blck_oldMissionObjects = blck_oldMissionObjects - [-1];
//diag_log format["_fn_deleteObjects:: blck_oldMissionObjects updated from %1",_obj];
if (blck_debugLevel > 1) then {diag_log format["_fn_deleteObjects:: (48) blck_oldMissionObjects updated to %1",blck_oldMissionObjects];};
};
};
};

View File

@ -5,7 +5,7 @@
Updates the mission que. Updates the mission que.
Updates mission markers. Updates mission markers.
By Ghostrider-DbD- By Ghostrider-DbD-
1/22/17 1/24/17
*/ */
if (blck_useSignalEnd) then if (blck_useSignalEnd) then
@ -22,10 +22,10 @@
[_mines] spawn blck_fnc_clearMines; [_mines] spawn blck_fnc_clearMines;
//diag_log format["_fnc_endMission: (23) _objects = %1",_objects]; //diag_log format["_fnc_endMission: (23) _objects = %1",_objects];
uisleep 0.1; uisleep 0.1;
[_objects, blck_cleanupCompositionTimer] spawn blck_fnc_addObjToQue; [_objects, (blck_cleanupCompositionTimer)] spawn blck_fnc_addObjToQue;
//diag_log format["_fnc_endMission:: (26) _blck_AllMissionAI = %1",_blck_AllMissionAI]; //diag_log format["_fnc_endMission:: (26) _blck_AllMissionAI = %1",_blck_AllMissionAI];
uisleep 0.1; uisleep 0.1;
[_blck_AllMissionAI,blck_AliveAICleanUpTimer] spawn blck_fnc_addLiveAItoQue; [_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, _markerClass] execVM "debug\missionCompleteMarker.sqf"; [_blck_localMissionMarker select 1, _markerClass] execVM "debug\missionCompleteMarker.sqf";
[_blck_localMissionMarker select 0] execVM "debug\deleteMarker.sqf"; [_blck_localMissionMarker select 0] execVM "debug\deleteMarker.sqf";

View File

@ -3,7 +3,7 @@
for DBD Clan for DBD Clan
By Ghostrider-DBD- By Ghostrider-DBD-
Copyright 2016 Copyright 2016
Last modified 1/22/17 Last modified 1/24/17
*/ */
private ["_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_AI_Vehicles","_timeOut","_aiDifficultyLevel"]; private ["_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_AI_Vehicles","_timeOut","_aiDifficultyLevel"];
@ -149,8 +149,11 @@ else
_crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]]] call blck_fnc_spawnMissionCrates; _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]]] call blck_fnc_spawnMissionCrates;
}; };
// un-comment this if you want crates cleaned up when the rest of the mission objects are removed.
//_objects append _crates; if (blck_cleanUpLootChests) then
{
_objects append _crates;
};
if (blck_debugLevel > 0) then if (blck_debugLevel > 0) then
{ {
@ -237,27 +240,21 @@ if (blck_useStatic && (_noEmplacedWeapons > 0)) then
_blck_AllMissionAI append (_temp select 1); _blck_AllMissionAI append (_temp select 1);
}; };
if ((random(1) < _chanceReinforcements)) then /*
if (blck_enableReinforcements && (random(1) < _chanceReinforcements)) then
{ {
_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout; _weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout;
private["_grpReinforcements"]; if (blck_debugLevel > 0) then
_grpReinforcements = grpNull;
//diag_log format["[blckeagls] missionSpawner:: calling in reinforcements: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
[] spawn {
//[_coords,_noPara,_aiDifficultyLevel,_chanceLoot,_reinforcementLootCounts,_weaponList,_uniforms,_headgear,_chanceHeliPatrol] call blck_fnc_Reinforcements;
//waitUntil {_grpReinforcements != grpNull};
//diag_log format["[blckeagls] missionSpawner::reinforcement spawner started: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
if !(_grpReinforcements isEqualTo grpNull) then
{ {
_blck_AllMissionAI = _blck_AllMissionAI + (units _grpReinforcements); diag_log format["[blckeagls] missionSpawner:: calling in reinforcements: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
//diag_log format["missionSpawner:: _grpReinforcements = %1",_grpReinforcements]; // ["_pos","_numAI","_skillAI","_chanceLoot","_lootCounts","_weapons","_uniforms","_headgear","_patrol"];
[_coords,_noPara,_aiDifficultyLevel,_chanceLoot,_reinforcementLootCounts,_weaponList,_uniforms,_headgear,_chanceHeliPatrol] spawn blck_fnc_callInReinforcements;
}; };
}; };
*/
// 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","_endIfPlayerNear","_endIfAIKilled"]; private["_missionComplete","_endIfPlayerNear","_endIfAIKilled"];
_missionComplete = -1; _missionComplete = -1;
_startTime = diag_tickTime; _startTime = diag_tickTime;
@ -268,14 +265,14 @@ switch (_endCondition) do
case "allUnitsKilled": {_endIfPlayerNear = false;_endIfAIKilled = true;}; case "allUnitsKilled": {_endIfPlayerNear = false;_endIfAIKilled = true;};
case "allKilledOrPlayerNear": {_endIfPlayerNear = true;_endIfAIKilled = true;}; case "allKilledOrPlayerNear": {_endIfPlayerNear = true;_endIfAIKilled = true;};
}; };
//diag_log format["missionSpawner :: (269) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled]; diag_log format["missionSpawner :: (269) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
private["_locations"]; private["_locations"];
_locations = [_coords] + _crates; _locations = [_coords] + _crates;
//diag_log format["missionSpawner:: Waiting for player to satisfy mission end criteria of _endIfPlayerNear %1 with _endIfAIKilled %2",_endIfPlayerNear,_endIfAIKilled]; diag_log format["missionSpawner:: Waiting for player to satisfy mission end criteria of _endIfPlayerNear %1 with _endIfAIKilled %2",_endIfPlayerNear,_endIfAIKilled];
while {_missionComplete isEqualTo -1} do while {_missionComplete isEqualTo -1} do
{ {
if (blck_debugLevel isEqualTo 3) exitWith {uiSleep 120}; if (blck_debugLevel isEqualTo 3) exitWith {uiSleep 300};
if ((_endIfPlayerNear) && [_coords,20] call blck_fnc_playerInRange) exitWith {}; if ((_endIfPlayerNear) && [_coords,20] call blck_fnc_playerInRange) exitWith {};
if ((_endIfAIKilled) && ({alive _x} count _blck_AllMissionAI) < 1 ) exitWith {}; if ((_endIfAIKilled) && ({alive _x} count _blck_AllMissionAI) < 1 ) exitWith {};
//diag_log format["missionSpawner:: (283) missionCompleteLoop - > players near = %1 and ai alive = %2",[_coords,20] call blck_fnc_playerInRange, {alive _x} count _blck_AllMissionAI]; //diag_log format["missionSpawner:: (283) missionCompleteLoop - > players near = %1 and ai alive = %2",[_coords,20] call blck_fnc_playerInRange, {alive _x} count _blck_AllMissionAI];

View File

@ -0,0 +1,24 @@
/*
for DBD Clan
By Ghostrider-DBD-
Copyright 2016
Last modified 1/24/17
checks the status of each entry in
*/
diag_log format["_fnc_spawnPendingMissions:: blck_pendingMissions = %1", blck_pendingMissions];
private["_coords","_missionName","_missionPath"];
{
if (blck_debugLevel > 2) then {diag_log format["_fnc_spawnPendingMissions:: -- >> _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 (diag_tickTime > (_x select 6)) then // time to spawn the mission
{
_coords = [] call blck_fnc_FindSafePosn;
_coords pushback 0;
_missionName = selectRandom (_x select 0);
_missionPath = _x select 1;
[_coords,_x] execVM format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
};
};
}forEach blck_pendingMissions;

View File

@ -14,31 +14,32 @@
_headgear, _headgear,
_patrol _patrol
] call blck_spawnReinforcements ] call blck_spawnReinforcements
1/23/17
Last Modified 1/23/17
*/ */
params["_pos","_numAI","_skillAI","_chanceLoot","_lootCounts","_weapons","_uniforms","_headgear","_patrol"]; params["_pos","_numAI","_skillAI","_chanceLoot","_lootCounts","_weapons","_uniforms","_headgear","_patrol"];
diag_log format["reinforcements:: Called with parameters _pos %1 _numAI %2 _skillAI %3 _chanceLoot %4",_pos,_numAI,_skillAI,_chanceLoot]; diag_log format["_fnc_callInReinforcements:: Called with parameters _pos %1 _numAI %2 _skillAI %3 _chanceLoot %4",_pos,_numAI,_skillAI,_chanceLoot];
private["_chopperType","_chopperTypeArmed","_spawnPos","_spawnVector","_spawnDistance"]; private["_chopperType","_chopperTypeArmed","_spawnPos","_spawnVector","_spawnDistance"];
// spawn an unarmed heli // spawn an unarmed heli
_chopperType = selectRandom["B_Heli_Transport_03_unarmed_EPOCH","O_Heli_Light_02_unarmed_EPOCH","I_Heli_Transport_02_EPOCH"]; _chopperType = selectRandom blck_AIHelis; // ["B_Heli_Transport_03_unarmed_EPOCH","O_Heli_Light_02_unarmed_EPOCH","I_Heli_Transport_02_EPOCH"];
diag_log format["reinforcements:: _chopperType seleted = %1",_chopperType]; diag_log format["_fnc_callInReinforcements:: _chopperType selected = %1",_chopperType];
_spawnVector = round(random(360)); _spawnVector = round(random(360));
_spawnDistance = 10; //00; // + floor(random(1500)); // We need the heli to be on-site quickly to minimize the chance that a small mission has been completed before the paratroops are deployed and added to the list of live AI for the mission _spawnDistance = 20; //00; // + floor(random(1500)); // We need the heli to be on-site quickly to minimize the chance that a small mission has been completed before the paratroops are deployed and added to the list of live AI for the mission
_dropLoot = (random(1) < _chanceLoot); _dropLoot = (random(1) < _chanceLoot);
// Use the new functionality of getPos // Use the new functionality of getPos
// https://community.bistudio.com/wiki/getPos // https://community.bistudio.com/wiki/getPos
_spawnPos = _pos getPos [_spawnDistance,_spawnVector]; _spawnPos = _pos; // getPos [_spawnDistance,_spawnVector];
diag_log format["reinforcements:: vector was %1 with distance %2 yielding a spawn position of %3 at distance from _pos of %4",_spawnVector,_spawnDistance,_spawnPos, (_pos distance2d _spawnPos)]; diag_log format["_fnc_callInReinforcements:: vector was %1 with distance %2 yielding a spawn position of %3 at distance from _pos of %4",_spawnVector,_spawnDistance,_spawnPos, (_pos distance2d _spawnPos)];
private["_supplyHeli"]; private["_supplyHeli"];
//create helicopter and spawn it //create helicopter and spawn it
@ -47,12 +48,13 @@ _supplyHeli setDir (_spawnVector -180);
_supplyHeli setFuel 1; _supplyHeli setFuel 1;
_supplyHeli engineOn true; _supplyHeli engineOn true;
_supplyHeli flyInHeight 250; _supplyHeli flyInHeight 250;
_supplyHeli setVehicleLock "LOCKED"; _supplyHeli setVehicleLock "LOCKEDPLAYER";
_supplyHeli addEventHandler ["GetOut",{(_this select 0) setFuel 0;(_this select 0) setDamage 1;}]; _supplyHeli addEventHandler ["GetOut",{(_this select 0) setFuel 0;(_this select 0) setDamage 1;}];
_supplyHeli addEventHandler ["GetIn",{(_this select 0) setFuel 0;(_this select 0) setDamage 1;}];
[_supplyHeli] call blck_fnc_emptyObject;
[_supplyHeli] call blck_fnc_protectVehicle; [_supplyHeli] call blck_fnc_protectVehicle;
//[_supplyHeli] call blck_fnc_emptyObject;
//[_supplyHeli] call EPOCH_server_setVToken;;
private["_grpPilot","_unitPilot"]; private["_grpPilot","_unitPilot"];
// add pilot to helicopter //add pilot (single group) to supply helicopter // add pilot to helicopter //add pilot (single group) to supply helicopter
@ -80,24 +82,49 @@ _unitPilot moveInDriver _supplyHeli;
_grpPilot selectLeader _unitPilot; _grpPilot selectLeader _unitPilot;
_grpPilot setVariable["paraGroup",_paraGroup]; _grpPilot setVariable["paraGroup",_paraGroup];
_statementSendHeliHome = "(group this) spawn blck_fnc_sendHeliHome; diag_log 'sending heli home';";
_statementDropParatroops = "(group this) spawn blck_fnc_spawnParaUnits; diag_log 'spawning para units';";
_statementDropLootCrate = "(group this) spawn blck_fnc_spawnParaCrate; diag_log 'spawning para crate';";
//set waypoint for helicopter //set waypoint for helicopter
private["_wpDestination"]; private["_wpDestination"];
[_grpPilot, 0] setWPPos _pos; [_grpPilot, 0] setWPPos _pos;
[_grpPilot, 0] setWaypointType "MOVE"; [_grpPilot, 0] setWaypointType "MOVE";
[_grpPilot, 0] setWaypointSpeed "FULL"; [_grpPilot, 0] setWaypointSpeed "FULL";
[_grpPilot, 0] setWaypointBehaviour "CARELESS"; [_grpPilot, 0] setWaypointBehaviour "CARELESS";
[_grpPilot, 0] setWaypointCompletionRadius 30; [_grpPilot, 0] setWaypointCompletionRadius 100;
[_grpPilot, 0] setWaypointStatements ["true","(this) spawn blck_fnc_dropReinforcements;"]; //[_grpPilot, 0] setWaypointStatements ["true",_statementDropParatroops];
[_grpPilot,0] setWaypointTimeout [0.5,0.5,0.5]; [_grpPilot,0] setWaypointTimeout [0.5,0.5,0.5];
_grpPilot setCurrentWaypoint [_grpPilot,0]; _grpPilot setCurrentWaypoint [_grpPilot,0];
_waypoint = _grpPilot addWaypoint [_pos,0];
_waypoint setWaypointType "MOVE";
_waypoint setWaypointTimeout [3,6,9];
_waypoint setWaypointCompletionRadius 150;
//_waypoint setWaypointStatements ["true",_statementDropLootCrate];
_waypoint setWaypointCombatMode _combatMode;
_waypoint setWaypointBehaviour _behavior;
_waypoint setWaypointSpeed "LIMITED";
_waypoint = _grpPilot addWaypoint [_pos,0];
_waypoint setWaypointType "MOVE";
_waypoint setWaypointTimeout [3,6,9];
_waypoint setWaypointCompletionRadius 150;
//_waypoint setWaypointStatements ["true",_statementSendHeliHome];
_waypoint setWaypointCombatMode _combatMode;
_waypoint setWaypointBehaviour _behavior;
_waypoint setWaypointSpeed "LIMITED";
//Announce reinforcements are inbound to nearby players //Announce reinforcements are inbound to nearby players
private["_message"]; private["_message"];
_message = "A Helicopter Carrying Reinforcements was Spotted Near You!"; _message = "A Helicopter Carrying Reinforcements was Spotted Near You!";
[["reinforcements",_message,_pos]] call blck_fnc_messageplayers; [["reinforcements",_message,_pos]] call blck_fnc_messageplayers;
diag_log "reinforcements:: helispawned and inbound, message sent"; diag_log "_fnc_callInReinforcements:: helispawned and inbound, message sent";
_grpPilot spawn blck_fnc_spawnParaUnits;
_grpPilot spawn blck_fnc_spawnParaCrate;
uisleep 10;
_grpPilot spawn blck_fnc_sendHeliHome;
_supplyHeli setVariable["blck_DeleteAt", (diag_tickTime + 300)]; _supplyHeli setVariable["blck_DeleteAt", (diag_tickTime + 300)];
blck_missionVehicles pushback _supplyHeli; blck_missionVehicles pushback _supplyHeli;

View File

@ -6,8 +6,8 @@
1/23/17 1/23/17
*/ */
_grpPilot = _this; _pilot = this;
_grpPilot = group _pilot;
_params = _grpPilot getVariable["params"]; _params = _grpPilot getVariable["params"];
_params params["_supplyHeli","_numAI","_skillAI","_dropLoot","_lootCounts","_weapons","_uniforms","_headgear","_patrol"]; _params params["_supplyHeli","_numAI","_skillAI","_dropLoot","_lootCounts","_weapons","_uniforms","_headgear","_patrol"];
@ -15,14 +15,16 @@ diag_log format["_fnc_dropReinforcements:: Called with parameters _supplyHeli %1
diag_log "_fnc_dropReinforcements:: heli on station, calling blck_fnc_spawnParaUnits"; diag_log "_fnc_dropReinforcements:: heli on station, calling blck_fnc_spawnParaUnits";
// params["_supplyHeli","_missionPos","_numAI","_skillAI","_weapons","_uniforms","_headGear"];
[_supplyHeli,_numAI,_skillAI,_weapons,_uniforms,_headgear] spawn blck_fnc_spawnParaUnits; [_supplyHeli,_numAI,_skillAI,_weapons,_uniforms,_headgear] spawn blck_fnc_spawnParaUnits;
if (_dropLoot) then if (_dropLoot) then
{ {
diag_log "_fnc_dropReinforcements:: heli on station, calling blck_fnc_spawnParaLoot"; diag_log "_fnc_dropReinforcements:: heli on station, calling blck_fnc_spawnParaLoot";
// params["_supplyHeli","_lootCounts"];
[_supplyHeli,_lootCounts] spawn blck_fnc_spawnParaLoot; [_supplyHeli,_lootCounts] spawn blck_fnc_spawnParaLoot;
}; };
uiSleep 10; uiSleep 10;
[_supplyHeli] spawn blck_fnc_sendHeliHome; [_supplyHeli,_grpPilot] spawn blck_fnc_sendHeliHome;

View File

@ -2,14 +2,14 @@
Author: Ghostrider-DbD- Author: Ghostrider-DbD-
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International License: Attribution-NonCommercial-ShareAlike 4.0 International
called once all tasks required at the mission are complete. Last Modified 1/23/17
*/ */
params["_grpPilot"];
_grpPilot = _this select 0; private["_heli","_pilot"];
_heli = _this select 1; _pilot = (units _grpPilot) select 0;
_heli = vehicle _pilot;
diag_log "reinforcements deployed:: send heli back to spawn"; diag_log "reinforcements deployed:: send heli back to spawn";
[[_heli], 300 /* 5 min*/] spawn blck_fnc_addObjToQue;
// select a random location abotu 2K from the mission // select a random location abotu 2K from the mission
_spawnVector = round(random(360)); _spawnVector = round(random(360));
_spawnDistance = 2000; _spawnDistance = 2000;
@ -32,35 +32,5 @@ _grpPilot = group this;
diag_log "reinforcements:: sending Heli Home"; diag_log "reinforcements:: sending Heli Home";
// End of sending heli home
////////////////////////
_fn_cleanupHeli = {
params["_supplyHeli","_homePos","_grpPilot"];
// run some tests to be sure everything went OK
_heliHome = false;
_startTime = diag_tickTime;
while { !(_heliHome) } do
{
_heliHome = (_supplyHeli distance _pos) < 300;
if ( !_heliHome && ((diag_tickTime - _startTime) > 300) ) then
{
_heliHome = true;
deleteVehicle _supplyHeli;
{
deleteVehicle _x;
}forEach units _grpPilot;
deleteGroup _grpPilot;
};
uiSleep 2;
};
};
[_supplyHeli,_spawnPos,_grpPilot] spawn _fn_cleanupHeli;
diag_log "reinforcements:: script done";

View File

@ -10,7 +10,6 @@
] call blck_spawnHeliParaCrate ] call blck_spawnHeliParaCrate
*/ */
params["_supplyHeli","_lootCounts"]; params["_supplyHeli","_lootCounts"];
private ["_chute","_crate"]; private ["_chute","_crate"];
@ -26,12 +25,7 @@ _offset = _supplyHeli getPos [10, _dir];
//open parachute and attach to crate //open parachute and attach to crate
_chute = createVehicle ["I_Parachute_02_F", [100, 100, 100], [], 0, "FLY"]; _chute = createVehicle ["I_Parachute_02_F", [100, 100, 100], [], 0, "FLY"];
private["_modType"]; [_chute] call blck_fnc_protectVehicle;
_modType = call blck_fnc_getModType;
if (_modType isEqualTo "Epoch") then
{
[_chute] call blck_fnc_protectVehicle;
};
_chute setPos [_offset select 0, _offset select 1, 100 ]; //(_offset select 2) - 10]; _chute setPos [_offset select 0, _offset select 1, 100 ]; //(_offset select 2) - 10];
diag_log format["_fnc_spawnParaCrate:: chute spawned yielding object %1 at postion %2", _chute, getPos _chute]; diag_log format["_fnc_spawnParaCrate:: chute spawned yielding object %1 at postion %2", _chute, getPos _chute];
@ -86,3 +80,4 @@ _fn_monitorCrate = {
}; };
[_crate,_chute] call _fn_monitorCrate; [_crate,_chute] call _fn_monitorCrate;
[[_crate], 1200 /* 20 min*/] spawn blck_fnc_addObjToQue;

View File

@ -19,11 +19,12 @@ _paraGroup setVariable ["blck_group",true,true];
diag_log format["_fnc_spawnParaUnits:: paratrooper group created; spawning %1 units",_numAI]; diag_log format["_fnc_spawnParaUnits:: paratrooper group created; spawning %1 units",_numAI];
//https://forums.bistudio.com/topic/127341-how-to-get-cargo-capacity-and-costweight-of-stuff-into-sqf/ //https://forums.bistudio.com/topic/127341-how-to-get-cargo-capacity-and-costweight-of-stuff-into-sqf/
//_veh = TypeOf (_supplyHeli); //for example //_veh = TypeOf (_supplyHeli); //for example
//_maxpeople = getNumber (configFile >> "CfgVehicles" >> _veh >> "transportSoldier"); //_maxpeople = getNumber (configFile >> "CfgVehicles" >> _veh >> "transportSoldier");
//if ( (_maxpeople - 1) < _numAI) then {_numAI = _maxpeople - 1;}; // calculate the max troops carried by the chopper minus 1 for the pilot who is already on board and adjust the number of AI to spawn as needed. //if ( (_maxpeople - 1) < _numAI) then {_numAI = _maxpeople - 1;}; // calculate the max troops carried by the chopper minus 1 for the pilot who is already on board and adjust the number of AI to spawn as needed.
_launcherType = "none";
_launcherType = "none";
_sniperExists = false; _sniperExists = false;
/* /*
@ -65,12 +66,15 @@ for "_i" from 1 to _numAI do
{ {
_offset = _supplyHeli getPos [10, _dir]; _offset = _supplyHeli getPos [10, _dir];
_chute = createVehicle ["Steerable_Parachute_F", [100, 100, 200], [], 0, "FLY"]; _chute = createVehicle ["Steerable_Parachute_F", [100, 100, 200], [], 0, "FLY"];
[_chute] call blck_fnc_protectVehicle;
/*
private["_modType"]; private["_modType"];
_modType = call blck_fnc_getModType; _modType = call blck_fnc_getModType;
if (_modType isEqualTo "Epoch") then if (_modType isEqualTo "Epoch") then
{ {
[_chute] call blck_fnc_protectVehicle; [_chute] call EPOCH_server_setVToken;;
}; };
*/
_unit = [[_offset select 0, _offset select 1, 180],_weapons,_paraGroup,_skillAI,_launcherType,_uniforms,_headGear] call blck_fnc_spawnAI; _unit = [[_offset select 0, _offset select 1, 180],_weapons,_paraGroup,_skillAI,_launcherType,_uniforms,_headGear] call blck_fnc_spawnAI;
_unit setDir (getDir _supplyHeli) - 90; _unit setDir (getDir _supplyHeli) - 90;
_chute setPos [_offset select 0, _offset select 1, 250]; //(_offset select 2) - 10]; _chute setPos [_offset select 0, _offset select 1, 250]; //(_offset select 2) - 10];

View File

@ -18,7 +18,7 @@ _arr = date call BIS_fnc_sunriseSunsetTime;
_sunrise = _arr select 0; _sunrise = _arr select 0;
_sunset = _arr select 1; _sunset = _arr select 1;
_time = dayTime; _time = dayTime;
//diag_log format["_fnc_Time:: -- > _sunrise = %1 | _sunset = %2 | _time = %3",_sunrise,_sunset,_time]; diag_log format["_fnc_Time:: -- > _sunrise = %1 | _sunset = %2 | _time = %3",_sunrise,_sunset,_time];
// Night // Night
if (_time > (_sunset + 0.5) || _time < (_sunrise - 0.5)) exitWith {setTimeMultiplier blck_timeAccelerationNight; diag_log format["NIGHT TIMGE ADJUSTMENT:: time accel updated to %1; time of day = %2",timeMultiplier,dayTime];}; if (_time > (_sunset + 0.5) || _time < (_sunrise - 0.5)) exitWith {setTimeMultiplier blck_timeAccelerationNight; diag_log format["NIGHT TIMGE ADJUSTMENT:: time accel updated to %1; time of day = %2",timeMultiplier,dayTime];};

View File

@ -2,13 +2,37 @@
Delete alive AI. Delete alive AI.
Now called from the main thread which tracks the time elapsed so that we no longer spawn a wait timer for each completed mission. Now called from the main thread which tracks the time elapsed so that we no longer spawn a wait timer for each completed mission.
by Ghostrider by Ghostrider
Last updated 1/22/17 Last updated 1/24/17
*/ */
params["_aiList"]; _fn_deleteAIfromList = {
params["_aiList"];
if (blck_debugLevel > 0) then {diag_log format["_fn_deleteAIfromList:: _aiList = %1",_aiList];};
{
if (blck_debugLevel > 1) then {diag_log format["_fn_deleteAIfromList:: -> deleteing AI Unit %1",_x];};
[_x] call blck_fnc_deleteAI;
}forEach _aiList;
};
diag_log format["_fnc_cleanupAliveAI called at %1",diag_tickTime];
for "_i" from 1 to (count blck_liveMissionAI) do
{ {
//if (blck_debugLevel > 2) then {diag_log format["_fnc_cleanupAliveAI:: -> deleteing AI Unit %1",_x];}; if ((_i) <= count blck_liveMissionAI) then
[_x] call blck_fnc_deleteAI; {
}forEach _aiList; _units = blck_liveMissionAI select (_i - 1);
diag_log format["_fnc_cleanupAliveAI:: (34) evaluating with delete time = %2 and diag_tickTime %1", diag_tickTime, _units select 1];
if (diag_tickTime > (_units select 1) ) then
{
diag_log format["_fnc_cleanupAliveAI:: cleaning up AI group %1",_units];
{
diag_log format["_fnc_cleanupAliveAI:: deleting unit %1",_x];
[_x] call blck_fnc_deleteAI;
}forEach (_units select 0);
uiSleep 0.1;
blck_liveMissionAI set[(_i - 1), -1];
blck_liveMissionAI = blck_liveMissionAI - [-1]; // Remove that list of live AI from the list.
if (blck_debugLevel > 1) then {diag_log format["_fnc_mainTread:: blck_liveMissionAI updated to %1",blck_liveMissionAI];};
};
};
};

View File

@ -1,9 +1,10 @@
/* /*
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 1/13/17 Last updated 1/24/17
*/ */
diag_log format["fnc_cleanupDeadAI called at time %1",diag_tickTime];
private["_aiList","_ai"]; private["_aiList","_ai"];
_aiList = +blck_deadAI; _aiList = +blck_deadAI;
{ {

View File

@ -6,7 +6,7 @@ params["_Vehicle"];
private["_modType"]; private["_modType"];
_modType = call blck_fnc_getModType; _modType = call blck_fnc_getModType;
switch (_ModType) do { switch (_ModType) do {
case "_modType": case "Epoch":
{ {
diag_log format["GMS_fnc_protectVehicle:: Tokens set for vehicle %1",_Vehicle]; diag_log format["GMS_fnc_protectVehicle:: Tokens set for vehicle %1",_Vehicle];
//_Vehicle call EPOCH_server_vehicleInit; //_Vehicle call EPOCH_server_vehicleInit;

View File

@ -10,7 +10,23 @@
private ["_veh","_vehList"]; private ["_veh","_vehList"];
_vehList = blck_missionVehicles; _vehList = blck_missionVehicles;
if (blck_debugLevel > 1) then {diag_log format["_fnc_vehicleMonitor:: function called with blck_missionVehicles = %1",_vehList];};
_fn_releaseVehicle = {
params["_v"];
//diag_log format["vehicleMonitor.sqf: make vehicle available to players; stripping eventHandlers from _v %1",_v];
blck_missionVehicles = blck_missionVehicles - [_v];
_v removealleventhandlers "GetIn";
_v removealleventhandlers "GetOut";
_v setVehicleLock "UNLOCKED" ;
_v setVariable["releasedToPlayers",true];
[_v] call blck_fnc_emptyObject;
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_v];
};
};
if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: function called at %1",diag_tickTime];};
{ {
_veh = _x; _veh = _x;
if (_veh getVariable["blck_DeleteAt",0] > 0) then if (_veh getVariable["blck_DeleteAt",0] > 0) then
@ -23,15 +39,20 @@ if (blck_debugLevel > 1) then {diag_log format["_fnc_vehicleMonitor:: function c
}; };
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 // Deal with a static weapon
{ {
if (blck_debugLevel > 2) then if (blck_killEmptyStaticWeapons) then
{ {
diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh]; if (blck_debugLevel > 2) then
{
diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];
};
_veh setDamage 1;
_veh setVariable["blck_DeleteAt",diag_tickTime + 60];
} else {
[_veh] call _fn_releaseVehicle;
}; };
_veh setDamage 1; }else { // Deal with vehicles
_veh setVariable["blck_DeleteAt",diag_tickTime + 60];
}else {
if (blck_killEmptyAIVehicles) then if (blck_killEmptyAIVehicles) then
{ {
if (blck_debugLevel > 2) then if (blck_debugLevel > 2) then
@ -44,20 +65,10 @@ if (blck_debugLevel > 1) then {diag_log format["_fnc_vehicleMonitor:: function c
} forEach ["HitLFWheel","HitLF2Wheel","HitRFWheel","HitRF2Wheel","HitEngine","HitLBWheel","HitLMWheel","HitRBWheel","HitRMWheel","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun"]; } 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]; _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]; [_veh] call _fn_releaseVehicle;
blck_missionVehicles = blck_missionVehicles - [_veh];
_veh removealleventhandlers "GetIn";
_veh removealleventhandlers "GetOut";
_veh setVehicleLock "UNLOCKED" ;
_veh setVariable["releasedToPlayers",true];
[_veh] call blck_fnc_emptyObject;
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_veh];
};
}; };
}; };
} else { } else { // Add magazine to vehicle if possible
private ["_crew","_mag","_allMags","_cnt"]; private ["_crew","_mag","_allMags","_cnt"];
//_veh setVehicleAmmo 1; //_veh setVehicleAmmo 1;
//_veh setFuel 1; //_veh setFuel 1;

View File

@ -19,7 +19,7 @@ blck_fnc_getModType = compileFinal preprocessFileLineNumbers "\q\addons\custom_
blck_fnc_groupsOnAISide = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"; // Returns the number of groups on the side used by AI blck_fnc_groupsOnAISide = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"; // Returns the number of groups on the side used by AI
blck_fnc_emptyObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"; blck_fnc_emptyObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf";
blck_fnc_playerInRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"; blck_fnc_playerInRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf";
blck_fnc_mainThread = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"; //
// Player-related functions // Player-related functions
blck_fnc_rewardKiller = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"; blck_fnc_rewardKiller = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf";
blck_fnc_MessagePlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"; // Send messages to players regarding Missions blck_fnc_MessagePlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"; // Send messages to players regarding Missions
@ -28,6 +28,7 @@ blck_fnc_MessagePlayers = compileFinal preprocessFileLineNumbers "\q\addons\cus
blck_fnc_selectAILoadout = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"; blck_fnc_selectAILoadout = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf";
blck_fnc_addMissionToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"; // blck_fnc_addMissionToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"; //
blck_fnc_updateMissionQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"; // blck_fnc_updateMissionQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"; //
blck_fnc_spawnPendingMissions = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"; //
blck_fnc_addLiveAItoQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"; blck_fnc_addLiveAItoQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf";
blck_fnc_addObjToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"; // blck_fnc_addObjToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"; //
blck_fnc_missionTimer = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionTimer.sqf"; blck_fnc_missionTimer = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionTimer.sqf";
@ -50,6 +51,8 @@ blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_s
blck_fnc_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission. blck_fnc_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission.
blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"; blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf";
// #define Reinforcements 1
#ifdef Reinforcements
// Reinforcement-related functions // Reinforcement-related functions
blck_fnc_callInReinforcements = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_callInReinforcements.sqf"; blck_fnc_callInReinforcements = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_callInReinforcements.sqf";
blck_fnc_spawnParaUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_spawnParaUnits.sqf"; blck_fnc_spawnParaUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_spawnParaUnits.sqf";
@ -58,6 +61,7 @@ blck_fnc_spawnParaCrate = compileFinal preprocessFileLineNumbers "\q\addons\cus
blck_fnc_sendHeliHome = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_sendHeliHome.sqf"; blck_fnc_sendHeliHome = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_sendHeliHome.sqf";
//blck_fnc_spawnHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_spawnParaUnits.sqf"; //blck_fnc_spawnHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_spawnParaUnits.sqf";
//blck_fnc_spawnHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_spawnParaUnits.sqf"; //blck_fnc_spawnHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Reinforcements\GMS_fnc_spawnParaUnits.sqf";
#endif
// Group-related functions // Group-related functions
blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units] blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units]

View File

@ -1,6 +1,4 @@
/* /*
AI Mission Compiled by blckeagls @ Zombieville.net
Further modified by Ghostrider -
This file contains most constants that define mission parameters, AI behavior and loot for mission system. This file contains most constants that define mission parameters, AI behavior and loot for mission system.
Last modified 8/1/15 Last modified 8/1/15
*/ */
@ -23,7 +21,6 @@ Last modified 8/1/15
blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation
blck_timeAccelerationNight = 6; // Nighttim time acceleration blck_timeAccelerationNight = 6; // Nighttim time acceleration
//blck_configsLoaded = false;
/************************************************************** /**************************************************************
BLACKLIST LOCATIONS BLACKLIST LOCATIONS
@ -57,7 +54,8 @@ Last modified 8/1/15
blck_useHC = false; // Not Yet Working blck_useHC = false; // Not Yet Working
// Kill message configurations // Kill message configurations
blck_useKillMessages = false; // when true a message will be broadcast to all players each time an AI is killed. // These determine whether and when messages are sent to players regarding AI Kills or illegal kills that might damage a vehicle.
blck_useKillMessages = false; // when true a message will be broadcast to all players each time an AI is killed; may impact server performance.
blck_useKillScoreMessage = true; // when true a tile is displayed to the killer with the kill score information blck_useKillScoreMessage = true; // when true a tile is displayed to the killer with the kill score information
blck_useIEDMessages = true; blck_useIEDMessages = true;
@ -74,7 +72,7 @@ Last modified 8/1/15
// Options to spawn a smoking wreck near the mission. When the first parameter is true, a wreck or junk pile will be spawned. // Options to spawn a smoking wreck near the mission. When the first parameter is true, a wreck or junk pile will be spawned.
// It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission. // It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission.
blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether.
blck_useSignalEnd = true; // When true a smoke grenade will appear at the loot crate for 2 min after mission completion. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion.
// PLAYER PENALTIES // PLAYER PENALTIES
blck_RunGear = true; // When set to true, AI that have been run over will ve stripped of gear, and the vehicle will be given blck_RunGearDamage of damage. blck_RunGear = true; // When set to true, AI that have been run over will ve stripped of gear, and the vehicle will be given blck_RunGearDamage of damage.
@ -88,39 +86,51 @@ Last modified 8/1/15
blck_forbidenVehicleGuns = ["LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC",/*"HMG_M2",*/"HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","HMG_127_LSV_01"]; // Add any vehicles for which you wish to forbid vehicle kills, o blck_forbidenVehicleGuns = ["LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC",/*"HMG_M2",*/"HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","HMG_127_LSV_01"]; // Add any vehicles for which you wish to forbid vehicle kills, o
// GLOBAL MISSION PARAMETERS // GLOBAL MISSION PARAMETERS
blck_useKilledAIName = true; // When false, the name of the killer (player), weapon and distance are displayed; otherwise the name of the player and AI unit killed are shown. blck_useKilledAIName = true; // When false, the name of the killer (player), weapon and distance are displayed; otherwise the name of the player, distance and name of AI unit killed are shown.
blck_useMines = false; // when true mines are spawned around the mission area. these are cleaned up when a player reaches the crate. Note that this is a default and that mission-specific settings can be defined for each mission using the template blck_useMines = false; // when true mines are spawned around the mission area. these are cleaned up when a player reaches the crate. Turn this off if you have vehicle patrols.
blck_cleanupCompositionTimer = 1200; // Mission objects will be deleted after the mission is completed after a deley set by this timer.
blck_cleanUpLootChests = false; // when true, loot crates will be deleted together with other mission objects.
blck_MissionTimout = 60*60; // 60 min - missions will timeout and respawn in another location. This prevents missions in impossible locations from persisting.
// AI VEHICLE PATROL PARAMETERS
// Settings for Mission Vehicles.
blck_useVehiclePatrols = true; // When true vehicles will be spawned at missions and will patrol the mission area. blck_useVehiclePatrols = true; // When true vehicles will be spawned at missions and will patrol the mission area.
blck_killEmptyAIVehicles = false; // when true, the AI vehicle will be extensively damaged once all AI have gotten out. blck_killEmptyAIVehicles = false; // when true, the AI vehicle will be extensively damaged once all AI have gotten out.
blck_AIPatrolVehicles = ["B_G_Offroad_01_armed_EPOCH","B_LSV_01_armed_F"]; // Type of vehicle spawned to defend AI bases blck_AIPatrolVehicles = ["B_G_Offroad_01_armed_EPOCH","B_LSV_01_armed_F"]; // Type of vehicle spawned to defend AI bases
// Updated for v6.51 // AI STATIC WEAPON PARAMETERS
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission. blck_useStatic = true; // When true, AI will man static weapons spawned 20-30 meters from the mission center. These are very effective against most vehicles
blck_killEmptyStaticWeapons = true; // When true, static weapons will have damage set to 1 when the AI manning them is killed.
blck_staticWeapons = ["B_HMG_01_high_F"/*,"B_GMG_01_high_F","O_static_AT_F"*/]; // [0.50 cal, grenade launcher, AT Launcher]
// AI paratrooper reinforcement paramters
blck_enableReinforcements = false; // When true, reinforcements will be spawned at missions based on a probability defined in each mission template.
// Armed Helis
blck_AIHelis = ["B_Heli_Light_01_armed_F","B_Heli_Transport_01_camo_F","B_Heli_Transport_03_F"]; // The helis used to bring in and drop reinforcements.
// Unarmed Helis provided for reference.
// ["B_Heli_Transport_03_unarmed_EPOCH","O_Heli_Light_02_unarmed_EPOCH","I_Heli_Transport_02_EPOCH"];
// Mission - specific settings
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not thoroughly tested.
blck_enableOrangeMissions = 1; blck_enableOrangeMissions = 1;
blck_enableGreenMissions = 1; blck_enableGreenMissions = 1;
blck_enableRedMissions = 1; blck_enableRedMissions = 1;
blck_enableBlueMissions = 1; blck_enableBlueMissions = 1;
// AI VEHICLE PATROL PARAMETERS
//Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of static weapons or vehicles. To discourage players runniing with with vehicles, spawn more B_GMG_01_high //Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of static weapons or vehicles. To discourage players runniing with with vehicles, spawn more B_GMG_01_high
blck_SpawnVeh_Orange = 3; // Number of static weapons at Orange Missions blck_SpawnVeh_Orange = 3; // Number of static weapons at Orange Missions
blck_SpawnVeh_Green = 2; // Number of static weapons at Green Missions blck_SpawnVeh_Green = 2; // Number of static weapons at Green Missions
blck_SpawnVeh_Blue = -1; // Number of static weapons at Blue Missions blck_SpawnVeh_Blue = -1; // Number of static weapons at Blue Missions
blck_SpawnVeh_Red = 1; // Number of static weapons at Red Missions blck_SpawnVeh_Red = 1; // Number of static weapons at Red Missions
// AI STATIC WEAPON PARAMETERS
blck_useStatic = true; // When true, AI will man static weapons spawned 20-30 meters from the mission center. These are very effective against most vehicles
blck_staticWeapons = ["B_HMG_01_high_F"/*,"B_GMG_01_high_F","O_static_AT_F"*/]; // [0.50 cal, grenade launcher, AT Launcher]
// Defines how many static weapons to spawn. Set this to -1 to disable spawning // Defines how many static weapons to spawn. Set this to -1 to disable spawning
blck_SpawnEmplaced_Orange = 3; // Number of static weapons at Orange Missions blck_SpawnEmplaced_Orange = 3; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Green = 2; // Number of static weapons at Green Missions blck_SpawnEmplaced_Green = 2; // Number of static weapons at Green Missions
blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions
// AI paratrooper reinforcement paramters
blck_AIHelis = ["B_Heli_Light_01_armed_F","B_Heli_Transport_01_camo_F","B_Heli_Transport_03_F"];
// MISSION TIMERS // MISSION TIMERS
// Reduce to 1 sec for immediate spawns, or longer if you wish to space the missions out // Reduce to 1 sec for immediate spawns, or longer if you wish to space the missions out
blck_TMin_Orange = 250; blck_TMin_Orange = 250;
@ -134,7 +144,6 @@ Last modified 8/1/15
blck_TMax_Blue = 200; blck_TMax_Blue = 200;
blck_TMax_Red = 250; blck_TMax_Red = 250;
blck_MissionTimout = 60*60; // 40 min
/**************************************************************** /****************************************************************
@ -159,15 +168,15 @@ 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_AliveAICleanUpTimer = 900; // Time after mission completion at which any remaining live AI are deleted. blck_AliveAICleanUpTimer = 1200; // Time after mission completion at which any remaining live AI are deleted.
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];
// How precisely player locations will be revealed to AI after an AI kill // How precisely player locations will be revealed to AI after an AI kill
// values are ordered as follows [blue, red, green, orange]; // values are ordered as follows [blue, red, green, orange];
blck_AIIntelligence = [0.5, 1, 2, 4]; blck_AIIntelligence = [0.5, 1, 2, 4];
blck_baseSkill = 1.0; blck_baseSkill = 1.0; // The overal skill of the AI - range 0.1 to 1.0.
/*************************************************************** /***************************************************************
@ -182,7 +191,6 @@ Last modified 8/1/15
blck_SkillsOrange = [ blck_SkillsOrange = [
["aimingAccuracy",0.4],["aimingShake",0.7],["aimingSpeed",0.7],["endurance",1.00],["spotDistance",1.0],["spotTime",1.0],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00] ["aimingAccuracy",0.4],["aimingShake",0.7],["aimingSpeed",0.7],["endurance",1.00],["spotDistance",1.0],["spotTime",1.0],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]
]; ];
blck_reinforceOrange = [0.3, 5, 0.2];
// Green Missions // Green Missions
blck_MinAI_Green = 16; blck_MinAI_Green = 16;
@ -191,7 +199,6 @@ Last modified 8/1/15
blck_SkillsGreen = [ blck_SkillsGreen = [
["aimingAccuracy",0.3],["aimingShake",0.65],["aimingSpeed",0.65],["endurance",0.9],["spotDistance",0.9],["spotTime",0.9],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75] ["aimingAccuracy",0.3],["aimingShake",0.65],["aimingSpeed",0.65],["endurance",0.9],["spotDistance",0.9],["spotTime",0.9],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75]
]; ];
blck_reinforceGreen = [0.25, 4, 0.2];
// Red Missions // Red Missions
blck_MinAI_Red = 12; blck_MinAI_Red = 12;
@ -200,7 +207,6 @@ Last modified 8/1/15
blck_SkillsRed = [ blck_SkillsRed = [
["aimingAccuracy",0.2],["aimingShake",0.6],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.8],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70] ["aimingAccuracy",0.2],["aimingShake",0.6],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.8],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70]
]; ];
blck_reinforceRed = [0.2, 3, 0.2];
// Blue Missions // Blue Missions
blck_MinAI_Blue = 8; blck_MinAI_Blue = 8;
@ -209,7 +215,6 @@ Last modified 8/1/15
blck_SkillsBlue = [ blck_SkillsBlue = [
["aimingAccuracy",0.1],["aimingShake",0.5],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60] ["aimingAccuracy",0.1],["aimingShake",0.5],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60]
]; ];
blck_reinforceBlue = [0.1, 2, 0.2];
// Add some money to AI; only works with Exile for now. // Add some money to AI; only works with Exile for now.
blck_maxMoneyOrange = 25; blck_maxMoneyOrange = 25;
@ -217,7 +222,6 @@ Last modified 8/1/15
blck_maxMoneyRed = 15; blck_maxMoneyRed = 15;
blck_maxMoneyBlue = 10; blck_maxMoneyBlue = 10;
// AI Settings for scouts, Hunters and crashes are definded in thos missions.
/********************************************************************************* /*********************************************************************************
AI WEAPONS, UNIFORMS, VESTS AND GEAR AI WEAPONS, UNIFORMS, VESTS AND GEAR

View File

@ -1,12 +1,10 @@
/* /*
AI Mission Compiled by blckeagls @ Zombieville.net
Further modified by Ghostrider -
This file contains most constants that define mission parameters, AI behavior and loot for mission system. This file contains most constants that define mission parameters, AI behavior and loot for mission system.
Last modified 8/1/15 Last modified 8/1/15
*/ */
blck_configsLoaded = false; if (blck_debugON) then {diag_log "[blckeagls] Loading blck_configs_epoch.sqf";};
/* /*
Configuration for Addons that support the overall Mission system. Configuration for Addons that support the overall Mission system.
These are a module to spawn map addons generated with the Eden Editor These are a module to spawn map addons generated with the Eden Editor
@ -21,7 +19,7 @@ Last modified 8/1/15
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
blck_timeAccelerationDay = 1; // Daytime time accelearation blck_timeAccelerationDay = 1; // Daytime time accelearation
blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation
blck_timeAccelerationNight = 6; // Nighttim time acceleration blck_timeAccelerationNight = 6; // Nighttim time acceleration
/************************************************************** /**************************************************************
@ -29,9 +27,8 @@ Last modified 8/1/15
**************************************************************/ **************************************************************/
// if true then missions will not spawn within 1000 m of spawn points for Altis, Bornholm, Cherno, Esseker or stratis. // if true then missions will not spawn within 1000 m of spawn points for Altis, Bornholm, Cherno, Esseker or stratis.
blck_blacklistSpawns = true; // do not spawn a mission within 1000 m of a spawn zone. blck_blacklistTraderCities = true; // Set this = true if you would like the mission system to automatically search for the locations of the Epoch trader cities. Note that these are pre-defined in GMS_fnc_findWorld for the most common maps.
blck_blacklistTraderCities = true; // do not spawn a mission within 1000 m of a trader. // list of locations that are protected against mission spawns
blcklistConcreteMixerZones = true; // do not spawn a mission within 1000 m of a concrete mixer zone.
switch (toLower(worldName)) do switch (toLower(worldName)) do
{ {
@ -55,10 +52,12 @@ Last modified 8/1/15
//////// ////////
// Headless Client Configurations // Headless Client Configurations
blck_useHC = false; // Not Yet Working blck_useHC = false; // Not Yet Working
// Kill message configurations // Kill message configurations
blck_useKillMessages = false; // when true a message will be broadcast to all players each time an AI is killed. // These determine whether and when messages are sent to players regarding AI Kills or illegal kills that might damage a vehicle.
blck_useKillMessages = false; // when true a message will be broadcast to all players each time an AI is killed; may impact server performance.
blck_useKillScoreMessage = true; // when true a tile is displayed to the killer with the kill score information blck_useKillScoreMessage = true; // when true a tile is displayed to the killer with the kill score information
blck_useIEDMessages = true;
// MISSION MARKER CONFIGURATION // MISSION MARKER CONFIGURATION
// blck_labelMapMarkers: Determines if when the mission composition provides text labels, map markers with have a text label indicating the mission type // blck_labelMapMarkers: Determines if when the mission composition provides text labels, map markers with have a text label indicating the mission type
@ -66,17 +65,14 @@ Last modified 8/1/15
// When set to true,"dot", ext will be to the right of a black dot at the center the mission marker. // When set to true,"dot", ext will be to the right of a black dot at the center the mission marker.
blck_labelMapMarkers = [true,"center"]; blck_labelMapMarkers = [true,"center"];
blck_preciseMapMarkers = true; // Map markers are/are not centered at the loot crate blck_preciseMapMarkers = true; // Map markers are/are not centered at the loot crate
//Minimum distance between missions //Minimum distance between missions
blck_MinDistanceFromMission = 2000; blck_MinDistanceFromMission = 2000;
// Options to spawn a smoking wreck near the mission. When the first parameter is true, a wreck or junk pile will be spawned. // Options to spawn a smoking wreck near the mission. When the first parameter is true, a wreck or junk pile will be spawned.
// It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission. // It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission.
blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether.
blck_useSignalEnd = true; // When true a smoke grenade will appear at the loot crate for 2 min after mission completion. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion.
// Loot Crates
//blck_missionCrateTypes = ["Box_NATO_Wps_F","Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_IND_AmmoVeh_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F"];
// PLAYER PENALTIES // PLAYER PENALTIES
blck_RunGear = true; // When set to true, AI that have been run over will ve stripped of gear, and the vehicle will be given blck_RunGearDamage of damage. blck_RunGear = true; // When set to true, AI that have been run over will ve stripped of gear, and the vehicle will be given blck_RunGearDamage of damage.
@ -84,39 +80,54 @@ Last modified 8/1/15
blck_VK_Gear = true; // When set to true, AI that have been killed by a player in a vehicle in the list of forbidden vehicles or using a forbiden gun will be stripped of gear and the vehicle will be given blck_RunGearDamage of damage blck_VK_Gear = true; // When set to true, AI that have been killed by a player in a vehicle in the list of forbidden vehicles or using a forbiden gun will be stripped of gear and the vehicle will be given blck_RunGearDamage of damage
blck_VK_RunoverDamage = true; // when the AI was run over blck_RunGearDamage of damage will be applied to the killer's vehicle. blck_VK_RunoverDamage = true; // when the AI was run over blck_RunGearDamage of damage will be applied to the killer's vehicle.
blck_VK_GunnerDamage = true; // when the AI was killed by a gunner on a vehicle that is is in the list of forbidden vehicles, blck_RunGearDamage of damage will be applied to the killer's vehicle each time an AI is killed with a vehicle's gun. blck_VK_GunnerDamage = true; // when the AI was killed by a gunner on a vehicle that is is in the list of forbidden vehicles, blck_RunGearDamage of damage will be applied to the killer's vehicle each time an AI is killed with a vehicle's gun.
blck_forbidenVehicles = ["B_MRAP_01_hmg_F","O_MRAP_02_hmg_F","Exile_Car_BRDM2_HQ","Exile_Car_HMMWV_M134_Green","Exile_Car_HMMWV_M134_Desert","Exile_Car_HMMWV_M2_Green","Exile_Car_HMMWV_M2_Desert","Exile_Car_ProwlerLight","Exile_Car_BTR40_MG_Green","Exile_Car_BTR40_MG_Camo"]; // Add any vehicles for which you wish to forbid vehicle kills blck_forbidenVehicles = ["B_MRAP_01_hmg_F","O_MRAP_02_hmg_F"]; // Add any vehicles for which you wish to forbid vehicle kills
// For a listing of the guns mounted on various land vehicles see the following link: https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Vehicle_Weapons // For a listing of the guns mounted on various land vehicles see the following link: https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Vehicle_Weapons
blck_forbidenVehicleGuns = ["LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC","HMG_M2","HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","DShKM","DSHKM","HMG_127_LSV_01"]; // Add any vehicles for which you wish to forbid vehicle kills, o // HMG_M2 is mounted on the armed offroad that is spawned by Epoch
blck_forbidenVehicleGuns = ["LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC",/*"HMG_M2",*/"HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","HMG_127_LSV_01"]; // Add any vehicles for which you wish to forbid vehicle kills, o
// GLOBAL MISSION PARAMETERS // GLOBAL MISSION PARAMETERS
blck_useKilledAIName = true; // When false, the name of the killer (player), weapon and distance are displayed; otherwise the name of the player and AI unit killed are shown. blck_useKilledAIName = true; // When false, the name of the killer (player), weapon and distance are displayed; otherwise the name of the player, distance and name of AI unit killed are shown.
blck_useMines = false; // when true mines are spawned around the mission area. these are cleaned up when a player reaches the crate. Note that this is a default and that mission-specific settings can be defined for each mission using the template blck_useMines = false; // when true mines are spawned around the mission area. these are cleaned up when a player reaches the crate. Turn this off if you have vehicle patrols.
blck_cleanupCompositionTimer = 1200; // Mission objects will be deleted after the mission is completed after a deley set by this timer.
blck_cleanUpLootChests = false; // when true, loot crates will be deleted together with other mission objects.
blck_MissionTimout = 60*60; // 60 min - missions will timeout and respawn in another location. This prevents missions in impossible locations from persisting.
// AI VEHICLE PATROL PARAMETERS
// Settings for Mission Vehicles.
blck_useVehiclePatrols = true; // When true vehicles will be spawned at missions and will patrol the mission area. blck_useVehiclePatrols = true; // When true vehicles will be spawned at missions and will patrol the mission area.
blck_killEmptyAIVehicles = false; // when true, the AI vehicle will be extensively damaged once all AI have gotten out. blck_killEmptyAIVehicles = false; // when true, the AI vehicle will be extensively damaged once all AI have gotten out.
blck_AIPatrolVehicles = ["Exile_Car_Offroad_Armed_Guerilla01","Exile_Car_Offroad_Armed_Guerilla02","Exile_Car_HMMWV_M2_Green","Exile_Car_HMMWV_M2_Desert","Exile_Car_BTR40_MG_Green","Exile_Car_BTR40_MG_Camo"]; // Type of vehicle spawned to defend AI bases blck_AIPatrolVehicles = ["B_G_Offroad_01_armed_EPOCH","B_LSV_01_armed_F"]; // Type of vehicle spawned to defend AI bases
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission. // AI STATIC WEAPON PARAMETERS
blck_useStatic = true; // When true, AI will man static weapons spawned 20-30 meters from the mission center. These are very effective against most vehicles
blck_killEmptyStaticWeapons = true; // When true, static weapons will have damage set to 1 when the AI manning them is killed.
blck_staticWeapons = ["B_HMG_01_high_F"/*,"B_GMG_01_high_F","O_static_AT_F"*/]; // [0.50 cal, grenade launcher, AT Launcher]
// AI paratrooper reinforcement paramters
// Armed Helis
blck_AIHelis = ["B_Heli_Light_01_armed_F","B_Heli_Transport_01_camo_F","B_Heli_Transport_03_F"];
// Unarmed Helis provided for reference.
// ["B_Heli_Transport_03_unarmed_EPOCH","O_Heli_Light_02_unarmed_EPOCH","I_Heli_Transport_02_EPOCH"];
// Mission - specific settings
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not thoroughly tested.
blck_enableOrangeMissions = 1; blck_enableOrangeMissions = 1;
blck_enableGreenMissions = 1; blck_enableGreenMissions = 1;
blck_enableRedMissions = 1; blck_enableRedMissions = 1;
blck_enableBlueMissions = 1; blck_enableBlueMissions = 1;
// AI VEHICLE PATROL PARAMETERS
//Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of static weapons or vehicles. To discourage players runniing with with vehicles, spawn more B_GMG_01_high //Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of static weapons or vehicles. To discourage players runniing with with vehicles, spawn more B_GMG_01_high
blck_SpawnVeh_Orange = 4; // Number of static weapons at Orange Missions blck_SpawnVeh_Orange = 3; // Number of static weapons at Orange Missions
blck_SpawnVeh_Green = 3; // Number of static weapons at Green Missions blck_SpawnVeh_Green = 2; // Number of static weapons at Green Missions
blck_SpawnVeh_Blue = -1; // Number of static weapons at Blue Missions blck_SpawnVeh_Blue = -1; // Number of static weapons at Blue Missions
blck_SpawnVeh_Red = 1; // Number of static weapons at Red Missions blck_SpawnVeh_Red = 1; // Number of static weapons at Red Missions
// AI STATIC WEAPON PARAMETERS
blck_useStatic = true; // When true, AI will man static weapons spawned 20-30 meters from the mission center. These are very effective against most vehicles
blck_staticWeapons = ["B_HMG_01_high_F"/*,"B_GMG_01_high_F","O_static_AT_F"*/]; // [0.50 cal, grenade launcher, AT Launcher]
// Defines how many static weapons to spawn. Set this to -1 to disable spawning // Defines how many static weapons to spawn. Set this to -1 to disable spawning
blck_SpawnEmplaced_Orange = 3; // Number of static weapons at Orange Missions blck_SpawnEmplaced_Orange = 3; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Green = 3; // Number of static weapons at Green Missions blck_SpawnEmplaced_Green = 2; // Number of static weapons at Green Missions
blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnEmplaced_Red = 2; // Number of static weapons at Red Missions blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions
// MISSION TIMERS // MISSION TIMERS
// Reduce to 1 sec for immediate spawns, or longer if you wish to space the missions out // Reduce to 1 sec for immediate spawns, or longer if you wish to space the missions out
@ -131,7 +142,6 @@ Last modified 8/1/15
blck_TMax_Blue = 200; blck_TMax_Blue = 200;
blck_TMax_Red = 250; blck_TMax_Red = 250;
blck_MissionTimout = 60*60; // 40 min
/**************************************************************** /****************************************************************
@ -141,8 +151,7 @@ Last modified 8/1/15
blck_combatMode = "RED"; // Change this to "YELLOW" if the AI wander too far from missions for your tastes. blck_combatMode = "RED"; // Change this to "YELLOW" if the AI wander too far from missions for your tastes.
blck_groupFormation = "WEDGE"; // Possibilities include "WEDGE","VEE","FILE","DIAMOND" blck_groupFormation = "WEDGE"; // Possibilities include "WEDGE","VEE","FILE","DIAMOND"
blck_AI_Side = EAST; blck_AI_Side = RESISTANCE;
blck_ModType = "Exile";
blck_chanceBackpack = 0.3; // Chance AI will be spawned with a backpack blck_chanceBackpack = 0.3; // Chance AI will be spawned with a backpack
blck_useNVG = true; // When true, AI will be spawned with NVG if is dark blck_useNVG = true; // When true, AI will be spawned with NVG if is dark
@ -158,15 +167,15 @@ Last modified 8/1/15
// 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_AliveAICleanUpTimer = 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_AIAlertDistance = [150,225,250,300]; blck_AIAlertDistance = [250,325,450,500];
//blck_AIAlertDistance = [150,225,400,500]; //blck_AIAlertDistance = [150,225,400,500];
// How precisely player locations will be revealed to AI after an AI kill // How precisely player locations will be revealed to AI after an AI kill
// values are ordered as follows [blue, red, green, orange]; // values are ordered as follows [blue, red, green, orange];
blck_AIIntelligence = [0.5, 1, 2, 4]; blck_AIIntelligence = [0.5, 1, 2, 4];
blck_baseSkill = 1.0; blck_baseSkill = 1.0; // The overal skill of the AI - range 0.1 to 1.0.
/*************************************************************** /***************************************************************
MISSION TYPE SPECIFIC AI SETTINGS MISSION TYPE SPECIFIC AI SETTINGS
@ -207,8 +216,7 @@ Last modified 8/1/15
blck_SkillsBlue = [ blck_SkillsBlue = [
["aimingAccuracy",0.1],["aimingShake",0.5],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60] ["aimingAccuracy",0.1],["aimingShake",0.5],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60]
]; ];
blck_reinforceBlue = [0.1, 2, 0.2];
// Add some money to AI; only works with Exile for now. // Add some money to AI; only works with Exile for now.
blck_maxMoneyOrange = 25; blck_maxMoneyOrange = 25;
blck_maxMoneyGreen = 20; blck_maxMoneyGreen = 20;

View File

@ -24,7 +24,6 @@ if (blck_debugON) then
// Used primarily for debugging. // Used primarily for debugging.
diag_log "[blckeagls] Debug seting is ON, Custom configurations used"; diag_log "[blckeagls] Debug seting is ON, Custom configurations used";
//blck_mainThreadUpdateInterval = 10;
blck_enableOrangeMissions = 1; blck_enableOrangeMissions = 1;
blck_enableGreenMissions = 1; blck_enableGreenMissions = 1;
blck_enableRedMissions = 1; blck_enableRedMissions = 1;

View File

@ -4,6 +4,11 @@ Loosely based on the AI mission system by blckeagls ver 2.0.2
Contributions by Narines: bug fixes, testing, infinite ammo fix. 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/24/17 Version 6.55 Build 34
Added a new configuration blck_killEmptyStaticWeapons which determines if static weapons shoudl be disabled after the AI is killed.
Added a configuration blck_cleanUpLootChests that determines if loot crates are deleted when other mission objects are deleted.
Fixed an issue that prevented proper deletion of mission objects and live AI.
1/23/17 Version 6.54 Build 33 1/23/17 Version 6.54 Build 33
Fixed typos in GMS_fnc_vehicleMonitor.sqf Fixed typos in GMS_fnc_vehicleMonitor.sqf
Removed a few files that are not used or needed. Removed a few files that are not used or needed.

View File

@ -113,13 +113,9 @@ if (blck_enableBlueMissions > 0) then
[_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue; [_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue;
}; };
//diag_log "[blckeagls] >>--- Completed initialization";
//blck_Initialized = true;
// start the main thread for the mission system which monitors missions running and stuff to be cleaned up // start the main thread for the mission system which monitors missions running and stuff to be cleaned up
call compile preprocessfilelinenumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"; [] spawn blck_fnc_mainThread;
//call compile preprocessfilelinenumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitorLoop.sqf";
// start a little loop that sends clients the current serverFPS
//[] execVM "\q\addons\custom_server\Compiles\Functions\broadcastServerFPS.sqf";
diag_log "[blckeagls] >>--- Completed initialization";
blck_Initialized = true;
publicVariable "blck_Initialized";

View File

@ -1,3 +1,3 @@
private ["_version","_versionDate"]; private ["_version","_versionDate"];
_blck_version = "6.54 Build 34"; _blck_version = "6.55 Build 36";
_blck_versionDate = "1-23-17 8:00 PM"; _blck_versionDate = "1-24-17 11:50 PM";