More updates to notifying AI on unit kill
This commit is contained in:
parent
72ffddd2fa
commit
9336ac4a2e
@ -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.
|
@ -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;
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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];
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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));
|
||||
|
||||
|
||||
|
@ -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;
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
@ -1,7 +1,6 @@
|
||||
/*
|
||||
_EH_AHVehicle_Hit
|
||||
By Ghostrider [GRG]
|
||||
Last Modified 7-27-17
|
||||
|
||||
Handles the case where a vehicle is hit.
|
||||
|
||||
--------------------------
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
/*
|
||||
Killed handler for _units
|
||||
_EH_VehicleKilled
|
||||
Killed handler for destruction of vehicles
|
||||
By Ghostrider-GRG-
|
||||
|
||||
--------------------------
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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];
|
||||
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>";
|
||||
|
@ -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.
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user