More updates to notifying AI on unit kill

This commit is contained in:
Chris Cardozo 2019-05-25 00:02:07 -04:00
parent 72ffddd2fa
commit 9336ac4a2e
26 changed files with 122 additions and 182 deletions

View File

@ -17,4 +17,6 @@
blck_config_mil.sqf
3. Added a new setting that specifies whether logging of blacklisted items is done (handy for debugging)
blck_logBlacklistedItems = true; // set to false to disable logging
blck_logBlacklistedItems = true; // set to false to disable logging
4. Hit and Killed event handlers extensively reworked. Methods for notification of nearby AI and Vehicles of the killers whereabouts were revised to be more inclusive of neighboring AI.

View File

@ -1,10 +1,9 @@
/*
Credit for this method goes to He-Man who first suggested it.
*/
//diag_log format["_fnc_giveTakeCrypto: _this = %1",_this];
_object = _this select 0;
diag_log format["_giveTakeCrypto: _object data = %1 | _object = %2",_object call BIS_fnc_objectType, _object];
if (_object isKindOf "Man") then
//_player = _this select 0;
if ((_this select 0) isKindOf "Man" && isPlayer (_this select 0)) then
{
_this call EPOCH_server_effectCrypto;
};

View File

@ -11,19 +11,9 @@
*/
params["_pos"];
private["_nearestGroup"];
if (blck_modType == "Epoch") then {_units = (_pos) nearEntities ["I_Soldier_EPOCH", 100]};
if (blck_modType == "Exile") then {_units = (_pos) nearEntities ["i_g_soldier_unarmed_f", 100]};
_nearestGroup = group (_units select 0);
{
if ((group _x) != _group) then
{
if ( _x distance (leader _group) < ((leader _nearestGroup) distance (leader _group)) ) then
{
if ((vehicle _x == _x) ) then {_nearestGroup = group _x};
};
};
}forEach _units;
private["_units"];
if (blck_modType == "Epoch") then {_units = (nearestObjects[_pos,["I_Soldier_EPOCH"], 1000]) select {vehicle _x isEqualTo _x}};
if (blck_modType == "Exile") then {_units = (nearestObjects[_pos ,["i_g_soldier_unarmed_f"], 1000]) select {vehicle _x isEqualTo _x}};
private _nearestGroup = group(_units select 0);
_nearestGroup

View File

@ -23,7 +23,7 @@ private["_numTransfered","_clientId","_allGroups","_groupsOwned","_idHC","_id","
_numTransfered = 0;
_idHC = -2;
blck_connectedHCs = entities "HeadlessClient_F";
//diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps];
diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps];
if !(blck_connectedHCs isEqualTo []) then
{
_idHC = [blck_connectedHCs] call blck_fnc_HC_leastBurdened;
@ -41,5 +41,5 @@ if !(blck_connectedHCs isEqualTo []) then
};
};
} forEach (allGroups);
//diag_log format["[blckeagls] _passToHCs:: %1 groups transferred to HC %2",_numTransfered,_idHC];
diag_log format["[blckeagls] _passToHCs:: %1 groups transferred to HC %2",_numTransfered,_idHC];
};

View File

@ -19,5 +19,5 @@ switch (toLower(_diff)) do
case "green": {_count = blck_vehCrew_green};
case "orange": {_count = blck_vehCrew_orange};
};
diag_log format["_fnc_selectVehicleCrewCount: _count set to %1",_count];
///diag_log format["_fnc_selectVehicleCrewCount: _count set to %1",_count];
_count

View File

