small updates

This commit is contained in:
Chris Cardozo 2018-11-20 23:35:30 -05:00
parent 3cf74b2a07
commit a39a727346
23 changed files with 246 additions and 322 deletions

View File

@ -33,7 +33,8 @@ while {true} do
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;
};
if (diag_tickTime > _timer20sec) then
@ -42,25 +43,18 @@ while {true} do
[] call blck_fnc_cleanupObjects;
[] call blck_fnc_cleanupDeadAI;
[] call blck_fnc_scanForPlayersNearVehicles;
[] call blck_fnc_cleanEmptyGroups;
//[] call blck_fnc_cleanEmptyGroups;
_timer20sec = diag_tickTime + 20;
};
if ((diag_tickTime > _timer1min)) then
{
_timer1min = diag_tickTime + 60;
[] call blck_fnc_spawnPendingMissions;
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;
};
[] 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];

View File

@ -0,0 +1,38 @@
/*
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"];
switch (toLower(blck_modType)) do
{
case "exile": {_playerType = ["Exile_Unit_Player"]};
case "epoch": {_playerType = ["Epoch_Male_F","Epoch_Female_F"]};
};
{
private _players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance];
if (count _players > 0) then
{
private _group = _x;
if (blck_revealMode isEqualTo "detailed") then
{
{
_x enableSimulationGlobal true;
(_players select 0) reveal _x; // Force simulation on
}forEach (units _group);
} else {
_x enableSimulationGlobal true;
(_players select 0) reveal _x; // Force simulation on
};
}else{
{_x enableSimulationGlobal false}forEach (units _x);
};
} forEach blck_monitoredMissionAIGroups;

View File

@ -1,4 +1,5 @@
/*
removes empty or null groups from blck_monitoredMissionAIGroups
By Ghostrider [GRG]
--------------------------
License
@ -9,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

View File

@ -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;

View File

@ -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
--------------------------
@ -19,167 +18,14 @@
#ifdef blck_debugMode
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];
//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
};
////////////////
// local functions
////////////////
_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_centerGroup = {
};
_fn_monitorGroupWaypoints = {
{
private["_timeStamp","_index","_unit","_soldierType"];
/*
#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];
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;
};
_fn_simulationMonitor = {
private["_playerType","_players"];
if (blck_modType isEqualTo "Exile") then
{
_playerType = ["Exile_Unit_Player"];
}else{
_playerType = ["Epoch_Male_F","Epoch_Female_F"];
};
{
private _players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance];
if (count _players > 0) then
{
private _group = _x;
{
{
_x enableSimulationGlobal true;
(_players select 0) reveal _x; // Force simulation on
}forEach (units _group);
};
}else{
{_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;
[] call blck_fnc_cleanEmptyGroups;
uiSleep 0.1;
//[] call _fn_monitorGroupWaypoints;
//[] call bck_fnc_groupWaypointMonitor;
if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {[] call _fn_simulationMonitor};
if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {call blck_fnc_blckSimulationManager};

View File

@ -27,8 +27,8 @@ _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(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]));
private _posY = ((_coords select 1) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]));
private _posX = ((_coords select 0) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1])));
private _posY = ((_coords select 1) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1])));
_pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos;
_wreck = createVehicle[_x, _pos, [], 2];
//diag_log format["_fnc_spawnRandomLandscape: _x = %1 | _wreck = %2",_x,_wreck];

View File

@ -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;
@ -42,7 +33,6 @@ if (blck_modType isEqualTo "Epoch") then
if (_dist > 800) then { _reward = _maxReward - (_maxReward / 4); _reward };
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 +44,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 +67,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;
};

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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";

View File

@ -10,6 +10,7 @@
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"];
@ -30,8 +31,7 @@
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)];
{
_veh removealleventhandlers _x;
} forEach ["GetIn","GetOut","fired","hit","hitpart","reloaded","dammaged","HandleDamage"];
@ -46,5 +46,4 @@
{
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];
#endif

View File

@ -18,7 +18,7 @@ _vehList = +blck_monitoredVehicles;
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];
// Needs debugging for HC operation.
{
/*
Determine state of vehicle

View File

@ -39,7 +39,7 @@ private _functions = [
["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_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"],
@ -99,7 +99,9 @@ private _functions = [
["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"],

View File

@ -12,7 +12,7 @@
*/
#include"\q\addons\custom_server\Configs\blck_defines.hpp";
//diag_log "[blckeagls] loading variables";
diag_log "[blckeagls] loading variables";
blck_minFPS = 8;
@ -40,16 +40,9 @@ blck_activeMissions = [];
blck_deadAI = [];
blck_connectedHCs = [];
blck_missionMarkers = [];
if (blck_simulationManager == 2) then
{
"Group" setDynamicSimulationDistance 1800;
enableDynamicSimulationSystem true;
};
blck_heliCrashSites = [];
blck_mainThreadUpdateInterval = 60;
blck_revealMode = "detailed"; //""basic" /*group or vehicle level reveals*/,detailed /*unit by unit reveals*/";
//diag_log "[blckeagls] Variables Loaded";
diag_log "[blckeagls] Variables Loaded";

