diff --git a/@GMS/addons/custom_server/Changelog 6.90.txt b/@GMS/addons/custom_server/Changelog 6.90.txt index c965eb3..8331833 100644 --- a/@GMS/addons/custom_server/Changelog 6.90.txt +++ b/@GMS/addons/custom_server/Changelog 6.90.txt @@ -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 \ No newline at end of file + 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. \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_giveTakeCrypto.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_giveTakeCrypto.sqf index d3c5f57..d5af8b5 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_giveTakeCrypto.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_giveTakeCrypto.sqf @@ -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; }; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_findNearestInfantryGroup.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_findNearestInfantryGroup.sqf index c7591d9..a8650ed 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_findNearestInfantryGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_findNearestInfantryGroup.sqf @@ -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 diff --git a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf index 32d628e..5fda7f6 100644 --- a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf +++ b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf @@ -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]; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf index c132b89..1f34079 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf @@ -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 diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf index 68de71b..429cca8 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf @@ -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 { diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf index 97faeb5..4c2a5c5 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf @@ -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)); diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyGroups.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyGroups.sqf new file mode 100644 index 0000000..e4e198a --- /dev/null +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyGroups.sqf @@ -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; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf index ff3a71d..26ded18 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf @@ -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; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf index 7880cfa..f13414d 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf @@ -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; + diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf index 099109b..0dc6d3a 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf @@ -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); diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_handlePlayerUpdates.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_handlePlayerUpdates.sqf index bc735b8..9920f3e 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_handlePlayerUpdates.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_handlePlayerUpdates.sqf @@ -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; }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf index 254ecb6..8519e10 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf @@ -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; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf index 7dcbe14..061b4ea 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf @@ -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; \ No newline at end of file +if (_isLegal) then { + [_unit,_killer] call GMS_fnc_handlePlayerUpdates; +}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_AIVehicle_Hit.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_AIVehicle_Hit.sqf index b3ea113..93632f2 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_AIVehicle_Hit.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_AIVehicle_Hit.sqf @@ -1,7 +1,6 @@ /* + _EH_AHVehicle_Hit By Ghostrider [GRG] - Last Modified 7-27-17 - Handles the case where a vehicle is hit. -------------------------- diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_VehicleKilled.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_VehicleKilled.sqf index 79a5ff6..91cd2cb 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_VehicleKilled.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_VehicleKilled.sqf @@ -1,6 +1,7 @@ /* - Killed handler for _units + _EH_VehicleKilled + Killed handler for destruction of vehicles By Ghostrider-GRG- -------------------------- diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf index ec8c725..fe6af26 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf @@ -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"; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf index a336c23..99abb6a 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf @@ -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"; + diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf index ed202b3..d794218 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf @@ -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 diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_unlockServerVehicle.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_unlockServerVehicle.sqf index bd2a93c..1cc63b1 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_unlockServerVehicle.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_unlockServerVehicle.sqf @@ -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]; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf index bafe231..8bf3144 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf @@ -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; }; }; }; diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 6b0c747..9fe44e3 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -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 diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index b82890a..946fe32 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -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 diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf index 7ba591f..267856d 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf @@ -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 "; diff --git a/@GMS/addons/custom_server/TODO b/@GMS/addons/custom_server/TODO index b32e2e2..9e04acc 100644 --- a/@GMS/addons/custom_server/TODO +++ b/@GMS/addons/custom_server/TODO @@ -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. diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 73ab57e..f89a92d 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -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"