@ -62,8 +62,8 @@ if (_missionPatrolVehicles isEqualTo []) then
blck_monitoredMissionAIGroups pushBack _vehGroup;
//params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]];
_patrolVehicle = [_coords,_spawnPos,_vehicle,40,60,_vehGroup,true] call blck_fnc_spawnVehiclePatrol;
//params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true],["_crewCount",4]];
_patrolVehicle = [_coords,_spawnPos,_vehicle,40,60,_vehGroup,true,_crewCount] call blck_fnc_spawnVehiclePatrol; //
if !(isNull _patrolVehicle) then
{

View File

@ -1,6 +1,7 @@
/*
_fnc_alertGroupUnits
by Ghostrider
Alerts the leader of a group of the location of an enemy.
Alerts the units of a group of the location of an enemy.
--------------------------
License
@ -11,14 +12,10 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_knowsAbout","_intelligence","_group"];
params["_unit","_target"];
//diag_log format["_fnc_alertGroupUnits called _unit = %1 and _targert = %2",_unit,_target];
_intelligence = _unit getVariable ["intelligence",1];
_group = group _unit;
diag_log format["_fnc_alertGroupUnits: _unit = %1 | _target = %2",_unit,_target];
{
_knowsAbout = _x knowsAbout _target;
_x reveal [_target,_knowsAbout + _intelligence];
}forEach units _group;
_x reveal [_target,(_x knowsAbout _target) + (_unit getVariable ["intelligence",1])];
}forEach (units (group _unit));

View File

@ -0,0 +1,24 @@
/*
_fnc_alertNearbyGroups
by Ghostrider
9-20-15
Allerts all units within the nearest group to the location of a killer.
** Not in use at this time; reserved for the future **
--------------------------
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["_nearbyGroups","_intelligence"];
params["_unit","_killer",["_searchRadius",300]];
private _nearbyGroups = allGroups select{(_unit distance (leader _x) < _searchRadius)};
{
private _group = _x;
{
_x reveal[_killer,(_x knowsAbout _killer) + (_x getVariable ["intelligence",1])];
}forEach (units _group);
}forEach _nearbyGroups;

View File

@ -1,4 +1,5 @@
/*
_fnc_alertNearbyUnits
by Ghostrider
9-20-15
Allerts all units within a certain radius of the location of a killer.
@ -11,20 +12,11 @@
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_alertDist","_intelligence"];
params["_unit","_killer"];
//diag_log format["#-alertNearbyUnits.sqf-# alerting nearby units of killer of unit %1",_unit];
_alertDist = _unit getVariable ["alertDist",300];
_intelligence = _unit getVariable ["intelligence",1];
if (_alertDist > 0) then {
//diag_log format["+----+ alerting units close to %1",_unit];
{
if (((position _x) distance2D (position _unit)) <= _alertDist) then {
_knowsAbout = _x knowsAbout _killer;
_x reveal [_killer, _knowsAbout + _intelligence];
//diag_log "Killer revealed";
}
} forEach allUnits;
};
private["_units"];
if (toLower(blck_modType) == "epoch") then {_units = _unit nearEntities ["I_Soldier_EPOCH", (_unit getVariable ["alertDist",300])]};
if (toLower(blck_modType) == "exile") then {_units = _unit nearEntities ["i_g_soldier_unarmed_f", (_unit getVariable ["alertDist",300])]};
{
_x reveal[_killer, (_x knowsAbout _killer) + (_unit getVariable ["intelligence",1])]
}forEach _units;

View File

@ -1,4 +1,5 @@
/*
_fnc_alertNearbyVehicles
by Ghostrider
--------------------------
@ -11,11 +12,11 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_target"];
private["_vehGroup"];
{
_vehGroup = _x getVariable["vehicleGroup",grpNull];
if (_target distance2D (leader _vehGroup) < 1000) then {[_vehGroup,_target] call blck_fnc_alertGroupUnits;};
}forEach blck_monitoredVehicles;
private _nearestVehicle = (nearestObjects [getPos _target,["Car","Truck","Tank","Ship"],300]) select 0;
diag_log format["_fnc_alertNearbyVehicles: _target = %1 | _nearestVehicle = %2",_target,_nearestVehicle];
[(crew _nearestVehicle) select 0,_target] call blck_fnc_alertGroupUnits;

View File

@ -1,16 +1,10 @@
/*
Find Nearest Infantry Group
_fnc_alertNearestGroup
*/
params["_group"];
private["_nearestGroup"];
if (blck_modType == "Epoch") then {_units = _group nearEntities ["I_Soldier_EPOCH", 100]};
if (blck_modType == "Exile") then (_units = _group nearEntities ["i_g_soldier_unarmed_f", 100]};
_nearestGroup = group _units select 0;
private _nearbyGroup = [group _unit] call blck_fnc_findNearestGroup;
{
if (group _x != _group && _x distance (leader _group) < ((leader _nearestGroup) distance (leader _group))) then {_nearestGroup = group _x};
}forEach _units;
_nearestGroup
_x reveal[_killer,(_x knowsAbout _killer) + (_unit getVariable ["intelligence",1])];
}forEach (units _nearbyGroup);

