Tweaks to AI behavior. Changed how waypoints are generated.
This commit is contained in:
parent
ea11e3d65c
commit
8e19a65b94
@ -4,11 +4,15 @@
|
|||||||
By Ghostrider-DbD-
|
By Ghostrider-DbD-
|
||||||
3/18/17
|
3/18/17
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef blck_debugMode
|
||||||
if (blck_debugLevel > 2) then
|
if (blck_debugLevel > 2) then
|
||||||
{
|
{
|
||||||
diag_log format ["_fnc_cleanEmptyGroups:: -- >> group count = %1 ",(count allGroups)];
|
diag_log format ["_fnc_cleanEmptyGroups:: -- >> group count = %1 ",(count allGroups)];
|
||||||
diag_log format ["_fnc_cleanEmptyGroups:: -- >> Group count AI side = %1", call blck_fnc_groupsOnAISide];
|
diag_log format ["_fnc_cleanEmptyGroups:: -- >> Group count AI side = %1", call blck_fnc_groupsOnAISide];
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
private _grp = allGroups;
|
private _grp = allGroups;
|
||||||
{
|
{
|
||||||
//diag_log format["_fnc_cleanEmptyGroups:: - >> type of object _x = %1",typeName _x];
|
//diag_log format["_fnc_cleanEmptyGroups:: - >> type of object _x = %1",typeName _x];
|
||||||
|
@ -0,0 +1,74 @@
|
|||||||
|
// Sets the WP type for WP for the specified group and updates other atributes accordingly.
|
||||||
|
/*
|
||||||
|
for DBD Clan
|
||||||
|
By Ghostrider-DBD-
|
||||||
|
Copyright 2016
|
||||||
|
Last modified 3/14/17
|
||||||
|
|
||||||
|
--------------------------
|
||||||
|
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["_group","_wp","_index","_pattern","_mode","_arc","_dis","_wpPos"];
|
||||||
|
|
||||||
|
_group = group _this;
|
||||||
|
|
||||||
|
_group setVariable["timeStamp",diag_tickTime];
|
||||||
|
_wp = [_group, 0];
|
||||||
|
|
||||||
|
_pattern = _group getVariable["wpPattern",[]];
|
||||||
|
_index = _group getVariable["wpIndex",0];
|
||||||
|
_index = _index + 1;
|
||||||
|
_minDis = _group getVariable["minDis",0];
|
||||||
|
_maxDis = _group getVariable["maxDis",0];
|
||||||
|
_arc = (_group getVariable["arc",0]) + 70;
|
||||||
|
//diag_log format["_fnc_setNextWaypoint: -> _minDis = %1 | _maxDis = %2 | _arc = %3",_minDis,_maxDis,_arc];
|
||||||
|
if (_index >= (count _pattern)) then
|
||||||
|
{
|
||||||
|
_index = 0;
|
||||||
|
} else {
|
||||||
|
diag_log format["_fnc_setNextWaypoint: -> waypoint index for group %1 is currently %2 with _pattern = %4 and count _pattern = %3",_group,_index, count _pattern,_pattern];
|
||||||
|
};
|
||||||
|
|
||||||
|
_group setVariable["wpIndex",_index];
|
||||||
|
_type = _pattern select _index;
|
||||||
|
diag_log format["_fnc_setNextWaypoint: -> waypoint for group %1 to be updated to mode %2 at position %3 with index %4",_group,_type,waypointPosition _wp, _index];
|
||||||
|
// revisit this to account for dead units. use waypointPosition if possible.
|
||||||
|
_wpPos = waypointPosition _wp;
|
||||||
|
|
||||||
|
_wp setWaypointType _type;
|
||||||
|
_wp setWaypointName toLower _type;
|
||||||
|
if (true /*_type isEqualTo toLower "move"*/) then
|
||||||
|
{
|
||||||
|
_dis = (_minDis) + random( (_maxDis) - (_minDis) );
|
||||||
|
if (toLower (_group getVariable["wpMode","random"]) isEqualTo "random") then
|
||||||
|
{
|
||||||
|
_arc = random(360);
|
||||||
|
} else {
|
||||||
|
_group setVariable["arc",_arc];
|
||||||
|
};
|
||||||
|
_oldPos = waypointPosition _wp;
|
||||||
|
_newPos = (_group getVariable ["patrolCenter",_wpPos]) getPos[_dis,_arc];
|
||||||
|
_wp setWPPos _newPos;
|
||||||
|
diag_log format["_fnc_setNextWaypoint: -- > for group %5 | _dis = %1 | _arc = %2 _oldPos = %3 | _newPos = %4",_dis,_arc,_oldPos,_newPos,_group];
|
||||||
|
//_wp setWaypointTimeout [1.0,1.1,1.2];
|
||||||
|
_wp setWaypointTimeout [20,25,30];
|
||||||
|
} else {
|
||||||
|
_wp setWaypointTimeout [20,25,30];
|
||||||
|
_newPos = _wpPos;
|
||||||
|
_wp setWPPos _newPos;
|
||||||
|
diag_log format["_fnc_setNextWaypoint: - waypoint position for group %1 not changed",_group];
|
||||||
|
};
|
||||||
|
diag_log format["_fnc_setNextWaypoint: -> waypoint for group %1 set to mode %2 at position %3 with index %4",_group,_type,waypointPosition _wp, _index];
|
||||||
|
diag_log format["_fnc_setNextWaypoint:-> waypoint statements for group %1 = %2",_group, waypointStatements [_group,_index]];
|
||||||
|
//_wp setWaypointBehaviour "COMBAT";
|
||||||
|
//_wp setWaypointCombatMode "RED";
|
||||||
|
_group setCurrentWaypoint _wp;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
|||||||
for DBD Clan
|
for DBD Clan
|
||||||
By Ghostrider-DBD-
|
By Ghostrider-DBD-
|
||||||
Copyright 2016
|
Copyright 2016
|
||||||
Last modified 3/17/17
|
Last modified 3/22/17
|
||||||
|
|
||||||
--------------------------
|
--------------------------
|
||||||
License
|
License
|
||||||
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
|
|
||||||
private["_dir","_arc","_noWp","_newpos","_wpradius","_wp"];
|
private["_dir","_arc","_noWp","_newpos","_wpradius","_wp"];
|
||||||
params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_patrolMode","SAD"]];
|
params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_pattern",["MOVE","SAD"]]];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
_pos = _this select 0; // center of the patrol area
|
_pos = _this select 0; // center of the patrol area
|
||||||
@ -33,6 +33,8 @@ _group setVariable["timeStamp",diag_tickTime];
|
|||||||
_group setVariable["arc",0];
|
_group setVariable["arc",0];
|
||||||
_group setVariable["wpRadius",30];
|
_group setVariable["wpRadius",30];
|
||||||
_group setVariable["wpMode",_mode];
|
_group setVariable["wpMode",_mode];
|
||||||
|
_group setVariable["wpPattern",_pattern];
|
||||||
|
_group setVariable["wpIndex",0];
|
||||||
|
|
||||||
_dir = 0;
|
_dir = 0;
|
||||||
_arc = 30;
|
_arc = 30;
|
||||||
@ -45,12 +47,12 @@ _wp = [_group, 0];
|
|||||||
_wp setWaypointType "MOVE";
|
_wp setWaypointType "MOVE";
|
||||||
_wp setWaypointName "move";
|
_wp setWaypointName "move";
|
||||||
_wp setWaypointTimeout [1,1.1,1.2];
|
_wp setWaypointTimeout [1,1.1,1.2];
|
||||||
_wp setWaypointStatements ["true","this call blck_fnc_changeToSADWaypoint;diag_log format['====Updating waypoint to SAD for group %1',group this];"];
|
_wp setWaypointStatements ["true","this call blck_fnc_setNextWaypoint;diag_log format['====Updating waypoint to for group %1',group this];"];
|
||||||
#else
|
#else
|
||||||
_wp setWaypointType "SAD";
|
_wp setWaypointType "SAD";
|
||||||
_wp setWaypointName "sad";
|
_wp setWaypointName "sad";
|
||||||
_wp setWaypointTimeout [20,25,30];
|
_wp setWaypointTimeout [20,25,30];
|
||||||
_wp setWaypointStatements ["true","this call blck_fnc_changeToMoveWaypoint;diag_log format['====Updating waypoint to Move for group %1',group this];"];
|
_wp setWaypointStatements ["true","this call blck_fnc_setNextWaypoint;diag_log format['====Updating waypointfor group %1',group this];"];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_wp setWaypointBehaviour "COMBAT";
|
_wp setWaypointBehaviour "COMBAT";
|
||||||
|
@ -27,10 +27,13 @@ if (_numai2 > _numai1) then {
|
|||||||
} else {
|
} else {
|
||||||
_numbertospawn = _numai2;
|
_numbertospawn = _numai2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef blck_debugMode
|
||||||
if (blck_debugLevel > 2) then
|
if (blck_debugLevel > 2) then
|
||||||
{
|
{
|
||||||
diag_log format["spawnGroup.sqf: _numbertospawn = %1",_numbertospawn];
|
diag_log format["spawnGroup.sqf: _numbertospawn = %1",_numbertospawn];
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
_groupSpawned = createGroup blck_AI_Side;
|
_groupSpawned = createGroup blck_AI_Side;
|
||||||
if !(isNull _groupSpawned) then
|
if !(isNull _groupSpawned) then
|
||||||
@ -77,12 +80,16 @@ if !(isNull _groupSpawned) then
|
|||||||
[_safepos,_weaponList,_groupSpawned,_skillLevel,_launcherType,_uniforms,_headGear] call blck_fnc_spawnAI;
|
[_safepos,_weaponList,_groupSpawned,_skillLevel,_launcherType,_uniforms,_headGear] call blck_fnc_spawnAI;
|
||||||
};
|
};
|
||||||
_groupSpawned selectLeader (units _groupSpawned select 0);
|
_groupSpawned selectLeader (units _groupSpawned select 0);
|
||||||
[_pos,_minDist,_maxDist,_groupSpawned] spawn blck_fnc_setupWaypoints;
|
// params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_pattern",["MOVE","SAD"]]];
|
||||||
|
[_pos,_minDist,_maxDist,_groupSpawned,"random",["SAD"]] spawn blck_fnc_setupWaypoints;
|
||||||
|
|
||||||
|
#ifdef blck_debugMode
|
||||||
if (blck_debugLevel > 2) then
|
if (blck_debugLevel > 2) then
|
||||||
{
|
{
|
||||||
diag_log format["fnc_spawnGroup:: Group spawned was %1 with units of %2",_groupSpawned, units _groupSpawned];
|
diag_log format["fnc_spawnGroup:: Group spawned was %1 with units of %2",_groupSpawned, units _groupSpawned];
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
diag_log "_fnc_spawnGroup:: ERROR CONDITION : NULL GROUP CREATED";
|
diag_log "_fnc_spawnGroup:: ERROR CONDITION : NULL GROUP CREATED";
|
||||||
};
|
};
|
||||||
|
@ -6,7 +6,7 @@ private ["_unit","_instigator"];
|
|||||||
//diag_log format["_EH_AIHit::-->> _this = %1",_this];
|
//diag_log format["_EH_AIHit::-->> _this = %1",_this];
|
||||||
_unit = _this select 0 select 0;
|
_unit = _this select 0 select 0;
|
||||||
_instigator = _this select 0 select 3;
|
_instigator = _this select 0 select 3;
|
||||||
//diag_log format["EH_AIHit:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
|
diag_log format["EH_AIHit:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
|
||||||
if (!(alive _unit)) exitWith {};
|
if (!(alive _unit)) exitWith {};
|
||||||
if (!(isPlayer _instigator)) exitWith {};
|
if (!(isPlayer _instigator)) exitWith {};
|
||||||
[_unit,_instigator] call blck_fnc_alertNearbyLeader;
|
[_unit,_instigator] call blck_fnc_alertNearbyLeader;
|
||||||
@ -15,8 +15,8 @@ if ((damage _unit) > 0.1 ) then
|
|||||||
{
|
{
|
||||||
//diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
|
//diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
|
||||||
_unit setVariable["hasHealed",true,true];
|
_unit setVariable["hasHealed",true,true];
|
||||||
_unit addMagazine "SmokeShellOrange";
|
//_unit addMagazine "SmokeShellOrange";
|
||||||
_unit fire "SmokeShellMuzzle";
|
_unit fire ["SmokeShellMuzzle","SmokeShellMuzzle","SmokeShellRed"];
|
||||||
_unit addItem "FirstAidKit";
|
_unit addItem "FirstAidKit";
|
||||||
_unit action ["HealSoldierSelf", soldier1];
|
_unit action ["HealSoldierSelf", soldier1];
|
||||||
};
|
};
|
||||||
|
@ -158,8 +158,8 @@ if !(isNull _grpPilot) then
|
|||||||
[_coords,_skillAI,_weapons,_uniforms,_headGear,_grpParatroops,_patrolHeli] call blck_fnc_spawnMissionParatroops;
|
[_coords,_skillAI,_weapons,_uniforms,_headGear,_grpParatroops,_patrolHeli] call blck_fnc_spawnMissionParatroops;
|
||||||
};
|
};
|
||||||
//set waypoint for helicopter
|
//set waypoint for helicopter
|
||||||
// params["_pos","_minDis","_maxDis","_group",["_mode","random"]];
|
// params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_pattern",["MOVE","SAD"]]];
|
||||||
[_coords,2,10,_grpPilot,"random"] call blck_fnc_setupWaypoints;
|
[_coords,2,10,_grpPilot,"random",["SENTRY"]] call blck_fnc_setupWaypoints;
|
||||||
private["_wpDestination"];
|
private["_wpDestination"];
|
||||||
/*
|
/*
|
||||||
[_grpPilot, 0] setWPPos _coords;
|
[_grpPilot, 0] setWPPos _coords;
|
||||||
@ -189,4 +189,4 @@ if (blck_debugLevel > 1) then
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_return;
|
_return;
|
||||||
|
@ -56,6 +56,7 @@ if !(isNull _group) then
|
|||||||
deleteWaypoint ((waypoints _group) select 0);
|
deleteWaypoint ((waypoints _group) select 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
_count = 5;
|
_count = 5;
|
||||||
_start = _center getDir _pos;
|
_start = _center getDir _pos;
|
||||||
_angle = _start;
|
_angle = _start;
|
||||||
|
@ -85,6 +85,7 @@ blck_fnc_setupWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\cus
|
|||||||
blck_fnc_missionGroupMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"; // Monitors active groups for those that are stuck in an SAD waypoint but not in combat
|
blck_fnc_missionGroupMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"; // Monitors active groups for those that are stuck in an SAD waypoint but not in combat
|
||||||
blck_fnc_changeToSADWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf";
|
blck_fnc_changeToSADWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf";
|
||||||
blck_fnc_changeToMoveWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf";
|
blck_fnc_changeToMoveWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf";
|
||||||
|
blck_fnc_setNextWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf";
|
||||||
blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups
|
blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups
|
||||||
|
|
||||||
// Functions specific to vehicles, whether wheeled, aircraft or static
|
// Functions specific to vehicles, whether wheeled, aircraft or static
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
*/
|
*/
|
||||||
#include"\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include"\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
blck_debugON = true;
|
blck_debugON = false;
|
||||||
blck_debugLevel = 3; // Sets level of detail for debugging info - WIP.
|
blck_debugLevel = 0; // Sets level of detail for debugging info - WIP.
|
||||||
blck_minFPS = 10;
|
blck_minFPS = 10;
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
private ["_version","_versionDate"];
|
private ["_version","_versionDate"];
|
||||||
_blck_version = "6.58 Build 45";
|
_blck_version = "6.58 Build 46";
|
||||||
_blck_versionDate = "3-21-17 8:00 PM";
|
_blck_versionDate = "3-22-17 8:00 PM";
|
||||||
|
Loading…
Reference in New Issue
Block a user