View File

@ -17,11 +17,10 @@
changing any of these variables may break the mission systemChat
*/
blck_locationBlackList = []; // Do not touch ...
blck_debugON = true; // Do not touch ...
blck_debugLevel = 3; // Do not touch ...
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 {execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf";};
#endif
//diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf";
@ -432,30 +431,20 @@
blck_maxMoneyBlue = 10;
#endif
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];
execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf";
waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;};
waitUntil{blck_configsEpochLoaded};
blck_configsEpochLoaded = nil;
};
if (_modType isEqualTo "Exile") then
if (toLower(blck_modType) isEqualTo "exile") then
{
diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType];
execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf";
waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
waitUntil{blck_configsExileLoaded};
};
if (blck_useConfigsGeneratedLoadouts) then
{
diag_log format["[blckeagles] Dynamic Configs Enabled"];
execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf";
//waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
//waitUntil{blck_dynamicConfigsLoaded};
//blck_dynamicConfigsLoaded = nil;
};
uisleep 3;
blck_configsLoaded = true;

View File

@ -995,4 +995,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;

View File

@ -1152,5 +1152,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;

View File

@ -1166,4 +1166,3 @@ blck_highPoweredLoot = [
diag_log format["[blckeagls] Configurations for Exile Loaded"];
blck_configsExileLoaded = true;

View File

@ -426,11 +426,9 @@
blck_maxMoneyBlue = 10;
#endif
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};
@ -438,21 +436,16 @@
//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";};
};
if (blck_useConfigsGeneratedLoadouts) then
{
diag_log format["[blckeagles] 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;

View File

@ -12,8 +12,8 @@
*/
//#define useAPEX
//#define blck_milServer
#define useAPEX
#define blck_milServer
//#define blck_useCUP
//#define blck_useRHS

View File

@ -95,15 +95,15 @@ _baseClasses = [];
_classnameList = [];
diag_log format["blck_modType = %1",blck_modType];
if (blck_modType isEqualTo "Epoch") then
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;
};
//diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
{
private _temp = [_x] call bis_fnc_itemType;
//diag_log _temp;
@ -218,3 +218,5 @@ blck_backpacks_green = blck_backpacks;
blck_backpacks_orange = blck_backpacks;
blck_explosives = _wpnThrow;
diag_log format["Compilation of dynamic AI Loadouts complete at %1",diag_tickTime];

View File

@ -14,24 +14,28 @@ 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";
/*
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";
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";
diag_log format["[blckeagls] functions compiled in %1 seconds",diag_tickTime-_blck_loadingStartTime];
call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf";
uiSleep 10;
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];
@ -39,9 +43,13 @@ diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLev
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime];
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
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