View File

@ -13,9 +13,7 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
_fn_doUpdates = {
params["_player"];
private _lastkill = _player getVariable["blck_lastkill",diag_tickTime];
_player setVariable["blck_lastkill",diag_tickTime];
private _kills = (_player getVariable["blck_kills",0]) + 1;
@ -32,8 +30,6 @@ _fn_doUpdates = {
private _distanceBonus = floor((_unit distance _player)/100);
private _killstreakBonus = 3 * (_player getVariable["blck_kills",0]);
private _reward = 25 + _distanceBonus + _killstreakBonus;
//if (_reward > maxReward) then {_reward = maxReward};
diag_log format["_fnc_handlePlayerUpdates (43): _killer = %1 | vehicle(_killer) = %2 | typeName _killer = %3",_player,vehicle _player, typeName _player];
[_player,_reward ] call blck_fnc_giveTakeCrypto;
if (blck_useKillScoreMessage) then
{
@ -77,30 +73,13 @@ _fn_doUpdates = {
};
params["_unit","_killer"];
//diag_log format["_fnc_handlePlayerUpdates: typeOf (vehicle _killer) = %2 | vehicle(_killer) isKindOf Man = %1",(vehicle _killer) isKindOf "Man",typeOf (vehicle _killer)];
//diag_log format[" : uid _killer = %1 | netID _killer = %2 | netID vehicle(_killer) = %3",if(isPlayer _killer) then {getPlayerUID _killer} else {-1},netID _killer,netID (vehicle(_killer))];
private _killerType = _killer call BIS_fnc_objectType; // anObject call BIS_fnc_objectType
private _killerVehicleType = (vehicle _killer) call BIS_fnc_objectType;
diag_log format["_fnc_handlePlayerUpdates (84): _killerType = %1 | _killerVehicleType = %2",_killerType,_killerVehicleType];
if ((_killerType select 0 )isEqualTo "Vehicle") then
{
{
_vehicle = vehicle _killer;
_crew = crew _vehicle;
//_player = (crew (vehicle _killer)) select ((crew (vehicle(_killer))) find _killer);
_player = _killer;
//diag_log format["_fnc_handlePlayerUpdates (91): _killer = %1 | vehicle _killer = 2 | _player = %3 | vehicle _player = %4 | _crew = %5",_killer,vehicle _killer,_player,vehicle _player,_crew];
diag_log format["_fnc_handlePlayerUpdates (93): _x = %1 | vehicle _player = %2 | _objectType _x = %3 | _x isKindOf mann = %4 | getPlayerUID(_x) isEqualTo getPlayerUID(_killer) = %5 | crew (vehicle _killer) find _killer = %6 ",
_x,
vehicle _killer,
[_x] call BIS_fnc_objectType,
(_x isKindOf "Man"),
getPlayerUID(_x) isEqualTo getPlayerUID(_killer),
crew (vehicle _killer) find _killer
];
if (getPlayerUID(_x) isEqualTo getPlayerUID(_killer)) exitWith {
diag_log format["_fnc_handlePlayerUpdates (90): _x = %1 | vehicle _player = %2 | _objectType %3 | _x isKindOf mann = %4",_x,vehicle _killer, [_x] call BIS_fnc_objectType,(_x isKindOf "Man")];
[_x] call _fn_doUpdates;
};

View File

@ -29,10 +29,10 @@ if (!(alive _unit)) exitWith {[_unit, _instigator] call blck_fnc_processAIKill};
if (damage _unit > 0.95) exitWith {_unit setDamage 1.2; [_unit, _instigator] call blck_fnc_processAIKill};
if (!(isPlayer _instigator)) exitWith {};
[_unit,_instigator] call blck_fnc_alertGroupUnits;
diag_log format["_processAIHit: calling [_unit,_instigator] call blck_fnc_alertGroupUnits with _unit = %1 and _instigator = %2",_unit,_instigator];
[_unit,_instigator,50] call GMS_fnc_alertNearbyGroups;
[_instigator] call blck_fnc_alertNearbyVehicles;
_group = group _unit;
//_group setBehavior "COMBAT";
_wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";
_group setCombatMode "RED";
@ -47,11 +47,7 @@ if ((damage _unit) > 0.1 ) then
diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
};
_unit setVariable["hasHealed",true,true];
/*
_unit addMagazine "SmokeShellOrange";
_unit fire "SmokeShellMuzzle";
*/
"SmokeShellRed" createVehicle ((position _unit) getPos[3,_unit getRelDir _instigator];
"SmokeShellRed" createVehicle (position _unit);
_unit addItem "FAK";
_unit action ["HealSoldierSelf", _unit];
_unit setDamage 0;

View File

@ -1,6 +1,5 @@
/*
Handle AI Deaths
Last Modified 7/27/17
By Ghostrider [GRG]
Copyright 2016
--------------------------
@ -15,7 +14,7 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_unit","_killer","_instigator"];
//diag_log format["_fnc_processAIKill: _unit = %1 | _killer = %2 | _instigator = %3" ,_unit,_killer,_instigator];
diag_log format["_fnc_processAIKill: _unit = %1 | _killer = %2",_unit,_killer];
if (_unit getVariable["blck_cleanupAt",-1] > 0) exitWith {}; // this is here so that the script is not accidently run more than once for each MPKilled occurrence.
_unit setVariable ["blck_cleanupAt", (diag_tickTime) + blck_bodyCleanUpTimer];
blck_deadAI pushback _unit;
@ -25,23 +24,14 @@ if (count(units _group) == 0) then
{
deleteGroup _group;
};
/*
diag_log format[
"_fnc_processAIKill: _killer = %1 | vehicle _killer = %2 | typeOf (vehicle _killer = %3) | driver(vehicle _killer) = %4",
_killer,
vehicle _killer,
typeOf(vehicle _killer),
driver(vehicle _killer)
];
*/
diag_log format["+fnc_processAIKill: (vehicle _killer) isKindOf Man = %1",(vehicle _killer) isKindOf "Man"];
if !((vehicle _unit) isKindOf "Man") then
{
private _veh = vehicle _unit;
diag_log format["_processAIKill: _unit %1 is in vehicle %2",_unit,_veh];
//diag_log format["_processAIKill: _unit %1 is in vehicle %2",_unit,_veh];
if ({alive _x} count (crew _veh) == 0) then
{
diag_log format["_processAIKill: no units alive in vehicle %1 of type %2",_veh, typeOf _veh];
//diag_log format["_processAIKill: no units alive in vehicle %1 of type %2",_veh, typeOf _veh];
if (_veh getVariable["GRG_vehType","none"] isEqualTo "emplaced") then
{
diag_log format["_fnc_processAIKill: emplaced weapon %1 being handled",_veh];
@ -71,13 +61,8 @@ if !((vehicle _unit) isKindOf "Man") then
if (blck_launcherCleanup) then {[_unit] call blck_fnc_removeLaunchers};
if (blck_removeNVG) then {[_unit] call blck_fnc_removeNVG};
if !(isPlayer _killer) exitWith {};
[_unit,_killer] call blck_fnc_alertGroupUnits;
[_unit,_killer,50] call GMS_fnc_alertNearbyGroups;
[_killer] call blck_fnc_alertNearbyVehicles;
if (vehicle _killer != _killer) then
{
[_unit, vehicle _killer] call GMS_fnc_revealVehicleToUnits;
};
private _wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";
_group setCombatMode "RED";
@ -90,6 +75,6 @@ if (blck_showCountAliveAI) then
} forEach blck_missionMarkers;
};
private _isLegal = [_unit,_killer] call blck_fnc_processIlleagalAIKills;
diag_log format["_fnc_processAIKill: _isLegal = %1",_isLegal];
if !(_isLegal) exitWith {};
[_unit,_killer] call GMS_fnc_handlePlayerUpdates;
if (_isLegal) then {
[_unit,_killer] call GMS_fnc_handlePlayerUpdates;
};

View File

@ -1,7 +1,6 @@
/*
_EH_AHVehicle_Hit
By Ghostrider [GRG]
Last Modified 7-27-17
Handles the case where a vehicle is hit.
--------------------------

View File

@ -1,6 +1,7 @@
/*
Killed handler for _units
_EH_VehicleKilled
Killed handler for destruction of vehicles
By Ghostrider-GRG-
--------------------------

View File

@ -1,4 +1,5 @@
/*
_fnc_handleAIVehicleHit
By Ghostrider [GRG]
--------------------------
@ -14,23 +15,13 @@ private ["_veh","_instigator","_group","_wp"];
_veh = _this select 0 select 0;
_instigator = _this select 0 select 3;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["_fnc_HandleAIVehicleDamage: _this = %1",_this];
diag_log format["_EH_AIVehicle_HandleDamage:: _units = %1 and _instigator = %2 units damage is %3",_veh,_instigator, damage _veh];
};
#endif
diag_log format["_fnc_HandleAIVehicleHit: _veh = %1 | _instigator = %2",_veh,_instigator];
if (!(isPlayer _instigator)) exitWith {};
_crew = crew _veh;
_group = group (_crew select 0);
[_crew select 0,_instigator] call blck_fnc_alertGroupUnits;
[_crew select 0,_instigator,50] call GMS_fnc_alertNearbyGroups;
//diag_log format["_fnc_handleAIVehicleHit: calling blck_fnc_alertNearbyVehicles with _instigator = %1",_instigator];
[_instigator] call blck_fnc_alertNearbyVehicles;
_nearestGroup = [getPos _veh] call blck_fnc_findNearestInfantryGroup;
[(units _nearestGroup) select 0,_instigator] call blck_fnc_alertGroupUnits;
_group setBehaviour "COMBAT";
_wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";

View File

@ -14,7 +14,7 @@ private ["_veh","_instigator","_group","_wp"];
_veh = _this select 0 select 0;
_instigator = _this select 0 select 3;
params["_unit","_killer"];
//params["_veh","_instigator"];
{
_veh removealleventhandlers _x;
@ -23,28 +23,21 @@ params["_unit","_killer"];
_veh removeAllMPEventHandlers _x;
} forEach ["MPHit","MPKilled"];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["_fnc_processAIVehicleKill: _this = %1",_this];
diag_log format["_fnc_processAIVehicleKill:: _units = %1 and _instigator = %2 units damage is %3",_veh,_instigator, damage _veh];
};
#endif
diag_log format["_fnc_processAIVehicleKill: _this = %1",_this];
diag_log format["_fnc_processAIVehicleKill:: _units = %1 and _instigator = %2 units damage is %3",_veh,_instigator, damage _veh];
if (!(isPlayer _instigator)) exitWith {};
_crew = crew _veh;
if !(count _crew == 0) then
{
_group = group (_crew select 0);
[_crew select 0,_instigator] call blck_fnc_alertGroupUnits;
_group setBehaviour "COMBAT";
_wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";
_group setCombatMode "RED";
_wp setWaypointCombatMode "RED";
};
[_instigator] call blck_fnc_alertNearbyVehicles;
_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";
_group setCombatMode "RED";
_wp setWaypointCombatMode "RED";

View File

@ -1,7 +1,6 @@
/*
By Ghostrider [GRG]
Copyright 2016
Last updated 3-17-17
spawns a vehicle of _vehType and mans it with units in _group.
returns _veh, the vehicle spawned.
@ -14,8 +13,7 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_vehType","_safepos","_veh","_unitNumber"];
params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true]];
params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true],["_crewCount",4]];
//_center Center of the mission area - this is usuall the position treated as the center by the mission spawner. Vehicles will patrol the perimeter of the mission area.
// _pos the approximate spawn point for the vehicle
@ -23,42 +21,44 @@ params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_
//_minDis = minimum distance from the center of the mission for vehicle waypoints
//_maxDis = maximum distance from the center of the mission for vehicle waypoints
//_groupForVehiclePatrol = The group with which to man the vehicle
// _crewCount = the number of AI including driver and gunners to place in the vehicle
private["_veh"];
if !(isNull _group) then {
_veh = [_vehType,_pos] call blck_fnc_spawnVehicle;
// _veh addEventHandler["HandleDamage",{ [_this] call blck_EH_AIVehicle_HandleDamage}];
_veh addMPEventHandler["MPHit",{ [_this] call blck_EH_AIVehicle_HandleHit}];
_veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeGroundVehicle];
_veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds];
private _maxCrew = [_crewCount] call blck_fnc_getNumberFromRange;
//_group setVariable["groupVehicle",_veh];
private _seats = [_vehType,true] call BIS_fnc_crewCount;
_unitNumber = 0;
diag_log format["_fnc_spawnVehiclePatrol: _veh = %1 | _maxCrew = %2 | _seats = %3",_veh,_maxCrew,_seats];
{
switch (_unitNumber) do
switch (_forEachIndex) do
{
case 0: {_x moveingunner _veh;};
case 1: {_x moveindriver _veh;};
case {_forEachIndex == _seats - 1}: {
diag_log format["_fnc_spawnVeiclePatrol: deleteing excess crew: _veh = %1 | _forEachIndex = %2 | _seats = %3",_veh,_forEachIndex,_seats];
deleteVehicle _x;
}; // delete any excess AI
default {_x moveInCargo _veh;};
};
_unitNumber = _unitNumber + 1;
//if (_forEachIndex == (_seats - 1)) exitWith{diag_log format["_fnc_spawnVeiclePatrol: _veh = %1 | _forEachIndex = %2 | _seats = %3",_veh,_forEachIndex,_seats]};
}forEach (units _group); // TODO: add check for empty crew slots and delete excess crew
// params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_wpPatrolMode","SAD"],["_soldierType","null"] ];
_group setcombatmode "RED";
_group setBehaviour "COMBAT";
if (_setWaypoints) then
{
// params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_wpPatrolMode","SAD"],["_soldierType","null"] ];
[_center,_minDis,_maxDis,_group,"perimeter","SAD","vehicle"] spawn blck_fnc_setupWaypoints;
};
};
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["_fnc_spawnVehiclePatrol::->> _veh = %1",_veh];
};
#endif
_veh

View File

@ -14,7 +14,7 @@
params["_vehicle"];
if !(local _vehicle) then
{
private _return = _vehicle setOwner 2;
_vehicle setOwner 2;
};
_vehicle setVehicleLock "UNLOCKED";
diag_log format["_fn_unlockServerVehicle: owner of vehicle %1 = %2",_vehicle, owner _vehicle];

View File

@ -36,7 +36,8 @@ for "_i" from 1 to (count blck_monitoredVehicles) do
blck_monitoredVehicles pushBack _veh;
};
} else {
//diag_log format["_fnc_vehicleMonitor: owner of vehicle %1 is a player, discontinuing further monitoring",_veh];
diag_log format["_fnc_vehicleMonitor: owner of vehicle %1 is a player, discontinuing further monitoring",_veh];
// TODO: Add script(s) to add vehicle to database when blck_persistantMissionVehicles == true;
};
};
};

View File

@ -136,8 +136,9 @@ private _functions = [
["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"],
["blck_fnc_removeLaunchers","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"],
["blck_fnc_removeNVG","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"],
["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"],
//["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"],
["blck_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"],
["GMS_fnc_alertNearbyGroups","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyGroups.sqf"],
["blck_fnc_alertNearbyVehicles","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"],
["blck_fnc_processIlleagalAIKills","\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"],
["blck_fnc_cleanupDeadAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"], // handles deletion of AI bodies and gear when it is time.
@ -150,7 +151,7 @@ private _functions = [
["blck_fnc_spawnCharacter","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"],
["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"],
["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"],
["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"],
["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"],
["GMS_fnc_removeAllAIgear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeAllAIgear.sqf"],
// HC support functions

View File

@ -18,7 +18,7 @@
*/
blck_locationBlackList = []; // Do not touch ...
blck_debugON = true; // Do not touch ...
blck_debugLevel = 3; // Do not touch ...
blck_debugLevel = 0; // Do not touch ...
#ifdef blck_milServer
if (true) exitWith
{
@ -291,7 +291,7 @@
****************************************************************/
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
blck_useConfigsGeneratedLoadouts = true;
blck_useConfigsGeneratedLoadouts = false;
blck_logBlacklistedItems = true;
//blck_maximumitempriceinai_loadouts = 1000;
// lists of black-listed items to be excluded from dynamic loadouts

View File

@ -16,10 +16,10 @@ private ["_staticMissions"];
_staticMissions = [
// [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)];
//["Epoch","Altis","template.sqf"],
//["Epoch","Altis","staticMissionExample2_Epoch.sqf"],
["Epoch","Altis","staticMissionExample2_Epoch.sqf"],
//["Epoch","Altis","destroyer.sqf"],
//["Exile","Altis","template.sqf"],
//["Exile","Altis","staticMissionExample2_Exile.sqf"]
["Exile","Altis","staticMissionExample2_Exile.sqf"]
];
diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf <Loaded>";

View File

@ -1,16 +1,11 @@
Todo:
For V 6.90:
1. Sort out the issue with the handling of unit kills not separating killer from the killer's vehicle. DONE
2. Test new unlock fix on HC
3. Write a claim vehicle function.
4. End of development most likely.
5. be sure AI do heal when wounded but not killed.
6. test that ai toss smoke when healing
7. Set up queue for markers needing to be deleted. DONE
need to call something that quickly scans for markers that need to be deleted
need to push temp markers to the cue with delete times. DONE
8. add a quick thing for refreshing flares on crates to replace all those uisleeps
do this in _signalEnd and _crateMarker DONE
replace _crateMarker with calls to signalEnd. DONE
9. Check that trader zones are detected properly in Exile.
Todo:
☐ Item: add check for empty crew slots and delete excess crew
7. Check that functions for allerting units, groups and vehicles function properly in all situations.
☐ Item: add check for empty crew slots and delete excess crew: note - use BIS_fnc_crewCount to get the number of slots.

View File

@ -1,4 +1,4 @@
#define blck_buildNumber 173
#define blck_buildNumber 175
#define blck_versionNumber 6.90
#define blck_buildDate "5-21-19"
#define blck_buildDate "5-23-19"