Merge pull request #127 from Ghostrider-DbD-/V-6.88-Build-160
V 6.88 build 160
This commit is contained in:
commit
93bd01cf17
@ -20,5 +20,4 @@ private _Groups_AI_Side = 0;
|
||||
}forEach allGroups;
|
||||
//diag_log format["_fnc_groupsOnAISide:: -- >> allGroups = %1 | _Groups_AI_Side = %2",allGroups, _Groups_AI_Side];
|
||||
|
||||
// Return the number of groups used.
|
||||
_Groups_AI_Side
|
||||
|
@ -12,14 +12,14 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
params["_obj","_difficulty"];
|
||||
private _mod = [] call blck_fnc_getModType;
|
||||
//diag_log format["_fnc_addMoneyToObject: _this = %1",_this];
|
||||
|
||||
|
||||
#ifdef blck_debugMode
|
||||
{
|
||||
diag_log format["_fnc_addMoneyToOject: _this select %1 = %2",_foreachindex, _this select _foreachindex];
|
||||
}forEach _this;
|
||||
#endif
|
||||
if (_mod isEqualTo "Exile") then
|
||||
if (blck_modType isEqualTo "Exile") then
|
||||
{
|
||||
switch (_difficulty) do
|
||||
{
|
||||
@ -33,7 +33,7 @@ if (_mod isEqualTo "Exile") then
|
||||
};
|
||||
};
|
||||
|
||||
if (_mod isEqualTo "Epoch") then
|
||||
if (blck_modType isEqualTo "Epoch") then
|
||||
{
|
||||
switch (_difficulty) do
|
||||
{
|
||||
|
@ -21,7 +21,7 @@ switch (_returnMode) do
|
||||
case 0:{_return = (_alive / _total)};
|
||||
case 1:{_return = [_alive,_total]};
|
||||
};
|
||||
//diag_log format["_fnc_countAliveAI: _alive = %1 | _total = %2 | _return = %3",_alive,_total,_return];
|
||||
|
||||
_return
|
||||
|
||||
|
||||
|
@ -9,10 +9,10 @@
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
//#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
private["_markerName"];
|
||||
_markerName = _this select 0;
|
||||
deleteMarker _markerName;
|
||||
_markerName = "label" + _markerName;
|
||||
deleteMarker _markerName;
|
||||
//diag_log format["deleteMarker complete script for _this = %1",_this];
|
||||
|
||||
|
@ -11,8 +11,8 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_veh"];
|
||||
clearWeaponCargoGlobal _veh;
|
||||
clearMagazineCargoGlobal _veh;
|
||||
clearBackpackCargoGlobal _veh;
|
||||
clearItemCargoGlobal _veh;
|
||||
params["_veh"];
|
||||
clearWeaponCargoGlobal _veh;
|
||||
clearMagazineCargoGlobal _veh;
|
||||
clearBackpackCargoGlobal _veh;
|
||||
clearItemCargoGlobal _veh;
|
||||
|
@ -1,9 +0,0 @@
|
||||
|
||||
|
||||
|
||||
// replaces blck_fnc_emptyObject
|
||||
params["_object"];
|
||||
clearWeaponCargoGlobal _object;
|
||||
clearMagazineCargoGlobal _object;
|
||||
clearBackpackCargoGlobal _object;
|
||||
clearItemCargoGlobal _object;
|
@ -24,13 +24,11 @@ _Arc = 360/_num;
|
||||
for "_i" from 1 to _num do
|
||||
{
|
||||
_currentDir = _currentDir + _Arc;
|
||||
//diag_log format["spawnEmplaced: _currentDir is %1 for cycle %2",_currentDir,_i];
|
||||
_dist = round(_minDistance + (random(_maxDistance - _minDistance)));
|
||||
_newpos = _center getPos [_dist, _currentDir];
|
||||
//diag_log format["findPositionAlongRadius:: distance of pos %1 from center is %2",_newpos, _newpos distance _center];
|
||||
_locs pushback _newpos;
|
||||
};
|
||||
//diag_log format["_fnc_findPositionsAlongARadius:: _locations = %1",_locations];
|
||||
|
||||
_locs
|
||||
|
||||
|
||||
|
@ -132,33 +132,4 @@ if ((count _coords) > 2) then
|
||||
};
|
||||
_coords;
|
||||
|
||||
/*
|
||||
while {_findNew} do {
|
||||
|
||||
|
||||
|
||||
// test for water nearby
|
||||
_dist = 100;
|
||||
for [{_i=0}, {_i<360}, {_i=_i+20}] do
|
||||
{
|
||||
_xpos = (_coords select 0) + sin (_i) * _dist;
|
||||
_ypos = (_coords select 1) + cos (_i) * _dist;
|
||||
_newPos = [_xpos,_ypos,0];
|
||||
if (surfaceIsWater _newPos) then
|
||||
{
|
||||
_findNew = true;
|
||||
_i = 361;
|
||||
};
|
||||
};
|
||||
|
||||
if (toLower(worldName) isEqualTo "taviana") then
|
||||
{
|
||||
_tavTest = createVehicle ["SmokeShell",_coords,[], 0, "CAN_COLLIDE"];
|
||||
_tavHeight = (getPosASL _tavTest) select 2;
|
||||
deleteVehicle _tavTest;
|
||||
if (_tavHeight > 100) then {_FindNew = true;};
|
||||
};
|
||||
_tries = _tries + 1;
|
||||
};
|
||||
|
||||
|
||||
|
@ -12,10 +12,6 @@
|
||||
|
||||
//diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime];
|
||||
|
||||
#ifdef GRGserver
|
||||
diag_log "running GRGserver version of _fnc_mainThread";
|
||||
#endif
|
||||
|
||||
private["_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"];
|
||||
_timer1sec = diag_tickTime;
|
||||
_timer5sec = diag_tickTime;
|
||||
@ -26,23 +22,16 @@ _timer5min = diag_tickTime;
|
||||
while {true} do
|
||||
{
|
||||
uiSleep 1;
|
||||
//diag_log format["mainThread:: -- > time = %1",diag_tickTime];
|
||||
if (diag_tickTime > _timer1sec) then
|
||||
{
|
||||
[] call blck_fnc_vehicleMonitor;
|
||||
#ifdef GRGserver
|
||||
[] call blck_fnc_broadcastServerFPS;
|
||||
#endif
|
||||
_timer1sec = diag_tickTime + 1;
|
||||
//diag_log format["[blckeagls] _fnc_mainThread 1 Second Timer Handled | Timstamp %1",diag_tickTime];
|
||||
};
|
||||
if (diag_tickTime > _timer5sec) then
|
||||
{
|
||||
_timer5sec = diag_tickTime + 5;
|
||||
[] call blck_fnc_missionGroupMonitor;
|
||||
//[] call blck_fnc_missionGroupMonitor;
|
||||
if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {call blck_fnc_blckSimulationManager};
|
||||
[] call blck_fnc_sm_missionPatrolMonitor;
|
||||
|
||||
//diag_log format["[blckeagls] _fnc_mainThread 5 Second Timer Handled | Timstamp %1",diag_tickTime];
|
||||
};
|
||||
if (diag_tickTime > _timer20sec) then
|
||||
{
|
||||
@ -52,35 +41,20 @@ while {true} do
|
||||
[] call blck_fnc_scanForPlayersNearVehicles;
|
||||
//[] call blck_fnc_cleanEmptyGroups;
|
||||
_timer20sec = diag_tickTime + 20;
|
||||
//diag_log format["[blckeagls] _fnc_mainThread 20 Second Timer Handled | Timstamp %1",diag_tickTime];
|
||||
};
|
||||
if ((diag_tickTime > _timer1min)) then
|
||||
{
|
||||
//diag_log format["_fnc_mainThread: 60 second events run at %1",diag_tickTime];
|
||||
_timer1min = diag_tickTime + 60;
|
||||
//diag_log format["_fnc_mainThread: blck_missionsRunning = %1 | blck_maxSpawnedMissions = %2", blck_missionsRunning,blck_maxSpawnedMissions];
|
||||
[] call blck_fnc_spawnPendingMissions;
|
||||
//diag_log format["_fnc_mainThread: blck_numberUnderwaterDynamicMissions = %1 | blck_dynamicUMS_MissionsRuning = %2",blck_numberUnderwaterDynamicMissions,blck_dynamicUMS_MissionsRuning];
|
||||
if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then
|
||||
{
|
||||
//diag_log "Adding dynamic UMS Mission";
|
||||
[] spawn blck_fnc_addDyanamicUMS_Mission;
|
||||
};
|
||||
//diag_log format["_fnc_mainThread: control returned to _fnc_mainThread from _fnc_addDynamicUMS_Mission at %1",diag_tickTime];
|
||||
if (blck_useHC) then
|
||||
{
|
||||
//diag_log format["_mainThread:: calling blck_fnc_passToHCs at diag_tickTime = %1",diag_tickTime];
|
||||
[] call blck_fnc_HC_passToHCs;
|
||||
};
|
||||
if (blck_useTimeAcceleration) then
|
||||
{
|
||||
[] call blck_fnc_timeAcceleration;
|
||||
};
|
||||
[] call blck_fnc_cleanEmptyGroups;
|
||||
[] call bck_fnc_groupWaypointMonitor;
|
||||
if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then {[] spawn blck_fnc_addDyanamicUMS_Mission};
|
||||
if (blck_useHC) then {[] call blck_fnc_HC_passToHCs};
|
||||
if (blck_useTimeAcceleration) then {[] call blck_fnc_timeAcceleration};
|
||||
#ifdef blck_debugMode
|
||||
//diag_log format["_fnc_mainThread: active SQFscripts include: %1",diag_activeSQFScripts];
|
||||
diag_log format["_fnc_mainThread: active scripts include: %1",diag_activeScripts];
|
||||
#endif
|
||||
//diag_log format["[blckeagls] _fnc_mainThread 60 Second Timer Handled | Timstamp %1",diag_tickTime];
|
||||
};
|
||||
if (diag_tickTime > _timer5min) then
|
||||
{
|
||||
|
@ -9,13 +9,12 @@
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
//#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_mArray","_count"];
|
||||
|
||||
_mArray params["_missionType","_markerPos","_markerLabel","_markerLabelType","_markerColor","_markerType"];
|
||||
|
||||
//diag_log "++++++++++++++--- marker label arrow detected";
|
||||
_name = "ai_count" + _name;
|
||||
_textPos = [(_pos select 0) + (count toArray (_text) * 12), (_pos select 1) + (_size select 0), 0];
|
||||
_MainMarker = createMarker [_name, _textPos];
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
//#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_location","_MainMarker","_name"];
|
||||
//diag_log format["blck_fnc_missionCompleteMarker:: _this = %1",_this];
|
||||
|
@ -1,4 +1,17 @@
|
||||
|
||||
/*
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
//diag_log format["_fnc_nearestPlayers: _this = %1",_this];
|
||||
params["_coords","_range"];
|
||||
private["_return","_playerClassNames","_epochClasses","_exileClasses"];
|
||||
|
@ -14,9 +14,7 @@
|
||||
private["_blck_fn_configureRoundMarker"];
|
||||
_blck_fn_configureRoundMarker = {
|
||||
//diag_log format["_blck_fn_configureRoundMarker: _this = %1",_this];
|
||||
// [[""OrangeMarker1"",[11736.1,9272.76,0],""Soylent Green"",""center"",""ColorPink"",[""ellipse"",[250,250],""Cross""]]]"
|
||||
private["_name","_pos","_color","_size","_MainMarker","_arrowMarker","_labelMarker","_labelType"];
|
||||
// [_missionType,_markerPos,_markerColor,_markerLabel, _mSize,_markerLabelType,_mShape,_mBrush]
|
||||
params["_name","_pos","_color","_text","_size","_labelType","_mShape","_mBrush"];
|
||||
if ((_pos distance [0,0,0]) < 10) exitWith {};
|
||||
|
||||
@ -74,7 +72,7 @@ _blck_fn_configureIconMarker = {
|
||||
params["_mArray"];
|
||||
private["_marker"];
|
||||
_mArray params["_missionMarkerName","_markerPos","_markerLabel","_markerLabelType","_markerColor","_markerTypeInfo"];
|
||||
// add defaults to provide backward compatibility for older missions that do not specify a brush.
|
||||
|
||||
_markerTypeInfo params["_mShape",["_mSize",[0,0]],["_mBrush","GRID"]];
|
||||
//diag_log format["spawnMarker.sqf:: -- >> _missionMarkerName %1 | _markerPos %2 | _markerLabel %3 | _markerLabelType %4 | _markerColor %5 | _markerTypeInfo %6 | _mShape %7",_missionMarkerName,_markerPos,_markerLabel,_markerLabelType,_markerColor,_markerTypeInfo,_mShape];
|
||||
|
||||
|
@ -1,4 +1,14 @@
|
||||
|
||||
/*
|
||||
By Ghostrider [GRG]
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_center","_emplaced","_garrisonGroup"];
|
||||
private["_obj","_objects"];
|
||||
@ -12,9 +22,7 @@
|
||||
_obj setDir _objDir;
|
||||
_unit = [_group] call blck_fnc_spawnUnit;
|
||||
_unit moveInGunner _unit;
|
||||
_wep addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
|
||||
//_empGroup setVariable["groupVehicle",_wep];
|
||||
//_wep setVariable["vehicleGroup",_empGroup];
|
||||
_wep addMPEventHandler["MPHit",{[_this] call blck_EH_AIVehicle_HandleDamage}];
|
||||
_wep setVariable["GRG_vehType","emplaced"];
|
||||
[_wep,false] call blck_fnc_configureMissionVehicle;
|
||||
}forEach _emplaced;
|
||||
|
@ -1,12 +1,21 @@
|
||||
|
||||
/*
|
||||
By Ghostrider [GRG]
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
params["_center","_landscape"];
|
||||
// diag_log format["fnc_spawnMissionLandscapeRelative: _center = %1",_center];
|
||||
private["_obj","_objects"];
|
||||
_objects = [];
|
||||
{
|
||||
_x params["_objClassName","_objRelPos","_objDir"];
|
||||
_obj = [_objClassName, _objRelPos vectorAdd _center, _objDir,enableSimulationForObject,enableDamageForObject,enableRopesforObject,"CAN_COLLIDE"] call blck_fnc_spawnSingleObject;
|
||||
_objects pushBack _obj;
|
||||
}forEach _landscape;
|
||||
_landscape
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
params["_center","_landscape"];
|
||||
// diag_log format["fnc_spawnMissionLandscapeRelative: _center = %1",_center];
|
||||
private["_obj","_objects"];
|
||||
_objects = [];
|
||||
{
|
||||
_x params["_objClassName","_objRelPos","_objDir"];
|
||||
_obj = [_objClassName, _objRelPos vectorAdd _center, _objDir,enableSimulationForObject,enableDamageForObject,enableRopesforObject,"CAN_COLLIDE"] call blck_fnc_spawnSingleObject;
|
||||
_objects pushBack _obj;
|
||||
}forEach _landscape;
|
||||
_landscape
|
@ -1,17 +1,27 @@
|
||||
|
||||
/*
|
||||
By Ghostrider [GRG]
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
params["_center","_crates"];
|
||||
private["_crate","_cratesSpawned"];
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_center","_crates"];
|
||||
private["_crate","_cratesSpawned"];
|
||||
|
||||
_cratesSpawned = [];
|
||||
{
|
||||
_x params["_objClassName","_objRelPos","_crateLoot","_lootCounts","_objDir"];
|
||||
_crate = [_objClassName, _objRelPos vectorAdd _center, _objDir] call blck_fnc_spawn_lootCrate;
|
||||
//_crate setPosATL _objRelPos vectorAdd _center;
|
||||
_cratesSpawned pushBack _crate;
|
||||
//_crate setVariable ["LAST_CHECK", 100000];
|
||||
_crate allowDamage false;
|
||||
_crate enableRopeAttach false;
|
||||
_crate
|
||||
}forEach _crates;
|
||||
_cratesSpawned
|
||||
_cratesSpawned = [];
|
||||
{
|
||||
_x params["_objClassName","_objRelPos","_crateLoot","_lootCounts","_objDir"];
|
||||
_crate = [_objClassName, _objRelPos vectorAdd _center, _objDir] call blck_fnc_spawn_lootCrate;
|
||||
//_crate setPosATL _objRelPos vectorAdd _center;
|
||||
_cratesSpawned pushBack _crate;
|
||||
//_crate setVariable ["LAST_CHECK", 100000];
|
||||
_crate allowDamage false;
|
||||
_crate enableRopeAttach false;
|
||||
_crate
|
||||
}forEach _crates;
|
||||
_cratesSpawned
|
@ -1,10 +1,19 @@
|
||||
/*
|
||||
By Ghostrider [GRG]
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_objClassName","_objPosn",["_objDir",0],["_enableSimulation",true],["_enableDamage",true],["_enableRopes",true],["_mode","NONE"]];
|
||||
//diag_log format["_fnc_spawnSingleObject: _objClassName = %1 | _objPosn = %2 | _objPosn = %3",_objClassName,_objPosn,_objDir];
|
||||
private _obj = createVehicle[_objClassName,_objPosn,[],0,_mode];
|
||||
_obj setDir _objDir;
|
||||
_obj allowDamage _enableDamage;
|
||||
_obj enableDynamicSimulation _enableSimulation;
|
||||
//diag_log format["created object %1 at %2 heading %3",_obj,getPosATL _obj, getDir _obj];
|
||||
_obj
|
||||
params["_objClassName","_objPosn",["_objDir",0],["_enableSimulation",true],["_enableDamage",true],["_enableRopes",true],["_mode","NONE"]];
|
||||
//diag_log format["_fnc_spawnSingleObject: _objClassName = %1 | _objPosn = %2 | _objPosn = %3",_objClassName,_objPosn,_objDir];
|
||||
private _obj = createVehicle[_objClassName,_objPosn,[],0,_mode];
|
||||
_obj setDir _objDir;
|
||||
_obj allowDamage _enableDamage;
|
||||
_obj enableDynamicSimulation _enableSimulation;
|
||||
//diag_log format["created object %1 at %2 heading %3",_obj,getPosATL _obj, getDir _obj];
|
||||
_obj
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
Managages simulation using blckeagls logic
|
||||
By Ghostrider-GRG-
|
||||
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
private["_playerType","_players"];
|
||||
_playerType = ["LandVehicle","SHIP","AIR","TANK"];
|
||||
switch (toLower(blck_modType)) do
|
||||
{
|
||||
case "exile": {_playerType = _playerType + ["Exile_Unit_Player"]};
|
||||
case "epoch": {_playerType = _playerType + ["Epoch_Male_F","Epoch_Female_F"]};
|
||||
};
|
||||
{
|
||||
private _group = _x;
|
||||
_players = ((leader _group) nearEntities [_playerType, blck_simulationEnabledDistance]) select {isplayer _x};
|
||||
|
||||
if !(_players isEqualTo []) then
|
||||
{
|
||||
{
|
||||
if !(simulationEnabled _x) then
|
||||
{
|
||||
_x enableSimulationGlobal true;
|
||||
(_players select 0) reveal _x; // Force simulation on
|
||||
};
|
||||
}forEach (units _group);
|
||||
}else{
|
||||
{
|
||||
if (simulationEnabled _x) then
|
||||
{
|
||||
_x enableSimulationGlobal false;
|
||||
};
|
||||
}forEach (units _x);
|
||||
};
|
||||
} forEach blck_monitoredMissionAIGroups;
|
@ -42,8 +42,11 @@ _wp setWaypointCompletionRadius (_group getVariable["wpRadius",30]);
|
||||
_wp setWaypointType "MOVE";
|
||||
_wp setWaypointName "move";
|
||||
_wp setWaypointBehaviour "COMBAT";
|
||||
_wp setWaypointCombatMode "YELLOW";
|
||||
_wp setWaypointTimeout [1,1.1,1.2];
|
||||
_wp setWaypointCombatMode "RED";
|
||||
_wp setWaypointTimeout [10,15,20];
|
||||
_wp setWaypointLoiterRadius (_group getVariable["wpRadius",30]);
|
||||
_wp setWaypointLoiterType "CIRCLE";
|
||||
_wp setWaypointSpeed "LIMITED";
|
||||
_group setCurrentWaypoint _wp;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
|
@ -1,8 +1,6 @@
|
||||
/*
|
||||
call as [] call blck_fnc_cleanEmptyGroups;
|
||||
Deletes any empty groups and thereby prevents errors resulting from createGroup returning nullGroup.
|
||||
removes empty or null groups from blck_monitoredMissionAIGroups
|
||||
By Ghostrider [GRG]
|
||||
3/18/17
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
@ -12,19 +10,14 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
for "_i" from 0 to ((count blck_monitoredMissionAIGroups) - 1) do
|
||||
{
|
||||
diag_log format ["_fnc_cleanEmptyGroups:: -- >> group count = %1 ",(count allGroups)];
|
||||
diag_log format ["_fnc_cleanEmptyGroups:: -- >> Group count AI side = %1", call blck_fnc_groupsOnAISide];
|
||||
};
|
||||
#endif
|
||||
if (_i >= (count blck_monitoredMissionAIGroups)) exitWith {};
|
||||
_grp = blck_monitoredMissionAIGroups deleteat 0;
|
||||
|
||||
//if (!(_grp isEqualTo grpNull) then
|
||||
//{
|
||||
if ({alive _x} count units _grp > 0) then { blck_monitoredMissionAIGroups pushBack _grp};
|
||||
//};
|
||||
};
|
||||
|
||||
private _grp = allGroups;
|
||||
{
|
||||
//diag_log format["_fnc_cleanEmptyGroups:: - >> type of object _x = %1",typeName _x];
|
||||
if ((count units _x) isEqualTo 0) then {deleteGroup _x};
|
||||
}forEach _grp;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log "_fnc_cleanEmptyGroups:: -- >> exiting function";};
|
||||
#endif
|
||||
|
@ -1,8 +1,6 @@
|
||||
/*
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
|
||||
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
@ -15,7 +13,6 @@
|
||||
private["_groupSpawned"];
|
||||
|
||||
_groupSpawned = createGroup [blck_AI_Side, true];
|
||||
//_groupSpawned setVariable["groupVehicle",objNull];
|
||||
if (blck_simulationManager == blck_useDynamicSimulationManagement) then
|
||||
{
|
||||
_groupSpawned enableDynamicSimulation true;
|
||||
|
@ -1,9 +1,8 @@
|
||||
// Sets the WP type for WP for the specified group and updates other atributes accordingly.
|
||||
|
||||
/*
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last modified 4/23/17
|
||||
|
||||
--------------------------
|
||||
License
|
||||
|
@ -0,0 +1,126 @@
|
||||
|
||||
/*
|
||||
Checks for groups that have not reached their waypoints within a proscribed period
|
||||
and redirects them.
|
||||
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
_fn_waypointComplete = {
|
||||
private _group = _this select 0;
|
||||
private _wp = currentWaypoint _group;
|
||||
private _done = if (currentWaypoint _group) > (count (waypoints _group)) then {true} else {false};
|
||||
_done
|
||||
};
|
||||
|
||||
_fn_aliveGroupUnits = {
|
||||
private _group = _this select 0;
|
||||
private _units = {alive _x} count (units _group);
|
||||
_units
|
||||
};
|
||||
{
|
||||
private["_timeStamp","_index","_unit","_soldierType"];
|
||||
// check for error conditions
|
||||
if ( !(_x isEqualTo grpNull) && ([_x] call _fn_aliveGroupUnits > 0) ) then
|
||||
{
|
||||
/*
|
||||
#define blck_turnBackRadiusInfantry 800
|
||||
#define blck_turnBackRadiusVehicles 1000
|
||||
#define blck_turnBackRadiusHelis 1000
|
||||
#define blck_turnBackRadiusJets 1500
|
||||
*/
|
||||
diag_log format["_fn_monitorGroupWaypoints - radii: on foot %1 | vehicle %2 | heli %3 | jet %4",blck_turnBackRadiusInfantry,blck_turnBackRadiusVehicles,blck_turnBackRadiusHelis,blck_turnBackRadiusJets];
|
||||
_timeStamp = _x getVariable ["timeStamp",0];
|
||||
if (_timeStamp isEqualTo 0) then {
|
||||
_x setVariable["timeStamp",diag_tickTime];
|
||||
//diag_log format["_fn_monitorGroupWaypoints::--> updating timestamp for group %1 at time %2",_x,diag_tickTime];
|
||||
};
|
||||
_soldierType = _x getVariable["soldierType","null"];
|
||||
//diag_log format["_fn_monitorGroupWaypoints::--> soldierType for group %1 = %2 and timeStamp = %3",_x,_soldierType,_timeStamp];
|
||||
private _maxtime = 0;
|
||||
switch (soldierType) do
|
||||
{
|
||||
case "infantry": {_maxtime = 60};
|
||||
case "vehicle": {_maxtime = 90};
|
||||
case "aircraft": {_maxtime = 90};
|
||||
};
|
||||
_private _updateNeeded = if (diag_tickTime > (_x getVariable "timeStamp") + 60) then
|
||||
{
|
||||
|
||||
}
|
||||
if (_soldierType isEqualTo "infantry") then
|
||||
{
|
||||
if (diag_tickTime > (_x getVariable "timeStamp") + 60) then
|
||||
{
|
||||
_units = [_x] call _fn_aliveGroupUnits;
|
||||
if (count _units > 0) then
|
||||
{
|
||||
private _leader = leader _x;
|
||||
(_leader) call blck_fnc_changeToMoveWaypoint;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: infantry group %1 stuck, waypoint reset",_x];};
|
||||
#endif
|
||||
/*
|
||||
if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then
|
||||
{
|
||||
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
if (_soldierType isEqualTo "vehicle") then
|
||||
{
|
||||
if (diag_tickTime > (_x getVariable "timeStamp") + 60) then
|
||||
{
|
||||
_units = [_x] call _fn_aliveGroupUnits;
|
||||
if (count _units > 0) then
|
||||
{
|
||||
private _leader = leader _x;
|
||||
(_leader) call blck_fnc_changeToMoveWaypoint;
|
||||
//#ifdef blck_debugMode
|
||||
if (true /*blck_debugLevel > 2*/) then {diag_log format["_fnc_missionGroupMonitor: vehicle group %1 stuck, waypoint reset",_x];};
|
||||
//#endif
|
||||
/*
|
||||
if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then
|
||||
{
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
/*
|
||||
if (_soldierType isEqualTo "helicopter") then
|
||||
{
|
||||
if ((diag_tickTime > (_x getVariable "timeStamp")) then
|
||||
{
|
||||
private _units = [_x] call _fn_aliveGroupUnits;
|
||||
if (count _units > 0) then
|
||||
{
|
||||
private _leader = leader _x;
|
||||
if (_leader distance (_group getVariable "patrolCenter") > blck_turnBackRadiusHelis) then
|
||||
{
|
||||
_leader call blck_fnc_changeToMoveWaypoint;
|
||||
//#ifdef blck_debugMode
|
||||
if (true ) then {diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x];};
|
||||
//#endif
|
||||
//diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x];
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
*/
|
||||
} forEach blck_monitoredMissionAIGroups;
|
||||
|
@ -6,8 +6,7 @@
|
||||
It uses a timestamp attached to the group that is cleared upon waypoint completion.
|
||||
|
||||
By Ghostrider-GRG-
|
||||
Last modified 3/14/17
|
||||
|
||||
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
@ -17,184 +16,5 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
//diag_log format["_fnc_missionGroupMonitor (4/29:4:09 PM)::-->> running function at diag_tickTime = %1 with blck_fnc_missionGroupMonitor = %2",diag_tickTime,blck_monitoredMissionAIGroups];
|
||||
#ifdef blck_debugMode
|
||||
//diag_log format["_fnc_missionGroupMonitor:: blck_debugMode defined"];
|
||||
#endif
|
||||
_fn_allPlayers = {
|
||||
private ["_players"];
|
||||
_players = [];
|
||||
{
|
||||
if (isPlayer _x) then {_players pushback _x};
|
||||
}forEach playableUnits;
|
||||
//diag_log format["_fn_allPlayers::-->> result s %1",_players];
|
||||
_players
|
||||
};
|
||||
|
||||
_fn_aliveGroupUnits = {
|
||||
private["_grp","_aliveUnits"];
|
||||
_grp = _this select 0;
|
||||
_aliveUnits = [];
|
||||
{
|
||||
if ( alive _x) then {_aliveUnits pushback _x};
|
||||
} forEach (units _grp);
|
||||
_aliveUnits
|
||||
};
|
||||
|
||||
_fn_inCombat = {
|
||||
private["_grp","_targets","_players","_aliveUnits"];
|
||||
_grp = _this select 0;
|
||||
_players = [] call _fn_allPlayers;
|
||||
_aliveUnits = [_grp] call _fn_aliveGroupUnits;
|
||||
_inCombat = false;
|
||||
{
|
||||
_targets = _x findNearestEnemy (position _x);
|
||||
if !(isNull _targets) exitWith {_inCombat = true};
|
||||
} forEach _aliveUnits;
|
||||
//diag_log format["_fn_inCombat::-->> _grp to test is %1 and result is %2",_grp,_inCombat];
|
||||
_inCombat;
|
||||
};
|
||||
|
||||
_fn_removeEmptyOrNullGroups = {
|
||||
//diag_log format["_fn_removeEmptyOrNullGroups::-->> excuting function at %1",diag_tickTime];
|
||||
// Remove any null groups (which will occur if all units in the group are dead) or groups with no alive AI.
|
||||
for "_i" from 0 to ((count blck_monitoredMissionAIGroups) - 1) do
|
||||
{
|
||||
private["_grp"];
|
||||
if (_i >= (count blck_monitoredMissionAIGroups)) exitWith {};
|
||||
_grp = blck_monitoredMissionAIGroups select _i;
|
||||
if (_grp isEqualTo grpNull) then {
|
||||
blck_monitoredMissionAIGroups set[_i, -1];
|
||||
blck_monitoredMissionAIGroups = blck_monitoredMissionAIGroups - [-1];
|
||||
//diag_log "_fnc_waypointMonitor::-->> deleting a NULL-GROUP";
|
||||
};
|
||||
if ({alive _x} count units _grp < 1) then {
|
||||
blck_monitoredMissionAIGroups = blck_monitoredMissionAIGroups - [_grp];
|
||||
//diag_log "_fnc_waypointMonitor::-->> deleting an empty group";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_fn_monitorGroupWaypoints = {
|
||||
{
|
||||
private["_timeStamp","_index","_unit","_soldierType"];
|
||||
|
||||
_timeStamp = _x getVariable ["timeStamp",0];
|
||||
if (_timeStamp isEqualTo 0) then {
|
||||
_x setVariable["timeStamp",diag_tickTime];
|
||||
//diag_log format["_fn_monitorGroupWaypoints::--> updating timestamp for group %1 at time %2",_x,diag_tickTime];
|
||||
};
|
||||
_soldierType = _x getVariable["soldierType","null"];
|
||||
//diag_log format["_fn_monitorGroupWaypoints::--> soldierType for group %1 = %2 and timeStamp = %3",_x,_soldierType,_timeStamp];
|
||||
|
||||
if (_soldierType isEqualTo "infantry") then
|
||||
{
|
||||
if (diag_tickTime > (_x getVariable "timeStamp") + 60) then
|
||||
{
|
||||
_units = [_x] call _fn_aliveGroupUnits;
|
||||
if (count _units > 0) then
|
||||
{
|
||||
private _leader = leader _x;
|
||||
(_leader) call blck_fnc_changeToMoveWaypoint;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: infantry group %1 stuck, waypoint reset",_x];};
|
||||
#endif
|
||||
/*
|
||||
if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then
|
||||
{
|
||||
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
if (_soldierType isEqualTo "vehicle") then
|
||||
{
|
||||
if (diag_tickTime > (_x getVariable "timeStamp") + 60) then
|
||||
{
|
||||
_units = [_x] call _fn_aliveGroupUnits;
|
||||
if (count _units > 0) then
|
||||
{
|
||||
private _leader = leader _x;
|
||||
(_leader) call blck_fnc_changeToMoveWaypoint;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: vehicle group %1 stuck, waypoint reset",_x];};
|
||||
#endif
|
||||
/*
|
||||
if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then
|
||||
{
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
if (_soldierType isEqualTo "helicopter") then
|
||||
{
|
||||
if (diag_tickTime > (_x getVariable "timeStamp") + 60) then
|
||||
{
|
||||
_units = [_x] call _fn_aliveGroupUnits;
|
||||
if (count _units > 0) then
|
||||
{
|
||||
private _leader = leader _x;
|
||||
(_leader) call blck_fnc_changeToMoveWaypoint;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x];};
|
||||
#endif
|
||||
/*
|
||||
if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then
|
||||
{
|
||||
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
} forEach blck_monitoredMissionAIGroups;
|
||||
};
|
||||
|
||||
_fn_simulationMonitor = {
|
||||
private["_playerType","_players"];
|
||||
_playerType = ["LandVehicle","SHIP","AIR","TANK"];
|
||||
if (blck_modType isEqualTo "Exile") then
|
||||
{
|
||||
_playerType = _playerType + ["Exile_Unit_Player"];
|
||||
}else{
|
||||
_playerType = _playerType + ["Epoch_Male_F","Epoch_Female_F"];
|
||||
};
|
||||
{
|
||||
_players = ((leader _x) nearEntities [_playerType, blck_simulationEnabledDistance]) select {isplayer _x};
|
||||
if (count _players > 0) then
|
||||
{
|
||||
{
|
||||
if !(simulationEnabled _x) then
|
||||
{
|
||||
_x enableSimulationGlobal true;
|
||||
(_players select 0) reveal _x; // Force simulation on
|
||||
};
|
||||
}forEach (units _x);
|
||||
}else{
|
||||
// Be sure simulation is off for all units in the group.
|
||||
{
|
||||
if (simulationEnabled _x) then
|
||||
{
|
||||
_x enableSimulationGlobal false;
|
||||
};
|
||||
}forEach (units _x);
|
||||
};
|
||||
} forEach blck_monitoredMissionAIGroups;
|
||||
};
|
||||
////////
|
||||
// Start of main function
|
||||
////////
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: executing function at %1",diag_tickTime];};
|
||||
#endif
|
||||
[] call _fn_removeEmptyOrNullGroups;
|
||||
uiSleep 0.1;
|
||||
[] call _fn_monitorGroupWaypoints;
|
||||
|
||||
if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {[] call _fn_simulationMonitor};
|
||||
|
||||
|
@ -80,7 +80,7 @@ if !(_soldierType isEqualTo "emplaced") then
|
||||
_wp setWaypointStatements ["true","this call blck_fnc_changeToMoveWaypoint;"];
|
||||
#endif
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
if (blck_debugLevel >= 3) then
|
||||
{
|
||||
_marker = createMarker [format["GroupMarker%1",_group],_newPos];
|
||||
_group setVariable["wpMarker",_marker,true];
|
||||
@ -90,7 +90,7 @@ if !(_soldierType isEqualTo "emplaced") then
|
||||
//diag_log format["_fnc_setupWaypoints: configuring weapoints for group %2 mobile patrol with _soldierType = %1",_solderType,_group];
|
||||
diag_log format["_fnc_setupWaypoints: soldier type for mobile _group %1 set to %2",_group, (_group getVariable["soldierType","null"])];
|
||||
diag_log format["_fnc_setupWaypoints: all variables for the group have been set for group %1",_group];
|
||||
diag_log format["_fnc_setupWaypoints:: -- >> wpMode %1 _dir %2 _dis 3",_group getVariable["wpMode","random"], _dir, _dis];
|
||||
diag_log format["_fnc_setupWaypoints:: -- >> wpMode %1 _dir %2 _dis %3",_group getVariable["wpMode","random"], _dir, _dis];
|
||||
diag_log format["_fnc_setupWaypoints:: -- >> group to update is %1 and new position is %2",_group, _newPos];
|
||||
diag_log format["_fnc_setupWaypoints:: -- >> Waypoint statements for group %1 have been configured as %2",_group, waypointStatements _wp];
|
||||
diag_log format["_fnc_setupWaypoints:: -- >> Waypoint marker for group %1 have been configured as %2 with text set to %3",_group, _group getVariable "wpMarker", markerText (_group getVariable "wpMarker")];
|
||||
|
@ -12,9 +12,9 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_numbertospawn","_groupSpawned","_safepos","_useLauncher","_launcherType"];
|
||||
private["_numbertospawn","_groupSpawned","_safepos","_useLauncher","_launcherType","_infantryType"];
|
||||
// _newGroup = [_groupSpawnPos,_minAI,_maxAI,_skillLevel,_coords,_minPatrolRadius,_maxPatrolRadius,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,true,_isScubaGroup]
|
||||
params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",20], ["_maxDist",35],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false]];
|
||||
params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false]];
|
||||
if (_weaponList isEqualTo []) then {_weaponList = [_skillLevel] call blck_fnc_selectAILoadout};
|
||||
if (_sideArms isEqualTo []) then {_sideArms = [_skillLevel] call blck_fnc_selectAISidearms};
|
||||
if (_uniforms isEqualTo []) then {_uniforms = [_skillLevel] call blck_fnc_selectAIUniforms};
|
||||
@ -96,9 +96,8 @@ if !(isNull _groupSpawned) then
|
||||
if (_configureWaypoints) then
|
||||
{
|
||||
if (_scuba) then {_infantryType = "scuba"} else {_infantryType = "infantry"};
|
||||
[_pos,_minDist,_maxDist,_groupSpawned,"random","SAD","infantry"] spawn blck_fnc_setupWaypoints;
|
||||
[_pos,_minDist,_maxDist,_groupSpawned,"random","SAD",_infantryType] spawn blck_fnc_setupWaypoints;
|
||||
};
|
||||
//[_pos,_minDist,_maxDist,_groupSpawned,"random","SENTRY"] spawn blck_fnc_setupWaypoints;
|
||||
//diag_log format["_fnc_spawnGroup: blck_fnc_setupWaypoints called for group %1",_groupSpawned];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 1) then
|
||||
|
@ -1,5 +1,4 @@
|
||||
/*
|
||||
Killed handler for _units
|
||||
By Ghostrider-GRG-
|
||||
|
||||
--------------------------
|
||||
@ -9,18 +8,12 @@
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
//#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
//diag_log format["_fnc_HC_XferGroup:: _this = %1",_this];
|
||||
private["_group","_client","_unit","_tempEH"];
|
||||
private["_group","_unit","_tempEH"];
|
||||
_group = _this select 0;
|
||||
//blck_HC_monitoredGroups pushBack _group;
|
||||
_client = clientOwner;
|
||||
{
|
||||
_unit = _x;
|
||||
_localEH = [];
|
||||
_tempEH = ["reloaded",_unit addEventHandler ["reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}]];
|
||||
_localEH pushBack _tempEH;
|
||||
_x setVariable["localEH",_localEH,true];
|
||||
_tempEH = _unit addEventHandler ["Reloaded", {_this call blck_EH_unitWeaponReloaded;}];
|
||||
}forEach (units _group);
|
||||
diag_log format["blckHC:: group %1 transferred to HC %1",_group,_client];
|
||||
//diag_log format["blckHC:: group %1 transferred to HC %1",_group,_client];
|
@ -15,11 +15,12 @@ params["_HC_List"];
|
||||
if (count _HC_List == 0) exitWith {_result = objNull; _result};
|
||||
if (count _HC_List == 1) exitWith {_result = _HC_List select 0; _result}:
|
||||
private["_result","_fewestGroupsAssigned","_leastBurdened","_groupsAssigned"];
|
||||
_fewestGroupsAssigned = [_HC_List select 0] call blck_fnc_HC_countGroupsAssigned;
|
||||
_leastBurdened = _HC_List select 0;
|
||||
_fewestGroupsAssigned = 1000000;
|
||||
{
|
||||
_groupsAssigned = [_x] call blck_fnc_HC_countGroupsAssigned;
|
||||
if (_groupsAssigned < _fewestGroupsAssigned) then
|
||||
_ownerHC = owner _x;
|
||||
_groupsAssigned = {(groupOwner _x) isEqualTo _ownerHC} count allGroups;
|
||||
diag_log format["_fnc_HC_leastBurdened: HC %1 | groupsAssigned %2",_x,_groupsAssigned];
|
||||
if ([_x] call blck_fnc_HC_countGroupsAssigned < _fewestGroupsAssigned) then
|
||||
{
|
||||
_leastBurdened = _x;
|
||||
_fewestGroupsAssigned = _groupsAssigned;
|
||||
|
@ -1,5 +1,4 @@
|
||||
/*
|
||||
Killed handler for _units
|
||||
By Ghostrider-GRG-
|
||||
|
||||
--------------------------
|
||||
@ -20,52 +19,27 @@ blck_fnc_countGroupsAssigned = {
|
||||
_result
|
||||
};
|
||||
|
||||
|
||||
//diag_log format["_fnc_passToHCs:: function called at server time %1",diag_tickTime];
|
||||
private["_numTransfered","_clientId","_allGroups","_groupsOwned","_idHC","_id","_swap","_rc"];
|
||||
_numTransfered = 0;
|
||||
//_numTransfered = 0;
|
||||
_idHC = -2;
|
||||
blck_connectedHCs = call blck_fnc_HC_getListConnected; // Double check on this function; seems overly complicated.
|
||||
blck_connectedHCs = entities "HeadlessClient_F";
|
||||
//diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps];
|
||||
if ( (count blck_connectedHCs) > 0) then
|
||||
if !(blck_connectedHCs isEqualTo []) then
|
||||
{
|
||||
_idHC = [blck_connectedHCs] call blck_fnc_HC_leastBurdened;
|
||||
//diag_log format["passToHCs: evaluating passTos for HC %1 || owner HC = %2",_idHC, owner _idHC];
|
||||
{
|
||||
// Pass the AI
|
||||
|
||||
if (_x getVariable["blck_group",false]) then
|
||||
{
|
||||
//diag_log format["group belongs to blckeagls mission system so time check if we should transfer it"];
|
||||
//diag_log format["Owner of group %1 is %2",_x,groupOwner _x];
|
||||
if ((groupOwner _x) == 2) then
|
||||
{
|
||||
//diag_log format["blckeagls group %1 is on the server: we should be moved to HC %2 with _idHC %3",_x,_idHC];
|
||||
//_x setVariable["owner",owner _idHC];
|
||||
//_x setVariable["Group",group (driver _x)),true]
|
||||
private _sgor = _x setGroupOwner (owner _idHC);
|
||||
//diag_log format["setGroupOwner returned %1",_sgor];
|
||||
//diag_log format["_veh %1 variable owner set to %2",getVariable _veh["owner",-1]];
|
||||
//diag_log format["_veh %1 Group set to %2",_veh getVariable["Group",grpNull]];
|
||||
if (_sgor) then
|
||||
{
|
||||
[_x] remoteExec["blck_fnc_HC_XferGroup",_idHC];
|
||||
_numTransfered = _numTransfered + 1;
|
||||
//diag_log format["group %1 transferred to %2",_x, groupOwner _x];
|
||||
} else {
|
||||
//diag_log format["something went wrong with the transfer of group %1",_x];
|
||||
//_numTransfered = _numTransfered + 1;
|
||||
};
|
||||
};
|
||||
} else {
|
||||
//diag_log format["group %1 does not belong to blckeagls mission system",_x];
|
||||
};
|
||||
} forEach (allGroups);
|
||||
diag_log format["[blckeagls] _passToHCs:: %1 groups transferred to HC %2",_numTransfered,_idHC];
|
||||
//_numTransfered = 0;
|
||||
// Note : the owner of a vehicle is the owner of the driver so vehicles are automatically transferred to the HC when the group to which the driver is assigned is transferred.
|
||||
|
||||
} else {
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log "_fnc_passToHCs:: No headless clients connected"};
|
||||
#endif
|
||||
//diag_log format["[blckeagls] _passToHCs:: %1 groups transferred to HC %2",_numTransfered,_idHC];
|
||||
};
|
||||
|
@ -19,45 +19,33 @@
|
||||
|
||||
_fn_deleteObjects = {
|
||||
params["_objects"];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["_fn_deleteObjects:: -> _objects = %1",_objects];};
|
||||
#endif
|
||||
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["_fnc_cleanUpObjects: -> deleting object %1",_x];};
|
||||
#endif
|
||||
|
||||
deleteVehicle _x;
|
||||
} 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;
|
||||
for "_i" from 1 to (count blck_oldMissionObjects) do {
|
||||
if (_i <= count blck_oldMissionObjects) then {
|
||||
_oldObjs = blck_oldMissionObjects deleteat 0;
|
||||
_oldObjs params ["_objarr","_timer"];
|
||||
if (diag_tickTime > _timer) then {
|
||||
[_objarr] call _fn_deleteObjects;
|
||||
uiSleep 0.1;
|
||||
blck_oldMissionObjects set[(_i - 1), -1];
|
||||
blck_oldMissionObjects = blck_oldMissionObjects - [-1];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
//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];};
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
blck_oldMissionObjects pushback _oldObjs;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
@ -62,12 +62,6 @@ _fn_missionCleanup = {
|
||||
diag_log format["_fnc_endMission: Mission Aborted, setting all timers to 0"];
|
||||
};
|
||||
#endif
|
||||
/*
|
||||
if (_endCondition == 2) then
|
||||
{
|
||||
[["warning",_endMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
||||
};
|
||||
*/
|
||||
[_blck_localMissionMarker select 0] call blck_fnc_deleteMarker;
|
||||
_cleanupCompositionTimer = 0;
|
||||
_cleanupAliveAITimer = 0;
|
||||
|
@ -1,8 +1,4 @@
|
||||
//////////////////////////////////////////////////////
|
||||
// Attach a marker of type _marker to an object _crate
|
||||
// by Ghostrider [GRG] based on code from Wicked AI for Arma 2 Dayz Epoch
|
||||
// Last modified 8/2/15
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
--------------------------
|
||||
License
|
||||
|
@ -1,8 +1,4 @@
|
||||
//////////////////////////////////////////////////////
|
||||
// Attach a marker of type _marker to an object _crate
|
||||
// by Ghostrider [GRG] based on code from Wicked AI for Arma 2 Dayz Epoch
|
||||
// Last modified 8/2/15
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
--------------------------
|
||||
License
|
||||
|
@ -1,3 +1,11 @@
|
||||
/*
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
private _crate = _this select 0;
|
||||
#ifdef blck_debugMode
|
||||
|
@ -189,24 +189,8 @@ private _params = [_coords,_minNoAI,_maxNoAI,_missionGroups,_aiDifficultyLevel,_
|
||||
|
||||
_temp = [_coords, _minNoAI,_maxNoAI,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {
|
||||
diag_log format["missionSpawner :: (264) blck_fnc_spawnMissionAI returned a value of _temp = %1",_temp]; uiSleep 1;
|
||||
};
|
||||
|
||||
_abort = _temp select 1;
|
||||
if (blck_debugLevel > 2) then {
|
||||
diag_log format["missionSpawner :: (269) blck_fnc_spawnMissionAI returned a value of _abort = %1",_abort]; uiSleep 1;
|
||||
};
|
||||
#endif
|
||||
|
||||
if (_abort) exitWith
|
||||
{
|
||||
if (blck_debugLevel > 1) then {
|
||||
diag_log "missionSpawner:: (277) grpNull returned, mission termination criteria met, calling blck_fnc_endMission"
|
||||
};
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
if !(_abort) then
|
||||
{
|
||||
_blck_AllMissionAI append (_temp select 0);
|
||||
@ -223,41 +207,17 @@ _assetSpawned = objNull;
|
||||
if !(_hostageConfig isEqualTo []) then
|
||||
{
|
||||
_temp = [_coords,_hostageConfig] call blck_fnc_spawnHostage;
|
||||
//diag_log format["_fnc_missionSpawner: _fnc_spawnHostage returned %1",_temp];
|
||||
_assetSpawned = _temp select 0;
|
||||
_objects pushBack (_temp select 1);
|
||||
//diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
//diag_log format["_fnc_missionSpawner: _fnc_spawnHostage returned object %1",_temp select 1];
|
||||
_blck_AllMissionAI pushBack _assetSpawned;
|
||||
};
|
||||
|
||||
if !(_enemyLeaderConfig isEqualTo []) then
|
||||
{
|
||||
_temp = [_coords,_enemyLeaderConfig] call blck_fnc_spawnLeader;
|
||||
//diag_log format["_fnc_missionSpawner: _fnc_spawnLeader return _temp = %1",_temp];
|
||||
_assetSpawned = _temp select 0;
|
||||
_objects pushBack (_temp select 1);
|
||||
//diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
//diag_log format["_fnc_missionSpawner: building spawned by _fnc_spawnLeader = %1",_temp select 1];
|
||||
_blck_AllMissionAI pushBack _assetSpawned;
|
||||
//diag_log format["_fnc_missionSpawner (261): _blck_AllMissionAI",_blck_AllMissionAI];
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 1) then {
|
||||
diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
};
|
||||
#endif
|
||||
|
||||
uiSleep delayTime;
|
||||
_temp = [[],[],false];
|
||||
_abort = false;
|
||||
|
||||
|
||||
|
||||
if (_abort) exitWith
|
||||
{
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
|
||||
uiSleep delayTime;
|
||||
@ -266,19 +226,7 @@ _abort = false;
|
||||
|
||||
// Deal with helicopter patrols
|
||||
_temp = [];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (351) calling in heli patrol: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
_noChoppers = [_noChoppers] call blck_fnc_getNumberFromRange;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["_missionSpawner(322):: _noChoppers = %1 && _chancePara = %2",_noChoppers,_chancePara]};
|
||||
#endif
|
||||
if (_noChoppers > 0) then
|
||||
{
|
||||
for "_i" from 1 to (_noChoppers) do
|
||||
@ -290,13 +238,11 @@ if (_noChoppers > 0) then
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_abort = _temp select 2;
|
||||
blck_monitoredVehicles pushBack (_temp select 0);
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
};
|
||||
if (_abort) then
|
||||
{
|
||||
_objects pushback (_temp select 0);
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
if !(_abort) then
|
||||
{
|
||||
blck_monitoredVehicles pushBack (_temp select 0);
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -306,35 +252,23 @@ uisleep 3;
|
||||
if (count _garrisonedBuilding_ATLsystem > 0) then
|
||||
{
|
||||
_temp = [_coords, _garrisonedBuilding_ATLsystem, _aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_ATLsystem;
|
||||
diag_log format["_missionspawner: garrisoned a building using ATL format, function returned %1",_temp];
|
||||
// _return = [_group,_buildingsSpawned,_staticsSpawned];
|
||||
_objects append (_temp select 1);
|
||||
blck_monitoredVehicles append (_temp select 2);
|
||||
_blck_AllMissionAI append (units (_temp select 0));
|
||||
};
|
||||
|
||||
uiSleep 3;
|
||||
diag_log format["_missionSpawner: _garrisonedBuildings_BuildingPosnSystem = %1",_garrisonedBuildings_BuildingPosnSystem];
|
||||
if (count _garrisonedBuildings_BuildingPosnSystem > 0) then
|
||||
{
|
||||
// params["_center","_garrison","_aiDifficultyLevel","_uniforms","_headGear","_vests","_backpacks","_weaponList","_sideArms"];
|
||||
_temp = [_coords, _garrisonedBuildings_BuildingPosnSystem, _aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_RelPosSystem;
|
||||
diag_log format["_missionspawner: garrisoned a building using relPos format, function returned %1",_temp];
|
||||
// _return = [_group,_buildingsSpawned,_staticsSpawned];
|
||||
_objects append (_temp select 1);
|
||||
blck_monitoredVehicles append (_temp select 2);
|
||||
_blck_AllMissionAI append (units (_temp select 0));
|
||||
};
|
||||
|
||||
//////////////////////////
|
||||
// Spawn Crates and Emplaced Weapons Last to try to force them to correct positions relative to spawned buildinga or other objects.
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (389) preparing to spawn emplaced weapons for _coords %4 | _markerClass %3 | blck_useStatic = %1 | _noEmplacedWeapons = %2",blck_useStatic,_noEmplacedWeapons,_markerClass,_coords];};
|
||||
#endif
|
||||
uiSleep 15;
|
||||
private["_noEmplacedToSpawn"];
|
||||
_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange;
|
||||
//diag_log format["_fnc_missionSpawner: -> _noEmplacedToSpawn = %1 | blck_useStatic = %2",_noEmplacedToSpawn,blck_useStatic];
|
||||
if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
|
||||
{
|
||||
_temp = [_coords,_missionEmplacedWeapons,useRelativePos,_noEmplacedToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnEmplacedWeaponArray;
|
||||
@ -350,10 +284,7 @@ if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
};
|
||||
};
|
||||
if (_abort) exitWith
|
||||
{
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
|
||||
_vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
|
||||
if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || count _missionPatrolVehicles > 0)) then
|
||||
{
|
||||
@ -413,7 +344,6 @@ if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then
|
||||
};
|
||||
};
|
||||
|
||||
// Define Triggers for mission end
|
||||
private["_missionComplete","_endIfPlayerNear","_endIfAIKilled","_secureAsset","_crateStolen","_locations"];
|
||||
_missionComplete = -1;
|
||||
_startTime = diag_tickTime;
|
||||
@ -425,7 +355,7 @@ switch (_endCondition) do
|
||||
case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;};
|
||||
case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;};
|
||||
};
|
||||
//diag_log format["_fnc_missionSpawner: _secureAsset = %1",_secureAsset];
|
||||
|
||||
if (blck_showCountAliveAI) then
|
||||
{
|
||||
if !(_marker isEqualTo "") then
|
||||
@ -450,7 +380,7 @@ if (_secureAsset) then {_minNoAliveForCompletion = _minNoAliveForCompletion + 1}
|
||||
while {_missionComplete isEqualTo -1} do
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) exitWith {uiSleep blck_triggerLoopCompleteTime;diag_log "_missionSpawner (492) scripted Mission End blck_debugLevel = 3";};
|
||||
if (blck_debugLevel > 3) exitWith {uiSleep blck_triggerLoopCompleteTime;diag_log "_missionSpawner (492) scripted Mission End blck_debugLevel = 3";};
|
||||
#endif
|
||||
|
||||
if (_endIfPlayerNear) then
|
||||
@ -462,17 +392,20 @@ while {_missionComplete isEqualTo -1} do
|
||||
{
|
||||
if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then {_missionComplete = 1};
|
||||
};
|
||||
if (_spawnCratesTiming isEqualTo "atMissionSpawn") then
|
||||
|
||||
if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then
|
||||
{
|
||||
// Re-evaluate this - may not need the forEach
|
||||
//{
|
||||
if ({[_x] call blck_fnc_crateMoved} count _crates > 0) then
|
||||
{
|
||||
private _d = _x distance (_x getVariable ["crateSpawnPos",_coords]);
|
||||
//diag_log format["crate %1 moved %2 at %3",_x,_d,diag_tickTime];
|
||||
if (_d > 25) exitWith
|
||||
{
|
||||
_missionComplete = 1;
|
||||
_crateStolen = true;
|
||||
};
|
||||
//}forEach _crates;
|
||||
}forEach _crates;
|
||||
};
|
||||
|
||||
if (_secureAsset) then
|
||||
{
|
||||
if !(alive _assetSpawned) then
|
||||
@ -526,15 +459,9 @@ while {_missionComplete isEqualTo -1} do
|
||||
|
||||
if (_crateStolen) exitWith
|
||||
{
|
||||
diag_log format["missionSpawner:: (542) Crate Stolen Callening _fnc_endMission - > players near = %1 and ai alive = %2 and crates stolen = %3",[_locations,10,true] call blck_fnc_playerInRangeArray, {alive _x} count _blck_AllMissionAI, _crateStolen];
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_blck_localMissionMarker,_coords,_markerClass, 2] call blck_fnc_endMission;
|
||||
};
|
||||
/*
|
||||
if ((_secureAsset) && !(alive _assetSpawned)) exitWith
|
||||
{
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_assetKilledMsg,_blck_localMissionMarker,_coords,_markerClass, 2] call blck_fnc_endMission;
|
||||
};
|
||||
*/
|
||||
|
||||
if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then
|
||||
{
|
||||
if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then
|
||||
@ -574,15 +501,6 @@ if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isE
|
||||
};
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (586) Mission completion criteria fulfilled: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
diag_log format["missionSpawner :: (587) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
|
||||
diag_log format["[blckeagls] missionSpawner:: (588) calling endMission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
private["_result"];
|
||||
// Force passing the mission name for informational purposes.
|
||||
_blck_localMissionMarker set [2, _markerMissionName];
|
||||
@ -594,20 +512,15 @@ if (blck_showCountAliveAI) then
|
||||
}forEach blck_missionMarkers;
|
||||
};
|
||||
|
||||
//diag_log format["_fnc_missionSpawner (557) Build 123: _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]];
|
||||
|
||||
if (_secureAsset && (alive _assetSpawned)) then
|
||||
{
|
||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
||||
{
|
||||
//diag_log "Processing Mission End for Hostage Rescue";
|
||||
//_assetSpawned setCaptive false;
|
||||
_assetSpawned setVariable["GMSAnimations",[""],true];
|
||||
[_assetSpawned,""] remoteExec["switchMove",-2];;
|
||||
uiSleep 0.1;
|
||||
_assetSpawned enableAI "ALL";
|
||||
private _newPos = (getPos _assetSpawned) getPos [1000, random(360)];
|
||||
//diag_log format["processing domove for hostage with current pos = %1 and new pos = %2",getPos _assetSpawned, _newPos];
|
||||
(group _assetSpawned) setCurrentWaypoint [group _assetSpawned, 0];
|
||||
[group _assetSpawned,0] setWaypointPosition [_newPos,0];
|
||||
[group _assetSpawned,0] setWaypointType "MOVE";
|
||||
@ -615,7 +528,6 @@ if (_secureAsset && (alive _assetSpawned)) then
|
||||
|
||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 2) then
|
||||
{
|
||||
//diag_log format["Processing Mission End for Arrest of Leader %1 with endAnimation %2",_assetSpawned,_assetSpawned getVariable["endAnimation",""]];
|
||||
[_assetSpawned,""] remoteExec["switchMove",-2];
|
||||
_assetSpawned setVariable["GMSAnimations",_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]],true];
|
||||
[_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]])] remoteExec["switchMove",-2];
|
||||
@ -625,7 +537,7 @@ if (_secureAsset && !(alive _assetSpawned)) then
|
||||
{
|
||||
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_assetKilledMsg,_blck_localMissionMarker,_coords,_markerClass, -1] call blck_fnc_endMission;
|
||||
};
|
||||
//diag_log format["_fnc_missionSpawner (579) Build 123: <calling blck_fnc_endMission> _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]];
|
||||
|
||||
if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then
|
||||
{
|
||||
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 0] call blck_fnc_endMission;
|
||||
|
@ -21,4 +21,5 @@ _chute setPos [getPos _chute select 0, getPos _chute select 1, _dropHeight];
|
||||
_crate setPos (getPos _chute);
|
||||
_crate attachTo [_chute, [0,0,0]];
|
||||
if (_crateVisualMarker) then {[_crate] spawn blck_fnc_crateMarker};
|
||||
_chute
|
||||
|
||||
|
@ -13,37 +13,29 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private ["_start","_bbr","_p1","_p2","_maxHeight","_signalCrate","_smokeShell","_light","_lightSource"];
|
||||
params["_crate",["_time",60]];
|
||||
_start = diag_tickTime;
|
||||
//diag_log format["signalEnd.sqf: _this = %1, _crate = %2",_this, _crate];
|
||||
_smokeShell = selectRandom ["SmokeShellOrange","SmokeShellBlue","SmokeShellPurple","SmokeShellRed","SmokeShellGreen","SmokeShellYellow"];
|
||||
_lightSource = selectRandom ["Chemlight_green","Chemlight_red","Chemlight_yellow","Chemlight_blue"];
|
||||
//diag_log format["signalEnd.sqf: _smokeShell = %1",_smokeShell];
|
||||
// Determine crate height. Method is from:
|
||||
// https://community.bistudio.com/wiki/boundingBoxReal
|
||||
_bbr = boundingBoxReal _crate;
|
||||
_p1 = _bbr select 0;
|
||||
_p2 = _bbr select 1;
|
||||
_maxHeight = abs ((_p2 select 2) - (_p1 select 2));
|
||||
|
||||
while {diag_tickTime - _start < (_time)} do // loop for 5 min accounting for the fact that smoke grenades do not last very long
|
||||
private ["_start","_maxHeight","_smokeShell","_light","_lightSource"];
|
||||
params["_crate",["_time",60]];
|
||||
_start = diag_tickTime;
|
||||
//diag_log format["signalEnd.sqf: _this = %1, _crate = %2",_this, _crate];
|
||||
_smokeShell = selectRandom ["SmokeShellOrange","SmokeShellBlue","SmokeShellPurple","SmokeShellRed","SmokeShellGreen","SmokeShellYellow"];
|
||||
_lightSource = selectRandom ["Chemlight_green","Chemlight_red","Chemlight_yellow","Chemlight_blue"];
|
||||
while {diag_tickTime - _start < (_time)} do // loop for 5 min accounting for the fact that smoke grenades do not last very long
|
||||
{
|
||||
_smoke = _smokeShell createVehicle getPosATL _crate;
|
||||
_smoke setPosATL (getPosATL _crate);
|
||||
_smoke attachTo [_crate,[0,0,(0.5)]]; // put the smoke a fixed distance above the top of any object to make it as visible as possible
|
||||
if(sunOrMoon < 0.2) then
|
||||
{
|
||||
_smoke = _smokeShell createVehicle getPosATL _crate;
|
||||
_smoke setPosATL (getPosATL _crate);
|
||||
_smoke attachTo [_crate,[0,0,(_maxHeight + 0.35)]]; // put the smoke a fixed distance above the top of any object to make it as visible as possible
|
||||
if(sunOrMoon < 0.2) then
|
||||
{
|
||||
_light = _lightSource createVehicle getPosATL _crate;
|
||||
_light setPosATL (getPosATL _crate);
|
||||
_light attachTo [_crate,[0,0,(_maxHeight + 0.35)]];
|
||||
};
|
||||
uiSleep 120;
|
||||
detach _smoke;
|
||||
deleteVehicle _smoke;
|
||||
if(sunOrMoon < 0.2) then
|
||||
{
|
||||
detach _light;
|
||||
deleteVehicle _light;
|
||||
};
|
||||
_light = _lightSource createVehicle getPosATL _crate;
|
||||
_light setPosATL (getPosATL _crate);
|
||||
_light attachTo [_crate,[0,0,(0.55)]];
|
||||
};
|
||||
uiSleep 120;
|
||||
detach _smoke;
|
||||
deleteVehicle _smoke;
|
||||
if(sunOrMoon < 0.2) then
|
||||
{
|
||||
detach _light;
|
||||
deleteVehicle _light;
|
||||
};
|
||||
};
|
@ -1,11 +1,6 @@
|
||||
/*
|
||||
spawn a crate at a specific location
|
||||
returns the object (crate) that was created.
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last updated 12-5-17
|
||||
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
@ -24,7 +19,7 @@ _crate allowDamage false;
|
||||
_crate enableRopeAttach false;
|
||||
[_crate] call blck_fnc_emptyObject;
|
||||
uiSleep 1;
|
||||
_crate setPosATL _coords;
|
||||
_crate setPosATL [_coords select 0, _coords select 1, (_coords select 2) + 0.25];
|
||||
_crate setDir _crateDir;
|
||||
//_crate setVectorUp [0,0,1];
|
||||
_crate setVectorUp surfaceNormal position _crate;
|
||||
|
@ -94,7 +94,7 @@ if (blck_debugLevel > 1) then
|
||||
_empGroup setcombatmode "RED";
|
||||
_empGroup setBehaviour "COMBAT";
|
||||
[(_x select 1),0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints;
|
||||
if (isNull _empGroup) exitWith {_abort = _true};
|
||||
if (isNull _empGroup) exitWith {_abort = true};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
@ -105,8 +105,7 @@ if (blck_debugLevel > 1) then
|
||||
|
||||
// params["_vehType","_pos",["_clearInventory",true]];
|
||||
_wep = [(_x select 0),[0,0,0],false,true] call blck_fnc_spawnVehicle;
|
||||
//_wep addEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
|
||||
_wep addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
|
||||
_wep addMPEventHandler ["MPHit",{[_this] call blck_EH_AIVehicle_HandleDamage}];
|
||||
//_empGroup setVariable["groupVehicle",_wep];
|
||||
_wep setVariable["vehicleGroup",_empGroup];
|
||||
#ifdef blck_debugMode
|
||||
@ -119,6 +118,7 @@ if (blck_debugLevel > 1) then
|
||||
_wep setVariable["GRG_vehType","emplaced"];
|
||||
_wep setdir (random 359);
|
||||
_wep setPos _pos;
|
||||
_wep setdir (random 359);
|
||||
[_wep,false] call blck_fnc_configureMissionVehicle;
|
||||
_emplacedWeps pushback _wep;
|
||||
_units = units _empGroup;
|
||||
|
@ -70,7 +70,7 @@ if ( (count _missionGroups > 0) && _noAIGroups > 0) then
|
||||
else
|
||||
{
|
||||
_newAI = units _newGroup;
|
||||
//blck_monitoredMissionAIGroups pushback _newGroup;
|
||||
blck_monitoredMissionAIGroups pushback _newGroup;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
@ -152,6 +152,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then
|
||||
{
|
||||
_newAI = units _newGroup;
|
||||
|
||||
blck_monitoredMissionAIGroups pushback _newGroup;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
@ -181,6 +182,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then
|
||||
{
|
||||
_newAI = units _newGroup;
|
||||
|
||||
blck_monitoredMissionAIGroups pushback _newGroup;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
@ -201,6 +203,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then
|
||||
{
|
||||
_newAI = units _newGroup;
|
||||
|
||||
blck_monitoredMissionAIGroups pushback _newGroup;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
@ -229,6 +232,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then
|
||||
};
|
||||
_newAI = units _newGroup;
|
||||
|
||||
blck_monitoredMissionAIGroups pushback _newGroup;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
@ -247,6 +251,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then
|
||||
else
|
||||
{
|
||||
_newAI = units _newGroup;
|
||||
blck_monitoredMissionAIGroups pushback _newGroup;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
|
@ -23,32 +23,16 @@ if (_backpacks isEqualTo []) then {_backpacks = [_skillAI] call blck_fnc_sele
|
||||
if (_weaponList isEqualTo []) then {_weaponList = [_skillAI] call blck_fnc_selectAILoadout};
|
||||
if (_sideArms isEqualTo []) then {[_skillAI] call blck_fnc_selectAISidearms};
|
||||
|
||||
//{
|
||||
//diag_log format["_fnc_spawnMissionVehiclePatrols: %1 = %2",_x select 0, _x select 1];
|
||||
//}forEach [["uniforms",_uniforms],["headgear",_headGear],["vests",_vests],["backpacks",_backpacks],["primary weapons",_weaponList],["secondary weapons",_sideArms]];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >=2) then
|
||||
{
|
||||
private _params = ["_coords","_noVehiclePatrols","_skillAI","_missionPatrolVehicles","_useRelativePos","_uniforms","_headGear","_vests","_backpacks","_weaponList","_sideArms","_isScubaGroup"];
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionVehiclePatrols:: param %1 | isEqualTo %2 | _forEachIndex %3",_params select _forEachIndex,_this select _forEachIndex, _forEachIndex];
|
||||
}forEach _this;
|
||||
};
|
||||
#endif
|
||||
|
||||
private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_vehicle","_return","_abort","_spawnPos","_v"];
|
||||
_vehicles = [];
|
||||
_missionAI = [];
|
||||
_abort = false;
|
||||
//_useRelativePos = false;
|
||||
if (_missionPatrolVehicles isEqualTo []) then
|
||||
{
|
||||
_useRelativePos = false;
|
||||
_vehiclePatrolSpawns = [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;
|
||||
{
|
||||
_v = [_skillAI] call blck_fnc_selectPatrolVehicle;
|
||||
//diag_log format["_fnc_spawnMissionVehiclePatrols (36):: position = %1 and vehicle = %2",_x, _v];
|
||||
_missionPatrolVehicles pushBack [_v, _x];
|
||||
}forEach _vehiclePatrolSpawns;
|
||||
};
|
||||
@ -74,54 +58,21 @@ if (_missionPatrolVehicles isEqualTo []) then
|
||||
{
|
||||
_abort = true;
|
||||
};
|
||||
//if !(isNull _vehGroup) then
|
||||
//{
|
||||
//blck_monitoredMissionAIGroups pushBack _vehGroup;
|
||||
//};
|
||||
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionVehiclePatrols (73): group spawned = %1",_vehGroup];
|
||||
//diag_log format["_fnc_spawnMissionVehiclePatrols (74):: -> _missionType = %3 _vehGroup = %1 and units _vehGroup = %2",_vehGroup, units _vehGroup,_missionType];
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionVehiclePatrols(66): will spawn vehicle %1 at position %2",_vehicle,_spawnPos];
|
||||
};
|
||||
#endif
|
||||
blck_monitoredMissionAIGroups pushBack _vehGroup;
|
||||
|
||||
//params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]];
|
||||
_patrolVehicle = [_coords,_spawnPos,_vehicle,30,45,_vehGroup,true] call blck_fnc_spawnVehiclePatrol;
|
||||
//_vehGroup setVariable["groupVehicle",_vehicle];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionVehiclePatrols (76):: - > patrol vehicle spawned was %1",_patrolVehicle];
|
||||
};
|
||||
#endif
|
||||
_patrolVehicle = [_coords,_spawnPos,_vehicle,40,60,_vehGroup,true] call blck_fnc_spawnVehiclePatrol;
|
||||
|
||||
if !(isNull _patrolVehicle) then
|
||||
{
|
||||
_patrolVehicle setVariable["vehicleGroup",_vehGroup];
|
||||
_vehicles pushback _patrolVehicle;
|
||||
blck_monitoredVehicles pushBack _patrolVehicle;
|
||||
_missionAI append (units _vehGroup);
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionVehiclePatrols(91):: -- > _vehicles updated to %1",_vehicles];
|
||||
};
|
||||
#endif
|
||||
|
||||
} forEach _missionPatrolVehicles;
|
||||
|
||||
blck_monitoredVehicles append _vehicles;
|
||||
|
||||
_return = [_vehicles, _missionAI, _abort];
|
||||
|
||||
_return
|
||||
|
@ -68,11 +68,7 @@ if (count _readyToSpawnQue > 0) then
|
||||
// _mission = [_compiledMissionsList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]];
|
||||
_missionMarker = _missionToSpawn select 1;
|
||||
_missionDifficulty = _missionToSpawn select 2;
|
||||
//diag_log format["_fnc_spawnPendingMissions: _missionMarker %1",_missionMarker];
|
||||
//diag_log format["_fnc_spawnPendingMissions: _missionDifficulty %1",_missionDifficulty];
|
||||
//diag_log format["_fnc_spawnPendingMissions: _compiledMission %1",_compiledMission];
|
||||
[_coords,_missionMarker,_missionDifficulty] spawn _compiledMission;
|
||||
//diag_log format["_fnc_spawnPendingMissions: blck_missionsRunning = %1", blck_missionsRunning];
|
||||
};
|
||||
|
||||
true
|
||||
|
@ -13,7 +13,10 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
params["_coords","_missionLandscape",["_min",3],["_max",15],["_nearest",1]];
|
||||
private["_objects","_wreck","_dir","_dirOffset"];
|
||||
#define objectSpawnRadius 15
|
||||
#define maxObjectSpawnRadius 25
|
||||
#define minObjectSpawnRadius 15
|
||||
private _objectSpawnRange = maxObjectSpawnRadius - minObjectSpawnRadius;
|
||||
|
||||
_objects = [];
|
||||
_wreck = createVehicle ["RoadCone_L_F", _coords]; // To designate the mission center
|
||||
_wreck allowDamage true;
|
||||
@ -22,21 +25,15 @@ _wreck enableSimulationGlobal false;
|
||||
_wreck enableDynamicSimulation false;
|
||||
_objects pushBack _wreck;
|
||||
{
|
||||
//Random Position Objects based on distance in array
|
||||
// https://community.bistudio.com/wiki/BIS_fnc_findSafePos
|
||||
private _posX = ((_coords select 0) + random(objectSpawnRadius)) * (selectRandom[1,-1]);
|
||||
private _posY = ((_coords select 1) + random(objectSpawnRadius)) * (selectRandom[1,-1]);
|
||||
_pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos;
|
||||
_wreck = createVehicle[_x, _pos, [], 2];
|
||||
private _dir = random(360);
|
||||
private _radius = minObjectSpawnRadius + random(maxObjectSpawnRadius);
|
||||
_wreck = createVehicle[_x, _coords getPos[_radius,_dir], [], 2];
|
||||
//diag_log format["_fnc_spawnRandomLandscape: _x = %1 | _wreck = %2",_x,_wreck];
|
||||
_wreck allowDamage true;
|
||||
_wreck enableSimulation false;
|
||||
_wreck enableSimulationGlobal false;
|
||||
_wreck enableDynamicSimulation false;
|
||||
_dirOffset = random(30) * ([1,-1] call BIS_fnc_selectRandom);
|
||||
_dir = _dirOffset +([_wreck,_coords] call BIS_fnc_dirTo);
|
||||
_wreck setDir _dir;
|
||||
//_wreck setDir (_wreck relativeDir _coords);
|
||||
_wreck setDir (_wreck getRelDir _coords);
|
||||
_objects pushback _wreck;
|
||||
sleep 0.1;
|
||||
} forEach _missionLandscape;
|
||||
|
@ -31,13 +31,13 @@ private["_index","_element","_waitTime"];
|
||||
if (_index > -1) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debuglevel > 2) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions began as %1",blck_pendingMissions];};
|
||||
if (blck_debuglevel > 4) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions began as %1",blck_pendingMissions];};
|
||||
#endif
|
||||
|
||||
_element = blck_pendingMissions select _index;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debuglevel > 2) then {diag_log format["_fnc_updateMissionQue:: -- >> _element before update = %1",_element];};
|
||||
if (blck_debuglevel > 3) then {diag_log format["_fnc_updateMissionQue:: -- >> _element before update = %1",_element];};
|
||||
#endif
|
||||
// 0 1 2 3 4 5 6
|
||||
//_mission = [_missionList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]];
|
||||
@ -59,7 +59,7 @@ if (_index > -1) then
|
||||
blck_pendingMissions set [_index, _element];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debuglevel > 2) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions after update = %1",blck_pendingMissions];};
|
||||
if (blck_debuglevel > 4) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions after update = %1",blck_pendingMissions];};
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -12,41 +12,16 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
/*
|
||||
_fn_deleteAIfromList = {
|
||||
params["_aiList"];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["_fn_deleteAIfromList:: _aiList = %1",_aiList];};
|
||||
#endif
|
||||
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["_fn_deleteAIfromList:: -> deleteing AI Unit %1",_x];};
|
||||
#endif
|
||||
|
||||
[_x] call blck_fnc_deleteAI;
|
||||
}forEach _aiList;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["_fnc_cleanupAliveAI called at %1",diag_tickTime];};
|
||||
#endif
|
||||
*/
|
||||
for "_i" from 1 to (count blck_liveMissionAI) do
|
||||
{
|
||||
if ((_i) <= count blck_liveMissionAI) then
|
||||
{
|
||||
for "_i" from 1 to (count blck_liveMissionAI) do {
|
||||
if ((_i) <= count blck_liveMissionAI) then {
|
||||
_units = blck_liveMissionAI deleteat 0;
|
||||
_units params ["_unitsarr","_timer"];
|
||||
if (diag_tickTime > _timer) then {
|
||||
{
|
||||
if (alive _x) then {
|
||||
if (!isNull objectParent _x) then {
|
||||
[objectParent _x] call blck_fnc_deleteAIvehicle;
|
||||
};
|
||||
[_x] call blck_fnc_deleteAI;
|
||||
if ((alive _x) && !(isNull objectParent _x)) then {
|
||||
[objectParent _x] call blck_fnc_deleteAIvehicle;
|
||||
};
|
||||
[_x] call blck_fnc_deleteAI;
|
||||
} forEach _unitsarr;
|
||||
uiSleep 0.1;
|
||||
#ifdef blck_debugMode
|
||||
@ -57,5 +32,4 @@ for "_i" from 1 to (count blck_liveMissionAI) do
|
||||
blck_liveMissionAI pushback _units;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
@ -18,7 +18,7 @@ if (blck_debugLevel > 2) then {diag_log format["fnc_cleanupDeadAI called at time
|
||||
private["_aiList","_ai"];
|
||||
_aiList = +blck_deadAI;
|
||||
{
|
||||
if ( diag_tickTime > _x getVariable ["blck_cleanupAt",0] ) then // DBD_DeleteAITimer
|
||||
if (diag_tickTime > _x getVariable ["blck_cleanupAt",0]) then
|
||||
{
|
||||
_ai = _x;
|
||||
_nearplayer = (_ai nearEntities 1500) select {isplayer _x};
|
||||
|
@ -16,7 +16,7 @@ private ["_obj"];
|
||||
if !(_characterBuildingConfigs isEqualTo []) then
|
||||
{
|
||||
_obj = createVehicle[(_characterBuildingConfigs select 0),_center vectorAdd (_characterBuildingConfigs select 1),[],0,"CAN_COLLIDE"];
|
||||
diag_log format["_fnc_placeCharacterInBuilding: _obj = %1",_obj];
|
||||
//diag_log format["_fnc_placeCharacterInBuilding: _obj = %1",_obj];
|
||||
_obj setDir (_characterBuildingConfigs select 2);
|
||||
_obj allowDamage true;
|
||||
_obj enableDynamicSimulation true;
|
||||
|
@ -15,12 +15,9 @@
|
||||
private["_group","_isLegal","_weapon","_lastkill","_kills","_message","_killstreakMsg"];
|
||||
params["_unit","_killer","_isLegal"];
|
||||
|
||||
// if blck_cleanupAt > 0 then the death was already processed.
|
||||
if (_unit getVariable["blck_cleanupAt",-1] > 0) exitWith {};
|
||||
|
||||
//diag_log format["_fnc_processAIKills:: function called with _this = %1",_this];
|
||||
_unit setVariable ["blck_cleanupAt", (diag_tickTime) + blck_bodyCleanUpTimer, true];
|
||||
//diag_log format["_fnc_processAIKills: _unit = %1 | vehicle unit = %2",_unit, vehicle _unit];
|
||||
|
||||
blck_deadAI pushback _unit;
|
||||
_group = group _unit;
|
||||
@ -51,7 +48,6 @@ if ((diag_tickTime - _lastkill) < 240) then
|
||||
_killer setVariable["blck_kills",0];
|
||||
};
|
||||
|
||||
//_unit action ["Eject", vehicle _unit];
|
||||
[_unit, ["Eject", vehicle _unit]] remoteExec ["action",(owner _unit)];
|
||||
if (blck_useKillMessages) then
|
||||
{
|
||||
@ -65,18 +61,14 @@ if (blck_useKillMessages) then
|
||||
_message = format["[blck] %1 killed with %2 from %3 meters",name _killer,getText(configFile >> "CfgWeapons" >> _weapon >> "DisplayName"), round(_unit distance _killer)];
|
||||
};
|
||||
_message =_message + _killstreakMsg;
|
||||
//diag_log format["[blck] unit killed message is %1",_message,""];
|
||||
[["aikilled",_message,"victory"],allPlayers] call blck_fnc_messageplayers;
|
||||
};
|
||||
|
||||
[_unit,_killer] call blck_fnc_rewardKiller;
|
||||
if (blck_showCountAliveAI) then
|
||||
{
|
||||
//diag_log "_fnc_processAIKills: Updating Map Marker AI Counts - blck_missionMarkers items are";
|
||||
{
|
||||
//diag_log format["_fnc_processAIKills: blck_missionMarkers itm %1 = %2",_forEachIndex,_x];
|
||||
[_x select 0, _x select 1, _x select 2] call blck_fnc_updateMarkerAliveCount;
|
||||
} forEach blck_missionMarkers;
|
||||
//call blck_fnc_updateAllMarkerAliveCounts;
|
||||
};
|
||||
|
||||
|
@ -80,9 +80,9 @@ if ( blck_VK_GunnerDamage ) then
|
||||
if ((currentWeapon _killer) in blck_forbidenVehicleGuns) then { _legal = false;};
|
||||
};
|
||||
|
||||
if (blck_VK_Gear) then {[_unit] call _fn_deleteAIGear;};
|
||||
if !(_legal) then
|
||||
{
|
||||
if (blck_VK_Gear) then {[_unit] call _fn_deleteAIGear;};
|
||||
[_unit, vehicle _killer] call _fn_targetVehicle;
|
||||
[vehicle _killer] call _fn_applyVehicleDamage;
|
||||
[_killer] call _fn_msgIED;
|
||||
|
@ -14,24 +14,15 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_unit","_killer"];
|
||||
//diag_log format["rewardKiller:: _unit = %1 and _killer %2",_unit,_killer];
|
||||
|
||||
private["_reward","_maxReward","_dist","_killstreakReward","_distanceBonus","_newKillerScore","_newKillerFrags","_money"];
|
||||
|
||||
//diag_log format["[blckeagls] rewardKiller:: - _modType = %1",_modType];
|
||||
//if (_modType isEqualTo "Epoch") exitWith {}; // Have players pull crypto from AI bodies now that this feature is available.
|
||||
|
||||
if (blck_modType isEqualTo "Epoch") then
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
//diag_log "calculating reward for Epoch";
|
||||
|
||||
if ( (vehicle _killer) in blck_forbidenVehicles || (currentWeapon _killer) in blck_forbidenVehicleGuns ) then
|
||||
{
|
||||
_reward = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Give the player money for killing an AI
|
||||
_maxReward = 50;
|
||||
_dist = _unit distance _killer;
|
||||
_reward = 0;
|
||||
@ -40,9 +31,9 @@ if (blck_modType isEqualTo "Epoch") then
|
||||
if (_dist < 100) then { _reward = _maxReward - (_maxReward / 1.5); _reward };
|
||||
if (_dist < 800) then { _reward = _maxReward - (_maxReward / 2); _reward };
|
||||
if (_dist > 800) then { _reward = _maxReward - (_maxReward / 4); _reward };
|
||||
|
||||
//diag_log format["_fnc_rewardPlayer: _killer %1 | _dist %2 | _reward %3 ",_killer,_dist,_reward];
|
||||
//diag_log format["_fnc_rewardPlayer: blck_addAIMoney %1 | blck_useKillScoreMessage %2",blck_addAIMoney,blck_useKillScoreMessage];
|
||||
private _killstreakReward=+(_kills*2);
|
||||
//diag_log format["fnd_rewardKiller:: _bonus returned will be %1",_reward];
|
||||
if (blck_addAIMoney) then
|
||||
{
|
||||
[_killer,_reward + _killstreakReward] call blck_fnc_giveTakeCrypto;
|
||||
@ -54,44 +45,22 @@ if (blck_modType isEqualTo "Epoch") then
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
_player setVariable ["ExileHunger", _data select 4];
|
||||
_player setVariable ["ExileThirst", _data select 5];
|
||||
_player setVariable ["ExileAlcohol", _data select 6];
|
||||
_player setVariable ["ExileTemperature", _data select 44];
|
||||
_player setVariable ["ExileWetness", _data select 45];
|
||||
*/
|
||||
|
||||
if (blck_modType isEqualTo "Exile") then
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
private["_distanceBonus","_overallRespectChange","_newKillerScore","_newKillerFrags","_maxReward","_money","_message"];
|
||||
/*
|
||||
// Temporary fix for the Loss of Respect Bug.
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer name = %2 | ExileScore = %1 | Kills %3",_killer getVariable [ "ExileScore", 0 ], name _killer, _killer getVariable["ExileKills",0]];
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer = %1 | vehicle _killer = %2 | objectParent _killer %3",_killer, vehicle _killer, objectParent _killer];
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer is gunner = %1 | killer is driver = %2",_killer isEqualTo gunner objectParent _killer,_killer isEqualTo driver objectParent _killer];
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileOwnerUID = %1 ",_killer getVariable["ExileOwnerUID",0]]; // ExileOwnerUID
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileHunger = %1 ",_killer getVariable["ExileHunger",0]]; // ExileOwnerUID
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileThirst = %1 ",_killer getVariable["ExileThirst",0]]; // ExileOwnerUID
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileAlcohol = %1 ",_killer getVariable["ExileAlcohol",0]]; // ExileOwnerUID
|
||||
diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileWetness = %1 ",_killer getVariable["ExileWetness",0]]; // ExileOwnerUID
|
||||
*/
|
||||
if ( (isPlayer _killer) && (_killer getVariable["ExileHunger",0] > 0) && (_killer getVariable["ExileThirst",0] > 0) ) then
|
||||
{
|
||||
_distanceBonus = floor((_unit distance _killer)/100);
|
||||
_killstreakBonus = 3 * (_killer getVariable["blck_kills",0]);
|
||||
_respectGained = 25 + _distanceBonus + _killstreakBonus;
|
||||
_score = _killer getVariable ["ExileScore", 0];
|
||||
//diag_log format["GMS_fnc_rewardKiller.sqf:: ExileScore = %1",_killer getVariable ["ExileScore", 0]];
|
||||
_score = _score + (_respectGained);
|
||||
//diag_log format["GMS_fnc_rewardKiller.sqf:: _new = %1",_score];
|
||||
_killer setVariable ["ExileScore", _score];
|
||||
format["setAccountScore:%1:%2", _score,getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
|
||||
_newKillerFrags = _killer getVariable ["ExileKills", 0];
|
||||
_newKillerFrags = _newKillerFrags + 1;
|
||||
_killer setVariable ["ExileKills", _newKillerFrags];
|
||||
format["addAccountKill:%1", getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
|
||||
//_message = ["showFragRequest",_respectGained];
|
||||
_killer call ExileServer_object_player_sendStatsUpdate;
|
||||
if (blck_useKillScoreMessage) then
|
||||
{
|
||||
@ -99,21 +68,3 @@ if (blck_modType isEqualTo "Exile") then
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
if (_overallRespectChange > 0) then {
|
||||
_score = _killer getVariable ["ExileScore", 0];
|
||||
_score = _score + _overallRespectChange;
|
||||
_killer setVariable ["ExileScore", _score];
|
||||
format["setAccountScore:%1:%2", _score,_killerPlayerUID] call ExileServer_system_database_query_fireAndForget;
|
||||
[_killer, "showFragRequest", [_killerRespectPoints]] call A3XAI_sendExileMessage;
|
||||
};
|
||||
|
||||
//["systemChatRequest", [_killMessage]] call ExileServer_system_network_send_broadcast; //To-do: Non-global version
|
||||
_newKillerFrags = _killer getVariable ["ExileKills", 0];
|
||||
_killer setVariable ["ExileKills", _newKillerFrags + 1];
|
||||
format["addAccountKill:%1", _killerPlayerUID] call ExileServer_system_database_query_fireAndForget;
|
||||
|
||||
_killer call ExileServer_object_player_sendStatsUpdate;
|
||||
};
|
||||
|
@ -67,6 +67,6 @@ for "_i" from 1 to _numAI do
|
||||
};
|
||||
|
||||
|
||||
//blck_monitoredMissionAIGroups pushback _paraGroup;
|
||||
blck_monitoredMissionAIGroups pushback _paraGroup;
|
||||
|
||||
_paraGroup
|
||||
|
@ -193,9 +193,9 @@ if (blck_debugLevel > 2) then
|
||||
};
|
||||
#endif
|
||||
|
||||
_unit addEventHandler ["Reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}];
|
||||
_unit addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call compile preprocessfilelinenumbers blck_EH_AIKilled;}]; // changed to reduce number of concurrent threads, but also works as spawn blck_AIKilled; }];
|
||||
_unit addMPEventHandler ["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIHit;}];
|
||||
_unit addEventHandler ["Reloaded", {_this call blck_EH_unitWeaponReloaded;}];
|
||||
_unit addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call blck_EH_AIKilled;}];
|
||||
_unit addMPEventHandler ["MPHit",{[_this] call blck_EH_AIHit;}];
|
||||
|
||||
switch (_skillLevel) do
|
||||
{
|
||||
|
@ -1,16 +0,0 @@
|
||||
|
||||
/*
|
||||
Killed handler for _units
|
||||
By Ghostrider-GRG-
|
||||
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
//#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
//diag_log format["_EH_processAIVehicleKill: _this = %1",_this];
|
||||
if !(isDedicated) exitWith {};
|
||||
_this call blck_fnc_processAIVehicleKill;
|
@ -23,15 +23,11 @@ if (blck_debugLevel > 1) then
|
||||
};
|
||||
#endif
|
||||
|
||||
//if (!(alive _veh)) exitWith {};
|
||||
if (!(isPlayer _instigator)) exitWith {};
|
||||
_crew = crew _veh;
|
||||
_group = group (_crew select 0);
|
||||
// Tell the vehicle crew something about the player who caused the damage
|
||||
[_crew select 0,_instigator] call blck_fnc_alertGroupUnits;
|
||||
// Tell nearby vehicles something about the player who caused the damage
|
||||
[_instigator] call blck_fnc_alertNearbyVehicles;
|
||||
// Ask for help from the nearest group of infantry, especially if they have launchers
|
||||
_nearestGroup = [getPos _veh] call blck_fnc_findNearestInfantryGroup;
|
||||
[(units _nearestGroup) select 0,_instigator] call blck_fnc_alertGroupUnits;
|
||||
|
||||
|
@ -1,14 +0,0 @@
|
||||
/*
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Scans vehicles local to the machine the script is run on.
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_vehicle"];
|
@ -1,64 +0,0 @@
|
||||
/*
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last updated 3-14-17
|
||||
|
||||
spawns a vehicle of _vehType and mans it with units in _group.
|
||||
returns _veh, the vehicle spawned.
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
diag_log "Vehicle Decommisioning handler activated";
|
||||
params["_veh"];
|
||||
|
||||
if (_veh getVariable["GRG_vehType","none"] isEqualTo "emplaced") then // Deal with a static weapon
|
||||
{
|
||||
if (blck_killEmptyStaticWeapons) then
|
||||
{
|
||||
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 blck_fnc_releaseVehicleToPlayers;
|
||||
};
|
||||
}else { // Deal with vehicles
|
||||
if (blck_killEmptyAIVehicles) then
|
||||
{
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle destroyed where vehicle = %1",_veh];};
|
||||
{
|
||||
_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 {
|
||||
if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: case of release vehicle = %1 to player with blck_monitoredVehicles = %2",_veh, blck_monitoredVehicles];};
|
||||
blck_monitoredVehicles = blck_monitoredVehicles - [_veh];
|
||||
if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: blck_monitoredVehicles updated to %1", blck_monitoredVehicles];};
|
||||
[_veh] call blck_fnc_releaseVehicleToPlayers;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
_ai_veh = _this select 0;
|
||||
|
||||
_if (_ai_veh getVariable["disabled",false]) exitWith {};
|
||||
|
||||
_ai_veh setVariable["disabled",true];
|
||||
//_ai_veh_type = typeof _ai_veh;
|
||||
//_ai_veh_name = name _ai_veh;
|
||||
|
||||
_ai_veh setFuel 0;
|
||||
_ai_veh setVehicleAmmo 0;
|
||||
_ai_veh setAmmoCargo 0;
|
||||
|
||||
_s = ["MOTOR",
|
||||
"wheel_1_1_steering","wheel_2_1_steering","wheel_1_2_steering","wheel_2_2_steering",
|
||||
"wheel_1_3_steering","wheel_2_3_steering","wheel_1_4_steering","wheel_2_4_steering"];
|
||||
{_ai_veh setHit [_x,1]} forEach _s;
|
@ -11,13 +11,13 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_veh"];
|
||||
//diag_log format["blck_fnc_deleteAIvehicle: _veh %1 deleted",_veh];
|
||||
{
|
||||
_veh removeAllEventHandlers _x;
|
||||
}forEach ["Hit","HitPart","GetIn","GetOut","Fired","FiredNear","HandleDamage","Reloaded"];
|
||||
{
|
||||
_veh removeAllMPEventHandlers _x;
|
||||
}forEach ["MPHit","MPKilled"];
|
||||
blck_monitoredVehicles = blck_monitoredVehicles - [_veh];
|
||||
deleteVehicle _veh;
|
||||
params["_veh"];
|
||||
//diag_log format["blck_fnc_deleteAIvehicle: _veh %1 deleted",_veh];
|
||||
{
|
||||
_veh removeAllEventHandlers _x;
|
||||
}forEach ["Hit","HitPart","GetIn","GetOut","Fired","FiredNear","HandleDamage","Reloaded"];
|
||||
{
|
||||
_veh removeAllMPEventHandlers _x;
|
||||
}forEach ["MPHit","MPKilled"];
|
||||
blck_monitoredVehicles = blck_monitoredVehicles - [_veh];
|
||||
deleteVehicle _veh;
|
||||
|
@ -11,6 +11,6 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
params["_veh"];
|
||||
{[_x] call blck_fnc_deleteAI;} forEach (crew _veh);
|
||||
[_veh] call blck_fnc_deleteAIvehicle;
|
||||
params["_veh"];
|
||||
{[_x] call blck_fnc_deleteAI;} forEach (crew _veh);
|
||||
[_veh] call blck_fnc_deleteAIvehicle;
|
||||
|
@ -31,21 +31,16 @@ if (blck_debugLevel > 1) then
|
||||
};
|
||||
#endif
|
||||
|
||||
//if (!(alive _veh)) exitWith {};
|
||||
if (!(isPlayer _instigator)) exitWith {};
|
||||
_crew = crew _veh;
|
||||
if !(count _crew == 0) then
|
||||
{
|
||||
_group = group (_crew select 0);
|
||||
// Tell the vehicle crew something about the player who caused the damage
|
||||
};
|
||||
|
||||
// Tell nearby vehicles something about the player who caused the damage
|
||||
[_instigator] call blck_fnc_alertNearbyVehicles;
|
||||
// Ask for help from the nearest group of infantry, especially if they have launchers
|
||||
_nearestGroup = [getPos _veh] call blck_fnc_findNearestGroup;
|
||||
[(units _nearestGroup) select 0,_instigator] call blck_fnc_alertGroupUnits;
|
||||
|
||||
_group setBehaviour "COMBAT";
|
||||
_wp = [_group, currentWaypoint _group];
|
||||
_wp setWaypointBehaviour "COMBAT";
|
||||
|
@ -10,41 +10,29 @@
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
// Needs optimization for headless clients
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_veh"];
|
||||
blck_monitoredVehicles = blck_monitoredVehicles - [_veh];
|
||||
//diag_log format["_fnc_releaseVehicleToPlayersl: _veh = %1 | (owner _veh) = %2",_veh,(owner _veh)];
|
||||
//diag_log format["_fnc_releaseVehicleToPlayersl: initial lock state of vehicle 51 = %2",_veh,locked _veh];
|
||||
//_veh setVehicleLock "UNLOCKED" ;
|
||||
_locked = true;
|
||||
_count = 0;
|
||||
_timeIn = diag_tickTime;
|
||||
while {_count < 2} do
|
||||
{
|
||||
//diag_log format["_fnc_releaseVehicleToPlayersl: attempting to unlock vehicle %1",_veh];
|
||||
[_veh,"UNLOCKED"] remoteExec ["setVehicleLock",0]; // unlock on all clients so we don't have to worry about any change of ownership when the driver is ejected.
|
||||
// a bit of bandwidth seems worth ensuring that vehicles do in fact get unlocked.
|
||||
uiSleep 0.1;
|
||||
_count = _count + 1;
|
||||
diag_log format["_fnc_releaseVehicleToPlayersl: locked state of vehicle %1 = ^%2",_veh, locked _veh];
|
||||
//if ((_veh locked) isEqualTo "UNLOCKED" || (diag_tickTime - _timeIn) > 5) then {_locked = false};
|
||||
};
|
||||
// {player setAmmo [primaryWeapon player, 1];} remoteExec ["bis_fnc_call", 0];
|
||||
//{[_veh setVehicleLock "UNLOCKED"];} remoteExec ["BIS_fnc_call",(owner _veh)];
|
||||
//diag_log format["_fnc_releaseVehicleToPlayersl: _veh = %1 | isLocal _veh = %3 | (owner _veh) = %2",_veh,(owner _veh),Local _veh];
|
||||
if (local _veh) then {
|
||||
_veh lock false;
|
||||
}
|
||||
else {
|
||||
if (isserver) then {
|
||||
[_veh,false] remoteExecCall ["lock",_veh]; // let the machine, where the vehicle is local unlock it (only the server knows, who the owner is!!!)
|
||||
}
|
||||
else {
|
||||
[[_veh,false],["lock",_veh]] remoteExecCall ["remoteExecCall", 2]; // If run on HC, move to the server. Server will remoteexec on local machine
|
||||
};
|
||||
};
|
||||
//diag_log format["_fnc_releaseVehicleToPlayers: _veh=%1 | owner = %2 | lock = %3",_veh,owner _veh, locked _veh];
|
||||
{
|
||||
_veh removealleventhandlers _x;
|
||||
} forEach ["GetIn","GetOut","fired","hit","hitpart","reloaded","dammaged","HandleDamage"];
|
||||
{
|
||||
_veh removeAllMPEventHandlers _x;
|
||||
} forEach ["MPHit","MPKilled"];
|
||||
_veh setVariable["blck_DeleteAt",diag_tickTime + blck_vehicleDeleteTimer,true];
|
||||
_veh setVariable["blck_DeleteAt",nil];
|
||||
if ((damage _veh) > 0.6) then {_veh setDamage 0.6};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_veh];
|
||||
};
|
||||
#endif
|
||||
//diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_veh];
|
@ -8,45 +8,42 @@ params["_vehicle","_searchRadius","_detectionOdds"];
|
||||
private["_player","_detectionOdds","_nearbyPlayers","_knowsAbout","_cansee","_knowledgeGained"];
|
||||
_nearbyPlayers = [position _vehicle, _vehicle getVariable["blck_vehicleSearchRange",500]] call blck_fnc_nearestPlayers;
|
||||
|
||||
if (blck_revealMode isEqualTo "detailed") then
|
||||
{
|
||||
private["_crew","_group"];
|
||||
_crew = crew _vehicle;
|
||||
_group = group(_crew select 0);
|
||||
{
|
||||
if (random(1) < _detectionOdds) then
|
||||
switch blck_revealMode do {
|
||||
case "detailed": {
|
||||
private["_crew"];
|
||||
_crew = crew _vehicle;
|
||||
if !(_crew isequalto []) then {
|
||||
{
|
||||
if (random(1) < _detectionOdds) then {
|
||||
_player = _x;
|
||||
{
|
||||
_cansee = [objNull, "VIEW"] checkVisibility [eyePos _x, position _player];
|
||||
if (_cansee > 0) then {
|
||||
_knowledgeGained = _cansee;
|
||||
}
|
||||
else {
|
||||
_knowledgeGained = _x knowsAbout _player;
|
||||
if (_knowledgeGained == 0) then {_knowledgeGained = 0.1};
|
||||
};
|
||||
_x reveal[_player,_knowledgeGained];
|
||||
}forEach _crew;
|
||||
};
|
||||
}forEach _nearbyPlayers;
|
||||
};
|
||||
};
|
||||
case "basic": {
|
||||
{
|
||||
_player = _x;
|
||||
{
|
||||
_cansee = [objNull, "VIEW"] checkVisibility [eyePos _x, position _player];
|
||||
if (_cansee > 0) then
|
||||
{
|
||||
_knowledgeGained = _cansee;
|
||||
} else {
|
||||
_knowledgeGained = _x knowsAbout _player;
|
||||
if (_knowledgeGained == 0) then {_knowledgeGained = 0.1};
|
||||
if (random(1) < _detectionOdds) then {
|
||||
_knowsAbout = (_vehicle) knowsAbout _player;
|
||||
if (_knowsAbout > 0) then {
|
||||
_knowledgeGained = _knowsAbout;
|
||||
}
|
||||
else {
|
||||
_knowledgeGained = (_searchRadius - (_x distance _vehicle))/_searchRadius;
|
||||
};
|
||||
_x reveal[_player,_knowledgeGained];
|
||||
//diag_log format["_fnc_revealNearbyPlayers: player %1 revealed to unit %2",_player,_x];
|
||||
}forEach _crew;
|
||||
};
|
||||
}forEach _nearbyPlayers;
|
||||
};
|
||||
|
||||
if (blck_revealMode isEqualTo "basic") then
|
||||
{
|
||||
{
|
||||
_player = _x;
|
||||
if (random(1) < _detectionOdds) then
|
||||
{
|
||||
_knowsAbout = (_vehicle) knowsAbout _player;
|
||||
if (_knowsAbout > 0) then
|
||||
{
|
||||
_knowledgeGained = _knowsAbout;
|
||||
} else {
|
||||
_knowledgeGained = (_searchRadius - (_x distance _vehicle))/_searchRadius;
|
||||
_x reveal[_player, _knowledgeGained];
|
||||
};
|
||||
_x reveal[_player, _knowledgeGained];
|
||||
};
|
||||
}forEach _nearbyPlayers;
|
||||
}forEach _nearbyPlayers;
|
||||
};
|
||||
};
|
@ -21,12 +21,6 @@ if (_backpacks isEqualTo []) then {_backpacks = [_skillAI] call blck_fnc_sele
|
||||
if (_weaponList isEqualTo []) then {_weaponList = [_skillAI] call blck_fnc_selectAILoadout};
|
||||
if (_sideArms isEqualTo []) then {[_skillAI] call blck_fnc_selectAISidearms};
|
||||
|
||||
/*
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionHeli: parameter %1 = %2",_foreachIndex,_x];
|
||||
}forEach [_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms];
|
||||
*/
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
@ -44,19 +38,6 @@ if (isNull _grpPilot) then
|
||||
|
||||
if !(isNull _grpPilot) then
|
||||
{
|
||||
_grpPilot setBehaviour "COMBAT";
|
||||
_grpPilot setCombatMode "RED";
|
||||
_grpPilot setSpeedMode "NORMAL";
|
||||
_grpPilot allowFleeing 0;
|
||||
_grpPilot setVariable["patrolCenter",_coords];
|
||||
_grpPilot setVariable["minDis",15];
|
||||
_grpPilot setVariable["maxDis",30];
|
||||
_grpPilot setVariable["timeStamp",diag_tickTime];
|
||||
_grpPilot setVariable["arc",0];
|
||||
_grpPilot setVariable["wpRadius",30];
|
||||
_grpPilot setVariable["wpMode","SAD"];
|
||||
// [_pos,_minDist,_maxDist,_groupSpawned,"random","SAD","infantry"] spawn blck_fnc_setupWaypoints;
|
||||
diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange];
|
||||
switch (toLower(_skillAI)) do
|
||||
{
|
||||
case "blue": {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisBlue};
|
||||
@ -65,8 +46,22 @@ if !(isNull _grpPilot) then
|
||||
case "orange" : {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisOrange};
|
||||
default {_minDist = 150; _maxDist = 500};
|
||||
};
|
||||
diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist];
|
||||
_grpPilot setBehaviour "COMBAT";
|
||||
_grpPilot setCombatMode "RED";
|
||||
_grpPilot setSpeedMode "NORMAL";
|
||||
_grpPilot allowFleeing 0;
|
||||
_grpPilot setVariable["patrolCenter",_coords];
|
||||
_grpPilot setVariable["minDis",_minDist];
|
||||
_grpPilot setVariable["maxDis",_maxDist];
|
||||
_grpPilot setVariable["timeStamp",diag_tickTime];
|
||||
_grpPilot setVariable["arc",0];
|
||||
_grpPilot setVariable["wpRadius",30];
|
||||
_grpPilot setVariable["wpMode","SAD"];
|
||||
//diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange];
|
||||
//diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist];
|
||||
[_coords,_minDist,_maxDist,_grpPilot,"random","SAD","pilot"] call blck_fnc_setupWaypoints;
|
||||
|
||||
|
||||
blck_monitoredMissionAIGroups pushBack _grpPilot;
|
||||
//create helicopter and spawn it
|
||||
if (( typeName _helis) isEqualTo "ARRAY") then
|
||||
@ -79,7 +74,8 @@ if !(isNull _grpPilot) then
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionHeli (78):: _chopperType selected = %1",_chopperType];
|
||||
diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist];
|
||||
diag_log format["_fnc_spawnMissionHeli (78):: _chopperType selected = %1",_chopperType];
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_vehType","_safepos","_veh","_unitNumber"];
|
||||
params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull],["_setWaypoints",true]];
|
||||
params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true]];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
@ -35,11 +35,10 @@ if (blck_debugLevel > 1) then
|
||||
|
||||
|
||||
|
||||
if !(isNull _group) then
|
||||
{ // exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnVehiclePatrol"; objNull;};
|
||||
if !(isNull _group) then {
|
||||
_veh = [_vehType,_pos] call blck_fnc_spawnVehicle;
|
||||
// _veh addEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
|
||||
_veh addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleHit}];
|
||||
// _veh addEventHandler["HandleDamage",{ [_this] call blck_EH_AIVehicle_HandleDamage}];
|
||||
_veh addMPEventHandler["MPHit",{ [_this] call blck_EH_AIVehicle_HandleHit}];
|
||||
_veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeGroundVehicle];
|
||||
_veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds];
|
||||
|
||||
|
@ -11,75 +11,62 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private ["_vehList","_veh","_isEmplaced","_ownerIsPlayer","_allCrewDead","_deleteNow","_evaluate"];
|
||||
private ["_vehList"];
|
||||
_vehList = +blck_monitoredVehicles;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 and blck_monitoredVehicles %3",diag_tickTime,_vehList,blck_monitoredVehicles];};
|
||||
#endif
|
||||
//diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 ",diag_tickTime,_vehList,blck_monitoredVehicles];
|
||||
|
||||
{
|
||||
/*
|
||||
Determine state of vehicle
|
||||
_isEmplaced
|
||||
_ownerIsPlayer
|
||||
_allCrewDead
|
||||
private["_veh","_isEmplaced","_allCrewDead","_evaluate","_deleteAtTime"];
|
||||
_veh = _x; // (purely for clarity at this point, _x could be used just as well)
|
||||
|
||||
_isEmplaced = _veh getVariable["GRG_vehType","none"] isEqualTo "emplaced";
|
||||
_allCrewDead = {alive _x} count (crew _veh) == 0;
|
||||
_evaluate = 0;
|
||||
_deleteAtTime = _veh getVariable ["blck_deleteAtTime",diag_tickTime + 1];
|
||||
|
||||
_handleReloadRefuel (0)
|
||||
_scheduleDeletion (2) [_allCrewDead && !_isEmplaced && !_scheduled] // all vehicles other than statics
|
||||
_disableNow and schedule for deletion (1) [_allCrewDead && _isEmplaced] // emplaced weapons
|
||||
_deleteNow (3)
|
||||
_releaseToPlayer (4) [_allCrewDead && !_isEmplaced && _ownerIsPlayer]
|
||||
_default (5) reload rearm
|
||||
*/
|
||||
|
||||
if (true) then
|
||||
if (diag_tickTime > _deleteAtTime) then
|
||||
{
|
||||
private["_veh","_isEmplaced","_ownerIsPlayer","_allCrewDead","_deleteNow","_evaluate"];
|
||||
_veh = _x; // (purely for clarity at this point, _x could be used just as well)
|
||||
|
||||
_isEmplaced = _veh getVariable["GRG_vehType","none"] isEqualTo "emplaced";
|
||||
_ownerIsPlayer = if (owner _veh > 2 && !(owner _veh in blck_connectedHCs)) then {true} else {false};
|
||||
_allCrewDead = if (({alive _x} count (crew _veh)) == 0) then {true} else {false};
|
||||
_evaluate = 0;
|
||||
if (_allCrewDead && _isEmplaced && (_veh getVariable["blck_deleteAt",0] == 0)) then {_evaluate = 1};
|
||||
if (_allCrewDead && !(_isEmplaced) && (_veh getVariable["blck_deleteAt",0] == 0)) then {_evaluate = 2};
|
||||
if ((_veh getVariable["blck_deleteAt",0] > 0) && (diag_tickTime > (_veh getVariable["blck_deleteAt",0]))) then {_evaluate = 3};
|
||||
if (/*_ownerIsPlayer*/ (owner _veh > 2) && !(owner _veh in blck_connectedHCs)) then {_evaluate = 4};
|
||||
//diag_log format["_fnc_vehicleMonitor: vehicle = %1 | owner = %2 | crew = %2",_veh, owner _veh, {alive _x} count (crew _veh)];
|
||||
switch (_evaluate) do
|
||||
_evaluate = 3;
|
||||
} else {
|
||||
if (_allCrewDead) then
|
||||
{
|
||||
case 0:{[_veh] call blck_fnc_reloadVehicleAmmo;};
|
||||
case 1:{
|
||||
if (blck_killEmptyStaticWeapons) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];};
|
||||
#endif
|
||||
_veh setDamage 1;
|
||||
_veh setVariable["blck_DeleteAt",diag_tickTime + 60];
|
||||
}else {
|
||||
[_veh] call blck_fnc_releaseVehicleToPlayers;
|
||||
};
|
||||
};
|
||||
case 2:{
|
||||
if (blck_killEmptyAIVehicles) then
|
||||
{
|
||||
_veh setDamage 0.7;
|
||||
_veh setVariable["blck_DeleteAt",diag_tickTime + 60];
|
||||
} else {
|
||||
[_veh] call blck_fnc_releaseVehicleToPlayers;
|
||||
};
|
||||
};
|
||||
case 3:{
|
||||
[_veh] call blck_fnc_destroyVehicleAndCrew;
|
||||
};
|
||||
case 4:{
|
||||
_veh setVariable["blck_DeleteAt",nil];
|
||||
blck_monitoredVehicles = blck_monitoredVehicles - [_veh];
|
||||
_evaluate = if (_isEmplaced) then {1} else {2};
|
||||
};
|
||||
};
|
||||
|
||||
//diag_log format["_fnc_vehicleMonitor: vehicle = %1 | owner = %2 | crew = %3 | _evaluate = %4",_veh, owner _veh, {alive _x} count (crew _veh), _evaluate];
|
||||
switch (_evaluate) do
|
||||
{
|
||||
case 0:{[_veh] call blck_fnc_reloadVehicleAmmo;};
|
||||
case 1:{
|
||||
if (blck_killEmptyStaticWeapons) then
|
||||
{
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];};
|
||||
_veh setDamage 1;
|
||||
_veh setVariable["blck_deleteAtTime",diag_tickTime + 60];
|
||||
}else {
|
||||
//diag_log format["_fnc_vehicleMonitor: calling _fnc_releaseVehicleToPlayers for vehicle %1",_veh];
|
||||
[_veh] call blck_fnc_releaseVehicleToPlayers;
|
||||
};
|
||||
};
|
||||
case 2:{
|
||||
if (blck_killEmptyAIVehicles) then
|
||||
{
|
||||
//if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];};
|
||||
_veh setDamage 0.7;
|
||||
_veh setFuel 0;
|
||||
_veh setVariable["blck_deleteAtTime",diag_tickTime + 60];
|
||||
} else {
|
||||
//diag_log format["_fnc_vehicleMonitor: calling _fnc_releaseVehicleToPlayers for vehicle %1",_veh];
|
||||
[_veh] call blck_fnc_releaseVehicleToPlayers;
|
||||
};
|
||||
};
|
||||
case 3:{
|
||||
//diag_log format["_fnc_releaseVehicleToPlayers: destroying vehicle and crew for vehicle %1 at time %2",_veh,diag_tickTime];
|
||||
[_veh] call blck_fnc_destroyVehicleAndCrew;
|
||||
};
|
||||
|
||||
};
|
||||
}forEach _vehList;
|
||||
|
||||
|
@ -13,159 +13,156 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
// General functions
|
||||
blck_fnc_waitTimer = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf";
|
||||
blck_fnc_timedOut = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf";
|
||||
blck_fnc_FindSafePosn = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf";
|
||||
blck_fnc_randomPosition = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf";// find a randomPosn. see script for details.
|
||||
blck_fnc_findPositionsAlongARadius = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf";
|
||||
blck_fnc_giveTakeCrypto = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf";
|
||||
blck_fnc_timeAcceleration = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf";
|
||||
blck_fnc_getModType = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getModType.sqf"; // Test if Epoch or Exile is loaded
|
||||
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_playerInRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf";
|
||||
blck_fnc_playerInRangeArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"; // GMS_fnc_playerInRangeArray
|
||||
blck_fnc_mainThread = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf";
|
||||
blck_fnc_allPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf";
|
||||
blck_fnc_addItemToCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf";
|
||||
blck_fnc_loadLootItemsFromArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf";
|
||||
blck_fnc_getNumberFromRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf";
|
||||
blck_fnc_spawnMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf";
|
||||
blck_fnc_missionCompleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf";
|
||||
blck_fnc_deleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf";
|
||||
blck_fnc_updateMarkerAliveCount = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf";
|
||||
blck_fnc_addMoneyToObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf";
|
||||
blck_fnc_spawnMissionEmplacedRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf";
|
||||
blck_fnc_spawnMissionLootBoxesRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf";
|
||||
blck_fnc_spawnSingleObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf";
|
||||
blck_fnc_emptyObjectInventory = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf";
|
||||
blck_fnc_spawnMissionLandscapeRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf";
|
||||
blck_fnc_nearestPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf";
|
||||
//blck_fnc_getTraderCitiesEpoch = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitiesEpoch.sqf";
|
||||
//blck_fnc_getTraderCitesExile = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";
|
||||
private _functions = [
|
||||
// General functions
|
||||
["blck_fnc_waitTimer","\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"],
|
||||
["blck_fnc_timedOut","\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"],
|
||||
["blck_fnc_FindSafePosn","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"],
|
||||
["blck_fnc_randomPosition","\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf"], // find a randomPosn. see script for details.
|
||||
["blck_fnc_findPositionsAlongARadius","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"],
|
||||
["blck_fnc_giveTakeCrypto","\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"],
|
||||
["blck_fnc_timeAcceleration","\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"],
|
||||
["blck_fnc_groupsOnAISide","\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"], // Returns the number of groups on the side used by AI
|
||||
["blck_fnc_emptyObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"],
|
||||
["blck_fnc_playerInRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"],
|
||||
["blck_fnc_playerInRangeArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"],
|
||||
["blck_fnc_mainThread","\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"],
|
||||
["blck_fnc_allPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"],
|
||||
["blck_fnc_addItemToCrate","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"],
|
||||
["blck_fnc_loadLootItemsFromArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"],
|
||||
["blck_fnc_getNumberFromRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"],
|
||||
["blck_fnc_spawnMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"],
|
||||
["blck_fnc_missionCompleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"],
|
||||
["blck_fnc_deleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"],
|
||||
["blck_fnc_updateMarkerAliveCount","\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"],
|
||||
["blck_fnc_addMoneyToObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"],
|
||||
["blck_fnc_spawnMissionEmplacedRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"],
|
||||
["blck_fnc_spawnMissionLootBoxesRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"],
|
||||
["blck_fnc_spawnSingleObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"],
|
||||
//["blck_fnc_emptyObjectInventory","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"],
|
||||
["blck_fnc_spawnMissionLandscapeRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"],
|
||||
["blck_fnc_nearestPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"],
|
||||
|
||||
#ifdef GRGserver
|
||||
blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf";
|
||||
diag_log "blck_functions loaded using GRGserver settings ---- >>>> ";
|
||||
#endif
|
||||
// Player-related functions
|
||||
["blck_fnc_rewardKiller","\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"],
|
||||
["blck_fnc_MessagePlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"], // Send messages to players regarding Missions
|
||||
|
||||
// Player-related functions
|
||||
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
|
||||
// Mission-related functions
|
||||
["blck_fnc_selectAILoadout","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"],
|
||||
["blck_fnc_selectAISidearms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"],
|
||||
["blck_fnc_selectAIUniforms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"],
|
||||
["blck_fnc_selectAIHeadgear","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"],
|
||||
["blck_fnc_selectAIVests","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"],
|
||||
["blck_fnc_selectAIBackpacks","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"],
|
||||
["blck_fnc_selectChanceHeliPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"],
|
||||
["blck_fnc_selectMissionHelis","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"],
|
||||
["blck_fnc_selectNumberAirPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"],
|
||||
["blck_fnc_selectNumberParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"],
|
||||
["blck_fnc_selectChanceParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"],
|
||||
["blck_fnc_addMissionToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"],
|
||||
["blck_fnc_updateMissionQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"],
|
||||
["blck_fnc_spawnPendingMissions","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"],
|
||||
["blck_fnc_addLiveAItoQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"],
|
||||
["blck_fnc_addObjToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"],
|
||||
["blck_fnc_spawnCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"], // Simply spawns a crate of a specified type at a specific position.
|
||||
["blck_fnc_spawnMissionCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"],
|
||||
["blck_fnc_cleanupObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"],
|
||||
["blck_fnc_spawnCompositionObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"],
|
||||
["blck_fnc_spawnRandomLandscape","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"],
|
||||
["blck_fnc_spawnMissionVehiclePatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"],
|
||||
["blck_fnc_spawnEmplacedWeaponArray","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"],
|
||||
["blck_fnc_spawnMissionAI","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"],
|
||||
["blck_fnc_spawnMissionLootVehicles","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"],
|
||||
["blck_fnc_fillBoxes","\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"], // Adds items to an object according to passed parameters. See the script for details.
|
||||
["blck_fnc_smokeAtCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"], // Spawns a wreck and adds smoke to it
|
||||
["blck_fnc_spawnMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"], // Deploys mines at random locations around the mission center
|
||||
["blck_fnc_clearMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"], // clears mines in an array passed as a parameter
|
||||
["blck_fnc_signalEnd","\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","\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"],
|
||||
["blck_fnc_paraDropObject","\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"],
|
||||
["blck_fnc_loadMissionCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"],
|
||||
["blck_fnc_crateMoved","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"],
|
||||
["blck_fnc_crateMarker","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"],
|
||||
["blck_fnc_garrisonBuilding_RelPosSystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"],
|
||||
["blck_fnc_garrisonBuilding_ATLsystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"],
|
||||
["blck_fnc_spawnGarrisonInsideBuilding_ATL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"],
|
||||
["blck_fnc_spawnGarrisonInsideBuilding_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"],
|
||||
|
||||
// Group-related functions
|
||||
["blck_fnc_spawnGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"], // Spawn a single group and populate it with AI units]
|
||||
["blck_fnc_setupWaypoints","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"], // Set default waypoints for a group
|
||||
["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat
|
||||
["blck_fnc_changeToSADWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"],
|
||||
["blck_fnc_changeToMoveWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"],
|
||||
["blck_fnc_changeToSentryWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"],
|
||||
// ["blck_fnc_setNextWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"],
|
||||
["blck_fnc_cleanEmptyGroups","\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"], // GMS_fnc_cleanEmptyGroups
|
||||
["blck_fnc_findNearestInfantryGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"],
|
||||
["blck_fnc_create_AI_Group","\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"], // create a group for which other functions spawn AI.
|
||||
["blck_fnc_blckSimulationManager","\q\addons\custom_server\Compiles\Groups\GMS_fnc_blckSimulationMonitor.sqf"],
|
||||
["bck_fnc_groupWaypointMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_groupWaypointMonitor.sqf"],
|
||||
|
||||
// Functions specific to vehicles, whether wheeled, aircraft or static
|
||||
["blck_fnc_spawnVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"],
|
||||
["blck_fnc_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"],
|
||||
["blck_fnc_protectVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"],
|
||||
["blck_fnc_configureMissionVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"],
|
||||
["blck_fnc_vehicleMonitor","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"],
|
||||
["blck_fnc_spawnMissionReinforcements","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"],
|
||||
["blck_fnc_spawnMissionHeli","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"],
|
||||
["blck_EH_AIVehicle_HandleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"],
|
||||
["blck_fnc_HandleAIVehicleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"],
|
||||
["blck_EH_VehicleKilled","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"],
|
||||
["blck_fnc_processAIVehicleKill","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"],
|
||||
["blck_fnc_selectPatrolVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"],
|
||||
["blck_fnc_releaseVehicleToPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"],
|
||||
["blck_fnc_deleteAIVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"],
|
||||
["blck_fnc_destroyVehicleAndCrew","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"],
|
||||
["blck_fnc_reloadVehicleAmmo","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"],
|
||||
["blck_fnc_scanForPlayersNearVehicles","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"],
|
||||
["blck_fnc_revealNearbyPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"],
|
||||
|
||||
// Mission-related functions
|
||||
blck_fnc_selectAILoadout = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf";
|
||||
blck_fnc_selectAISidearms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf";
|
||||
blck_fnc_selectAIUniforms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf";
|
||||
blck_fnc_selectAIHeadgear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf";
|
||||
blck_fnc_selectAIVests = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf";
|
||||
blck_fnc_selectAIBackpacks = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf";
|
||||
blck_fnc_selectChanceHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf";
|
||||
blck_fnc_selectMissionHelis = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf";
|
||||
blck_fnc_selectNumberAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf";
|
||||
blck_fnc_selectNumberParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf";
|
||||
blck_fnc_selectChanceParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.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_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_addObjToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"; //
|
||||
blck_fnc_spawnCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"; // Simply spawns a crate of a specified type at a specific position.
|
||||
blck_fnc_spawnMissionCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf";
|
||||
blck_fnc_cleanupObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf";
|
||||
blck_fnc_spawnCompositionObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf";
|
||||
blck_fnc_spawnRandomLandscape = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf";
|
||||
blck_fnc_spawnMissionVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf";
|
||||
blck_fnc_spawnEmplacedWeaponArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf";
|
||||
blck_fnc_spawnMissionAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf";
|
||||
blck_fnc_spawnMissionLootVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf";
|
||||
blck_fnc_fillBoxes = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"; // Adds items to an object according to passed parameters. See the script for details.
|
||||
blck_fnc_smokeAtCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"; // Spawns a wreck and adds smoke to it
|
||||
blck_fnc_spawnMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"; // Deploys mines at random locations around the mission center
|
||||
blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"; // clears mines in an array passed as a parameter
|
||||
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_paraDropObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf";
|
||||
blck_fnc_loadMissionCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf";
|
||||
blck_fnc_crateMoved = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf";
|
||||
blck_fnc_crateMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf";
|
||||
blck_fnc_garrisonBuilding_RelPosSystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf";
|
||||
blck_fnc_garrisonBuilding_ATLsystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf";
|
||||
blck_fnc_spawnGarrisonInsideBuilding_ATL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf";
|
||||
blck_fnc_spawnGarrisonInsideBuilding_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf";
|
||||
// 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_setupWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"; // Set default waypoints for a group
|
||||
blck_fnc_missionGroupMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"; // Monitors active groups for those that are stuck in an SAD waypoint but not in combat
|
||||
blck_fnc_changeToSADWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf";
|
||||
blck_fnc_changeToMoveWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf";
|
||||
blck_fnc_changeToSentryWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"; //
|
||||
//blck_fnc_setNextWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf";
|
||||
blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups
|
||||
blck_fnc_findNearestInfantryGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf";
|
||||
blck_fnc_create_AI_Group = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"; // create a group for which other functions spawn AI.
|
||||
|
||||
// Functions specific to vehicles, whether wheeled, aircraft or static
|
||||
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";
|
||||
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_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf";
|
||||
blck_fnc_spawnMissionReinforcements = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf";
|
||||
blck_fnc_spawnMissionHeli = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf";
|
||||
blck_EH_AIVehicle_HandleHit = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf";
|
||||
blck_fnc_HandleAIVehicleHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf";
|
||||
blck_EH_VehicleKilled = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf";
|
||||
blck_fnc_processAIVehicleKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf";
|
||||
blck_fnc_selectPatrolVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf";
|
||||
blck_fnc_releaseVehicleToPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf";
|
||||
blck_fnc_deleteAIVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf";
|
||||
blck_fnc_destroyVehicleAndCrew = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf";
|
||||
blck_fnc_reloadVehicleAmmo = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf";
|
||||
blck_fnc_scanForPlayersNearVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf";
|
||||
blck_fnc_revealNearbyPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf";
|
||||
// functions to support Units
|
||||
["blck_fnc_removeGear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"], // Strip an AI unit of all gear.
|
||||
["blck_fnc_spawnUnit","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"], // spawn individual AI
|
||||
["blck_EH_AIKilled","\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"], // Event handler to process AI deaths
|
||||
["blck_EH_AIHit","\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"],
|
||||
["blck_EH_unitWeaponReloaded","\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"],
|
||||
["blck_EH_animDone","\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"],
|
||||
["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"],
|
||||
["blck_fnc_removeLaunchers","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"],
|
||||
["blck_fnc_removeNVG","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"],
|
||||
["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"],
|
||||
["blck_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"],
|
||||
["blck_fnc_alertNearbyVehicles","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"],
|
||||
["blck_fnc_processIlleagalAIKills","\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"],
|
||||
["blck_fnc_cleanupDeadAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"], // handles deletion of AI bodies and gear when it is time.
|
||||
["blck_fnc_setSkill","\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"],
|
||||
["blck_fnc_cleanupAliveAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"],
|
||||
["blck_fnc_deleteAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"],
|
||||
["blck_fnc_processAIHit","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"],
|
||||
["blck_fnc_spawnHostage","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"],
|
||||
["blck_fnc_spawnLeader","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"],
|
||||
["blck_fnc_spawnCharacter","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"],
|
||||
["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"],
|
||||
["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"],
|
||||
["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"],
|
||||
|
||||
// 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_spawnUnit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"; // spawn individual AI
|
||||
blck_EH_AIKilled = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"; // Event handler to process AI deaths
|
||||
blck_EH_AIHit = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf";
|
||||
blck_EH_AIFiredNear = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIFiredNear.sqf";
|
||||
blck_EH_unitWeaponReloaded = "\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf";
|
||||
blck_EH_animDone = "\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf";
|
||||
blck_fnc_processAIKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf";
|
||||
blck_fnc_removeLaunchers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.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_alertGroupUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf";
|
||||
blck_fnc_alertNearbyVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf";
|
||||
blck_fnc_processIlleagalAIKills = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf";
|
||||
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_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";
|
||||
blck_fnc_processAIHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf";
|
||||
blck_fnc_spawnHostage = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf";
|
||||
blck_fnc_spawnLeader = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf";
|
||||
blck_fnc_spawnCharacter = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf";
|
||||
blck_fnc_spawnParaUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf";
|
||||
blck_fnc_nextAnim = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf";
|
||||
blck_fnc_placeCharacterInBuilding = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf";
|
||||
// HC support functions
|
||||
["blck_fnc_HC_XferGroup","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"],
|
||||
//["blck_fnc_onPlayerDisconnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"],
|
||||
//["blck_fnc_HC_monitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"],
|
||||
["blck_fnc_HC_passToHCs","\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"],
|
||||
//["blck_fnc_HC_getListConnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"],
|
||||
["blck_fnc_HC_leastBurdened","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"],
|
||||
["blck_fnc_HC_countGroupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"]
|
||||
];
|
||||
|
||||
// HC support functions
|
||||
blck_fnc_HC_XferGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf";
|
||||
//blck_fnc_HC_XferVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferVehicle.sqf";
|
||||
blck_fnc_onPlayerDisconnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf";
|
||||
//blck_fnc_HC_groupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_groupsAssigned.sqf";
|
||||
blck_fnc_HC_monitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf";
|
||||
//blck_fnc_HC_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_vehicleMonitor.sqf";
|
||||
//blck_fnc_HC_monitorHC = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_monitorHC.sqf";
|
||||
blck_fnc_HC_passToHCs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf";
|
||||
blck_fnc_HC_getListConnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf";
|
||||
blck_fnc_HC_leastBurdened = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf";
|
||||
blck_fnc_HC_countGroupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf";
|
||||
{
|
||||
_x params ["_name","_path"];
|
||||
missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path];
|
||||
} foreach _functions;
|
||||
|
||||
onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;};
|
||||
diag_log "[blckeagls] Functions Loaded";
|
||||
blck_functionsCompiled = true;
|
||||
|
||||
|
||||
|
@ -14,10 +14,15 @@
|
||||
|
||||
diag_log "[blckeagls] loading variables";
|
||||
|
||||
// blck_debugON = false; Moved to blck_configs.sqf because of script loading order issues.
|
||||
// blck_debugLevel = 0; Moved to blck_configs.sqf because of script loading order issues.
|
||||
blck_minFPS = 8;
|
||||
|
||||
// radius within whih missions are triggered. The trigger causes the crate and AI to spawn.
|
||||
#ifdef blck_milServer
|
||||
blck_TriggerDistance = 1500;
|
||||
#else
|
||||
blck_TriggerDistance = 1500;
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////
|
||||
// Do Not Touch Anything Below This Line
|
||||
///////////////////////////////////////////////
|
||||
@ -35,26 +40,9 @@ blck_activeMissions = [];
|
||||
blck_deadAI = [];
|
||||
blck_connectedHCs = [];
|
||||
blck_missionMarkers = [];
|
||||
//blck_groupsOnHC = [];
|
||||
//blck_vehiclesOnHC = [];
|
||||
//blck_HC_monitoredVehicles = [];
|
||||
//blck_HC_monitoredGroups = [];
|
||||
if (blck_simulationManager == 2) then
|
||||
{
|
||||
"Group" setDynamicSimulationDistance 1800;
|
||||
enableDynamicSimulationSystem true;
|
||||
};
|
||||
|
||||
blck_heliCrashSites = [];
|
||||
|
||||
// radius within whih missions are triggered. The trigger causes the crate and AI to spawn.
|
||||
#ifdef blck_milServer
|
||||
blck_TriggerDistance = 1500;
|
||||
#else
|
||||
blck_TriggerDistance = 1500;
|
||||
#endif
|
||||
|
||||
blck_mainThreadUpdateInterval = 60;
|
||||
blck_revealMode = "detailed"; //""basic" /*group or vehicle level reveals*/,detailed /*unit by unit reveals*/";
|
||||
diag_log "[blckeagls] Variables Loaded";
|
||||
blck_variablesLoaded = true;
|
||||
|
||||
|
91
@GMS/addons/custom_server/Configs/armed_vics_notes.txt
Normal file
91
@GMS/addons/custom_server/Configs/armed_vics_notes.txt
Normal file
@ -0,0 +1,91 @@
|
||||
|
||||
_blck_lightlyArmed_ARMA3 = [
|
||||
"B_G_Offroad_01_armed_F",
|
||||
"O_G_Offroad_01_armed_F",
|
||||
"B_MRAP_01_gmg_F",
|
||||
"B_MRAP_01_hmg_F",
|
||||
"O_MRAP_02_gmg_F",
|
||||
"O_MRAP_02_hmg_F",
|
||||
"I_MRAP_03_hmg_F",
|
||||
"I_MRAP_03_gmg_F",
|
||||
"B_APC_Wheeled_01_cannon_F",
|
||||
"I_APC_Wheeled_03_cannon_F"
|
||||
];
|
||||
|
||||
|
||||
_blck_tracked_APC_ARMA3 = [
|
||||
"B_APC_Tracked_01_rcws_F",
|
||||
"B_APC_Tracked_01_CRV_F",
|
||||
"B_APC_Tracked_01_AA_F",
|
||||
"O_APC_Tracked_02_cannon_F",
|
||||
"O_APC_Tracked_02_AA_F",
|
||||
"O_APC_Wheeled_02_rcws_F",
|
||||
"I_APC_tracked_03_cannon_F"
|
||||
];
|
||||
|
||||
_blck_Tanks_ARMA3 = [
|
||||
//"B_MBT_01_arty_F",
|
||||
"B_MBT_01_mlrs_F",
|
||||
"B_MBT_01_TUSK_F",
|
||||
"O_MBT_02_cannon_F",
|
||||
//"O_MBT_02_arty_F",
|
||||
"I_MBT_03_cannon_F"
|
||||
];
|
||||
_blck_APC_CUP = [
|
||||
"CUP_B_Mastiff_GMG_GB_D",
|
||||
"CUP_B_Mastiff_HMG_GB_D",
|
||||
"CUP_B_Ridgback_HMG_GB_D",
|
||||
"CUP_B_Ridgback_GMG_GB_D",
|
||||
"CUP_B_M1128_MGS_Desert",
|
||||
"CUP_B_M1135_ATGMV_Desert_Slat",
|
||||
"CUP_B_M1133_MEV_Desert_Slat",
|
||||
"CUP_B_LAV25M240_desert_USMC",
|
||||
"CUP_B_M1129_MC_MK19_Desert_Slat",
|
||||
"CUP_B_LAV25_HQ_desert_USMC",
|
||||
"CUP_B_BRDM2_ATGM_CDF",
|
||||
"CUP_B_BTR60_CDF",
|
||||
"CUP_B_M1130_CV_M2_Desert_Slat",
|
||||
"CUP_B_M1126_ICV_MK19_Desert_Slat",
|
||||
"CUP_O_BTR90_RU",
|
||||
"CUP_O_GAZ_Vodnik_BPPU_RU",
|
||||
"CUP_B_M1126_ICV_M2_Desert",
|
||||
"CUP_B_M1126_ICV_MK19_Desert",
|
||||
"CUP_B_M1130_CV_M2_Desert",
|
||||
"CUP_B_M1126_ICV_M2_Desert_Slat",
|
||||
"CUP_B_M1133_MEV_Desert",
|
||||
"CUP_O_GAZ_Vodnik_AGS_RU",
|
||||
"CUP_O_GAZ_Vodnik_PK_RU"
|
||||
];
|
||||
|
||||
_blck_Tanks_CUP = [
|
||||
"CUP_B_M2A3Bradley_USA_D",
|
||||
"CUP_B_M113_desert_USA",
|
||||
"CUP_B_M163_USA",
|
||||
"CUP_B_M6LineBacker_USA_D",
|
||||
"CUP_B_M1A1_DES_US_Army",
|
||||
"CUP_B_M1A2_TUSK_MG_DES_US_Army",
|
||||
"CUP_B_AAV_USMC",
|
||||
"CUP_B_M270_DPICM_USA",
|
||||
"CUP_B_ZSU23_CDF",
|
||||
"CUP_B_BMP2_CDF",
|
||||
"CUP_B_T72_CDF",
|
||||
"CUP_I_T34_NAPA",
|
||||
"CUP_B_Challenger2_NATO",
|
||||
"CUP_B_FV432_Bulldog_GB_D_RWS",
|
||||
"CUP_B_FV432_Bulldog_GB_D",
|
||||
"CUP_B_FV510_GB_D_SLAT",
|
||||
"CUP_B_MCV80_GB_D_SLAT",
|
||||
"CUP_O_2S6_RU",
|
||||
"CUP_O_BMP3_RU",
|
||||
"CUP_O_T90_RU",
|
||||
"CUP_O_T55_SLA",
|
||||
"CUP_O_BMP1P_TKA",
|
||||
"CUP_B_M270_DPICM_USA",
|
||||
"CUP_B_M2Bradley_USA_W",
|
||||
"CUP_B_FV510_GB_D",
|
||||
"CUP_B_MCV80_GB_D",
|
||||
"CUP_B_M7Bradley_USA_D",
|
||||
"CUP_O_2S6_RU",
|
||||
"CUP_O_BMP1_TKA"
|
||||
];
|
||||
|
@ -20,11 +20,13 @@
|
||||
blck_debugON = false; // Do not touch ...
|
||||
blck_debugLevel = 0; // Do not touch ...
|
||||
#ifdef blck_milServer
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf";
|
||||
if (true) exitWith {};
|
||||
if (true) exitWith
|
||||
{
|
||||
diag_log format["[blckeagls] Running configs for militarized servers build %1",blck_buildNumber];
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf";
|
||||
};
|
||||
#endif
|
||||
|
||||
//diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf";
|
||||
diag_log format["[blckeagls] Loading configurations for Non-militarized servers build %1",blck_buildNumber];
|
||||
/*
|
||||
**************************************
|
||||
Configurations begin here
|
||||
@ -42,7 +44,7 @@
|
||||
|
||||
blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
|
||||
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
|
||||
blck_simulationManager = blck_useBlckeaglsSimulationManagement;
|
||||
blck_simulationManager = blck_useBlckeaglsSimulationManager;
|
||||
diag_log format["[blckeagls] blck_configs: blck_simulationManager = %1",blck_simulationManager];
|
||||
/*
|
||||
blck_simulationManagementOff - no simulation management occurs
|
||||
@ -51,7 +53,7 @@
|
||||
*/
|
||||
|
||||
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
|
||||
blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = 0.25; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 12; // Nighttim time acceleration
|
||||
@ -71,7 +73,7 @@
|
||||
***********************************************************/
|
||||
////////
|
||||
// Headless Client Configurations
|
||||
blck_useHC = false; // Experimental (do not use if you allow players to claim mission vehicles).
|
||||
blck_useHC = true; // Experimental (death messages and rewards not yet working).
|
||||
|
||||
///////////////////////////////
|
||||
// Kill message configurations
|
||||
@ -211,19 +213,17 @@
|
||||
// Enable / Disable Missions
|
||||
////////////////////
|
||||
|
||||
|
||||
// Maximum number of missions shown on the map at any one time.
|
||||
// Change this value to reduce the number of spawned missions at any one time.
|
||||
blck_maxSpawnedMissions = 4;
|
||||
|
||||
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups.
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
blck_enableRedMissions = 2;
|
||||
blck_enableBlueMissions = 2;
|
||||
blck_enableBlueMissions = 1;
|
||||
blck_numberUnderwaterDynamicMissions = 3; // Values from -1 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||
|
||||
// Maximum number of missions shown on the map at any one time.
|
||||
// Change this value to reduce the number of spawned missions at any one time.
|
||||
//blck_maxSpawnedMissions = 9; // Set this to a value lower than the total number of missions if you want only some of the types of missions running at any one time.
|
||||
blck_maxSpawnedMissions = blck_enableOrangeMissions + blck_enableGreenMissions + blck_enableRedMissions + blck_enableBlueMissions + blck_numberUnderwaterDynamicMissions;
|
||||
|
||||
////////////////////
|
||||
// MISSION TIMERS
|
||||
////////////////////
|
||||
@ -240,7 +240,7 @@
|
||||
blck_TMax_Green = 300;
|
||||
blck_TMax_Blue = 200;
|
||||
blck_TMax_Red = 250;
|
||||
blck_TMax_UMS = 200;
|
||||
blck_TMax_UMS = 400;
|
||||
|
||||
///////////////////////////////
|
||||
// AI VEHICLE PATROL PARAMETERS
|
||||
@ -283,6 +283,8 @@
|
||||
GENERAL AI SETTINGS
|
||||
|
||||
****************************************************************/
|
||||
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
|
||||
blck_useConfigsGeneratedLoadouts = true;
|
||||
|
||||
blck_groupBehavior = "SENTRY"; // Suggested choices are "SAD", "SENTRY", "AWARE" https://community.bistudio.com/wiki/ArmA:_AI_Combat_Modes
|
||||
blck_combatMode = "RED"; // Change this to "YELLOW" if the AI wander too far from missions for your tastes.
|
||||
@ -298,8 +300,7 @@
|
||||
blck_launcherCleanup = true;// When true, launchers and launcher ammo are removed from dead AI.
|
||||
blck_minimumPatrolRadius = 22; // AI will patrol within a circle with radius of approximately min-max meters. note that because of the way waypoints are completed they may more more or less than this distance.
|
||||
blck_maximumPatrolRadius = 35;
|
||||
|
||||
|
||||
|
||||
//This defines how long after an AI dies that it's body disappears.
|
||||
blck_bodyCleanUpTimer = 60*40; // 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
|
||||
@ -360,33 +361,22 @@
|
||||
blck_maxMoneyRed = 15;
|
||||
blck_maxMoneyBlue = 10;
|
||||
|
||||
private["_modType"];
|
||||
_modType = [] call blck_fnc_getModType;
|
||||
if (_modType isEqualTo "Epoch") then
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType];
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType];
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf";
|
||||
waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;};
|
||||
waitUntil{blck_configsEpochLoaded};
|
||||
blck_configsEpochLoaded = nil;
|
||||
//diag_log "[blckeagles] Running getTraderCitiesEpoch to get location of trader cities";
|
||||
execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesEpoch.sqf";
|
||||
};
|
||||
if (_modType isEqualTo "Exile") then
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType];
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType];
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf";
|
||||
waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
|
||||
waitUntil{blck_configsExileLoaded};
|
||||
blck_configsExileLoaded = nil;
|
||||
if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";};
|
||||
};
|
||||
waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"};
|
||||
waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"};
|
||||
if (blck_useConfigsGeneratedLoadouts) then
|
||||
{
|
||||
diag_log format["[blckeagles] Dynamic Configs Enabled"];
|
||||
diag_log format["[blckeagls] Dynamic Configs Enabled"];
|
||||
execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf";
|
||||
//waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
|
||||
//waitUntil{blck_dynamicConfigsLoaded};
|
||||
//blck_dynamicConfigsLoaded = nil;
|
||||
};
|
||||
|
||||
blck_configsLoaded = true;
|
||||
|
@ -11,7 +11,7 @@
|
||||
*/
|
||||
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
diag_log format["[blckeagls] loading configurations for Epoch for blckeagls build %1",blck_buildNumber];
|
||||
////////////
|
||||
// Epoch-specific settings
|
||||
////////////
|
||||
@ -47,8 +47,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
|
||||
blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders.
|
||||
|
||||
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
|
||||
blck_useConfigsGeneratedLoadouts = false;
|
||||
blck_maximumItemPriceInAI_Loadouts = 100;
|
||||
|
||||
_blck_lightlyArmed_ARMA3 = [
|
||||
@ -517,7 +515,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_vests_green = blck_vests;
|
||||
blck_vests_orange = blck_vests;
|
||||
|
||||
//CraftingFood
|
||||
//CraftingFood
|
||||
blck_Meats=[
|
||||
"SnakeCarcass_EPOCH","RabbitCarcass_EPOCH","ChickenCarcass_EPOCH","GoatCarcass_EPOCH","SheepCarcass_EPOCH","DogCarcass_EPOCH","ItemTrout","ItemSeaBass","ItemTuna"
|
||||
];
|
||||
@ -525,7 +523,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
"WhiskeyNoodle","ItemSodaAlpineDude","ItemSodaOrangeSherbet","ItemSodaPurple","ItemSodaMocha","ItemSodaBurst","ItemSodaRbull","FoodWalkNSons"
|
||||
];
|
||||
blck_Food = [
|
||||
"HotAxeSauce_epoch","gyro_wrap_epoch","icecream_epoch","redburger_epoch","bluburger_epoch","krypto_candy_epoch","ItemBakedBeans","ItemRiceBox","ItemPowderMilk","ItemCereals","FoodBioMeat","FoodMeeps","FoodSnooter","sardines_epoch","meatballs_epoch","scam_epoch","sweetcorn_epoch","honey_epoch","CookedSheep_EPOCH","CookedGoat_EPOCH","SnakeMeat_EPOCH",
|
||||
"HotAxeSauce_epoch","gyro_wrap_epoch","icecream_epoch","redburger_epoch","bluburger_epoch","krypto_candy_epoch","ItemBakedBeans","ItemRiceBox","ItemPowderMilk","ItemCereals",
|
||||
"FoodBioMeat","FoodMeeps","FoodSnooter","sardines_epoch","meatballs_epoch","scam_epoch","sweetcorn_epoch","honey_epoch","CookedSheep_EPOCH","CookedGoat_EPOCH","SnakeMeat_EPOCH",
|
||||
"CookedRabbit_EPOCH","CookedChicken_EPOCH","CookedDog_EPOCH","ItemTroutCooked","ItemSeaBassCooked","ItemTunaCooked","TacticalBacon"
|
||||
];
|
||||
blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food;
|
||||
@ -588,13 +587,13 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","130Rnd_338_Mag"],
|
||||
@ -726,14 +725,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","130Rnd_338_Mag"],
|
||||
@ -874,7 +873,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
@ -1000,7 +999,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
@ -1009,7 +1008,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_06_camo_F","10Rnd_338_Mag"]
|
||||
@ -1099,4 +1098,4 @@ blck_supportLoot = blck_BoxLoot_Orange;
|
||||
blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type.
|
||||
|
||||
diag_log "[blckeagls] Configurations for Epoch Loaded";
|
||||
blck_configsEpochLoaded = true;
|
||||
|
||||
|
@ -48,10 +48,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
|
||||
blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders.
|
||||
|
||||
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
|
||||
blck_useConfigsGeneratedLoadouts = false;
|
||||
blck_maximumItemPriceInAI_Loadouts = 100;
|
||||
|
||||
_blck_lightlyArmed_ARMA3 = [
|
||||
"B_G_Offroad_01_armed_F",
|
||||
"O_G_Offroad_01_armed_F",
|
||||
@ -533,7 +529,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_vests_green = blck_vests;
|
||||
blck_vests_orange = blck_vests;
|
||||
|
||||
//CraftingFood
|
||||
//CraftingFood
|
||||
blck_Meats=[
|
||||
"SnakeCarcass_EPOCH","RabbitCarcass_EPOCH","ChickenCarcass_EPOCH","GoatCarcass_EPOCH","SheepCarcass_EPOCH","DogCarcass_EPOCH","ItemTrout","ItemSeaBass","ItemTuna"
|
||||
];
|
||||
@ -603,13 +599,13 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","150Rnd_93x64_Mag"],
|
||||
@ -716,14 +712,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_03_F","10Rnd_338_Mag"],
|
||||
@ -827,7 +823,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
@ -926,7 +922,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["m107_EPOCH","5Rnd_127x108_Mag"],
|
||||
["m107Tan_EPOCH","5Rnd_127x108_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
@ -935,7 +931,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_06_camo_F","10Rnd_338_Mag"]
|
||||
@ -995,4 +991,4 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type.
|
||||
|
||||
diag_log "[blckeagls] Configurations for Epoch Loaded";
|
||||
blck_configsEpochLoaded = true;
|
||||
|
||||
|
@ -15,10 +15,12 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
#ifdef blck_milServer
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf";
|
||||
if (true) exitWith {};
|
||||
if (true) exitWith
|
||||
{
|
||||
diag_log "[blckeagls] running blck_configs_exile_mil for militarized servers";
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf";
|
||||
};
|
||||
#endif
|
||||
|
||||
diag_log "[blckeagls] Loading Exile-specific configs for Non-militarized servers: blck_configs_exile.sqf";
|
||||
////////////
|
||||
// Exile-specific settings
|
||||
@ -54,9 +56,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_crateMoneyRed = [175, 300];
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
|
||||
blck_useConfigsGeneratedLoadouts = false;
|
||||
|
||||
blck_maximumItemPriceInAI_Loadouts = 1000;
|
||||
|
||||
_blck_armed_vehicles_Exile = [
|
||||
@ -662,6 +662,25 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
"Exile_Item_Moobar",
|
||||
"Exile_Item_InstantCoffee"
|
||||
];
|
||||
#ifdef blck_addCarParts
|
||||
blck_carParts = [
|
||||
"Exile_Item_CarWheel",
|
||||
"DDR_Item_Tailrotor",
|
||||
"DDR_Item_Main_Rotor",
|
||||
"DDR_Item_Engine",
|
||||
"DDR_Item_Glass",
|
||||
"DDR_Item_Fuel_Tank",
|
||||
"DDR_Item_Fishing_Net",
|
||||
"DDR_Item_Fiberglass"
|
||||
];
|
||||
#endif
|
||||
#ifdef useCUP
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef useRHS
|
||||
|
||||
#endif
|
||||
blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food;
|
||||
blck_throwableExplosives = ["HandGrenade","MiniGrenade"];
|
||||
blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"];
|
||||
@ -673,7 +692,18 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_buildingMaterials = ["Exile_Item_ExtensionCord","Exile_Item_JunkMetal","Exile_Item_LightBulb","Exile_Item_MetalBoard",
|
||||
"Exile_Item_MetalPole","Exile_Item_MetalScrews","Exile_Item_Cement","Exile_Item_Sand"];
|
||||
blck_tools = ["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Melee_Axe","Exile_Melee_SledgeHammmer","Exile_Item_Handsaw","Exile_Item_Pliers"];
|
||||
|
||||
#ifdef blck_addCarParts
|
||||
blck_carParts = [
|
||||
"Exile_Item_CarWheel",
|
||||
"DDR_Item_Tailrotor",
|
||||
"DDR_Item_Main_Rotor",
|
||||
"DDR_Item_Engine",
|
||||
"DDR_Item_Glass",
|
||||
"DDR_Item_Fuel_Tank",
|
||||
"DDR_Item_Fishing_Net",
|
||||
"DDR_Item_Fiberglass"
|
||||
];
|
||||
#endif
|
||||
/***************************************************************************************
|
||||
DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION
|
||||
Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays
|
||||
@ -700,14 +730,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
#endif
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","130Rnd_338_Mag"],
|
||||
@ -799,14 +829,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag"],
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","130Rnd_338_Mag"],
|
||||
@ -894,7 +924,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["Hgun_PDW2000_F","30Rnd_9x21_Mag"],
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
@ -974,14 +1004,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["Hgun_PDW2000_F","30Rnd_9x21_Mag"],
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_06_camo_F","10Rnd_338_Mag"]
|
||||
@ -1152,5 +1182,3 @@ blck_highPoweredLoot = [
|
||||
blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type.
|
||||
|
||||
diag_log format["[blckeagls] Configurations for Exile Loaded"];
|
||||
|
||||
blck_configsExileLoaded = true;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -47,8 +47,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
|
||||
blck_useConfigsGeneratedLoadouts = false;
|
||||
blck_maximumItemPriceInAI_Loadouts = 1000;
|
||||
|
||||
_blck_armed_vehicles_Exile = [
|
||||
@ -90,7 +88,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
//"O_MBT_02_arty_F",
|
||||
"I_MBT_03_cannon_F"
|
||||
];
|
||||
|
||||
#ifdef useCUP
|
||||
_blck_APC_CUP = [
|
||||
"CUP_B_Mastiff_GMG_GB_D",
|
||||
"CUP_B_Mastiff_HMG_GB_D",
|
||||
@ -148,7 +146,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
//"CUP_O_2S6_RU",
|
||||
//"CUP_O_BMP1_TKA""
|
||||
];
|
||||
|
||||
#endif
|
||||
blck_AIPatrolVehicles =
|
||||
[
|
||||
//"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
@ -160,9 +158,9 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
//"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F",
|
||||
//"_MRAP_02_gmg_ghex_F",
|
||||
"_MRAP_02_gmg_ghex_F",
|
||||
//"O_MRAP_02_hmg_ghex_F",
|
||||
//"O_MRAP_03_gmg_ghex_F",
|
||||
"O_MRAP_03_gmg_ghex_F",
|
||||
//"O_MRAP_03_hmg_ghex_F",
|
||||
"B_MBT_01_cannon_F",
|
||||
"B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others
|
||||
@ -189,9 +187,11 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
"B_LSV_01_armed_F"
|
||||
];
|
||||
|
||||
#ifdef useCUP
|
||||
blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + _blck_APC_CUP;
|
||||
blck_AIPatrolVehiclesGreen = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
blck_AIPatrolVehiclesOrange = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
#endif
|
||||
|
||||
if (toLower(worldName) isEqualTo "namalsk") then
|
||||
{
|
||||
@ -674,7 +674,18 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
"Exile_Item_Moobar",
|
||||
"Exile_Item_InstantCoffee"
|
||||
];
|
||||
|
||||
#ifdef blck_addCarParts
|
||||
blck_carParts = [
|
||||
"Exile_Item_CarWheel",
|
||||
"DDR_Item_Tailrotor",
|
||||
"DDR_Item_Main_Rotor",
|
||||
"DDR_Item_Engine",
|
||||
"DDR_Item_Glass",
|
||||
"DDR_Item_Fuel_Tank",
|
||||
"DDR_Item_Fishing_Net",
|
||||
"DDR_Item_Fiberglass"
|
||||
];
|
||||
#endif
|
||||
#ifdef useCUP
|
||||
|
||||
#endif
|
||||
@ -720,14 +731,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
#endif
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","150Rnd_93x64_Mag"],
|
||||
@ -775,7 +786,10 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3],
|
||||
["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3]
|
||||
],
|
||||
[// Materials and supplies
|
||||
[// Materials and supplies
|
||||
#ifdef blck_addCarParts
|
||||
["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6],
|
||||
#endif
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_WorkBenchKit",1,10],
|
||||
["Exile_Item_WoodWindowKit",1,10],["Exile_Item_WoodWallKit",1,10],["Exile_Item_WoodStairsKit",1,10],["Exile_Item_WoodGateKit",1,10],["Exile_Item_WoodDoorwayKit",1,10],["Exile_Item_MetalBoard",1,10],
|
||||
@ -818,14 +832,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag"],
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_03_F","10Rnd_338_Mag"],
|
||||
@ -866,7 +880,10 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3],
|
||||
["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3]
|
||||
],
|
||||
[// Materials and supplies
|
||||
[// Materials and supplies
|
||||
#ifdef blck_addCarParts
|
||||
["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6],
|
||||
#endif
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5],
|
||||
["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5]
|
||||
@ -910,7 +927,7 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["Hgun_PDW2000_F","30Rnd_9x21_Mag"],
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
@ -947,6 +964,9 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3]
|
||||
],
|
||||
[// Materials and supplies
|
||||
#ifdef blck_addCarParts
|
||||
["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6],
|
||||
#endif
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,3],["Exile_Item_ExtensionCord",1,2],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,6],["Exile_Item_LightBulb",1,6],["Exile_Item_MetalBoard",1,6],["Exile_Item_MetalPole",1,6],["Exile_Item_CamoTentKit",1,6],["Exile_Item_MetalWire",1,4]
|
||||
],
|
||||
@ -990,14 +1010,14 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["Hgun_PDW2000_F","30Rnd_9x21_Mag"],
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_Mag"],
|
||||
["srifle_DMR_01_F","10Rnd_762x54_Mag"],
|
||||
["srifle_LRR_F","7Rnd_408_Mag"],
|
||||
["srifle_EBR_F","20Rnd_762x51_Mag"],
|
||||
["srifle_GM6_F","5Rnd_127x108_APDS_Mag"],
|
||||
["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"],
|
||||
["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
|
||||
["LMG_Zafir_F","150Rnd_762x54_Box"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_06_camo_F","10Rnd_338_Mag"]
|
||||
@ -1021,7 +1041,10 @@ for examples of how you can do this see \Major\Compositions.sqf
|
||||
["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3],
|
||||
["optic_AMS_khk",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3]
|
||||
],
|
||||
[// Materials and supplies
|
||||
[// Materials and supplies
|
||||
#ifdef blck_addCarParts
|
||||
["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6],
|
||||
#endif
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5],
|
||||
["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5]
|
||||
@ -1166,4 +1189,3 @@ blck_highPoweredLoot = [
|
||||
|
||||
diag_log format["[blckeagls] Configurations for Exile Loaded"];
|
||||
|
||||
blck_configsExileLoaded = true;
|
||||
|
@ -11,8 +11,7 @@
|
||||
*/
|
||||
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
diag_log "[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers";
|
||||
diag_log format["[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers for blckeagls build %1",blck_buildNumber];
|
||||
|
||||
/***************************************************************
|
||||
BLCKEAGLS SUPPLEMENTAL MODULES
|
||||
@ -49,7 +48,7 @@
|
||||
***********************************************************/
|
||||
////////
|
||||
// Headless Client Configurations
|
||||
blck_useHC = false; // Experimental (do not use if you allow players to claim mission vehicles).
|
||||
blck_useHC = true; //
|
||||
|
||||
///////////////////////////////
|
||||
// Kill message configurations
|
||||
@ -65,7 +64,7 @@
|
||||
// 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_preciseMapMarkers = false; // Map markers are/are not centered at the loot crate
|
||||
blck_showCountAliveAI = false;
|
||||
blck_showCountAliveAI = true;
|
||||
|
||||
//Minimum distance between missions
|
||||
blck_MinDistanceFromMission = 1500;
|
||||
@ -83,9 +82,9 @@
|
||||
blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether.
|
||||
blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion.
|
||||
blck_missionEndCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
|
||||
blck_killPercentage = 0.9; // The mission will complete if this fraction of the total AI spawned has been killed.
|
||||
blck_killPercentage = 0.99999999999; // The mission will complete if this fraction of the total AI spawned has been killed.
|
||||
// This facilitates mission completion when one or two AI are spawned into objects.
|
||||
blck_spawnCratesTiming = "atMissionEndAir"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir".
|
||||
blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir".
|
||||
// Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute.
|
||||
// This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission.
|
||||
blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn";
|
||||
@ -202,6 +201,10 @@
|
||||
// Enable / Disable Missions
|
||||
////////////////////
|
||||
|
||||
// Maximum number of missions shown on the map at any one time.
|
||||
// Change this value to reduce the number of spawned missions at any one time.
|
||||
blck_maxSpawnedMissions = 4;
|
||||
|
||||
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups.
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
@ -209,11 +212,6 @@
|
||||
blck_enableBlueMissions = 2;
|
||||
blck_numberUnderwaterDynamicMissions = 2; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||
|
||||
// Maximum number of missions shown on the map at any one time.
|
||||
// Change this value to reduce the number of spawned missions at any one time.
|
||||
//blck_maxSpawnedMissions = 9; // Set this to a value lower than the total number of missions if you want only some of the types of missions running at any one time.
|
||||
blck_maxSpawnedMissions = blck_enableOrangeMissions + blck_enableGreenMissions + blck_enableRedMissions + blck_enableBlueMissions + blck_numberUnderwaterDynamicMissions;
|
||||
|
||||
////////////////////
|
||||
// MISSION TIMERS
|
||||
////////////////////
|
||||
@ -270,7 +268,8 @@
|
||||
GENERAL AI SETTINGS
|
||||
|
||||
****************************************************************/
|
||||
|
||||
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
|
||||
blck_useConfigsGeneratedLoadouts = true;
|
||||
blck_groupBehavior = "SAD"; // Suggested choices are "SAD", "SENTRY", "AWARE" https://community.bistudio.com/wiki/ArmA:_AI_Combat_Modes
|
||||
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"
|
||||
@ -287,7 +286,7 @@
|
||||
blck_maximumPatrolRadius = 35;
|
||||
|
||||
//This defines how long after an AI dies that it's body disappears.
|
||||
blck_bodyCleanUpTimer = 40*60; // time in seconds after which dead AI bodies are deleted
|
||||
blck_bodyCleanUpTimer = 80*60; // 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
|
||||
// values are ordered as follows [blue, red, green, orange];
|
||||
@ -347,33 +346,22 @@
|
||||
blck_maxMoneyRed = 30;
|
||||
blck_maxMoneyBlue = 20;
|
||||
|
||||
private["_modType"];
|
||||
_modType = [] call blck_fnc_getModType;
|
||||
if (_modType isEqualTo "Epoch") then
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",_modType];
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType];
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_epoch_mil.sqf";
|
||||
waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;};
|
||||
waitUntil{blck_configsEpochLoaded};
|
||||
blck_configsEpochLoaded = nil;
|
||||
//diag_log "[blckeagls] Running getTraderCitiesEpoch to get location of trader cities";
|
||||
//execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesEpoch.sqf";
|
||||
};
|
||||
if (_modType isEqualTo "Exile") then
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",_modType];
|
||||
diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType];
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf";
|
||||
waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
|
||||
waitUntil{blck_configsExileLoaded};
|
||||
blck_configsExileLoaded = nil;
|
||||
//if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";};
|
||||
};
|
||||
waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"};
|
||||
waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"};
|
||||
if (blck_useConfigsGeneratedLoadouts) then
|
||||
{
|
||||
diag_log format["[blckeagles] Dynamic Configs Enabled"];
|
||||
diag_log format["[blckeagls] Dynamic Configs Enabled"];
|
||||
execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf";
|
||||
waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
|
||||
waitUntil{blck_dynamicConfigsLoaded};
|
||||
blck_dynamicConfigsLoaded = nil;
|
||||
};
|
||||
blck_configsLoaded = true;
|
||||
|
||||
blck_configsLoaded = true;
|
@ -3,6 +3,7 @@
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last Modified 3-14-17
|
||||
|
||||
--------------------------
|
||||
License
|
||||
@ -16,21 +17,6 @@
|
||||
|
||||
diag_log "[blckeagls] Loading Configuration Overides";
|
||||
|
||||
/*
|
||||
See the examples below as a guide for adding configs that are unique for each of several servers.
|
||||
*/
|
||||
/*
|
||||
private["_startTime"];
|
||||
_startTime = diag_tickTime;
|
||||
_world = toLower format ["%1", worldName];
|
||||
private["_nightAccel","_dayAccel","_duskAccel"];
|
||||
switch (_world) do {
|
||||
case "altis":{_nightAccel = 3;_dayAccel=0.5; _duskAccel = 3;};
|
||||
case "napf":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
|
||||
case "namalsk":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
|
||||
case "tanoa":{_nightAccel = 12; _dayAccel = 3.2;_duskAccel = 6;};
|
||||
};
|
||||
|
||||
switch (toLower (worldName)) do
|
||||
{
|
||||
case "altis":
|
||||
@ -82,9 +68,9 @@ switch (toLower (worldName)) do
|
||||
blck_maxCrashSites = 1; // recommended settings: 3 for Altis, 2 for Tanoa, 1 for smaller maps. Set to -1 to disable
|
||||
|
||||
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 = ((_serverUpTime + 2)/_daylight); // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = (3/_nightTime); // Nighttim time acceleration
|
||||
blck_timeAccelerationDay = 1.5; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 6; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = (12); // Nighttim time acceleration
|
||||
};
|
||||
case "esseker":
|
||||
{
|
||||
@ -116,28 +102,133 @@ switch (toLower (worldName)) do
|
||||
_sunset = _arr select 1;
|
||||
_time = dayTime;
|
||||
_daylight = _sunset - _sunrise;
|
||||
|
||||
systemChat format["%1",_daylight];
|
||||
systemChat format["TimeAcelDay = %1", _daylight / 2.5];
|
||||
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 = (_daylight / 2.5); // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 8; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = ((24 - _daylight) / 1.5); // Nighttim time acceleration
|
||||
blck_enableOrangeMissions = -1;
|
||||
blck_enableGreenMissions = -1;
|
||||
blck_enableRedMissions = -2;
|
||||
blck_enableBlueMissions = -1;
|
||||
blck_numberUnderwaterDynamicMissions = -3;
|
||||
blck_enableHunterMissions = -1;
|
||||
blck_enableScoutsMissions = -1;
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
blck_enableRedMissions = 1;
|
||||
blck_enableBlueMissions = 1;
|
||||
blck_numberUnderwaterDynamicMissions = 3;
|
||||
blck_enableHunterMissions = 1;
|
||||
blck_enableScoutsMissions = 1;
|
||||
blck_maxCrashSites = 3;
|
||||
};
|
||||
};
|
||||
case "lythium":
|
||||
{
|
||||
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 = 5.5; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 7; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
blck_enableRedMissions = 1;
|
||||
blck_enableBlueMissions = 1;
|
||||
blck_enableHunterMissions = 1;
|
||||
blck_enableScoutsMissions = 1;
|
||||
blck_maxCrashSites = 3;
|
||||
blck_numberUnderwaterDynamicMissions = -3;
|
||||
};
|
||||
};
|
||||
*/
|
||||
|
||||
if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in \custom_server\compiles\blck_variables.sqf
|
||||
{
|
||||
// Used primarily for debugging.
|
||||
diag_log "[blckeagls] Debug seting is ON, Custom configurations used";
|
||||
|
||||
/*
|
||||
You can define configs for additional mods or loadouts here
|
||||
*/
|
||||
/*
|
||||
//blck_useTimeAcceleration = false; // 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_timeAccelerationDusk = 18; // Dawn/dusk time accelearation
|
||||
//blck_timeAccelerationNight = 24; // Nighttim time acceleration
|
||||
|
||||
blck_useHC = true;
|
||||
|
||||
blck_maxSpawnedMissions = 15;
|
||||
blck_mainThreadUpdateInterval = 10;
|
||||
blck_enableOrangeMissions = -1;
|
||||
blck_enableGreenMissions = -1;
|
||||
blck_enableRedMissions = 1;
|
||||
blck_enableBlueMissions = -1;
|
||||
blck_numberUnderwaterDynamicMissions = -3;
|
||||
blck_enableHunterMissions = -1;
|
||||
blck_enableScoutsMissions = -1;
|
||||
blck_maxCrashSites = -3;
|
||||
|
||||
//blck_killEmptyStaticWeapons = false;
|
||||
//blck_killEmptyAIVehicles = true;
|
||||
blck_cleanupCompositionTimer = 20; // Time after mission completion at which items in the composition are deleted.
|
||||
blck_AliveAICleanUpTimer = 20; // Time after mission completion at which any remaining live AI are deleted.
|
||||
blck_bodyCleanUpTimer = 20;
|
||||
blck_vehicleDeleteTimer = 20;
|
||||
//blck_MissionTimeout = 30;
|
||||
|
||||
//blck_noPatrolHelisOrange = 1;
|
||||
//blck_chanceHeliPatrolOrange = 1;
|
||||
//blck_chanceParaOrange = 1;
|
||||
//blck_chanceHeliPatrolBlue = -1;
|
||||
//blck_noPatrolHelisBlue = -1;
|
||||
//blck_chanceParaBlue = -1; // [0 - 1] set to 0 to deactivate and 1 to always have paratroops spawn over the center of the mission. This value can be a range as well [0.1,0.3]
|
||||
//blck_noParaBlue = -3; // [1-N]
|
||||
//blck_paraTriggerDistanceBlue = 400;
|
||||
|
||||
//blck_chanceHeliPatrolBlue = 1;
|
||||
//blck_SpawnEmplaced_Orange = 1; // Number of static weapons at Orange Missions
|
||||
//blck_SpawnEmplaced_Green = 1; // Number of static weapons at Green Missions
|
||||
//blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
|
||||
//blck_SpawnEmplaced_Red = 1;
|
||||
|
||||
//blck_SpawnVeh_Orange = 1; // Number of vehicles at Orange Missions
|
||||
//blck_SpawnVeh_Green = 1; // Number of vehicles at Green Missions
|
||||
//blck_SpawnVeh_Blue = 1; // Number of vehicles at Blue Missions
|
||||
blck_SpawnVeh_Red = 1;
|
||||
|
||||
blck_TMin_Blue = 7;
|
||||
blck_TMin_Red = 10;
|
||||
blck_TMin_Green = 13;
|
||||
blck_TMin_Orange = 16;
|
||||
blck_TMin_Hunter = 20;
|
||||
blck_TMin_Scouts = 20;
|
||||
blck_TMin_Crashes = 5;
|
||||
blck_TMin_UMS = 20;
|
||||
//Maximum Spawn time between missions in seconds
|
||||
blck_TMax_Blue = 12;
|
||||
blck_TMax_Red = 15;
|
||||
blck_TMax_Green = 17;
|
||||
blck_TMax_Orange = 21;
|
||||
blck_TMax_Hunter = 22;
|
||||
blck_TMax_Scouts = 22;
|
||||
blck_TMax_Crashes = 15;
|
||||
blck_TMax_UMS = 25;
|
||||
|
||||
blck_MinAI_Orange = 1;
|
||||
blck_MaxAI_Orange = 2;
|
||||
blck_AIGrps_Orange = 0;
|
||||
|
||||
//blck_MinAI_Blue = 1;
|
||||
//blck_MaxAI_Blue = 2;
|
||||
//blck_AIGrps_Blue = 1;
|
||||
|
||||
//blck_AIPatrolVehicles = ["Exile_Car_MB4WDOpen"];
|
||||
/*
|
||||
blck_SkillsBlue = [
|
||||
["aimingAccuracy",0.01],
|
||||
["aimingShake",0.01],
|
||||
["aimingSpeed",0.01],
|
||||
["endurance",0.01],
|
||||
["spotDistance",0.01],
|
||||
["spotTime",0.01],
|
||||
["courage",0.01],
|
||||
["reloadSpeed",0.80],
|
||||
["commanding",0.8],
|
||||
["general",1.00]
|
||||
];
|
||||
*/
|
||||
};
|
||||
|
||||
#ifdef blck_useCUP
|
||||
blck_CUPWeapons = [
|
||||
"CUP_lmg_L7A2",
|
||||
"CUP_lmg_L110A1",
|
||||
@ -626,6 +717,9 @@ blck_CUPHeadgear = [
|
||||
"CUP_H_USMC_Helmet_Pilot",
|
||||
"CUP_H_USMC_Officer_Cap"
|
||||
];
|
||||
#endif
|
||||
|
||||
#ifdef blck_useRHS
|
||||
blck_RHS_Weapons = [
|
||||
"rhs_weap_hk416d10",
|
||||
"rhs_weap_hk416d10_LMT",
|
||||
@ -1083,6 +1177,8 @@ blck_RHS_WeaponsSAF = [
|
||||
"rhs_weap_g36kv_ag36",
|
||||
"rhs_weap_m84"
|
||||
];
|
||||
#endif
|
||||
|
||||
|
||||
blck_NIA_WeaponsLMG = [
|
||||
"hlc_lmg_M249E2",
|
||||
@ -1266,4 +1362,3 @@ blck_NIA_WeaponsSniper = [
|
||||
"hlc_rifle_psg1",
|
||||
"hlc_rifle_psg1A1"
|
||||
];
|
||||
*/
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -16,7 +16,7 @@
|
||||
//#define blck_milServer
|
||||
//#define blck_useCUP
|
||||
//#define blck_useRHS
|
||||
|
||||
//#define blck_addCarParts (For Exile should you wish to use some of the advanced repair scripts).
|
||||
////////////////////////////
|
||||
// Do not touch anything below this line
|
||||
///////////////////////////
|
||||
@ -24,7 +24,6 @@
|
||||
//#define blck_debugMode
|
||||
|
||||
#define blck_triggerLoopCompleteTime 40*60
|
||||
|
||||
#define onFoot 1
|
||||
#define inVehicle 2
|
||||
|
||||
@ -57,3 +56,6 @@
|
||||
#define blck_turnBackRadiusVehicles 1000
|
||||
#define blck_turnBackRadiusHelis 1000
|
||||
#define blck_turnBackRadiusJets 1500
|
||||
|
||||
#define blck_buildNumber 167
|
||||
#define blck_versionNumber 6.88
|
||||
|
@ -94,12 +94,12 @@ _misc = [];
|
||||
_baseClasses = [];
|
||||
|
||||
_classnameList = [];
|
||||
diag_log format["blck_modType = %1",blck_modType];
|
||||
if (blck_modType isEqualTo "Epoch") then
|
||||
//diag_log format["blck_modType = %1",blck_modType];
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
_classnameList = (missionConfigFile >> "CfgPricing" ) call BIS_fnc_getCfgSubClasses;
|
||||
};
|
||||
if (blck_modType isEqualTo "Exile") then
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
_classnameList = (missionConfigFile >> "CfgExileArsenal" ) call BIS_fnc_getCfgSubClasses;
|
||||
};
|
||||
@ -110,18 +110,16 @@ if (blck_modType isEqualTo "Exile") then
|
||||
_itemCategory = _temp select 0;
|
||||
_itemType = _temp select 1;
|
||||
_price = blck_maximumItemPriceInAI_Loadouts;
|
||||
if (blck_modType isEqualTo "Epoch") then
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
_price = getNumber(missionConfigFile >> "CfgPricing" >> _x >> "price");
|
||||
};
|
||||
if (blck_modType isEqualTo "Exile") then
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
_price = getNumber(missionConfigFile >> "CfgExileArsenal" >> _x >> "price");
|
||||
};
|
||||
//diag_log format["_fnc_dynamicConfigsConfigurator: _price = %1",_price];
|
||||
if (_price < blck_maximumItemPriceInAI_Loadouts) then
|
||||
{
|
||||
//if (_itemCategory != "") then {diag_log format["_fnc_dynamicConfigsConfigurator: _itemCategory = %1 | _itemType = %2",_itemCategory,_itemType]};
|
||||
if (_itemCategory isEqualTo "Weapon") then
|
||||
{
|
||||
switch (_itemType) do
|
||||
@ -136,14 +134,11 @@ if (blck_modType isEqualTo "Exile") then
|
||||
case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}};
|
||||
case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}};
|
||||
case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
};
|
||||
};
|
||||
|
||||
if (_itemCategory isEqualTo "Item") then
|
||||
{
|
||||
//diag_log format["Evaluating Item class name %1",_x];
|
||||
switch (_itemType) do
|
||||
{
|
||||
case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}};
|
||||
@ -153,22 +148,13 @@ if (blck_modType isEqualTo "Exile") then
|
||||
case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}};
|
||||
case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}};
|
||||
case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}};
|
||||
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
//case "": {if !(_x in ) then { pushBack _x}};
|
||||
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
if (_itemCategory isEqualTo "Equipment") then
|
||||
{
|
||||
//diag_log format["Evaluating Equipment class name %1",_x];
|
||||
switch (_itemType) do
|
||||
{
|
||||
case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}};
|
||||
@ -219,4 +205,4 @@ blck_backpacks_orange = blck_backpacks;
|
||||
|
||||
blck_explosives = _wpnThrow;
|
||||
|
||||
blck_configsLoaded = true;
|
||||
diag_log format["Compilation of dynamic AI Loadouts complete at %1",diag_tickTime];
|
@ -30,34 +30,36 @@ blck_fnc_sm_AddVehicle = compileFinal preprocessFileLineNumbers "\q\addons\cust
|
||||
blck_fnc_sm_AddAircraft = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddAircraft.sqf";
|
||||
blck_fnc_sm_AddEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddEmplaced.sqf";
|
||||
*/
|
||||
|
||||
blck_fnc_sm_monitorStaticUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf";
|
||||
blck_fnc_sm_monitorInfantry = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorInfantry.sqf";
|
||||
blck_fnc_sm_monitorScuba = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorScuba.sqf";
|
||||
blck_fnc_sm_monitorVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorVehicles.sqf";
|
||||
blck_fnc_sm_monitorAircraft = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorAircraft.sqf";
|
||||
blck_fnc_sm_monitorShips = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorShips.sqf";
|
||||
blck_fnc_sm_monitorSubs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorSubs.sqf";
|
||||
blck_fnc_sm_monitorEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorEmplaced.sqf";
|
||||
blck_fnc_sm_monitorGarrisonsASL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisonsASL.sqf";
|
||||
blck_fnc_sm_monitorGarrisons_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisons_relPos.sqf";
|
||||
|
||||
blck_fnc_sm_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrol.sqf";
|
||||
blck_fnc_sm_spawnAirPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrol.sqf";
|
||||
blck_fnc_sm_spawnEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf";
|
||||
//blck_fnc_sm_spawnInfantryPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrol.sqf";
|
||||
blck_fnc_sm_missionPatrolMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf";
|
||||
//blck_fnc_sm_checkForPlayerNearMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_checkForPlayerNearMission.sqf";
|
||||
blck_fnc_sm_spawnAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrols.sqf";
|
||||
blck_fnc_sm_spawnEmplaceds = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf";
|
||||
blck_fnc_sm_spawnInfantryPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnInfantryPatrols.sqf";
|
||||
blck_fnc_sm_spawnLootContainers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnLootContainers.sqf";
|
||||
blck_fnc_sm_spawnObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjects.sqf";
|
||||
blck_fnc_sm_spawnVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrols.sqf";
|
||||
blck_fnc_sm_spawnBuildingGarrison_ASL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf";
|
||||
blck_fnc_sm_spawnBuildingGarrison_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf";
|
||||
blck_fnc_sm_spawnObjectASLVectorDirUp = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf";
|
||||
private _functions = [
|
||||
["blck_fnc_sm_monitorStaticUnits","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"],
|
||||
["blck_fnc_sm_monitorInfantry","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorInfantry.sqf"],
|
||||
["blck_fnc_sm_monitorScuba","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorScuba.sqf"],
|
||||
["blck_fnc_sm_monitorVehicles","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorVehicles.sqf"],
|
||||
["blck_fnc_sm_monitorAircraft","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorAircraft.sqf"],
|
||||
["blck_fnc_sm_monitorShips","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorShips.sqf"],
|
||||
["blck_fnc_sm_monitorSubs","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorSubs.sqf"],
|
||||
["blck_fnc_sm_monitorEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorEmplaced.sqf"],
|
||||
["blck_fnc_sm_monitorGarrisonsASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisonsASL.sqf"],
|
||||
["blck_fnc_sm_monitorGarrisons_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisons_relPos.sqf"],
|
||||
["blck_fnc_sm_spawnVehiclePatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrol.sqf"],
|
||||
["blck_fnc_sm_spawnAirPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrol.sqf"],
|
||||
["blck_fnc_sm_spawnEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"],
|
||||
// ["blck_fnc_sm_spawnInfantryPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrol.sqf"],
|
||||
["blck_fnc_sm_missionPatrolMonitor","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"],
|
||||
// ["blck_fnc_sm_checkForPlayerNearMission","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_checkForPlayerNearMission.sqf"],
|
||||
["blck_fnc_sm_spawnAirPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrols.sqf"],
|
||||
["blck_fnc_sm_spawnEmplaceds","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"],
|
||||
["blck_fnc_sm_spawnInfantryPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnInfantryPatrols.sqf"],
|
||||
["blck_fnc_sm_spawnLootContainers","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnLootContainers.sqf"],
|
||||
["blck_fnc_sm_spawnObjects","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjects.sqf"],
|
||||
["blck_fnc_sm_spawnVehiclePatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrols.sqf"],
|
||||
["blck_fnc_sm_spawnBuildingGarrison_ASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf"],
|
||||
["blck_fnc_sm_spawnBuildingGarrison_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf"],
|
||||
["blck_fnc_sm_spawnObjectASLVectorDirUp","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf"]
|
||||
];
|
||||
{
|
||||
_x params ["_name","_path"];
|
||||
missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path];
|
||||
} foreach _functions;
|
||||
|
||||
diag_log "[blckeagls] GMS_sm_init_functions.sqf <Variables Defined and Functions Loaded>";
|
||||
|
||||
blck_sm_functionsLoaded = true;
|
||||
|
@ -17,26 +17,17 @@
|
||||
#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_init_functions.sqf";
|
||||
#include "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_Lists.sqf";
|
||||
|
||||
private["_mod","_map","_missionMod","_missionMap","_missionLocation","_missionDataFile"];
|
||||
blck_sm_monitoring = 0;
|
||||
blck_sm_groupDespawnTime = 30;
|
||||
blck_sm_patrolRespawnInterval = 30;
|
||||
uiSleep 10;
|
||||
_map = toLower worldName;
|
||||
{
|
||||
if ((_map) isEqualTo toLower(_x select 1)) then
|
||||
if ((toLower worldName) isEqualTo toLower(_x select 1)) then
|
||||
{
|
||||
if ((blck_ModType isEqualTo "Epoch") && (toLower(_x select 0) isEqualTo "epoch")) then
|
||||
{
|
||||
call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\Static\missions\%1",(_x select 2)];
|
||||
};
|
||||
|
||||
if ((blck_ModType isEqualTo "Exile") && (toLower(_x select 0) isEqualTo "exile")) then
|
||||
if ((toLower blck_modType) isEqualTo (toLower(_x select 0))) then
|
||||
{
|
||||
call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\Static\missions\%1",(_x select 2)];
|
||||
};
|
||||
};
|
||||
uiSleep 1;
|
||||
}forEach _staticMissions;
|
||||
diag_log "[blckeagls] GMS_StaticMissions Initialized.sqf <Loaded>";
|
||||
|
||||
|
@ -1,66 +0,0 @@
|
||||
/*
|
||||
This is a simple mission using randomly placed AI infantry, static weapons and vehicle patrols.
|
||||
Please see staticMissionExample2.sqf for a more complete overview of how to configure static missions.
|
||||
*/
|
||||
private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape",
|
||||
"_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons",
|
||||
"_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"];
|
||||
|
||||
_mission = "static mission example 1";
|
||||
_missionCenter = [24415,18909,0]; // I pulled this from the position of the marker.
|
||||
_difficulty = "red"; // Skill level of AI (blue, red, green etc)
|
||||
_crateLoot = blck_BoxLoot_Red;
|
||||
_lootCounts = blck_lootCountsRed;
|
||||
|
||||
_markerLabel = "";
|
||||
_markerType = ["ELIPSE",[200,200],"GRID"];
|
||||
// An alternative would be:
|
||||
// _markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers
|
||||
_markerColor = "ColorRed"; // This can be any valid Arma Marker Color
|
||||
_markerMissionName = "Bad Guys Town";
|
||||
_missionLandscapeMode = "precise"; // acceptable values are "random","precise"
|
||||
// In precise mode objects will be spawned at the relative positions specified.
|
||||
// In the random mode, objects will be randomly spawned within the mission area.
|
||||
_missionLandscape = [
|
||||
|
||||
]; // list of objects to spawn as landscape
|
||||
_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position.
|
||||
// If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions.
|
||||
//
|
||||
// [["box_classname1",_customLootArray1,[px,py,pz],["box_classname2",_customLootArray2,[px2,py2,pz2]]
|
||||
// where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and
|
||||
// where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed
|
||||
|
||||
_missionLootVehicles = []; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)];
|
||||
// When blank nothing is spawned.
|
||||
// You can use the same format used for _missionLootBoxes to add vehicles with/without loot.
|
||||
|
||||
_noEmplacedWeapons = [2,3];
|
||||
_missionEmplacedWeapons = []; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ];
|
||||
// can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used
|
||||
// If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned.
|
||||
// If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons.
|
||||
|
||||
_minNoAI = blck_MinAI_Red; // Modify as needed
|
||||
_maxNoAI = blck_MaxAI_Red; // Modify as needed.
|
||||
_noAIGroups = blck_AIGrps_Red; // Modify as needed
|
||||
_aiGroupParameters = [];
|
||||
|
||||
_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]
|
||||
_vehiclePatrolParameters = []; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/] ]
|
||||
// When empty vehicle patrols will be scattered randomely around the mission.
|
||||
// Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc).
|
||||
// If _noVehiclePatrols is less than the number of locations specified only _noVehiclePatrols patrols will be spawned.
|
||||
_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]
|
||||
|
||||
_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array.
|
||||
_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4];
|
||||
_airPatrols = [];
|
||||
|
||||
// Change _useMines to true/false below to enable mission-specific settings.
|
||||
_useMines = blck_useMines;
|
||||
_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like.
|
||||
_headgear = blck_headgear; // You can replace this list with a custom list of headgear.
|
||||
_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate.
|
||||
|
||||
#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnMission.sqf";
|
@ -1,135 +0,0 @@
|
||||
/*
|
||||
This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols.
|
||||
See the accompanying example mission in the exampleMission folder to get an idea how I laid this out.
|
||||
Note that I exported the mission using the exportAll function of M3EDEN editor.
|
||||
*/
|
||||
private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape",
|
||||
"_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons",
|
||||
"_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"];
|
||||
|
||||
_mission = "static mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se.
|
||||
_missionCenter = [22907,16789,0]; // I pulled this from the position of the marker.
|
||||
_difficulty = "red"; // Skill level of AI (blue, red, green etc)
|
||||
diag_log format["[blckeagls static missions] STARTED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty];
|
||||
_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray
|
||||
/*
|
||||
_customLootArray =
|
||||
// Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on.
|
||||
// Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added.
|
||||
|
||||
[
|
||||
[// Weapons
|
||||
|
||||
["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"]
|
||||
],
|
||||
[//Magazines
|
||||
["10Rnd_93x64_DMR_05_Mag" ,1,5]
|
||||
],
|
||||
[ // Optics
|
||||
["optic_KHS_tan",1,3]
|
||||
],
|
||||
[// Materials and supplies
|
||||
["Exile_Item_MetalScrews",3,10]
|
||||
//
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
*/
|
||||
|
||||
_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format:
|
||||
// values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively.
|
||||
// blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange
|
||||
|
||||
_markerLabel = "";
|
||||
//_markerType = ["ELIPSE",[200,200],"GRID"];
|
||||
// An alternative would be:
|
||||
_markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers
|
||||
_markerColor = "ColorRed"; // This can be any valid Arma Marker Color
|
||||
_markerMissionName = "Bad People Live Here";
|
||||
_missionLandscapeMode = "precise"; // acceptable values are "random","precise"
|
||||
// In precise mode objects will be spawned at the relative positions specified.
|
||||
// In the random mode, objects will be randomly spawned within the mission area.
|
||||
_missionLandscape = [ // Paste appropriate lines from M3EDEN output here.
|
||||
["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]],
|
||||
["Land_Cargo_HQ_V1_F",[22918.1,16761.9,3.18151],[[0,1,0],[0,0,1]],[true,false]],
|
||||
["Land_Cargo_HQ_V3_F",[22907.6,16740.3,3.17544],[[0,1,0],[0,0,1]],[true,false]],
|
||||
["Land_Dome_Small_F",[22908.2,16808.8,3.19],[[0,1,0],[0,0,1]],[true,false]]
|
||||
]; // list of objects to spawn as landscape using output from M3EDEN editor.
|
||||
|
||||
_missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output here, then add the appropriate lootArray
|
||||
// [["box_classname1",_customLootArray1,[px,py,pz],...,_customLootArray1],["box_classname2",,[px2,py2,pz2],...,_customLootArray2]
|
||||
// where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and
|
||||
// where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed
|
||||
[selectRandom blck_crateTypes,[22917.4,16763,6.30803],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1] ],
|
||||
[selectRandom blck_crateTypes,[22893,16766.8,6.31652],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts],
|
||||
// 0 1 2 3 4 5
|
||||
[selectRandom blck_crateTypes,[22904.8,16742.5,6.30195],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts]
|
||||
]; // If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions.
|
||||
|
||||
|
||||
|
||||
_missionLootVehicles = [ // Paste appropriate lines from the output of M3EDEN Editor here and add the loot crate type and loot counts at the end of each entry as shown in the example below.
|
||||
// Many vehicles have less inventory capacity than crates so you may have to modify _lootcounts to avoid having stuff spawned all over the ground.
|
||||
//["Exile_Car_Van_Box_Guerilla02",[22896.8,16790.1,3.18987],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1]],
|
||||
//["Exile_Car_Van_Fuel_Guerilla02",[22919,16782.7,3.18132],[[0,1,0],[0.00129187,0,0.999999]],[true,false],_crateLoot, _lootCounts]
|
||||
]; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)];
|
||||
// When blank nothing is spawned.
|
||||
// You can use the same format used for _missionLootBoxes to add vehicles with/without loot.
|
||||
|
||||
_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]
|
||||
//format: _noEmplacedWeapons = [2,3]; // a range of values
|
||||
// or _noEmplacedWeapons = 3; // a constant number of emplaced weps per misison
|
||||
// Note that this value is ignored if you define static weapon positions and types in the array below.
|
||||
_missionEmplacedWeapons = [
|
||||
//["B_G_Mortar_01_F",[22867.3,16809.1,3.17968],"red",0,0],
|
||||
//["B_HMG_01_high_F",[22944.3,16820.5,3.14243],"green",0,0]
|
||||
]; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ];
|
||||
// can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used
|
||||
// If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned.
|
||||
// If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons.
|
||||
|
||||
_minNoAI = blck_MinAI_Red; // Modify as needed
|
||||
_maxNoAI = blck_MaxAI_Red; // Modify as needed.
|
||||
_noAIGroups = blck_AIGrps_Red; // Modify as needed; note that these values are ignored of you specify AI patrols in the array below.
|
||||
_aiGroupParameters = [
|
||||
// [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/]
|
||||
//[[22920.4,16887.3,3.19144],"red",[1,2], 75,120],
|
||||
[[22993.3,16830.8,5.6292],"red",4, 75,9000],
|
||||
[[22947.8,16717,6.80305],"red",4, 75,900],
|
||||
[[22849,16720.4,7.33123],"red",4, 75,9000],
|
||||
[[22832.9,16805.6,4.59315],"red",4, 75,900],
|
||||
[[22909.8,16778.6,3.19144],"red",4, 75,900],
|
||||
[[22819.4,16929.5,5.33892],"red",4, 75,900],
|
||||
[[22819.4,16929.5,5.33892],"red",4, 75,900]
|
||||
];
|
||||
|
||||
_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4];
|
||||
// Note that this value is ignored if you define vehicle patrols in the array below.
|
||||
_vehiclePatrolParameters = [
|
||||
["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600,900],
|
||||
["B_G_Offroad_01_repair_F",[22809.5,16699.2,8.78706],"green", 600,900]
|
||||
]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ]
|
||||
// When this array is empty, vehicle patrols will be scattered randomely around the mission.
|
||||
// Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc).
|
||||
|
||||
_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array.
|
||||
_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4];
|
||||
// Note: this value is ignored if you specify air patrols in the array below.
|
||||
_airPatrols = [
|
||||
["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red",1000,900]//,
|
||||
//[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"green",1000,0]
|
||||
];
|
||||
// Change _useMines to true/false below to enable mission-specific settings.
|
||||
_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby.
|
||||
_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like.
|
||||
_headgear = blck_headgear; // You can replace this list with a custom list of headgear.
|
||||
_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate.
|
||||
|
||||
#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_initializeMission.sqf";
|
||||
|
||||
diag_log format["[blckeagls static missions] COMPLETED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty];
|
@ -20,4 +20,3 @@ _staticMissions = [
|
||||
//["Exile","Altis","staticMissionExample2_Exile.sqf"]
|
||||
];
|
||||
|
||||
//diag_log "[blckeagls] GMS_UMS_StaticMissions_Lists.sqf <Loaded>";
|
||||
|
@ -9,42 +9,19 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
//if (!isServer) exitWith{};
|
||||
|
||||
//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf <Initializing Static Missions>";
|
||||
|
||||
//static mission descriptor for code: [position,level, numAI or [min,maxAI],patrolRadius, respawn, group[groupNull],spawnedAt[0],respawn[0]]
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
#include "\q\addons\custom_server\Missions\UMS\GMS_UMS_StaticMissions_Lists.sqf";
|
||||
|
||||
//while{ (isNil "blck_sm_functionsLoaded"; uiSleep 0.1];
|
||||
uiSleep 3;
|
||||
private["_mod","_map","_missionMod","_missionMap","_missionLocation","_missionDataFile"];
|
||||
//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf <Getting Mod Type>";
|
||||
_mod = toLower(call blck_fnc_getModType);
|
||||
//diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf <mod type = %1>",_mod];
|
||||
//diag_log format["[blckeagls] GMS__UMS_StaticMissions_init <_staticMissions> = %1",_staticMissions];
|
||||
//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf <Getting map name>";
|
||||
_map = toLower worldName;
|
||||
//diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf <map name = %1>",_map];
|
||||
{
|
||||
diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf <Evaluating Mission = %1>",_x];
|
||||
diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf <worldName = %1 | _mod = %2>",_map,_mod];
|
||||
if ((_map) isEqualTo toLower(_x select 1)) then
|
||||
diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf <worldName = %1 | _mod = %2>",toLower worldName,(toLower blck_modType)];
|
||||
if ((toLower worldName) isEqualTo toLower(_x select 1)) then
|
||||
{
|
||||
if ((_mod isEqualTo "epoch") && (toLower(_x select 0) isEqualTo "epoch")) then
|
||||
{
|
||||
|
||||
call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\UMS\staticMissions\%1",(_x select 2)];
|
||||
};
|
||||
|
||||
if ((_mod isEqualTo "exile") && (toLower(_x select 0) isEqualTo "exile")) then
|
||||
if ((toLower blck_modType) isEqualTo (toLower(_x select 0))) then
|
||||
{
|
||||
call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\UMS\staticMissions\%1",(_x select 2)];
|
||||
};
|
||||
};
|
||||
uiSleep 1;
|
||||
}forEach _staticMissions;
|
||||
|
||||
//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf <Static Missions Loaded>";
|
||||
|
||||
}forEach _staticMissions;
|
@ -9,7 +9,7 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
private _modType = call blck_fnc_getModType;
|
||||
waitUntil{!isNil "blck_cratetypes"};
|
||||
blck_UMS_uniforms =
|
||||
[
|
||||
"U_I_Wetsuit",
|
||||
@ -37,7 +37,7 @@ blck_UMS_weapons =
|
||||
"arifle_SDAR_F"
|
||||
];
|
||||
|
||||
if (_modType isEqualTo "Exile") then
|
||||
if ((tolower blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
blck_UMS_submarines =
|
||||
[
|
||||
@ -52,14 +52,13 @@ if (_modType isEqualTo "Exile") then
|
||||
"Exile_Container_SupplyBox"
|
||||
];
|
||||
};
|
||||
if (_modType isEqualTo "Epoch") then
|
||||
if ((tolower blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
blck_UMS_submarines =
|
||||
[
|
||||
|
||||
"B_SDV_01_EPOCH"
|
||||
];
|
||||
|
||||
blck_UMS_crates = blck_crateTypes;
|
||||
};
|
||||
blck_UMS_unarmedSurfaceVessels =
|
||||
|
@ -19,4 +19,4 @@ blck_fnc_findShoreLocation = compileFinal preprocessFileLineNumbers "q\addons\cu
|
||||
blck_fnc_addDyanamicUMS_Mission = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_addDynamicUMS_Mission.sqf";
|
||||
blck_fnc_findWaterDepth = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_UMS_fnc_findWaterDepth.sqf";
|
||||
|
||||
diag_log "<GMS_UMS_functions.sqf> Functions compiled";
|
||||
diag_log "[blckeagls] UMS functions Functions compiled";
|
||||
|
@ -1,133 +0,0 @@
|
||||
/*
|
||||
This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols.
|
||||
See the accompanying example mission in the exampleMission folder to get an idea how I laid this out.
|
||||
Note that I laid out the mission in EDEN editor, exported the mission using the exportAll function of M3EDEN editor. then copied, pasted and apporpriately edidet the specific categories of items to be spawned.
|
||||
*/
|
||||
private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape",
|
||||
"_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons",
|
||||
"_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines","_difficulty","_mission","_missionCenter"];
|
||||
|
||||
_mission = "UMS mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se.
|
||||
_missionCenter = [22584.9,15304.8,0]; // I pulled this from the position of the marker.
|
||||
_difficulty = "red"; // Skill level of AI (blue, red, green etc)
|
||||
diag_log format["[blckeagls UMS missions] STARTED initializing mission %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty];
|
||||
_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray
|
||||
/*
|
||||
_customLootArray =
|
||||
// Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on.
|
||||
// Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added.
|
||||
|
||||
[
|
||||
[// Weapons
|
||||
|
||||
["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"]
|
||||
],
|
||||
[//Magazines
|
||||
["10Rnd_93x64_DMR_05_Mag" ,1,5]
|
||||
],
|
||||
[ // Optics
|
||||
["optic_KHS_tan",1,3]
|
||||
],
|
||||
[// Materials and supplies
|
||||
["Exile_Item_MetalScrews",3,10]
|
||||
//
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
*/
|
||||
|
||||
_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format:
|
||||
// values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively.
|
||||
// blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange
|
||||
|
||||
_markerLabel = "";
|
||||
//_markerType = ["ELIPSE",[200,200],"GRID"];
|
||||
// An alternative would be:
|
||||
_markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers
|
||||
_markerColor = "ColorRed"; // This can be any valid Arma Marker Color
|
||||
_markerMissionName = "Bad Fishermen Live Here";
|
||||
_missionLandscapeMode = "precise"; // acceptable values are "random","precise"
|
||||
// In precise mode objects will be spawned at the relative positions specified.
|
||||
// In the random mode, objects will be randomly spawned within the mission area.
|
||||
_missionLandscape = [ // Paste appropriate lines from M3EDEN output here.
|
||||
// ["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]],
|
||||
["Land_Boat_05_wreck_F",[22571.5,15278.9,0],[[0,1,0],[0,0,1]],[true,false]]
|
||||
]; // list of objects to spawn as landscape using output from M3EDEN editor.
|
||||
|
||||
_missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output here, then add the appropriate lootArray
|
||||
// [["box_classname1",_customLootArray1,[px,py,pz],...,_customLootArray1],["box_classname2",,[px2,py2,pz2],...,_customLootArray2]
|
||||
// where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and
|
||||
// where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed
|
||||
// ["Box_NATO_Ammo_F",[22893,16766.8,6.31652],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts],
|
||||
[selectRandom blck_UMS_crates,[22584.9,15282.2,-1],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts]
|
||||
]; // If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions.
|
||||
|
||||
|
||||
|
||||
_missionLootVehicles = [ // Paste appropriate lines from the output of M3EDEN Editor here and add the loot crate type and loot counts at the end of each entry as shown in the example below.
|
||||
// Many vehicles have less inventory capacity than crates so you may have to modify _lootcounts to avoid having stuff spawned all over the ground.
|
||||
//["Exile_Car_Van_Box_Guerilla02",[22896.8,16790.1,3.18987],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1]],
|
||||
["B_T_Boat_Transport_01_F",[22570.1,15235.3,-4.49949],[[0,1,0],[0,0,1]],[true,false],_crateLoot, _lootCounts]
|
||||
]; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)];
|
||||
// When blank nothing is spawned.
|
||||
// You can use the same format used for _missionLootBoxes to add vehicles with/without loot.
|
||||
|
||||
_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]
|
||||
//format: _noEmplacedWeapons = [2,3]; // a range of values
|
||||
// or _noEmplacedWeapons = 3; // a constant number of emplaced weps per misison
|
||||
// Note that this value is ignored if you define static weapon positions and types in the array below.
|
||||
_missionEmplacedWeapons = [
|
||||
//["B_G_Mortar_01_F",[22867.3,16809.1,3.17968],"red",0,0],
|
||||
//["B_HMG_01_high_F",[22944.3,16820.5,3.14243],"green",0,0]
|
||||
];
|
||||
// example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ];
|
||||
// can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used
|
||||
// If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned.
|
||||
// If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons.
|
||||
|
||||
_minNoAI = blck_MinAI_Red; // Modify as needed
|
||||
_maxNoAI = blck_MaxAI_Red; // Modify as needed.
|
||||
_noAIGroups = blck_AIGrps_Red; // Modify as needed; note that these values are ignored of you specify AI patrols in the array below.
|
||||
_aiGroupParameters = [
|
||||
// [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/]
|
||||
|
||||
];
|
||||
_aiScubaGroupParameters = [
|
||||
// [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/]
|
||||
[[22584.9,15304.8,-4.27578],"red",4, 75,0],
|
||||
[[22613.5,15269.1,-4.28332],"red",4, 75,0],
|
||||
[[22549,15288.9,0],"red",4, 75,60]
|
||||
];
|
||||
_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4];
|
||||
// Note that this value is ignored if you define vehicle patrols in the array below.
|
||||
_vehiclePatrolParameters = [
|
||||
["B_T_Boat_Armed_01_minigun_F",[22578.6,15273.3,-0.0354593],"red",4, 75,0],
|
||||
["B_T_Boat_Transport_01_F",[22570.1,15235.3,-4.49949],"red",4, 75,60]
|
||||
]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ]
|
||||
// When this array is empty, vehicle patrols will be scattered randomely around the mission.
|
||||
// Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc).
|
||||
|
||||
_submarinePatrolParameters = [
|
||||
["B_SDV_01_F",[22584.9,15304.8,-1],"red",4, 75,0],
|
||||
["B_SDV_01_F",[22609.9,15299.8,-1],"red",4, 75,0]
|
||||
];
|
||||
|
||||
_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array.
|
||||
_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4];
|
||||
// Note: this value is ignored if you specify air patrols in the array below.
|
||||
_airPatrols = [
|
||||
//["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red",1000,0],
|
||||
[selectRandom _aircraftTypes,_missionCenter,"green",1000,60]
|
||||
];
|
||||
|
||||
// Change _useMines to true/false below to enable mission-specific settings.
|
||||
_useMines = false; // Set to false if you have vehicles patrolling nearby.
|
||||
|
||||
#include "\q\addons\custom_server\Missions\UMS\code\GMS_fnc_sm_initializeUMSStaticMission.sqf";
|
||||
|
||||
diag_log format["[blckeagls static missions] COMPLETED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty];
|
@ -1,495 +0,0 @@
|
||||
|
||||
|
||||
_fn_isInside = { // returns true if an object is inside, underneath or on top of a building otherwise returns false.
|
||||
//////////////////////
|
||||
// Determin if a unit is inside a building using two separate checkVisibility
|
||||
//////////////////////
|
||||
// lineIntersects [ eyePos player, aimPos chopper, player, chopper]
|
||||
params["_u",["_category","House"]];
|
||||
private ["_u","_pos","_above","_below"];
|
||||
_pos = getPosASL _u;
|
||||
_above = lineIntersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u];
|
||||
_below = lineintersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 2],_u];
|
||||
diag_log format["_fn_isInside: _u %1 | _category = %5 | typeOf _u %4 | _above %2 | _below %3 ",_u,_above,_below,typeOf _u, _category];
|
||||
// If there is something above or below the object do a quick double-check to make sure there is a building there and not something else.
|
||||
if (_above) then // test if any surfaces above are from buildingPos
|
||||
{
|
||||
_surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,100];
|
||||
_above = false;
|
||||
{
|
||||
//diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)];
|
||||
if ((_x select 2) isKindOf _category) then {_above = true};
|
||||
}forEach _surfacesAbove;
|
||||
};
|
||||
if (_below) then
|
||||
{
|
||||
_surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100];
|
||||
_above = false;
|
||||
{
|
||||
//diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)];
|
||||
if ((_x select 2) isKindOf _category) then {_above = true};
|
||||
}forEach _surfacesBelow;
|
||||
};
|
||||
|
||||
_isInside = if (_above || _below) then {true} else {false};
|
||||
//diag_log format["_fn_isInside: _isInside = %1",_isInside];
|
||||
_isInside
|
||||
};
|
||||
|
||||
_fn_buildingContainer = { // returns the builing containing an object or objNull
|
||||
private["_u","_pos","_building","_surfacesAbove","_surfacesBelow"];
|
||||
params["_u",["_category","House"]];
|
||||
_pos = getPosASL _u;
|
||||
private _building = objNull;
|
||||
// lineIntersectsSurfaces [begPosASL, endPosASL, ignoreObj1, ignoreObj2, sortMode, maxResults, LOD1, LOD2, returnUnique]
|
||||
_surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,10];
|
||||
diag_log format["_surfacesAbove = %1",_surfacesAbove];
|
||||
{
|
||||
if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)};
|
||||
} forEach _surfacesAbove;
|
||||
if (_building isEqualTo objNull) then
|
||||
{
|
||||
_surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100];
|
||||
diag_log format["_surfacesBelow = %1",_surfacesBelow];
|
||||
{
|
||||
if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)};
|
||||
} forEach _surfacesBelow;
|
||||
};
|
||||
diag_log format["_fn_buildingContainer: _u = %1 | _building = %2",_u,_building];
|
||||
_building
|
||||
};
|
||||
|
||||
_fn_isInfantry = { // returns true if a unit is on foot otherwise returns false.
|
||||
//////////////////////
|
||||
// Determine if a unit isinfantry rather than a unit manning a turret or vehicle
|
||||
//////////////////////
|
||||
_u = _this select 0;
|
||||
private _isInfantry = if ((_u isKindOf "Man") && (vehicle _u) isEqualTo _u) then {true} else {false};
|
||||
//diag_log format["_fn_isInfantry: _isInfantry = %1",_isInfantry];
|
||||
_isInfantry
|
||||
};
|
||||
|
||||
diag_log "========== <START> ==========================";
|
||||
|
||||
///////////////////
|
||||
// Define some values for our AI
|
||||
// Change values of these variables to suit your needs
|
||||
///////////////////
|
||||
#define aiDifficulty "Red"
|
||||
#define minAI 3
|
||||
#define maxAI 6
|
||||
#define minPatrolRadius 30
|
||||
#define maxPatrolRadius 45
|
||||
#define AI_respawnTime 600
|
||||
#define aiVehiclePatrolRadius 75
|
||||
#define vehiclePatrolRespawnTime 600
|
||||
#define staticWeaponRespawnTime 600
|
||||
#define aiAircraftPatrolRespawnTime 600
|
||||
#define aiAircraftPatrolRadius 1700
|
||||
#define oddsOfGarrison 0.67
|
||||
#define maxGarrisonStatics 3
|
||||
#define maxGarrisonUnits 4
|
||||
#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls
|
||||
#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient.
|
||||
#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction.
|
||||
#define objectAtMissionCenter "RoadCone_L_F"
|
||||
#define lootVehicleMarker "Sign_Arrow_F"
|
||||
#define landVehicles "LandVehicle"
|
||||
|
||||
///////////////////
|
||||
// Define the coordinates of the center of the mission.
|
||||
///////////////////
|
||||
|
||||
CENTER = [0,0,0];
|
||||
|
||||
if (isNil "CENTER" || CENTER isEqualTo [0,0,0]) then
|
||||
{
|
||||
hint "Please define a center point for your mission";
|
||||
_obj = allMissionObjects objectAtMissionCenter;
|
||||
_obj1 = _obj select 0;
|
||||
diag_log format["Determining position of first roadcone found which is located at %1 with player found at %2",getPos _obj1,position Player];
|
||||
if (count _obj > 0) then
|
||||
{
|
||||
CENTER = [3,3,0] vectorAdd (getPosATL _obj1);
|
||||
};
|
||||
hint format["Position of Road Cone at %1 used to define mission center",CENTER];
|
||||
diag_log format["Position of Road Cone at %1 used to define mission center",CENTER];
|
||||
diag_log format["Player located at position %1",position player];
|
||||
};
|
||||
|
||||
///////////////////
|
||||
// Identify any buildings in which a garrison should be spawned using the Arma building positions.
|
||||
// Tell the script which buildings to garrison by placing an object inside that designates them as such.
|
||||
// I use a large yellow sphere for this purpose.
|
||||
// The function below assembles a list of such buildings for use in defining the data for mission buildings.
|
||||
///////////////////
|
||||
|
||||
_cb = "";
|
||||
|
||||
//////////////////
|
||||
// *** OPTIONAL ****
|
||||
// Place a marker over your mission and configure it as you would like to to appear in the tame.
|
||||
// The marker configuration will be included in the output of this script.
|
||||
// Note ** Only the first marker placed will be processed **
|
||||
// Configure Marker
|
||||
/////////////////
|
||||
/*
|
||||
_markerType = ["ELIPSE",[175,175],"GRID"];
|
||||
_markerType = ["mil_triangle",[0,0]];
|
||||
*/
|
||||
_allmkr = allMapMarkers;
|
||||
diag_log format["_allmkr = %1",_allmkr];
|
||||
if (count _allmkr == 0) then
|
||||
//if !(typeName _mk isEqualTo "STRING") then
|
||||
{
|
||||
hint "No Marker Found, no Marker Definitions Will Be generated";
|
||||
uiSleep 5;
|
||||
} else {
|
||||
_mk = _allmkr select 0;
|
||||
diag_log format["_mk = %1",_mk];
|
||||
|
||||
if ((getMarkerType _mk) in ["ELIPSE","RECTANGLE"]) then
|
||||
{
|
||||
_cb = _cb + format['_markerType = ["%1",%2,%3];%4',getMarkerType _mk,getMarkerSize _mk,markerBrush _mk,endl];
|
||||
} else {
|
||||
_cb = _cb + format['_markerType = ["%1",[0,0]];%2',getMarkerType _mk,endl];
|
||||
};
|
||||
_cb = _cb + format['_markerColor = "%1";%2',markerColor _mk,endl];
|
||||
_cb = _cb + format['_markerLabel = "%1";%2',MarkerText _mk,endl];
|
||||
_cb = _cb + format["%1%1",endl];
|
||||
};
|
||||
|
||||
////////////////////////
|
||||
// Begin pulling data here
|
||||
///////////////////////
|
||||
|
||||
_cb = _cb + format["_garrisonedBuildings_BuildingPosnSystem = [",endl];
|
||||
private _garrisonedBuildings = [];
|
||||
private _allStatics = [];
|
||||
_helpers = allMissionObjects garrisonMarkerObject;
|
||||
//diag_log format["_helpers = %1",_helpers];
|
||||
{
|
||||
if ( (typeOf _x) isEqualTo garrisonMarkerObject) then
|
||||
{
|
||||
private _isInside = [_x] call _fn_isInside;
|
||||
if (_isInside) then
|
||||
{
|
||||
_building = [_x] call _fn_buildingContainer;
|
||||
_garrisonedBuildings pushbackunique _building;
|
||||
_garrisonedBuildings pushbackunique _x;
|
||||
// data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/],
|
||||
// 1 2 3 4 5 6 7 8 9
|
||||
_line = format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits];
|
||||
systemChat _line;
|
||||
//diag_log _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _helpers;
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
_logging = format["_garrisonedBuildings = %1",_garrisonedBuildings];
|
||||
//diag_log _logging;
|
||||
systemChat _logging;
|
||||
//diag_log format["_cb = %1%2",endl,_cb];
|
||||
|
||||
_configuredStatics = [];
|
||||
_configuredUnits = [];
|
||||
/*
|
||||
This bit will set up the garrison for each building having units and / or statics inside it or on top.
|
||||
Coding must ensure that nothing is repeated but everything is captured.
|
||||
*/
|
||||
|
||||
_fn_configureGarrisonForBuildingATL = {
|
||||
private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"];
|
||||
_b = _this select 0;
|
||||
_count = 0;
|
||||
if (_b in _garrisonedBuildings) exitWith {""};
|
||||
_staticsText = "";
|
||||
_unitsText = "";
|
||||
_buildingGarrisonATL = "";
|
||||
_staticsInBuilding = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)];
|
||||
{
|
||||
if !(_x in _configuredStatics) then
|
||||
{
|
||||
_isInside = [_x] call _fn_isInside;
|
||||
if (_isInside) then {_building = [_x] call _fn_buildingContainer};
|
||||
if (_b isEqualTo _building) then
|
||||
{
|
||||
_configuredStatics pushBackUnique _x;
|
||||
|
||||
if (_staticsText isEqualTo "") then
|
||||
{
|
||||
_staticsText = format['["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x];
|
||||
} else {
|
||||
_staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x];
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _staticsInBuilding;
|
||||
_unitsInBuilding = nearestObjects[getPosATL _building,[unitMarkerObject],sizeOf (typeOf _building)];
|
||||
|
||||
{
|
||||
if !(_x in _configuredUnits) then
|
||||
{
|
||||
_isInside = [_x] call _fn_isInside;
|
||||
if (_isInside) then {_building = [_x] call _fn_buildingContainer};
|
||||
if (_b isEqualTo _building) then
|
||||
{
|
||||
_configuredUnits pushBackUnique _x;
|
||||
|
||||
if (_unitsText isEqualTo "") then
|
||||
{
|
||||
_unitsText = format["[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x];
|
||||
} else {
|
||||
_unitsText = _unitsText + format[",[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x];
|
||||
};
|
||||
_count = _count + 1;
|
||||
};
|
||||
};
|
||||
} forEach _unitsInBuilding;
|
||||
if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then
|
||||
{
|
||||
_buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText];
|
||||
_garrisonedBuildings pushBackUnique _b;
|
||||
};
|
||||
_buildingGarrisonATL
|
||||
};
|
||||
|
||||
private _count = 0;
|
||||
_cb = _cb + "_garrisonedBuilding_ATLsystem = [";
|
||||
{
|
||||
private _isInside = [_x] call _fn_isInside;
|
||||
if (_isInside) then
|
||||
{
|
||||
private _building = [_x] call _fn_buildingContainer;
|
||||
private _include = if ( !(_building in _garrisonedBuildings) && !((typeOf _building) isEqualTo unitMarkerObject) && !((typeOf _building) isEqualTo garrisonMarkerObject)) then {true} else {false};
|
||||
if (_include) then
|
||||
{
|
||||
//diag_log format["_x = %1 | _building = %1",_x,_building];
|
||||
private _buildingGarrisonInformation = [_building] call _fn_configureGarrisonForBuildingATL;
|
||||
//diag_log format["_buildingGarrisonInformation = %1",_buildingGarrisonInformation];
|
||||
if (_count == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_buildingGarrisonInformation];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_buildingGarrisonInformation];
|
||||
};
|
||||
|
||||
_count = _count + 1;
|
||||
};
|
||||
};
|
||||
|
||||
} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects unitMarkerObject));
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// Configure info remaining mission landscape
|
||||
///////////////////
|
||||
_land = allMissionObjects "Static";
|
||||
|
||||
_cb = _cb + format["_missionLandscape = [",endl];
|
||||
{
|
||||
diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x];
|
||||
//diag_log format["evaluating mission landscape: _x %1 | typeOf _x %1",_x, _x isKindOf "Helper_Base_F"];
|
||||
if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then
|
||||
{
|
||||
_line = format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true'];
|
||||
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
}forEach allMissionObjects "Static";
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// Configure loot boxes
|
||||
///////////////////
|
||||
_cb = _cb + "_missionLootBoxes = [";
|
||||
{
|
||||
_line = format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
}forEach ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F"));
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// Setup Info for loot vehicles
|
||||
///////////////////
|
||||
_missionLootVehicles = [];
|
||||
_missionVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship");
|
||||
_lootVehicleMarkers = allMissionObjects lootVehicleMarker;
|
||||
diag_log format["_lootVehicleMarkers = %1",_lootVehicleMarkers];
|
||||
_cb = _cb + format["_missionLootVehicles = ["];
|
||||
{
|
||||
_kindOf = "nothing";
|
||||
_isInside = [_x,"Car"] call _fn_isInside;
|
||||
if (_isInside) then {_kindOf = "Car"};
|
||||
if !(_isInside) then {_isInside = [_x,"Ship"] call _fn_isInside};
|
||||
if (_isInside) then {_kindOf = "Ship"};
|
||||
if (_isInside) then
|
||||
{
|
||||
|
||||
_object = [_x,_kindOf] call _fn_buildingContainer;
|
||||
diag_log format["object %1 is inside object %2",_x,_object];
|
||||
_missionLootVehicles pushBack _object;
|
||||
_line = format[' ["%1",%2,%3,%4,%5]',typeOf _object,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
} forEach allMissionObjects lootVehicleMarker;
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// Setup Info for vehicle patrols
|
||||
///////////////////
|
||||
_cb = _cb + format["_missionPatrolVehicles = ["];
|
||||
{
|
||||
if ( !((typeOf _x) isKindOf "SDV_01_base_F") && !(_x in _missionLootVehicles) ) then
|
||||
{
|
||||
_line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
}forEach ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship");
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
_cb = _cb + "_submarinePatrolParameters = [";
|
||||
{
|
||||
if ((typeOf _x) isKindOf "SDV_01_base_F") then
|
||||
{
|
||||
_line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
}forEach allMissionObjects "Ship";
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// Configs for Air Patrols
|
||||
///////////////////
|
||||
_cb = _cb + "_airPatrols = [";
|
||||
//[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"blue",1000,60]
|
||||
{
|
||||
_line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true'];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
}forEach allMissionObjects "Air";
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// Setup info for remaining static/emplaced weapons
|
||||
///////////////////
|
||||
_cb = _cb + format["_missionEmplacedWeapons = ["];
|
||||
{
|
||||
|
||||
if !(_x in _configuredStatics) then
|
||||
{
|
||||
// ["B_HMG_01_high_F",[22883.5,16757.6,6.31652],"blue",0,10]
|
||||
_line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true'];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
|
||||
}forEach allMissionObjects "StaticWeapon";
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// Setup information for infantry groups spawning outside buildings
|
||||
///////////////////
|
||||
_cb = _cb + format["_missionGroups = ["];
|
||||
{
|
||||
//[[22920.4,16887.3,3.19144],"red",[1,2], 75,120],
|
||||
_isInside = [_x] call _fn_isInside;
|
||||
_isInfantry = [_x] call _fn_isInfantry;
|
||||
//diag_log format["_missionGroups: _unit %1 | _isInside %2 _isInfantry %3",_x,_isInside,_isInfantry];
|
||||
if (_isInfantry) then
|
||||
{
|
||||
if (!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then
|
||||
{
|
||||
_line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
};
|
||||
}forEach allMissionObjects "Man";
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
_cb = _cb + "_scubaGroupParameters = [";
|
||||
{
|
||||
//[[22920.4,16887.3,3.19144],"red",[1,2], 75,120],
|
||||
_isInside = [_x] call _fn_isInside;
|
||||
_isInfantry = [_x] call _fn_isInfantry;
|
||||
//diag_log format["_missionGroups: _unit %1 | _isInside %2 _isInfantry %3",_x,_isInside,_isInfantry];
|
||||
if (_isInfantry) then
|
||||
{
|
||||
if ((surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then
|
||||
{
|
||||
_line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius];
|
||||
systemChat _line;
|
||||
if (_forEachIndex == 0) then
|
||||
{
|
||||
_cb = _cb + format["%1%2",endl,_line];
|
||||
} else {
|
||||
_cb = _cb + format[",%1%2",endl,_line];
|
||||
};
|
||||
};
|
||||
};
|
||||
}forEach allMissionObjects "Man";
|
||||
_cb = _cb + format["%1];%1%1",endl];
|
||||
|
||||
///////////////////
|
||||
// All done, notify the user and copy the output to the clipboard
|
||||
///////////////////
|
||||
_msg = "All Objects organzied, formated and copied to the Clipboard";
|
||||
hint _msg;
|
||||
systemChat _msg;
|
||||
systemChat format["_cb has %1 characters",count _cb];
|
||||
copyToClipboard _cb;
|
||||
diag_log "DONE";
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
|
||||
|
||||
--------------------------
|
||||
License
|
||||
--------------------------
|
||||
@ -14,29 +14,259 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
_lootBoxes =
|
||||
[
|
||||
/*[
|
||||
|
||||
"altis", // map name
|
||||
"Camp1", // a name for this region for logging and debuging purpses and to help identify the definition down the road when changing things on the server
|
||||
2, // number of locations specified from the list below at which to spawn crates
|
||||
[ // format here is [[position x, y, z], direction, exact / loose placement (true/false), smoke near crate (true/false]
|
||||
[[23555.9,18422.7,0.730287],0,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position
|
||||
[[23542.1,18435.9,0.00143886],0,true, false],
|
||||
[[23514,18452.5,0.00143886],0,true, false],
|
||||
[[23534.2,18418.8,0.00143886],0,false, true]
|
||||
]
|
||||
|
||||
],
|
||||
[ "altis",
|
||||
"refuel",
|
||||
2,
|
||||
[ // format here is [[position x, y, z], direction, exact / loose placement (true/false), smoke near crate (true/false]
|
||||
[[22963.8,17041.3,0.00143886],0,false, false],
|
||||
[[22942.8,17038,0.00143886],0,false, false],
|
||||
[[22948.7,17054,0.00143886],0,false, false]
|
||||
] // No comma after this last one
|
||||
] // No comma after this last one
|
||||
*/
|
||||
#ifdef GRG_TestServer
|
||||
["altis","APTrader",10,
|
||||
[
|
||||
[[14658.1, 16790.9, 18.3795],0,false,false],
|
||||
[[14660, 16788.5, 18.3795],0,false,false],
|
||||
[[17518.4,13260.7,12.7337],0,false,false],
|
||||
[[17528.1,13270.2,12.725],0,false,false],
|
||||
[[17537.4,13278.2,12.706],0,false,false],
|
||||
[[17547.9,13286,12.6121],0,false,false],
|
||||
[[17599.5,13240.5,13.327],0,false,false],
|
||||
[[17593.1,13231.9,13.4375],0,false,false],
|
||||
[[17586.5,13224.6,13.5832],0,false,false],
|
||||
[[17580.5,13217.8,13.6708],0,false,false]
|
||||
]
|
||||
],
|
||||
#endif
|
||||
|
||||
// Ferres
|
||||
/*
|
||||
["altis","Ferres", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type.
|
||||
[
|
||||
[[21693.887,7731.0264,13.955027],0,true, true], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position
|
||||
[[21850.063,7504.3203,14.677059],0,true, true],
|
||||
[[21693.674,7431.4141,15.578629],0,true, true],
|
||||
[[21631.227,7773.9927,14.149431],0,true, true],
|
||||
[[21572.559,7462.2661,17.827536],0,true, true],
|
||||
[[21801.348,7631.4448,13.80711],0,true, true],
|
||||
[[21508.932,7585.6309,15.844649],0,true, true],
|
||||
[[21547.027,7695.6738,15.754698],0,true, true]
|
||||
]
|
||||
],*/
|
||||
#ifndef blck_milServer
|
||||
// Dump
|
||||
["altis","Dump", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type.
|
||||
[
|
||||
[[5791,20314.5,0],0,false,true], // crate position 1, loadout (0-4), false=random placement near position, true = show smoke at position
|
||||
[[5902.33,20272.7,0],0,false,true],
|
||||
[[5955.21,20136.2,0],0,false,true],
|
||||
[[5908.32,20088.3,0],0,false,true],
|
||||
[[55843.54,20171.6,0],0,false,true],
|
||||
[[5775.42,20163.3,0],0,false,true],
|
||||
[[5979.18,20206.5,0],0,false,true],
|
||||
[[5943.89,20076.7,0],0,false,true]
|
||||
]
|
||||
],
|
||||
// Beach #1
|
||||
["altis","Beach", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type.
|
||||
[
|
||||
[[22769.8,7051.28,0],0,false,true], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position
|
||||
[[22934.3,6990.53,0],0,false,true],
|
||||
[[22831.7,7003.24,0],0,false,true],
|
||||
[[22666.6,7009.22,0],0,false,true],
|
||||
[[22634.6,6985.3,0],0,false,true],
|
||||
[[22583.4,6935.63,0],0,false,true],
|
||||
[[22651.1,7060.75,0],0,false,true]
|
||||
]
|
||||
],
|
||||
["altis","Pack-1", 1, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type.
|
||||
[
|
||||
[[14269.6,13016.2,0],0,false,false], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position
|
||||
[[14359.9,13047.7,0],0,false,false],
|
||||
[[14293.5,12956.9,0],0,false,false]
|
||||
]
|
||||
],
|
||||
["altis","Pack-2", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type.
|
||||
[
|
||||
[[26810,24557.2,0.00140762],0,false,false], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position
|
||||
[[26746,24652.6,0.520973],0,false,false],
|
||||
[[26798.1,24668.3,0.001297],0,false,false],
|
||||
[[26873,24635.1,17.4495],0,false,false],
|
||||
[[26940.7,24642.2,0.732187],0,false,false],
|
||||
[[26955.5,24658.4,0.739138],0,false,false],
|
||||
[[26943.8,24666.2,0.722866],0,false,false],
|
||||
[[26930.2,24651.9,0.727114],0,false,false],
|
||||
[[26965.5,24684.1,7.63653],0,false,false],
|
||||
[[26928.3,24714.8,7.63206],0,false,false],
|
||||
[[26940.7,24730.5,7.76619],0,false,false],
|
||||
[[26952,24750.5,0.602812],0,false,false],
|
||||
[[26932.7,24730.8,0.635454],0,false,false],
|
||||
[[26931.2,24739,0.724504],0,false,false],
|
||||
[[26968.1,24700.1,0.599913],0,false,false],
|
||||
[[26847.9,24821.4,0.340788],0,false,false],
|
||||
[[26783.4,24788.2,12.5849],0,false,false],
|
||||
[[26729.8,24759.1,0.296225],0,false,false]
|
||||
]
|
||||
],
|
||||
#endif
|
||||
["taviana","Zoo", 3, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type.
|
||||
[
|
||||
[[18614.1,3029.22,0],0,false, true], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position
|
||||
[[19215.7,2260.17,0],0,false, true],
|
||||
[[19073.2,2775.83,0],0,false, true],
|
||||
[[18632.1,2967.54,0],0,false, true],
|
||||
[[18671.2,2869.73,0],0,false, true]
|
||||
]
|
||||
],
|
||||
// Power Plant
|
||||
["taviana","NPP", 3, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type.
|
||||
[
|
||||
[[9478.98,4481.12,0],0,false, false], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position
|
||||
[[9584.39,4474.86,0],0,false, false],
|
||||
[[9485.74,4303.65,0],0,false, false],
|
||||
[[9549.64,4236.95,0],0,false, false],
|
||||
[[9347.52,4656.96,0],0,false, false],
|
||||
[[9427.53,4585.94,0],0,false, false],
|
||||
[[9542.42,4603.89,0],0,false, false]
|
||||
]
|
||||
],
|
||||
["bornholm","Stronghold1",4,
|
||||
// Stronghold 1
|
||||
[
|
||||
[[16776.3,2841.59,0.115455],2,true, false],
|
||||
[[16885.1,2763.64,0.0635304],4,true, false],
|
||||
[[16953.7,2588.12,0.0866053],2,true, false],
|
||||
[[17028.5,2645.56,0.0632489],4,true, false],
|
||||
[[16818.7,2627.68,0.0635295],2,true, false],
|
||||
[[16828.1,2794.94,0.086482],4,true, false],
|
||||
[[16776.8,2842.19,0.115454],2,true, false]
|
||||
]
|
||||
],
|
||||
["bornholm","Stronghold2", 4,
|
||||
// Stronghold 2
|
||||
[
|
||||
[[4342.52,19974.5,1.5059],2,false, false],
|
||||
[[4364.01,19957.2,1.7643],4,false, false],
|
||||
[[4337.55,19886.1,0.923979],2,false, false],
|
||||
[[4317.76,19915.3,0.336912],4,false, false],
|
||||
[[4261.73,19957,0.0783005],2,false, false],
|
||||
[[4280.66,19961.2,0.180275],4,false, false],
|
||||
[[4318.1,19916.5,0.514435],2,false, false]
|
||||
]
|
||||
],
|
||||
["bornholm","Object99",4,// ** Note that there is no comma after the last entry.
|
||||
// Object 99 blah blah
|
||||
[
|
||||
/*
|
||||
// Darthrogues Obj 99
|
||||
[[7231.91,11975.8,0.836342],2,false, false],
|
||||
[[7266.08,11981.6,1.0471],4,false, false],
|
||||
[[7337.64,12011.6,12.7679],2,false, false],
|
||||
[[7264.35,12020.1,0.661186],4,false, false],
|
||||
[[7204.27,12058.5,0.632904],2,false, false],
|
||||
[[7265.46,12128.6,0.00143433],4,false, false],
|
||||
[[7250.85,12142.9,3.16084],2,false, false],
|
||||
[[7215.93,12121.1,0.224915],4,false, false],
|
||||
[[7207.59,12159.8,0.73732],2,false, false],
|
||||
[[7184.07,12231.1,8.72117],4,false, false],
|
||||
[[7172.28,12021.2,0.664284],2,false, false],
|
||||
[[7147.93,12056.5,0.848099],4,false, false],
|
||||
[[7137.67,12110.8,4.0068],2,false, false],
|
||||
[[7166,12138,3.86438],4,false, false],
|
||||
[[7130.52,12207.9,0.56971],4,false, false]
|
||||
*/
|
||||
// Mr. Squirrel's Obj 69
|
||||
[[7253.48,12101.4,0],2,false, false],
|
||||
[[7276.15,12118.1,0],4,false, false],
|
||||
[[7158.4,12068.5,0],2,false, false],
|
||||
[[7128.27,12206.9,0],4,false, false],
|
||||
[[7167.57,12218.9,0],2,false, false],
|
||||
[[7218.71,12188.5,0],4,false, false],
|
||||
[[7209.02,12166.9,0],2,false, false],
|
||||
[[7233.2,12067.5,0],4,false, false],
|
||||
[[7167.75,12038.4,0],2,false, false],
|
||||
[[7106.96,12119.2,0],4,false, false],
|
||||
[[7161.82,12126.7,0],2,false, false],
|
||||
[[7096.61,12195.9,0],4,false, false],
|
||||
[[7083.88,12141.1,0],2,false, false],
|
||||
[[7060.33,12146.2,0],4,false, false],
|
||||
[[7135.81,12168.1,0],2,false, false],
|
||||
[[7055.72,12159.2,0.38678],4,false, false],
|
||||
[[7119.19,12100.2,0.801155],2,false, false],
|
||||
[[7124.51,12095.7,1.16968],4,false, false]
|
||||
]
|
||||
],
|
||||
["bornholm","Mafia Island", 4,
|
||||
[// Mafia Island
|
||||
[[19296.5, 22308.8, 0],2,false, false],
|
||||
[[19279, 22352.2, 0],4,false, false],
|
||||
[[19213.8, 22358.6, 0],2,false, false],
|
||||
[[19190.4, 22367.4, 0],4,false, false],
|
||||
[[19204.3, 22314.9, 0],2,false, false],
|
||||
[[19368.7, 22347.3, 0],4,false, false],
|
||||
[[19462.8, 22306.1, 0],2,false, false],
|
||||
[[19321.4, 22240.1, 3.46751],4,false, false]
|
||||
]
|
||||
],
|
||||
["bornholm","Science Compound", 4,
|
||||
[// Science Compound
|
||||
[[7922.43,7347, 0],2,false, false],
|
||||
[[7926.59,7427.49, 0],4,false, false],
|
||||
[[7929.08,7421.45, 0],2,false, false],
|
||||
[[7984.89,7474.71, 0],4,false, false],
|
||||
[[7974.01,7472.63, 0],2,false, false],
|
||||
[[7934.56,7572.23, 0],4,false, false],
|
||||
[[7945.09,7587.68, 0],2,false, false],
|
||||
[[7949.19,7567.18,0],4,false, false]
|
||||
]
|
||||
],
|
||||
//[[21572.559,7462.2661,17.827536],4,true, true]
|
||||
//[[21801.348,7631.4448,13.80711],1,true, true],
|
||||
//[[21508.932,7585.6309,15.844649],2,true, true],
|
||||
//[[21547.027,7695.6738,15.754698],3,true, true]
|
||||
|
||||
[ "lythium", "RaiderBase", 3,
|
||||
[
|
||||
[[18950.6,13115.8,233.078],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position
|
||||
[[18958,13095.9,231.687],2,true, false],
|
||||
[[19048.7,13134,229.004],2,true, false],
|
||||
[[19062.3,13126.6,229.646],1,true, false],
|
||||
[[19032.2,13087.3,227.428],3,true, false],
|
||||
[[18988,13192.7,223.058],1,true, false],
|
||||
[[19076.2,13105.2,231.051],3,true, false]
|
||||
]
|
||||
],
|
||||
[ "lythium","chemical", 4,
|
||||
[
|
||||
[[9081.29,19774.8,704.102],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position
|
||||
[[9081.29,19774.8,704.102],2,true, false],
|
||||
[[8926.25,19856.5,728.456],2,true, false],
|
||||
[[8999.95,19917.9,714.447],1,true, false],
|
||||
[[9391.22,19888,713.624],3,true, false],
|
||||
[[9026.12,20360,687.103],1,true, false],
|
||||
[[8972.81,20222.4,714.263],3,true, false],
|
||||
[[9406.59,19506.8,635.903],3,true, false],
|
||||
[[7715.5,20352.6,822.616],3,true, false]
|
||||
]
|
||||
],
|
||||
[ "lythium","nwaste", 4,
|
||||
[
|
||||
[[19123.5,1726.78,77.169],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position
|
||||
[[19000.5,1657.84,79.3068],2,true, false],
|
||||
[[19028.6,1525.28,80.0602],2,true, false],
|
||||
[[19076.7,1536.15,78.7828],1,true, false],
|
||||
[[19393.5,1784.66,32.3623],3,true, false],
|
||||
[[19391,1783.63,32.5241],1,true, false],
|
||||
[[19255.1,2204.95,46.3486],3,true, false],
|
||||
[[19398.7,2323,42.8409],3,true, false]
|
||||
|
||||
]
|
||||
],
|
||||
[ "lythium","mine", 4,
|
||||
[
|
||||
[[4114.84,905.004,357.621],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position
|
||||
[[3714.22,760.414,383.659],2,true, false],
|
||||
[[3774.63,684.883,384.924],2,true, false],
|
||||
[[3747.2,777.427,384.203],1,true, false],
|
||||
[[3761.07,611.827,383.125],3,true, false],
|
||||
[[3709.12,780.889,383.27],1,true, false],
|
||||
[[3712.96,805.05,382.848],3,true, false],
|
||||
[[3688.47,713.877,382.692],3,true, false],
|
||||
[[4373.19,607.184,370.77],3,true, false]
|
||||
]
|
||||
]
|
||||
|
||||
];
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
/*
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last Modified 8-23-17
|
||||
|
||||
--------------------------
|
||||
License
|
||||
@ -71,7 +69,6 @@ _fn_spawnCrate = {
|
||||
_crate = [[0,0,0],_selectedCrateType] call blck_fnc_spawnCrate;
|
||||
_crate setPosATL _pos;
|
||||
_crate setDir round(random(360));
|
||||
//uiSleep 1;
|
||||
_crate setVectorUp surfaceNormal _pos;
|
||||
_crate
|
||||
};
|
||||
@ -81,7 +78,7 @@ _fn_setupCrates = {
|
||||
private["_crate"];
|
||||
|
||||
_crate = [_location,_randomPos] call _fn_SpawnCrate;
|
||||
while {_lootType == 0} do {_lootType = round(random(3));};
|
||||
_lootType = selectrandom [1,2,3];
|
||||
switch(_lootType) do
|
||||
{
|
||||
// format here is [_arrayOfLoot, crateToLoad, magazinesToAddForEachWeaponLoaded]
|
||||
@ -102,37 +99,31 @@ _fn_setupCrates = {
|
||||
_crate
|
||||
};
|
||||
//diag_log "[blckeagls] SLS System: Functions Initialized!";
|
||||
private["_cratePosnList","_no","_ar","_x","_cratePos","_lootType","_randomPos","_useSmoke"];
|
||||
|
||||
private["_cratePos","_lootType","_randomPos","_useSmoke"];
|
||||
{
|
||||
_map = _x select 0;
|
||||
_name = _x select 1;
|
||||
_no = _x select 2;
|
||||
_ar = _x select 3;
|
||||
private["_index"];
|
||||
_index = 1;
|
||||
if (blck_debugON) then
|
||||
_x params ["_map","_name","_no","_ar"];
|
||||
private["_index"];
|
||||
_index = 1;
|
||||
if (blck_debugON) then
|
||||
{
|
||||
diag_log format["[blckeagls] SLS :: main function: Location name = %3 |count _ar = %1 | _index = %2", count _ar, _index, _name];
|
||||
diag_log format["[blckeagls] SLS :: main function: count _ar = %1", _ar];
|
||||
};
|
||||
if ((tolower _map) isEqualto (toLower(worldName))) then
|
||||
{
|
||||
for "_i" from 1 to _no do
|
||||
{
|
||||
diag_log format["[blckeagls] SLS :: main function: Location name = %3 |count _ar = %1 | _index = %2", count _ar, _index, _name];
|
||||
diag_log format["[blckeagls] SLS :: main function: count _ar = %1", _ar];
|
||||
};
|
||||
if (_map isEqualto (toLower(worldName))) then
|
||||
{
|
||||
_usedLocations = [];
|
||||
for "_i" from 1 to _no do
|
||||
// Pick a random element and be sure it has not already been selected
|
||||
_ar = _ar call Bis_fnc_arrayshuffle;
|
||||
_crateParams = _ar deleteat 0;
|
||||
if (blck_debugON) then
|
||||
{
|
||||
// Pick a random element and be sure it has not already been selected_crateParams
|
||||
_crateParams = selectRandom _ar;
|
||||
while {_crateParams in _usedLocations} do {_crateParams = selectRandom _ar;}; // selectRandom is about 5X faster than BIS_fnc_selectRandom in my testing.
|
||||
if (blck_debugON) then
|
||||
{
|
||||
diag_log format["[blckeagls] SLS:: spawning crate spawning crate at location name %1 with parameters of %2 --->>> %1",_name,_crateParams];
|
||||
};
|
||||
_usedLocations pushback _crateParams;
|
||||
_crateParams params["_cratePos","_lootType","_randomPos","_useSmoke"]; // params is about 5x faster in my testing over _this select 0 where many local variables are defined by parsing _this.
|
||||
[_cratePos,_lootType,_randomPos,_useSmoke] call _fn_setupCrates;
|
||||
diag_log format["[blckeagls] SLS:: spawning crate spawning crate at location name %1 with parameters of %2 --->>> %1",_name,_crateParams];
|
||||
};
|
||||
// _crateParams params["_cratePos","_lootType","_randomPos","_useSmoke"];
|
||||
_crateParams call _fn_setupCrates;
|
||||
};
|
||||
};
|
||||
} forEach _lootBoxes;
|
||||
|
||||
|
||||
|
@ -15,14 +15,13 @@
|
||||
#endif
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
if not (isNull( configFile >> "CfgPatches" >> "a3_epoch_server" )) then
|
||||
if ((tolower blck_modType) isEqualto "epoch") then
|
||||
{
|
||||
[] execVM "\q\addons\custom_server\SLS\SLS_init_epoch.sqf";
|
||||
call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init_epoch.sqf";
|
||||
};
|
||||
|
||||
if not (isNull ( configFile >> "CfgPatches" >> "exile_server" ) ) then
|
||||
if ((tolower blck_modType) isEqualto "exile") then
|
||||
{
|
||||
[] execVM "\q\addons\custom_server\SLS\SLS_init_exile.sqf";
|
||||
call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init_exile.sqf";
|
||||
};
|
||||
diag_log "[blckeagls] SLS System: Static loot crates ran successfully!";
|
||||
blck_SLSComplete = true;
|
||||
blck_SLSComplete = true;
|
||||
|
@ -12,14 +12,8 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_blck_WorldName"];
|
||||
|
||||
_blck_WorldName = toLower format ["%1", worldName];
|
||||
_blck_worldSize = worldSize;
|
||||
|
||||
diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",_blck_WorldName];
|
||||
|
||||
switch (_blck_WorldName) do
|
||||
diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",worldName];
|
||||
switch (toLower worldName) do
|
||||
{// These may need some adjustment - including a test for shore or water should help as well to avoid missions spawning on water.
|
||||
case "altis":{
|
||||
diag_log "[blckeagls] Altis-specific settings for Epoch loaded";
|
||||
@ -63,7 +57,5 @@ switch (_blck_WorldName) do
|
||||
case "takistan":{blck_mapCenter = [5500, 6500, 0];blck_mapRange = 5000;};
|
||||
case "lythium":{blck_mapCenter = [10000,10000,0];blck_mapRange = 8500;};
|
||||
case "malden":{blck_mapCenter = [6000,7000,0];blck_mapRange = 5500;};
|
||||
default {_blck_WorldName = "default";blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000};
|
||||
};
|
||||
|
||||
blck_worldSet = true;
|
||||
default {blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000};
|
||||
};
|
@ -10,26 +10,21 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
if (blck_modType isEqualTo "Epoch") then
|
||||
if ((tolower blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
_blckListPrior = blck_locationBlackList;
|
||||
private _config = configFile >> "CfgEpoch";
|
||||
private _configWorld = _config >> worldname;
|
||||
private _telePos = getArray(configFile >> "CfgEpoch" >> worldName >> "telePos" );
|
||||
//diag_log format["[blckeagls] _fnc_getTraderCities: _config = %1 | _configWorld = %2",_config,_configWorld];
|
||||
//diag_log format["[blckegle] _fnc_getTraderCities: count _telePos = %1 || _telepos = %2",count _telePos,_telePos];
|
||||
//if (true) exitWith {};
|
||||
{
|
||||
blck_locationBlackList pushback [_x select 3, 1000];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugON) then {diag_log format["[blckeagls] _fnc_getTraderCitiesEpoch:: -- >> Added epoch trader city location at %1", (_x select 3)];};
|
||||
#endif
|
||||
} foreach _telePos; // (getArray(_configWorld >> "telePos"));
|
||||
diag_log format["[blckeagls] blckListPrior = %1",_blckListPrior];
|
||||
diag_log format["[blckeagls] ] blck_locationBlackList = %1",blck_locationBlackList];
|
||||
} foreach _telePos;
|
||||
};
|
||||
|
||||
if (blck_modType isEqualTo "Exile") then
|
||||
if ((tolower blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then
|
||||
{
|
||||
|
@ -1,11 +1,4 @@
|
||||
/*
|
||||
AI Mission for Epoch and Exile Mods to Arma 3
|
||||
Credist to blckeagls who wrote the initial mission script for A3 Epoch
|
||||
To Narines for debugging that original version
|
||||
To cynwncler for many helpful comments along the way
|
||||
And mostly importantly,
|
||||
To Vampire, KiloSwiss, blckeagls, theFUCHS, lazylink, Mark311 and Buttface (Face) who wrote the pionering mission and roaming AI systems upon which this one is based and who's code is used with modification in some parts of this addon.
|
||||
|
||||
By Ghostrider-GRG-
|
||||
|
||||
--------------------------
|
||||
@ -15,46 +8,17 @@
|
||||
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
if (hasInterface) exitWith{};
|
||||
if (hasInterface || isServer) exitWith{};
|
||||
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
if !(isNil "blck_Initialized") exitWith{};
|
||||
private["_blck_loadingStartTime"];
|
||||
_blck_loadingStartTime = diag_tickTime;
|
||||
private _blck_loadingStartTime = diag_tickTime;
|
||||
#include "\q\addons\custom_server\init\build.sqf";
|
||||
diag_log format["[blckeagls] Loading Headless Client Version %2 Build Date %1",_blck_versionDate,_blck_version];
|
||||
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
|
||||
waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;};
|
||||
waitUntil{blck_variablesLoaded};
|
||||
blck_variablesLoaded = nil;
|
||||
//if !(blck_debugON) then {uiSleep 60;};
|
||||
|
||||
// compile functions
|
||||
//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf";
|
||||
waitUntil {(isNil "blck_functionsCompiled") isEqualTo false;};
|
||||
waitUntil{blck_functionsCompiled};
|
||||
blck_functionsCompiled = nil;
|
||||
diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel];
|
||||
//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_configs.sqf";
|
||||
//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
|
||||
diag_log format["[blckeagls] Loading Headless Client Version %2 | Build Date %1 | loaded in %4 seconds",_blck_versionDate,blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime];
|
||||
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs.sqf";
|
||||
waitUntil {(isNil "blck_configsLoaded") isEqualTo false;};
|
||||
waitUntil{blck_configsLoaded};
|
||||
blck_configsLoaded = nil;
|
||||
|
||||
// Load any user-defined specifications or overrides
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
|
||||
|
||||
#ifdef GRGserver
|
||||
diag_log "[blckeagls] Running GRG Version";
|
||||
#endif
|
||||
|
||||
switch (blck_simulationManager) do
|
||||
case 1: {diag_log "[blckeagls] dynamic simulation manager enabled"};
|
||||
case 2: {diag_log "[blckeagls] blckeagls simulation manager enabled"};
|
||||
case 0: {diag_log "[blckeagls] simulation management disabled"};
|
||||
};
|
||||
|
||||
diag_log format["[blckeagls] for HC version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType];
|
||||
[] spawn blck_fnc_HC_monitor;
|
||||
|
@ -10,42 +10,46 @@
|
||||
*/
|
||||
|
||||
if ( !(isServer) || hasInterface) exitWith{};
|
||||
if !(isNil "blck_Initialized") exitWith{};
|
||||
// find and set Mod
|
||||
blck_modType = if (!isNull (configFile >> "CfgPatches" >> "exile_server")) then {"Exile"} else {if (!isnull (configFile >> "CfgPatches" >> "a3_epoch_server")) then {"Epoch"} else {""}};
|
||||
publicVariable "blck_modType";
|
||||
|
||||
//#include "blck_defines.hpp";
|
||||
if ((tolower blck_modType) isEqualto "epoch") then {
|
||||
diag_log "[blckeagls] Waiting until EpochMod is ready...";
|
||||
waituntil {!isnil "EPOCH_SERVER_READY"};
|
||||
};
|
||||
if ((toLower blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
diag_log "[blckeagls] Waiting until ExileMod is ready ...";
|
||||
waitUntil {!isNil "PublicServerIsLoaded"};
|
||||
};
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
if !(isNil "blck_Initialized") exitWith{};
|
||||
private _blck_loadingStartTime = diag_tickTime;
|
||||
#include "\q\addons\custom_server\init\build.sqf";
|
||||
diag_log format["[blckeagls] Loading Server Mission System Version %2 Build Date %1",_blck_versionDate,_blck_version];
|
||||
diag_log format["[blckeagls] Loading Server Mission System Version"];
|
||||
|
||||
// compile functions
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf";
|
||||
waitUntil {(isNil "blck_functionsCompiled") isEqualTo false;};
|
||||
waitUntil{blck_functionsCompiled};
|
||||
blck_functionsCompiled = nil;
|
||||
diag_log format["[blckeagls] functions compiled at %1",diag_tickTime];
|
||||
diag_log format["[blckeagls] functions compiled in %1 seconds",diag_tickTime-_blck_loadingStartTime];
|
||||
|
||||
blck_modType = call blck_fnc_getModType;
|
||||
publicVariable "blck_modType";
|
||||
|
||||
execVM "\q\addons\custom_server\Configs\blck_configs.sqf";
|
||||
waitUntil {(isNil "blck_configsLoaded") isEqualTo false;};
|
||||
waitUntil{blck_configsLoaded};
|
||||
blck_configsLoaded = nil;
|
||||
call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf";
|
||||
waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn")};
|
||||
diag_log format["[blckeagls] blck_useHC = %1 | blck_simulationManager = %2 ",blck_useHC,blck_simulationManager];
|
||||
diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel];
|
||||
|
||||
// Load any user-defined specifications or overrides
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
|
||||
diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime];
|
||||
|
||||
//diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime];
|
||||
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
|
||||
waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;};
|
||||
waitUntil{blck_variablesLoaded};
|
||||
blck_variablesLoaded = nil;
|
||||
diag_log format["[blckeagls] blck_variables loaded at %1",diag_tickTime];
|
||||
|
||||
if (blck_simulationManager == 2) then
|
||||
{
|
||||
"Group" setDynamicSimulationDistance 1800;
|
||||
enableDynamicSimulationSystem true;
|
||||
};
|
||||
|
||||
// spawn map addons to give the server time to position them before spawning in crates etc.
|
||||
if (blck_spawnMapAddons) then
|
||||
@ -54,21 +58,19 @@ if (blck_spawnMapAddons) then
|
||||
}else{
|
||||
diag_log "[blckeagls] Map Addons disabled";
|
||||
};
|
||||
blck_spawnMapAddons = nil;
|
||||
|
||||
|
||||
// find and set Mapcenter and size
|
||||
diag_log "[blckeagls] Loading Map-specific information";
|
||||
execVM "\q\addons\custom_server\init\GMS_fnc_findWorld.sqf";
|
||||
waitUntil {(isNil "blck_worldSet") isEqualTo false;};
|
||||
waitUntil{blck_worldSet};
|
||||
blck_worldSet = nil;
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\init\GMS_fnc_findWorld.sqf";
|
||||
|
||||
// set up the lists of available missions for each mission category
|
||||
diag_log "[blckeagls] Loading Mission Lists";
|
||||
//diag_log "[blckeagls] Loading Mission Lists";
|
||||
#include "\q\addons\custom_server\Missions\GMS_missionLists.sqf";
|
||||
diag_log "[blckeagls] Mission Lists Loaded Successfully";
|
||||
|
||||
[] execVM "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf";
|
||||
[] execVM "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions.
|
||||
call compile preprocessfilelinenumbers "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf";
|
||||
call compile preprocessfilelinenumbers "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions.
|
||||
diag_log "[blckeagls] blck_init_server: ->> Static and UMS systems initialized.";
|
||||
|
||||
switch (blck_simulationManager) do
|
||||
@ -78,33 +80,28 @@ switch (blck_simulationManager) do
|
||||
case 0: {diag_log "[blckeagls] simulation management disabled"};
|
||||
};
|
||||
|
||||
diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType];
|
||||
diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]; //,blck_modType];
|
||||
diag_log format["blckeagls] waiting for players to join ---- >>>>"];
|
||||
|
||||
if !(blck_debugON || (blck_debugLevel isEqualTo 0)) then
|
||||
if ( !(blck_debugON) && (blck_debugLevel isEqualTo 0)) then
|
||||
{
|
||||
waitUntil{{isPlayer _x}count allPlayers > 0};
|
||||
diag_log "[blckeagls] Player Connected, spawning missions";
|
||||
} else {
|
||||
diag_log "[blckeagls] spawning Missions";
|
||||
diag_log "[blckeagls] Debug mode ON, proceding without players";
|
||||
};
|
||||
|
||||
if (blck_spawnStaticLootCrates) then
|
||||
{
|
||||
// Start the static loot crate spawner
|
||||
diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Started";
|
||||
[] execVM "\q\addons\custom_server\SLS\SLS_init.sqf";
|
||||
waitUntil {(isNil "blck_SLSComplete") isEqualTo false;};
|
||||
waitUntil {blck_SLSComplete};
|
||||
blck_SLSComplete = nil;
|
||||
call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init.sqf";
|
||||
diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Done";
|
||||
}else{
|
||||
diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner disabled";
|
||||
};
|
||||
|
||||
if (true /*blck_blacklistTraderCities*/) then
|
||||
if (blck_blacklistTraderCities) then
|
||||
{
|
||||
execVM "\q\addons\custom_server\init\GMS_fnc_getTraderCites.sqf";
|
||||
call compile preprocessfilelinenumbers "\q\addons\custom_server\init\GMS_fnc_getTraderCites.sqf";
|
||||
};
|
||||
|
||||
//Start the mission timers
|
||||
|
@ -1,14 +0,0 @@
|
||||
|
||||
|
||||
private["_startTime"];
|
||||
_startTime = diag_tickTime;
|
||||
[] spawn {
|
||||
while {true} do
|
||||
{
|
||||
blck_serverFPS = diag_FPS;
|
||||
publicVariable "blck_serverFPS";
|
||||
uiSleep 3;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
private ["_version","_versionDate"];
|
||||
blck_version = "6.86 Build 156";
|
||||
blck_version = format["6.88 Build %1",blck_buildNumber];
|
||||
_blck_version = blck_version;
|
||||
_blck_versionDate = "10-22-18 1:30 AM";
|
||||
_blck_versionDate = "12-1-18 8:00 AM";
|
||||
blck_pvs_version = _blck_version;
|
||||
publicVariable blck_pvs_version;
|
||||
|
18
@GMS/addons/custom_server/init/testCrateLoading.sqf
Normal file
18
@GMS/addons/custom_server/init/testCrateLoading.sqf
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
uiSleep 5;
|
||||
diag_log format["<< ---- START TEST Crate Loading ---- >>"];
|
||||
_coords = [12000,12000,0];
|
||||
//_loot = blck_supportLoot; //[causes problems] blck_highPoweredLoot; // [causes problems] blck_contructionLoot ; //blck_BoxLoot_Orange;
|
||||
_loot = blck_supportLoot;
|
||||
_lootCounts = [100,100,100,100,100,100];
|
||||
_aiDifficultyLevel = "Orange";
|
||||
for "_i" from 1 to 100 do
|
||||
{
|
||||
diag_log format["testCrateLoading: pass %1",_i];
|
||||
_crateType = selectRandom blck_crateTypes;
|
||||
_crate = [_coords,_crateType] call blck_fnc_spawnCrate;
|
||||
[_crate,_loot,_lootCounts] call blck_fnc_fillBoxes;
|
||||
uiSleep 5;
|
||||
diag_log format["testCrateLoading: crate inventory = %1",getItemCargo _crate];
|
||||
};
|
||||
|
@ -5,9 +5,11 @@ Read the faq and config files for specific information.
|
||||
Some general tips are:
|
||||
|
||||
First, create a backup of all files.
|
||||
|
||||
Second, if your rpt log shows errors after a change, revert to the defaults and try again.
|
||||
Third, settings that determine how messages are displayed are your mission file (i.e, epoch.Altis.pbo) in debug\blckClient.sqf.
|
||||
Here you can use dynamic messages, hints, or titleText/cutText to display your messages.
|
||||
|
||||
Third, settings that determine how messages are displayed can be configured in your mission file (i.e, epoch.Altis.pbo) in debug\blckClient.sqf.
|
||||
Here you can use dynamic messages, hints, Toasts or titleText/cutText to display your messages.
|
||||
|
||||
Lastly, settings for the missions themselves have been moved to @epochhive\custom_server\configs.
|
||||
There are two different config files, one for exile and a second for epoch.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user