Version 6.82 Build 133
This commit is contained in:
parent
8fcac0f0cd
commit
597f3056bf
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
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";
|
||||||
|
|
||||||
|
params ["_AIList",["_returnMode",0]];
|
||||||
|
private["_alive","_total","_return"];
|
||||||
|
|
||||||
|
_total = count _AIList;
|
||||||
|
_alive = {alive _x} count _AIList;
|
||||||
|
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
|
||||||
|
|
||||||
|
|
@ -16,13 +16,13 @@
|
|||||||
diag_log "running GRGserver version of _fnc_mainThread";
|
diag_log "running GRGserver version of _fnc_mainThread";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private["_modType","_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"];
|
private["_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"];
|
||||||
_timer1sec = diag_tickTime;
|
_timer1sec = diag_tickTime;
|
||||||
_timer5sec = diag_tickTime;
|
_timer5sec = diag_tickTime;
|
||||||
_timer20sec = diag_tickTime;
|
_timer20sec = diag_tickTime;
|
||||||
_timer1min = diag_tickTime;
|
_timer1min = diag_tickTime;
|
||||||
_timer5min = diag_tickTime;
|
_timer5min = diag_tickTime;
|
||||||
_modType = [] call blck_fnc_getModType;
|
|
||||||
while {true} do
|
while {true} do
|
||||||
{
|
{
|
||||||
uiSleep 1;
|
uiSleep 1;
|
||||||
|
@ -11,11 +11,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
params["_pos"];
|
params["_pos"];
|
||||||
private["_nearestGroup","_modType"];
|
private["_nearestGroup"];
|
||||||
|
|
||||||
_modType = call blck_fnc_getModType;
|
if (blck_modType == "Epoch") then {_units = (_pos) nearEntities ["I_Soldier_EPOCH", 100]};
|
||||||
if (_modType == "Epoch") then {_units = (_pos) nearEntities ["I_Soldier_EPOCH", 100]};
|
if (blck_modType == "Exile") then {_units = (_pos) nearEntities ["i_g_soldier_unarmed_f", 100]};
|
||||||
if (_modType == "Exile") then {_units = (_pos) nearEntities ["i_g_soldier_unarmed_f", 100]};
|
|
||||||
_nearestGroup = group (_units select 0);
|
_nearestGroup = group (_units select 0);
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -156,10 +156,9 @@ _fn_monitorGroupWaypoints = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
_fn_simulationMonitor = {
|
_fn_simulationMonitor = {
|
||||||
private["_playerType","_modType","_players"];
|
private["_playerType","_players"];
|
||||||
_modType = call blck_fnc_getModType;
|
|
||||||
//diag_log format["_fn_simulationMonitor"" _modType = %1",_modType];
|
if (blck_modType isEqualTo "Exile") then
|
||||||
if (_modType isEqualTo "Exile") then
|
|
||||||
{
|
{
|
||||||
_playerType = ["Exile_Unit_Player"];
|
_playerType = ["Exile_Unit_Player"];
|
||||||
}else{
|
}else{
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Dynamic Loot Crate Spaw System for Exile Mod for Arma 3
|
||||||
|
by
|
||||||
|
Ghostrider [GRG]
|
||||||
|
for ghostridergaming
|
||||||
|
4-6-16
|
||||||
|
|
||||||
|
Spawn a crate on land or in the air
|
||||||
|
--------------------------
|
||||||
|
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","_light","_beacon","_start","_maxHeight","_bbr","_p1","_p2"];
|
||||||
|
params["_crate"];
|
||||||
|
//_crate = _this select 0;
|
||||||
|
_start = diag_tickTime;
|
||||||
|
// If night, attach a chemlight
|
||||||
|
_signal = "SmokeShellOrange";
|
||||||
|
if (sunOrMoon < 0.2) then
|
||||||
|
{
|
||||||
|
_signal = "FlareYellow_F";
|
||||||
|
};
|
||||||
|
|
||||||
|
_bbr = boundingBoxReal _crate;
|
||||||
|
_p1 = _bbr select 0;
|
||||||
|
_p2 = _bbr select 1;
|
||||||
|
_maxHeight = abs ((_p2 select 2) - (_p1 select 2));
|
||||||
|
|
||||||
|
while {(diag_tickTime - _start) < 3*60} do
|
||||||
|
{
|
||||||
|
_beacon = _signal createVehicle getPosATL _crate;
|
||||||
|
_beacon setPos (getPos _crate);
|
||||||
|
_beacon attachTo [_crate,[0,0,(_maxHeight + 0.05)]];
|
||||||
|
uiSleep 30;
|
||||||
|
deleteVehicle _beacon;
|
||||||
|
};
|
||||||
|
true
|
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Dynamic Loot Crate Spaw System for Exile Mod for Arma 3
|
||||||
|
by
|
||||||
|
Ghostrider [GRG]
|
||||||
|
for ghostridergaming
|
||||||
|
4-6-16
|
||||||
|
|
||||||
|
Spawn a crate on land or in the air
|
||||||
|
--------------------------
|
||||||
|
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","_light","_beacon","_start","_maxHeight","_bbr","_p1","_p2"];
|
||||||
|
params["_crate"];
|
||||||
|
//_crate = _this select 0;
|
||||||
|
_start = diag_tickTime;
|
||||||
|
// If night, attach a chemlight
|
||||||
|
_signal = "SmokeShellOrange";
|
||||||
|
if (sunOrMoon < 0.2) then
|
||||||
|
{
|
||||||
|
_signal = "FlareYellow_F";
|
||||||
|
};
|
||||||
|
|
||||||
|
_bbr = boundingBoxReal _crate;
|
||||||
|
_p1 = _bbr select 0;
|
||||||
|
_p2 = _bbr select 1;
|
||||||
|
_maxHeight = abs ((_p2 select 2) - (_p1 select 2));
|
||||||
|
|
||||||
|
while {(diag_tickTime - _start) < 3*60} do
|
||||||
|
{
|
||||||
|
_beacon = _signal createVehicle getPosATL _crate;
|
||||||
|
_beacon setPos (getPos _crate);
|
||||||
|
_beacon attachTo [_crate,[0,0,(_maxHeight + 0.05)]];
|
||||||
|
uiSleep 30;
|
||||||
|
deleteVehicle _beacon;
|
||||||
|
};
|
||||||
|
true
|
@ -16,12 +16,12 @@ private["_cleanupAliveAITimer","_cleanupCompositionTimer","_isScubaMission"];
|
|||||||
|
|
||||||
_fn_missionCleanup = {
|
_fn_missionCleanup = {
|
||||||
params["_mines","_objects","_blck_AllMissionAI","_mission","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]];
|
params["_mines","_objects","_blck_AllMissionAI","_mission","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]];
|
||||||
diag_log format["_fn_missionCleanup: blck_missionsRunning Started at %1", blck_missionsRunning];
|
//diag_log format["_fn_missionCleanup: blck_missionsRunning Started at %1", blck_missionsRunning];
|
||||||
[_mines] call blck_fnc_clearMines;
|
[_mines] call blck_fnc_clearMines;
|
||||||
[_objects, _cleanupCompositionTimer] call blck_fnc_addObjToQue;
|
[_objects, _cleanupCompositionTimer] call blck_fnc_addObjToQue;
|
||||||
[_blck_AllMissionAI, (_cleanupAliveAITimer)] call blck_fnc_addLiveAItoQue;
|
[_blck_AllMissionAI, (_cleanupAliveAITimer)] call blck_fnc_addLiveAItoQue;
|
||||||
blck_missionsRunning = blck_missionsRunning - 1;
|
blck_missionsRunning = blck_missionsRunning - 1;
|
||||||
diag_log format["_fn_missionCleanup: blck_missionsRunning reset to %1", blck_missionsRunning];
|
//diag_log format["_fn_missionCleanup: blck_missionsRunning reset to %1", blck_missionsRunning];
|
||||||
blck_ActiveMissionCoords = blck_ActiveMissionCoords - [ _coords];
|
blck_ActiveMissionCoords = blck_ActiveMissionCoords - [ _coords];
|
||||||
if !(_isScubaMission) then
|
if !(_isScubaMission) then
|
||||||
{
|
{
|
||||||
@ -82,7 +82,7 @@ _fn_missionCleanup = {
|
|||||||
};
|
};
|
||||||
if (_endCondition == 0) then // Normal Mission End State
|
if (_endCondition == 0) then // Normal Mission End State
|
||||||
{
|
{
|
||||||
diag_log format["_fnc_endMission: mission end condition == 0 | setting all timers to 0"];
|
//diag_log format["_fnc_endMission: mission end condition == 0 | setting all timers to 0"];
|
||||||
private["_cleanupAliveAITimer","_cleanupCompositionTimer"];
|
private["_cleanupAliveAITimer","_cleanupCompositionTimer"];
|
||||||
if (blck_useSignalEnd) then
|
if (blck_useSignalEnd) then
|
||||||
{
|
{
|
||||||
|
@ -462,7 +462,7 @@ switch (_endCondition) do
|
|||||||
case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;};
|
case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;};
|
||||||
case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;};
|
case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;};
|
||||||
};
|
};
|
||||||
|
//diag_log format["_fnc_missionSpawner: _secureAsset = %1",_secureAsset];
|
||||||
if (blck_showCountAliveAI) then
|
if (blck_showCountAliveAI) then
|
||||||
{
|
{
|
||||||
if !(_marker isEqualTo "") then
|
if !(_marker isEqualTo "") then
|
||||||
@ -475,7 +475,6 @@ if (blck_showCountAliveAI) then
|
|||||||
_crateStolen = false;
|
_crateStolen = false;
|
||||||
_locations = [_coords];
|
_locations = [_coords];
|
||||||
private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
|
private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
|
||||||
//diag_log format["_fnc_missionSpawner (477): _spawnPara = %1 | _chancePara = %2",_spawnPara,_chancePara];
|
|
||||||
{
|
{
|
||||||
_locations pushback (getPos _x);
|
_locations pushback (getPos _x);
|
||||||
_x setVariable["crateSpawnPos", (getPos _x)];
|
_x setVariable["crateSpawnPos", (getPos _x)];
|
||||||
@ -519,7 +518,19 @@ while {_missionComplete isEqualTo -1} do
|
|||||||
_missionComplete = 1
|
_missionComplete = 1
|
||||||
} else {
|
} else {
|
||||||
//if (_assetSpawned getVariable["blck_AIState",0] > 0 && (({alive _x} count _blck_AllMissionAI) isEqualTo 1)) then {_missionComplete = 1};
|
//if (_assetSpawned getVariable["blck_AIState",0] > 0 && (({alive _x} count _blck_AllMissionAI) isEqualTo 1)) then {_missionComplete = 1};
|
||||||
if ( ([_blck_AllMissionAI] call blck_fnc_countAliveAI < 0.15) && (_assetSpawned getVariable["blck_AIState",0] > 0) ) then {_missionComplete = 1};
|
_result = [_blck_AllMissionAI, 1] call blck_fnc_countAliveAI;
|
||||||
|
// _result is an array of [no alive, total spawned];
|
||||||
|
//private _noneAlive = if (_result select 0 isEqualTo 0) then {true} else {false};
|
||||||
|
//private _aiCountBelowThreshold = if ((_result select 0)/(_result select 1) < _thresholdPercentageKilled) then {true} else {false};
|
||||||
|
//diag_log format["_fnc_missionSpawner: _noneAlive = %1 | _result = %2 | PercentageKilled = %3",_noneAlive,_result,(_result select 0)/(_result select 1)];
|
||||||
|
if (((_result select 0)/(_result select 1)) < 0.18) then
|
||||||
|
{
|
||||||
|
if (_assetSpawned getVariable["blck_unguarded",0] isEqualTo 0) then {_assetSpawned setVariable["blck_unguarded",1,true]};
|
||||||
|
if ((_assetSpawned getVariable["blck_AIState",0] > 0)) then {
|
||||||
|
_missionComplete = 1:
|
||||||
|
_assetSpawned allowdamage false;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
if (_spawnPara) then
|
if (_spawnPara) then
|
||||||
@ -612,18 +623,18 @@ if (blck_showCountAliveAI) then
|
|||||||
}forEach blck_missionMarkers;
|
}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]];
|
//diag_log format["_fnc_missionSpawner (557) Build 123: _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]];
|
||||||
|
|
||||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
||||||
{
|
{
|
||||||
diag_log "Processing Mission End for Hostage Rescue";
|
//diag_log "Processing Mission End for Hostage Rescue";
|
||||||
_assetSpawned setCaptive false;
|
_assetSpawned setCaptive false;
|
||||||
_assetSpawned setVariable["GMSAnimations",[""],true];
|
_assetSpawned setVariable["GMSAnimations",[""],true];
|
||||||
[_assetSpawned,""] remoteExec["switchMove",-2];;
|
[_assetSpawned,""] remoteExec["switchMove",-2];;
|
||||||
uiSleep 0.1;
|
uiSleep 0.1;
|
||||||
_assetSpawned enableAI "ALL";
|
_assetSpawned enableAI "ALL";
|
||||||
private _newPos = (getPos _assetSpawned) getPos [1000, random(360)];
|
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];
|
//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) setCurrentWaypoint [group _assetSpawned, 0];
|
||||||
[group _assetSpawned,0] setWaypointPosition [_newPos,0];
|
[group _assetSpawned,0] setWaypointPosition [_newPos,0];
|
||||||
[group _assetSpawned,0] setWaypointType "MOVE";
|
[group _assetSpawned,0] setWaypointType "MOVE";
|
||||||
@ -631,19 +642,19 @@ if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
|||||||
|
|
||||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 2) 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",""]];
|
//diag_log format["Processing Mission End for Arrest of Leader %1 with endAnimation %2",_assetSpawned,_assetSpawned getVariable["endAnimation",""]];
|
||||||
[_assetSpawned,""] remoteExec["switchMove",-2];
|
[_assetSpawned,""] remoteExec["switchMove",-2];
|
||||||
_assetSpawned setVariable["GMSAnimations",_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]],true];
|
_assetSpawned setVariable["GMSAnimations",_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]],true];
|
||||||
[_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]])] remoteExec["switchMove",-2];
|
[_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]])] remoteExec["switchMove",-2];
|
||||||
};
|
};
|
||||||
|
|
||||||
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]];
|
//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]];
|
||||||
|
|
||||||
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 0] call blck_fnc_endMission;
|
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 0] call blck_fnc_endMission;
|
||||||
|
|
||||||
#ifdef blck_debugMode
|
#ifdef blck_debugMode
|
||||||
if (blck_debugLevel > 2) then {diag_log format["[blckeagls] missionSpawner:: (507)end of mission: blck_fnc_endMission has returned control to _fnc_missionSpawner"]};
|
if (blck_debugLevel > 2) then {diag_log format["[blckeagls] missionSpawner:: (507)end of mission: blck_fnc_endMission has returned control to _fnc_missionSpawner"]};
|
||||||
#endif
|
#endif
|
||||||
diag_log format["_fnc_missionSpawner (643) Mission Completed | _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
//diag_log format["_fnc_missionSpawner (643) Mission Completed | _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||||
blck_missionsRun = blck_missionsRun + 1;
|
blck_missionsRun = blck_missionsRun + 1;
|
||||||
diag_log format["_fnc_missionSpawner (644): Total Dyanamic Land and UMS Run = %1", blck_missionsRun];
|
diag_log format["_fnc_missionSpawner (644): Total Dyanamic Land and UMS Run = %1", blck_missionsRun];
|
@ -20,5 +20,5 @@ _crate setVariable["chute",_chute];
|
|||||||
_chute setPos [getPos _chute select 0, getPos _chute select 1, _dropHeight];
|
_chute setPos [getPos _chute select 0, getPos _chute select 1, _dropHeight];
|
||||||
_crate setPos (getPos _chute);
|
_crate setPos (getPos _chute);
|
||||||
_crate attachTo [_chute, [0,0,0]];
|
_crate attachTo [_chute, [0,0,0]];
|
||||||
if (_crateVisualMarker) then {[_crate] spawn fn_DLS_visualMarker;};
|
if (_crateVisualMarker) then {[_crate] spawn blck_fnc_crateMarker};
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ if (count _readyToSpawnQue > 0) then
|
|||||||
//diag_log format["_fnc_spawnPendingMissions: _missionDifficulty %1",_missionDifficulty];
|
//diag_log format["_fnc_spawnPendingMissions: _missionDifficulty %1",_missionDifficulty];
|
||||||
//diag_log format["_fnc_spawnPendingMissions: _compiledMission %1",_compiledMission];
|
//diag_log format["_fnc_spawnPendingMissions: _compiledMission %1",_compiledMission];
|
||||||
[_coords,_missionMarker,_missionDifficulty] spawn _compiledMission;
|
[_coords,_missionMarker,_missionDifficulty] spawn _compiledMission;
|
||||||
diag_log format["_fnc_spawnPendingMissions: blck_missionsRunning = %1", blck_missionsRunning];
|
//diag_log format["_fnc_spawnPendingMissions: blck_missionsRunning = %1", blck_missionsRunning];
|
||||||
};
|
};
|
||||||
|
|
||||||
true
|
true
|
||||||
|
@ -1,200 +0,0 @@
|
|||||||
/*
|
|
||||||
blck_fnc_spawnUnit
|
|
||||||
Original Code by blckeagls
|
|
||||||
Modified by Ghostrider
|
|
||||||
|
|
||||||
--------------------------
|
|
||||||
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 ["_i","_weap","_skin","_unit","_skillLevel","_aiSkills","_launcherRound","_index","_ammoChoices","_modType","_optics","_pointers","_muzzles","_underbarrel","_legalOptics"];
|
|
||||||
params["_pos","_aiGroup",["_skillLevel","red"],["_uniforms", blck_SkinList],["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_Launcher","none"],["_weaponList",[]],["_sideArms",[]],["_scuba",false]];
|
|
||||||
|
|
||||||
#ifdef blck_debugMode
|
|
||||||
if (blck_debugLevel >= 2) then
|
|
||||||
{
|
|
||||||
private _params = ["_pos","_aiGroup","_skillLevel","_uniforms","_headGear","_vests","_backpacks","_Launcher","_weaponList","_sideArms","_scuba"]; //"_weaponList", "_Launcher"
|
|
||||||
{
|
|
||||||
diag_log format["_fnc_spawnUnit::-> _this select %1 (%2) = %3",_forEachIndex, _params select _forEachIndex, _this select _forEachIndex];
|
|
||||||
}forEach _this;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
if (isNull _aiGroup) exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnUnit"};
|
|
||||||
|
|
||||||
_unit = ObjNull;
|
|
||||||
_modType = call blck_fnc_getModType;
|
|
||||||
if (_modType isEqualTo "Epoch") then
|
|
||||||
{
|
|
||||||
"I_Soldier_EPOCH" createUnit [[0,0,0], _aiGroup, "_unit = this", blck_baseSkill, "COLONEL"];
|
|
||||||
_unit setVariable ["LAST_CHECK",28800,true];
|
|
||||||
switch(_skillLevel) do
|
|
||||||
{
|
|
||||||
case "blue":{_unit setVariable["Crypto",2 + floor(random(blck_maxMoneyBlue)),true];};
|
|
||||||
case "red":{_unit setVariable["Crypto",4 + floor(random(blck_maxMoneyRed)),true];};
|
|
||||||
case "green":{_unit setVariable["Crypto",6 + floor(random(blck_maxMoneyGreen)),true];};
|
|
||||||
case "orange":{_unit setVariable["Crypto",8 + floor(random(blck_maxMoneyOrange)),true];};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
if (_modType isEqualTo "Exile") then
|
|
||||||
{
|
|
||||||
"i_g_soldier_unarmed_f" createUnit [[0,0,0], _aiGroup, "_unit = this", blck_baseSkill, "COLONEL"];
|
|
||||||
switch(_skillLevel) do
|
|
||||||
{
|
|
||||||
case "blue":{_unit setVariable["ExileMoney",2 + floor(random(blck_maxMoneyBlue)),true];};
|
|
||||||
case "red":{_unit setVariable["ExileMoney",4 + floor(random(blck_maxMoneyRed)),true];};
|
|
||||||
case "green":{_unit setVariable["ExileMoney",6 + floor(random(blck_maxMoneyGreen)),true];};
|
|
||||||
case "orange":{_unit setVariable["ExileMoney",8 + floor(random(blck_maxMoneyOrange)),true];};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
// findEmptyPosition [minDistance, maxDistance, vehicleType]
|
|
||||||
_unit setPos ( _pos findEmptyPosition [0.1,3,(typeOf _unit)]);
|
|
||||||
#ifdef blck_debugMode
|
|
||||||
if (blck_debugLevel >= 2) then
|
|
||||||
{
|
|
||||||
diag_log format["_fnc_spawnUnit::-->> unit spawned = %1",_unit];
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
[_unit] call blck_fnc_removeGear;
|
|
||||||
if (_scuba) then
|
|
||||||
{
|
|
||||||
_unit swiminDepth (_pos select 2);
|
|
||||||
#ifdef blck_debugMode
|
|
||||||
if (blck_debugLevel >= 2) then
|
|
||||||
{
|
|
||||||
diag_log format["_fnc_spawnUnit:: -- >> unit depth = %1 and underwater for unit = %2",_pos select 2, underwater _unit];
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
_skin = "";
|
|
||||||
_counter = 1;
|
|
||||||
//diag_log format["_fnc_spawnUnit: _uniforms = %1",_uniforms];
|
|
||||||
while {_skin isEqualTo "" && _counter < 10} do
|
|
||||||
{
|
|
||||||
_unit forceAddUniform (selectRandom _uniforms);
|
|
||||||
_skin = uniform _unit;
|
|
||||||
#ifdef blck_debugMode
|
|
||||||
if (blck_debugLevel > 2) then
|
|
||||||
{
|
|
||||||
diag_log format["_fnc_spawnUnit::-->> for unit _unit % uniform is %2",_unit, uniform _unit];
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
_counter =+1;
|
|
||||||
};
|
|
||||||
//Sets AI Tactics
|
|
||||||
_unit enableAI "ALL";
|
|
||||||
_unit allowDammage true;
|
|
||||||
_unit setBehaviour "COMBAT";
|
|
||||||
_unit setunitpos "AUTO";
|
|
||||||
|
|
||||||
if !(_headGear isEqualTo []) then
|
|
||||||
{
|
|
||||||
_unit addHeadgear (selectRandom _headGear);
|
|
||||||
//diag_log format["Headgear for unit %1 = %2",_unit, headgear _unit];
|
|
||||||
};
|
|
||||||
if !(_vests isEqualTo []) then
|
|
||||||
{
|
|
||||||
_unit addVest (selectRandom _vests);
|
|
||||||
//diag_log format["Vest for unit %1 = %2",_unit, vest _unit];
|
|
||||||
};
|
|
||||||
|
|
||||||
if (_weaponList isEqualTo []) then {_weaponList = call blck_fnc_selectAILoadout};
|
|
||||||
_weap = selectRandom _weaponList;
|
|
||||||
_unit addWeaponGlobal _weap;
|
|
||||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
|
||||||
_optics = getArray (configfile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
|
|
||||||
_pointers = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
|
|
||||||
_muzzles = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
|
|
||||||
_underbarrel = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
|
|
||||||
_legalOptics = _optics - blck_blacklistedOptics;
|
|
||||||
|
|
||||||
_unit addMagazines [selectRandom _ammoChoices, 3];
|
|
||||||
|
|
||||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _muzzles)};
|
|
||||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _legalOptics)};
|
|
||||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _pointers)};
|
|
||||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _muzzles)};
|
|
||||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _underbarrel)};
|
|
||||||
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then
|
|
||||||
{
|
|
||||||
_unit addMagazine "1Rnd_HE_Grenade_shell";
|
|
||||||
};
|
|
||||||
|
|
||||||
if !(_sideArms isEqualTo []) then
|
|
||||||
{
|
|
||||||
_weap = selectRandom _sideArms;
|
|
||||||
//diag_log format["[spawnUnit.sqf] _weap os %1",_weap];
|
|
||||||
_unit addWeaponGlobal _weap;
|
|
||||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
|
||||||
_unit addMagazines [selectRandom _ammoChoices, 2];
|
|
||||||
};
|
|
||||||
for "_i" from 1 to (1+floor(random(4))) do
|
|
||||||
{
|
|
||||||
_unit addItem (selectRandom blck_ConsumableItems);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add First Aid or Grenade 50% of the time
|
|
||||||
if (round(random 10) <= 5) then
|
|
||||||
{
|
|
||||||
//diag_log format["spawnUnit.sqf] -- Item is %1", _item];
|
|
||||||
_unit addItem selectRandom blck_specialItems;
|
|
||||||
};
|
|
||||||
//diag_log format["_spawnUnit: _Launcher = %1",_Launcher];
|
|
||||||
if ( !(_Launcher isEqualTo "none") && !(_backpacks isEqualTo [])) then
|
|
||||||
{
|
|
||||||
_unit addWeaponGlobal _Launcher;
|
|
||||||
_unit addBackpack (selectRandom _backpacks);
|
|
||||||
for "_i" from 1 to 3 do
|
|
||||||
{
|
|
||||||
_unit addItemToBackpack (getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines") select 0); // call BIS_fnc_selectRandom;
|
|
||||||
};
|
|
||||||
_unit setVariable["Launcher",_launcher,true];
|
|
||||||
} else {
|
|
||||||
if ( random (1) < blck_chanceBackpack && !(_backpacks isEqualTo [])) then
|
|
||||||
{
|
|
||||||
_unit addBackpack selectRandom _backpacks;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
if(sunOrMoon < 0.2 && blck_useNVG)then
|
|
||||||
{
|
|
||||||
_unit addWeapon selectRandom blck_NVG;
|
|
||||||
_unit setVariable ["hasNVG", true,true];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_unit setVariable ["hasNVG", false,true];
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef blck_debugMode
|
|
||||||
if (blck_debugLevel > 2) then
|
|
||||||
{
|
|
||||||
diag_log format["_fnc_spawnUnit:: --> unit loadout = %1", getUnitLoadout _unit];
|
|
||||||
};
|
|
||||||
#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;}];
|
|
||||||
|
|
||||||
switch (_skillLevel) do
|
|
||||||
{
|
|
||||||
case "blue": {_index = 0;_aiSkills = blck_SkillsBlue;};
|
|
||||||
case "red": {_index = 1;_aiSkills = blck_SkillsRed;};
|
|
||||||
case "green": {_index = 2;_aiSkills = blck_SkillsGreen;};
|
|
||||||
case "orange": {_index = 3;_aiSkills = blck_SkillsOrange;};
|
|
||||||
default {_index = 0;_aiSkills = blck_SkillsBlue;};
|
|
||||||
};
|
|
||||||
|
|
||||||
[_unit,_aiSkills] call blck_fnc_setSkill;
|
|
||||||
_unit setVariable ["alertDist",blck_AIAlertDistance select _index,true];
|
|
||||||
_unit setVariable ["intelligence",blck_AIIntelligence select _index,true];
|
|
||||||
_unit setVariable ["GMS_AI",true,true];
|
|
||||||
|
|
||||||
_unit
|
|
||||||
|
|
||||||
|
|
@ -71,10 +71,13 @@ blck_fnc_spawnMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_s
|
|||||||
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_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_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission.
|
||||||
blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf";
|
blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf";
|
||||||
blck_fnc_missionAIareDead = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionAIareDead.sqf";
|
//blck_fnc_missionAIareDead = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionAIareDead.sqf";
|
||||||
|
blck_fnc_countAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_countAliveAI.sqf";
|
||||||
blck_fnc_paraDropObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.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_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_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_crateMapMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMapMarker.sqf";
|
||||||
|
|
||||||
// Group-related functions
|
// Group-related functions
|
||||||
blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units]
|
blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units]
|
||||||
|
@ -193,13 +193,8 @@
|
|||||||
// Enable / Disable Missions
|
// Enable / Disable Missions
|
||||||
////////////////////
|
////////////////////
|
||||||
|
|
||||||
// Maximum number of missions shown on the map at any one time.
|
|
||||||
#ifdef GRGserver
|
|
||||||
blck_maxSpawnedMissions = 15;
|
|
||||||
#else
|
|
||||||
// Change this value to reduce the number of spawned missions at any one time.
|
// Change this value to reduce the number of spawned missions at any one time.
|
||||||
blck_maxSpawnedMissions = 4;
|
blck_maxSpawnedMissions = 4;
|
||||||
#endif
|
|
||||||
|
|
||||||
//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.
|
//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_enableOrangeMissions = 1;
|
||||||
@ -208,12 +203,6 @@
|
|||||||
blck_enableBlueMissions = 2;
|
blck_enableBlueMissions = 2;
|
||||||
blck_numberUnderwaterDynamicMissions = 3; // Values from -1 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
blck_numberUnderwaterDynamicMissions = 3; // Values from -1 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||||
|
|
||||||
#ifdef GRGserver
|
|
||||||
blck_enableHunterMissions = 1;
|
|
||||||
blck_enableScoutsMissions = 1;
|
|
||||||
blck_maxcrashsites = 4;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
// MISSION TIMERS
|
// MISSION TIMERS
|
||||||
////////////////////
|
////////////////////
|
||||||
@ -224,12 +213,6 @@
|
|||||||
blck_TMin_Blue = 120;
|
blck_TMin_Blue = 120;
|
||||||
blck_TMin_Red = 150;
|
blck_TMin_Red = 150;
|
||||||
blck_TMin_UMS = 180;
|
blck_TMin_UMS = 180;
|
||||||
#ifdef GRGserver
|
|
||||||
blck_TMin_Hunter = 120;
|
|
||||||
blck_TMin_Scouts = 115;
|
|
||||||
blck_TMin_Crashes = 115;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Maximum Spawn time between missions in seconds
|
//Maximum Spawn time between missions in seconds
|
||||||
blck_TMax_Orange = 360;
|
blck_TMax_Orange = 360;
|
||||||
@ -237,11 +220,6 @@
|
|||||||
blck_TMax_Blue = 200;
|
blck_TMax_Blue = 200;
|
||||||
blck_TMax_Red = 250;
|
blck_TMax_Red = 250;
|
||||||
blck_TMax_UMS = 200;
|
blck_TMax_UMS = 200;
|
||||||
#ifdef GRGserver
|
|
||||||
blck_TMax_Hunter = 200;
|
|
||||||
blck_TMax_Scouts = 200;
|
|
||||||
blck_TMax_Crashes = 200;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// AI VEHICLE PATROL PARAMETERS
|
// AI VEHICLE PATROL PARAMETERS
|
||||||
@ -360,60 +338,6 @@
|
|||||||
blck_maxMoneyRed = 15;
|
blck_maxMoneyRed = 15;
|
||||||
blck_maxMoneyBlue = 10;
|
blck_maxMoneyBlue = 10;
|
||||||
|
|
||||||
#ifdef GRGserver
|
|
||||||
blck_AIAlertDistance = [250,450,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
|
|
||||||
//blck_AIAlertDistance = [150,225,400,500];
|
|
||||||
// How precisely player locations will be revealed to AI after an AI kill
|
|
||||||
// values are ordered as follows [blue, red, green, orange];
|
|
||||||
blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9];
|
|
||||||
|
|
||||||
blck_baseSkill = 0.7; // The overal skill of the AI - range 0.1 to 1.0.
|
|
||||||
|
|
||||||
/***************************************************************
|
|
||||||
|
|
||||||
MISSION TYPE SPECIFIC AI SETTINGS
|
|
||||||
|
|
||||||
**************************************************************/
|
|
||||||
//This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type
|
|
||||||
// Orange Missions
|
|
||||||
blck_MinAI_Orange = 20;
|
|
||||||
blck_MaxAI_Orange = 25;
|
|
||||||
blck_AIGrps_Orange = 5;
|
|
||||||
blck_SkillsOrange = [
|
|
||||||
["aimingAccuracy",[0.25,0.36]],["aimingShake",[0.45,0.55]],["aimingSpeed",[0.65,0.75]],["endurance",1.00],["spotDistance",1.0],["spotTime",0.7],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Green Missions
|
|
||||||
blck_MinAI_Green = 16;
|
|
||||||
blck_MaxAI_Green = 21;
|
|
||||||
blck_AIGrps_Green = 4;
|
|
||||||
blck_SkillsGreen = [
|
|
||||||
["aimingAccuracy",[0.2,0.3]],["aimingShake",[0.4,0.5]],["aimingSpeed",[0.55,0.7]],["endurance",0.9],["spotDistance",0.9],["spotTime",0.65],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Red Missions
|
|
||||||
blck_MinAI_Red = 12;
|
|
||||||
blck_MaxAI_Red = 15;
|
|
||||||
blck_AIGrps_Red = 3;
|
|
||||||
blck_SkillsRed = [
|
|
||||||
["aimingAccuracy",[0.2,0.25]],["aimingShake",[0.35,0.4]],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.6],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Blue Missions
|
|
||||||
blck_MinAI_Blue = 8;
|
|
||||||
blck_MaxAI_Blue = 12;
|
|
||||||
blck_AIGrps_Blue = 2;
|
|
||||||
blck_SkillsBlue = [
|
|
||||||
["aimingAccuracy",[0.08,16]],["aimingShake",[0.25,0.35]],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Add some money to AI; only works with Exile for now.
|
|
||||||
blck_maxMoneyOrange = 25;
|
|
||||||
blck_maxMoneyGreen = 20;
|
|
||||||
blck_maxMoneyRed = 15;
|
|
||||||
blck_maxMoneyBlue = 10;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private["_modType"];
|
private["_modType"];
|
||||||
_modType = [] call blck_fnc_getModType;
|
_modType = [] call blck_fnc_getModType;
|
||||||
if (_modType isEqualTo "Epoch") then
|
if (_modType isEqualTo "Epoch") then
|
||||||
|
@ -650,13 +650,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
|||||||
"Exile_Item_InstantCoffee"
|
"Exile_Item_InstantCoffee"
|
||||||
];
|
];
|
||||||
|
|
||||||
#ifdef useCUP
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef useRHS
|
|
||||||
|
|
||||||
#endif
|
|
||||||
blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food;
|
blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food;
|
||||||
blck_throwableExplosives = ["HandGrenade","MiniGrenade"];
|
blck_throwableExplosives = ["HandGrenade","MiniGrenade"];
|
||||||
blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"];
|
blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"];
|
||||||
|
@ -202,12 +202,8 @@
|
|||||||
////////////////////
|
////////////////////
|
||||||
|
|
||||||
// Maximum number of missions shown on the map at any one time.
|
// Maximum number of missions shown on the map at any one time.
|
||||||
#ifdef GRGserver
|
|
||||||
blck_maxSpawnedMissions = 15;
|
|
||||||
#else
|
|
||||||
// Change this value to reduce the number of spawned missions at any one time.
|
// Change this value to reduce the number of spawned missions at any one time.
|
||||||
blck_maxSpawnedMissions = 4;
|
blck_maxSpawnedMissions = 4;
|
||||||
#endif
|
|
||||||
|
|
||||||
//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.
|
//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_enableOrangeMissions = 1;
|
||||||
@ -216,12 +212,6 @@
|
|||||||
blck_enableBlueMissions = 2;
|
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.
|
blck_numberUnderwaterDynamicMissions = 2; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||||
|
|
||||||
#ifdef GRGserver
|
|
||||||
blck_enableHunterMissions = 1;
|
|
||||||
blck_enableScoutsMissions = 2;
|
|
||||||
blck_maxcrashsites = 3;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
// MISSION TIMERS
|
// MISSION TIMERS
|
||||||
////////////////////
|
////////////////////
|
||||||
@ -232,12 +222,6 @@
|
|||||||
blck_TMin_Blue = 120;
|
blck_TMin_Blue = 120;
|
||||||
blck_TMin_Red = 150;
|
blck_TMin_Red = 150;
|
||||||
blck_TMin_UMS = 180;
|
blck_TMin_UMS = 180;
|
||||||
#ifdef GRGserver
|
|
||||||
blck_TMin_Hunter = 120;
|
|
||||||
blck_TMin_Scouts = 115;
|
|
||||||
blck_TMin_Crashes = 115;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Maximum Spawn time between missions in seconds
|
//Maximum Spawn time between missions in seconds
|
||||||
blck_TMax_Orange = 360;
|
blck_TMax_Orange = 360;
|
||||||
@ -245,11 +229,6 @@
|
|||||||
blck_TMax_Blue = 200;
|
blck_TMax_Blue = 200;
|
||||||
blck_TMax_Red = 250;
|
blck_TMax_Red = 250;
|
||||||
blck_TMax_UMS = 200;
|
blck_TMax_UMS = 200;
|
||||||
#ifdef GRGserver
|
|
||||||
blck_TMax_Hunter = 200;
|
|
||||||
blck_TMax_Scouts = 200;
|
|
||||||
blck_TMax_Crashes = 200;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// AI VEHICLE PATROL PARAMETERS
|
// AI VEHICLE PATROL PARAMETERS
|
||||||
@ -307,11 +286,6 @@
|
|||||||
|
|
||||||
//This defines how long after an AI dies that it's body disappears.
|
//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 = 40*60; // time in seconds after which dead AI bodies are deleted
|
||||||
#ifdef GRGserver
|
|
||||||
#ifdef blck_milServer
|
|
||||||
blck_bodyCleanUpTimer = 40*60; // Trying to reduce lag with player counts > 20
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
||||||
// values are ordered as follows [blue, red, green, orange];
|
// values are ordered as follows [blue, red, green, orange];
|
||||||
@ -371,60 +345,6 @@
|
|||||||
blck_maxMoneyRed = 30;
|
blck_maxMoneyRed = 30;
|
||||||
blck_maxMoneyBlue = 20;
|
blck_maxMoneyBlue = 20;
|
||||||
|
|
||||||
#ifdef GRGserver
|
|
||||||
blck_AIAlertDistance = [250,425,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
|
|
||||||
//blck_AIAlertDistance = [150,225,400,500];
|
|
||||||
// How precisely player locations will be revealed to AI after an AI kill
|
|
||||||
// values are ordered as follows [blue, red, green, orange];
|
|
||||||
blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9];
|
|
||||||
|
|
||||||
blck_baseSkill = 1; // The overal skill of the AI - range 0.1 to 1.0.
|
|
||||||
|
|
||||||
/***************************************************************
|
|
||||||
|
|
||||||
MISSION TYPE SPECIFIC AI SETTINGS
|
|
||||||
|
|
||||||
**************************************************************/
|
|
||||||
//This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type
|
|
||||||
// Orange Missions
|
|
||||||
blck_MinAI_Orange = 30;
|
|
||||||
blck_MaxAI_Orange = 35;
|
|
||||||
blck_AIGrps_Orange = 5;
|
|
||||||
blck_SkillsOrange = [
|
|
||||||
["aimingAccuracy",0.6],["aimingShake",0.9],["aimingSpeed",0.9],["endurance",1.00],["spotDistance",1.0],["spotTime",1.0],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Green Missions
|
|
||||||
blck_MinAI_Green = 26;
|
|
||||||
blck_MaxAI_Green = 31;
|
|
||||||
blck_AIGrps_Green = 4;
|
|
||||||
blck_SkillsGreen = [
|
|
||||||
["aimingAccuracy",0.55],["aimingShake",0.75],["aimingSpeed",0.85],["endurance",0.9],["spotDistance",0.9],["spotTime",0.9],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Red Missions
|
|
||||||
blck_MinAI_Red = 12;
|
|
||||||
blck_MaxAI_Red = 18;
|
|
||||||
blck_AIGrps_Red = 3;
|
|
||||||
blck_SkillsRed = [
|
|
||||||
["aimingAccuracy",0.4],["aimingShake",0.6],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.8],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Blue Missions
|
|
||||||
blck_MinAI_Blue = 8;
|
|
||||||
blck_MaxAI_Blue = 14;
|
|
||||||
blck_AIGrps_Blue = 2;
|
|
||||||
blck_SkillsBlue = [
|
|
||||||
["aimingAccuracy",0.12],["aimingShake",0.3],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Add some money to AI; only works with Exile for now.
|
|
||||||
blck_maxMoneyOrange = 25;
|
|
||||||
blck_maxMoneyGreen = 20;
|
|
||||||
blck_maxMoneyRed = 15;
|
|
||||||
blck_maxMoneyBlue = 10;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private["_modType"];
|
private["_modType"];
|
||||||
_modType = [] call blck_fnc_getModType;
|
_modType = [] call blck_fnc_getModType;
|
||||||
if (_modType isEqualTo "Epoch") then
|
if (_modType isEqualTo "Epoch") then
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
for ghostridergaming
|
for ghostridergaming
|
||||||
By Ghostrider [GRG]
|
By Ghostrider [GRG]
|
||||||
Copyright 2016
|
Copyright 2016
|
||||||
|
Last Modified 3-14-17
|
||||||
|
|
||||||
--------------------------
|
--------------------------
|
||||||
License
|
License
|
||||||
@ -16,10 +17,6 @@
|
|||||||
|
|
||||||
diag_log "[blckeagls] Loading Configuration Overides";
|
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"];
|
private["_startTime"];
|
||||||
_startTime = diag_tickTime;
|
_startTime = diag_tickTime;
|
||||||
_world = toLower format ["%1", worldName];
|
_world = toLower format ["%1", worldName];
|
||||||
@ -29,6 +26,7 @@ switch (_world) do {
|
|||||||
case "napf":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
|
case "napf":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
|
||||||
case "namalsk":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
|
case "namalsk":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
|
||||||
case "tanoa":{_nightAccel = 12; _dayAccel = 3.2;_duskAccel = 6;};
|
case "tanoa":{_nightAccel = 12; _dayAccel = 3.2;_duskAccel = 6;};
|
||||||
|
case "namalsk":{_nightAccel = 12; _dayAccel = 2; _duskAccel = 6;};
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (toLower (worldName)) do
|
switch (toLower (worldName)) do
|
||||||
@ -82,9 +80,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_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_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_timeAccelerationDay = 2; // Daytime time accelearation
|
||||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
blck_timeAccelerationDusk = 6; // Dawn/dusk time accelearation
|
||||||
blck_timeAccelerationNight = (3/_nightTime); // Nighttim time acceleration
|
blck_timeAccelerationNight = (12); // Nighttim time acceleration
|
||||||
};
|
};
|
||||||
case "esseker":
|
case "esseker":
|
||||||
{
|
{
|
||||||
@ -131,13 +129,99 @@ switch (toLower (worldName)) do
|
|||||||
blck_maxCrashSites = 3;
|
blck_maxCrashSites = 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";
|
||||||
|
|
||||||
|
//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 = -1;
|
||||||
|
blck_enableHunterMissions = 1;
|
||||||
|
blck_enableScoutsMissions = 1;
|
||||||
|
blck_maxCrashSites = 1;
|
||||||
|
|
||||||
|
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 = -4; // 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 = 1;
|
||||||
|
|
||||||
|
blck_MinAI_Blue = 1;
|
||||||
|
blck_MaxAI_Blue = 2;
|
||||||
|
blck_AIGrps_Blue = 1;
|
||||||
|
|
||||||
|
blck_AIPatrolVehicles = ["Exile_Car_MB4WDOpen"];
|
||||||
/*
|
/*
|
||||||
You can define configs for additional mods or loadouts here
|
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]
|
||||||
|
];
|
||||||
*/
|
*/
|
||||||
/*
|
};
|
||||||
|
|
||||||
blck_CUPWeapons = [
|
blck_CUPWeapons = [
|
||||||
"CUP_lmg_L7A2",
|
"CUP_lmg_L7A2",
|
||||||
"CUP_lmg_L110A1",
|
"CUP_lmg_L110A1",
|
||||||
@ -1266,4 +1350,3 @@ blck_NIA_WeaponsSniper = [
|
|||||||
"hlc_rifle_psg1",
|
"hlc_rifle_psg1",
|
||||||
"hlc_rifle_psg1A1"
|
"hlc_rifle_psg1A1"
|
||||||
];
|
];
|
||||||
*/
|
|
1269
@GMS/addons/custom_server/Configs/blck_custom_config_rc.sqf
Normal file
1269
@GMS/addons/custom_server/Configs/blck_custom_config_rc.sqf
Normal file
File diff suppressed because it is too large
Load Diff
@ -11,17 +11,10 @@
|
|||||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define GRGserver
|
|
||||||
#define useAPEX
|
#define useAPEX
|
||||||
//#define useDynamicSimulation
|
//#define useDynamicSimulation
|
||||||
//#define blck_debugMode
|
//#define blck_debugMode
|
||||||
#define blck_triggerLoopCompleteTime 40*60
|
//#define blck_triggerLoopCompleteTime 40*60
|
||||||
#define blck_milServer
|
//#define blck_milServer
|
||||||
//#define GRG_TestServer
|
|
||||||
|
|
||||||
#ifdef blck_milServer
|
|
||||||
|
|
||||||
#define blck_useCUP
|
|
||||||
#define blck_useRHS
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -81,15 +81,6 @@ _noEmplacedWeapons = blck_SpawnEmplaced_Red;
|
|||||||
// Change _useMines to true/false below to enable mission-specific settings.
|
// Change _useMines to true/false below to enable mission-specific settings.
|
||||||
_useMines = blck_useMines;
|
_useMines = blck_useMines;
|
||||||
|
|
||||||
#ifdef blck_milServer
|
|
||||||
_uniforms = blck_RHS_UniformsGREF; // Setting this in the mission file overrides the defaults
|
|
||||||
_headgear = blck_RHS_HeadgearGREF; // Setting this in the mission file overrides the defaults
|
|
||||||
_vests = blck_RHS_VestsGREF;
|
|
||||||
_backpacks = blck_RHS_BackpacksUSAF + blck_CUPBackpacks;
|
|
||||||
_weaponList = blck_NIA_WeaponsSniper + blck_NIA_WeaponsAR + blck_NIA_WeaponsSMG;
|
|
||||||
_sideArms = blck_Pistols;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_chanceHeliPatrol = blck_chanceHeliPatrolRed; // Setting this in the mission file overrides the defaults
|
_chanceHeliPatrol = blck_chanceHeliPatrolRed; // Setting this in the mission file overrides the defaults
|
||||||
_noChoppers = blck_noPatrolHelisRed;
|
_noChoppers = blck_noPatrolHelisRed;
|
||||||
_missionHelis = blck_patrolHelisRed;
|
_missionHelis = blck_patrolHelisRed;
|
||||||
@ -117,10 +108,6 @@ _loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionComple
|
|||||||
// To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned.
|
// To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned.
|
||||||
_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
|
_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
|
||||||
// Setting this in the mission file overrides the defaults
|
// Setting this in the mission file overrides the defaults
|
||||||
#ifdef blck_milServer
|
|
||||||
_weapons = blck_RHS_Weapons;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
|
_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
|
||||||
//_timeOut = -1;
|
//_timeOut = -1;
|
||||||
#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf";
|
#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
private ["_version","_versionDate"];
|
private ["_version","_versionDate"];
|
||||||
blck_version = "6.81 Build 130";
|
blck_version = "6.82 Build 133";
|
||||||
_blck_version = blck_version;
|
_blck_version = blck_version;
|
||||||
_blck_versionDate = "5-28-18 4:00 PM";
|
_blck_versionDate = "6-2-18 4:00 PM";
|
||||||
blck_pvs_version = _blck_version;
|
blck_pvs_version = _blck_version;
|
||||||
publicVariable blck_pvs_version;
|
publicVariable blck_pvs_version;
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
|
|
||||||
Known issues
|
Known issues
|
||||||
|
|
||||||
1. AI Vehicles are not unlocked when an HC is connected.
|
1. AI Vehicles MAY not be unlocked when an HC is connected.
|
||||||
|
@ -25,12 +25,32 @@
|
|||||||
GMS_fnc_freeHostage = {
|
GMS_fnc_freeHostage = {
|
||||||
diag_log format["fn_freeHostage: _this = %1",_this];
|
diag_log format["fn_freeHostage: _this = %1",_this];
|
||||||
private _hostage = _this select 0;
|
private _hostage = _this select 0;
|
||||||
|
if (_hostage getVariable["blck_unguarded",0] isEqualTo 1) then
|
||||||
|
{
|
||||||
_hostage setVariable["blck_AIState",1,true];
|
_hostage setVariable["blck_AIState",1,true];
|
||||||
private _msg = "_fnc_freeHostage <Hostage Rescued>";
|
private _msg = "Thank you For freeing me. I must return home.";
|
||||||
systemChat _msg;
|
systemChat _msg;
|
||||||
//hint _msg;
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
diag_log _msg;
|
{
|
||||||
//_hostage move (position _hostage) getPos [1000, random(360)];
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Hostage Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
private _msg = "I am afraid, please kill more of the enemy!";
|
||||||
|
systemChat _msg;
|
||||||
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
|
{
|
||||||
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Hostage Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//diag_log _msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
GMS_fnc_addHostageActions = {
|
GMS_fnc_addHostageActions = {
|
||||||
@ -56,11 +76,36 @@
|
|||||||
GMS_fnc_arrestLeader = {
|
GMS_fnc_arrestLeader = {
|
||||||
diag_log format["GMS_fnc_arrestLeader: _this = %1",_this];
|
diag_log format["GMS_fnc_arrestLeader: _this = %1",_this];
|
||||||
private _leader = _this select 0;
|
private _leader = _this select 0;
|
||||||
|
if (_leader getVariable["blck_unguarded",0] isEqualTo 1) then
|
||||||
|
{
|
||||||
_leader setVariable["blck_AIState",1,true];
|
_leader setVariable["blck_AIState",1,true];
|
||||||
private _msg = "_fnc_arrestLeader: <Leader Arrested>";
|
private _msg = "I surrender.";
|
||||||
systemChat _msg;
|
systemChat _msg;
|
||||||
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
|
{
|
||||||
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Leader Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
private _msg = "I will resist arrest until all of my men are down!";
|
||||||
|
systemChat _msg;
|
||||||
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
|
{
|
||||||
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Leader Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//_leader setVariable["blck_AIState",1,true];
|
||||||
|
//private _msg = "_fnc_arrestLeader: <Leader Arrested>";
|
||||||
|
//systemChat _msg;
|
||||||
//hint _msg;
|
//hint _msg;
|
||||||
diag_log _msg;
|
//diag_log _msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
GMS_fnc_addLeaderActions = {
|
GMS_fnc_addLeaderActions = {
|
||||||
|
@ -25,12 +25,32 @@
|
|||||||
GMS_fnc_freeHostage = {
|
GMS_fnc_freeHostage = {
|
||||||
diag_log format["fn_freeHostage: _this = %1",_this];
|
diag_log format["fn_freeHostage: _this = %1",_this];
|
||||||
private _hostage = _this select 0;
|
private _hostage = _this select 0;
|
||||||
|
if (_hostage getVariable["blck_unguarded",0] isEqualTo 1) then
|
||||||
|
{
|
||||||
_hostage setVariable["blck_AIState",1,true];
|
_hostage setVariable["blck_AIState",1,true];
|
||||||
private _msg = "_fnc_freeHostage <Hostage Rescued>";
|
private _msg = "Thank you For freeing me. I must return home.";
|
||||||
systemChat _msg;
|
systemChat _msg;
|
||||||
//hint _msg;
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
diag_log _msg;
|
{
|
||||||
//_hostage move (position _hostage) getPos [1000, random(360)];
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Hostage Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
private _msg = "I am afraid, please kill more of the enemy!";
|
||||||
|
systemChat _msg;
|
||||||
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
|
{
|
||||||
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Hostage Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//diag_log _msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
GMS_fnc_addHostageActions = {
|
GMS_fnc_addHostageActions = {
|
||||||
@ -56,11 +76,36 @@
|
|||||||
GMS_fnc_arrestLeader = {
|
GMS_fnc_arrestLeader = {
|
||||||
diag_log format["GMS_fnc_arrestLeader: _this = %1",_this];
|
diag_log format["GMS_fnc_arrestLeader: _this = %1",_this];
|
||||||
private _leader = _this select 0;
|
private _leader = _this select 0;
|
||||||
|
if (_leader getVariable["blck_unguarded",0] isEqualTo 1) then
|
||||||
|
{
|
||||||
_leader setVariable["blck_AIState",1,true];
|
_leader setVariable["blck_AIState",1,true];
|
||||||
private _msg = "_fnc_arrestLeader: <Leader Arrested>";
|
private _msg = "I surrender.";
|
||||||
systemChat _msg;
|
systemChat _msg;
|
||||||
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
|
{
|
||||||
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Leader Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
private _msg = "I will resist arrest until all of my men are down!";
|
||||||
|
systemChat _msg;
|
||||||
|
if (blck_modType isEqualTo "Epoch") then
|
||||||
|
{
|
||||||
|
[_msg,5] call Epoch_message;
|
||||||
|
};
|
||||||
|
if (blck_modType isEqualTo "Exile") then
|
||||||
|
{
|
||||||
|
["InfoTitleAndText", ["The Leader Says", _msg]] call ExileClient_gui_toaster_addTemplateToast;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//_leader setVariable["blck_AIState",1,true];
|
||||||
|
//private _msg = "_fnc_arrestLeader: <Leader Arrested>";
|
||||||
|
//systemChat _msg;
|
||||||
//hint _msg;
|
//hint _msg;
|
||||||
diag_log _msg;
|
//diag_log _msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
GMS_fnc_addLeaderActions = {
|
GMS_fnc_addLeaderActions = {
|
||||||
|
@ -8,20 +8,23 @@ Ideas or code from that by Vampire and KiloSwiss have been used for certain func
|
|||||||
|
|
||||||
Significant Changes:
|
Significant Changes:
|
||||||
=====================
|
=====================
|
||||||
Version 1.81 Build 130 (EXPERIMENTAL).
|
Version 1.82 Build 132
|
||||||
|
Added: blck_killPercentage = 0.9; // 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.
|
||||||
|
|
||||||
Added: Male and Female uniforms are separated and can be used alone or together for specific missiosn (Epoch Only).
|
Added: Male and Female uniforms are separated and can be used alone or together for specific missiosn (Epoch Only).
|
||||||
|
|
||||||
Added: Loot tables updated to include food and supplies as of Epoch 1.1.0.
|
Added: Loot tables updated to include food and supplies as of Epoch 1.1.0.
|
||||||
|
|
||||||
Added: Setting that configures vehicles to be sold at Black Market Traders.
|
Added: Setting that configures vehicles to be sold at Black Market Traders.
|
||||||
blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders.
|
blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halve's black market traders.
|
||||||
|
|
||||||
Added: Support for hostage rescue missions.
|
Added: Support for hostage rescue missions.
|
||||||
The hostage can be spawned at any location relative to the mission center.
|
The hostage can be spawned at any location relative to the mission center.
|
||||||
The mission aborts if the hostage is killed; all loot is deleted.
|
The mission aborts if the hostage is killed; all loot is deleted.
|
||||||
To complete the mission, a player must approach the hostage and execute the rescue action.
|
To complete the mission, a player must approach the hostage and execute the rescue action.
|
||||||
The hostage then runs away, and loot becomes available to the player.
|
The hostage then runs away, and loot becomes available to the player.
|
||||||
See missions\blue\Default3.sqf for an example mission.
|
See missions\blue\hostage.sqf for an example mission.
|
||||||
|
|
||||||
***** PLEASE READ - IMPORTANT ****
|
***** PLEASE READ - IMPORTANT ****
|
||||||
Please update the blck_client.sqf in your mission.pbo or you will not be able to interact with or see animations of the new AI characters.
|
Please update the blck_client.sqf in your mission.pbo or you will not be able to interact with or see animations of the new AI characters.
|
||||||
@ -29,7 +32,7 @@ Added: Support for hostage rescue missions.
|
|||||||
Added: Support for Arrest Leader missions.
|
Added: Support for Arrest Leader missions.
|
||||||
These are similar to the rescue hostage mission except that the leader, when arrested, will sites
|
These are similar to the rescue hostage mission except that the leader, when arrested, will sites
|
||||||
awaiting arrival of imaginary survivor forces.
|
awaiting arrival of imaginary survivor forces.
|
||||||
See missions\blue\Default4.sqf for an example mission
|
See missions\blue\capture.sqf for an example mission
|
||||||
|
|
||||||
Added: blck_missionEndCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
|
Added: blck_missionEndCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
|
||||||
which provides a simple way to define the default conditions under which the mission ends for all missions.
|
which provides a simple way to define the default conditions under which the mission ends for all missions.
|
||||||
@ -45,8 +48,8 @@ Added: Mission crates can now be spawned on the ground or in the air at mission
|
|||||||
_spawnCratesTiming = "atMissionEndAir";
|
_spawnCratesTiming = "atMissionEndAir";
|
||||||
See the hostage1.sqf mission as an example.
|
See the hostage1.sqf mission as an example.
|
||||||
|
|
||||||
Added: Crates spawn with tabs or crypto. set the values in the mod-specific configs.
|
Added: Crates spawn with tabs or crypto. Set the values in the mod-specific configs.
|
||||||
For Epoch, the crypto can be access by pressing space bar.
|
For Epoch, the crypto can be accessed by pressing space bar.
|
||||||
|
|
||||||
Added: Additional documentation for those who wish to design their own missions.
|
Added: Additional documentation for those who wish to design their own missions.
|
||||||
See \missions\blue\default.sqf and default2.sqf for details.
|
See \missions\blue\default.sqf and default2.sqf for details.
|
||||||
@ -79,20 +82,21 @@ Changed: **** VERY IMPORTANT ******
|
|||||||
This should save quite a bit of editing going forward.
|
This should save quite a bit of editing going forward.
|
||||||
Please note that if you do not update the private variables definitions list certain features of the mission spawner may not work due to issues with scope of variables.
|
Please note that if you do not update the private variables definitions list certain features of the mission spawner may not work due to issues with scope of variables.
|
||||||
|
|
||||||
Changed: Logic for spawning paratroops was redone so it is more clear.
|
Changed: Each mission is now compiled at server startup which I hope will save a little server resource between restarts.
|
||||||
When helis are spawned the paratroops will spawn at the heli location when it spawns based on probability set in _chancePara in the mission file or the default for that mission difficulty.
|
|
||||||
When no helies are to be spawned, paratroops will spawn at the mission center when it spawns based on probability set in _chancePara in the mission file or the default for that mission difficulty.
|
|
||||||
|
|
||||||
Changed: Each mission is now compiled at server startup.
|
|
||||||
A few variables that were not used were eliminated.
|
A few variables that were not used were eliminated.
|
||||||
Some declarations of private variables were consolidated.
|
Some declarations of private variables were consolidated.
|
||||||
Together these changes should be worth a small performance bump.
|
Together these changes should be worth a small performance bump.
|
||||||
|
|
||||||
Changed: Code for Heli Patrols redone.
|
Changed: Code for Heli Patrols redone.
|
||||||
Code that spawns paratroops moved to a separate function that is called when a player is whithin a certain radius of the mission.
|
Code that spawns paratroops moved to a separate function that is called when a player is within a certain radius of the mission.
|
||||||
Code that spawns a supplemental loot chest added - this will be spawned along with the paratroop reinforcements, if desired.
|
Code that spawns a supplemental loot chest added - this will be spawned along with the paratroop reinforcements, if desired.
|
||||||
This crate can have customized loot (think ammo, building supplies, tools and food, ala Exile/Epoch airdrops).
|
This crate can have customized loot (think ammo, building supplies, tools and food, ala Exile/Epoch airdrops).
|
||||||
|
|
||||||
|
Changed: Logic for spawning paratroops was redone so it is more clear.
|
||||||
|
When helis are spawned the paratroops will spawn at the heli location at the location at which the heli spawn based on probability set in _chancePara in the mission file or the default for that mission difficulty.
|
||||||
|
When no helies are to be spawned, paratroops will spawn at the mission center when it spawns based on probability set in _chancePara in the mission file or the default for that mission difficulty.
|
||||||
|
A delay was added so that paratroops spawn when players are nearby for more drama !!
|
||||||
|
|
||||||
Changed: Methods for detecting NULL Groups (rarely a problem with arma these days) simplified.
|
Changed: Methods for detecting NULL Groups (rarely a problem with arma these days) simplified.
|
||||||
Still more work to be done here.
|
Still more work to be done here.
|
||||||
|
|
||||||
@ -107,7 +111,6 @@ Fixed: an issue with the experimental build whereby the number of dynamically tr
|
|||||||
Fixed: Dead Ai in vehicles were sometimes detected as alive. Dead AI are now ejected.
|
Fixed: Dead Ai in vehicles were sometimes detected as alive. Dead AI are now ejected.
|
||||||
Fixed: Vehicles are now properly released to players when all AI inside are killed when an HC is connected.
|
Fixed: Vehicles are now properly released to players when all AI inside are killed when an HC is connected.
|
||||||
|
|
||||||
|
|
||||||
Version 1.80 Build 118
|
Version 1.80 Build 118
|
||||||
Added: you can now determine whether objects spawned at dynamic missions have simulation or damage enabled.
|
Added: you can now determine whether objects spawned at dynamic missions have simulation or damage enabled.
|
||||||
See the medicalCamp.sqf mission for an example of how this is done.
|
See the medicalCamp.sqf mission for an example of how this is done.
|
||||||
@ -487,7 +490,7 @@ Inactivated a call to an exile function that had no value
|
|||||||
10) Added settings to enable / disable specific mission classes, e.g., blck_enableOrangeMissions. Set to 1 to enable, -1 to disable.
|
10) Added settings to enable / disable specific mission classes, e.g., blck_enableOrangeMissions. Set to 1 to enable, -1 to disable.
|
||||||
|
|
||||||
8-14-16
|
8-14-16
|
||||||
Added mission timout feature, set blck_missionTimout = -1 to disble;
|
Added mission timout feature, set blck_MissionTimeout = -1 to disble;
|
||||||
Changed to use of params for all .sqf which also eliminated calls to BIS_fnc_params
|
Changed to use of params for all .sqf which also eliminated calls to BIS_fnc_params
|
||||||
changed to selectRandom for all .sqf
|
changed to selectRandom for all .sqf
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user