Sarge AI
This commit is contained in:
Teh Dango 2016-03-15 15:15:53 -05:00
parent 0a10f7e428
commit 2f119d5fbc
27 changed files with 2535 additions and 128 deletions

View File

@ -20,7 +20,7 @@ call compile preprocessFileLineNumbers "sarge\SAR_config.sqf";
diag_log format["Sarge's AI System: Starting Sarge AI version %1",SAR_version];
if (!isServer && hasInterface) then {
if (!isServer) then {
"adjustrating" addPublicVariableEventHandler {((_this select 1) select 0) addRating ((_this select 1) select 1);};
};
@ -67,12 +67,6 @@ RESISTANCE setFriend [WEST, 1];
WEST setFriend [EAST, 0];
WEST setFriend [RESISTANCE, 1];
SAR_AI_friendly_side = RESISTANCE;
SAR_AI_unfriendly_side = EAST;
SAR_leader_number = 0;
SAR_AI_monitor = [];
_worldname = toLower worldName;
diag_log format["Sarge's AI System: Setting up SAR_AI for %1",_worldname];

View File

@ -51,61 +51,124 @@ _grps_sold = _valuearray select 4;
_grps_surv = _valuearray select 5;
_grps_upd = [];
_grps_upd = _grps_band;
if (SAR_HC) then {
//for [{_i = (count _grps_band)},{_i < (_max_grps select 0)}, {_i=_i+1}] do
for "_i" from (count _grps_band) to ((_max_grps select 0) - 1) do
{
if(_max_p_grp select 0 > 0) then {
_probability = _rnd_grps select 0;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 0)-1));
_soldiers =((_max_p_grp select 0)-1) - _snipers;
_group = [_markername,3,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_band"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
if (!isServer && !hasInterface) then {
_grps_upd = _grps_band;
//for [{_i = (count _grps_band)},{_i < (_max_grps select 0)}, {_i=_i+1}] do
for "_i" from (count _grps_band) to ((_max_grps select 0) - 1) do
{
if(_max_p_grp select 0 > 0) then {
_probability = _rnd_grps select 0;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 0)-1));
_soldiers =((_max_p_grp select 0)-1) - _snipers;
_group = [_markername,3,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_band"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
_grps_upd = _grps_sold;
_grps_upd = _grps_sold;
//for [{_i = (count _grps_sold)},{_i < (_max_grps select 1)}, {_i=_i+1}] do
for "_i" from (count _grps_sold) to ((_max_grps select 1) - 1) do
{
if(_max_p_grp select 1 > 0) then {
_probability = _rnd_grps select 1;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 1)-1));
_soldiers =((_max_p_grp select 1)-1) - _snipers;
_group = [_markername,1,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_sold"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
//for [{_i = (count _grps_sold)},{_i < (_max_grps select 1)}, {_i=_i+1}] do
for "_i" from (count _grps_sold) to ((_max_grps select 1) - 1) do
{
if(_max_p_grp select 1 > 0) then {
_probability = _rnd_grps select 1;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 1)-1));
_soldiers =((_max_p_grp select 1)-1) - _snipers;
_group = [_markername,1,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_sold"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
_grps_upd = _grps_surv;
_grps_upd = _grps_surv;
//for [{_i = (count _grps_surv)},{_i < (_max_grps select 2)}, {_i=_i+1}] do
for "_i" from (count _grps_surv) to ((_max_grps select 2) - 1) do
{
if(_max_p_grp select 2 > 0) then {
_probability = _rnd_grps select 2;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 2)-1));
_soldiers =((_max_p_grp select 2)-1) - _snipers;
_group = [_markername,2,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_surv"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
//for [{_i = (count _grps_surv)},{_i < (_max_grps select 2)}, {_i=_i+1}] do
for "_i" from (count _grps_surv) to ((_max_grps select 2) - 1) do
{
if(_max_p_grp select 2 > 0) then {
_probability = _rnd_grps select 2;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 2)-1));
_soldiers =((_max_p_grp select 2)-1) - _snipers;
_group = [_markername,2,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_surv"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
};
} else {
if (isServer) then {
//for [{_i = (count _grps_band)},{_i < (_max_grps select 0)}, {_i=_i+1}] do
for "_i" from (count _grps_band) to ((_max_grps select 0) - 1) do
{
if(_max_p_grp select 0 > 0) then {
_probability = _rnd_grps select 0;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 0)-1));
_soldiers =((_max_p_grp select 0)-1) - _snipers;
_group = [_markername,3,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_band"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
_grps_upd = _grps_sold;
//for [{_i = (count _grps_sold)},{_i < (_max_grps select 1)}, {_i=_i+1}] do
for "_i" from (count _grps_sold) to ((_max_grps select 1) - 1) do
{
if(_max_p_grp select 1 > 0) then {
_probability = _rnd_grps select 1;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 1)-1));
_soldiers =((_max_p_grp select 1)-1) - _snipers;
_group = [_markername,1,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_sold"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
_grps_upd = _grps_surv;
//for [{_i = (count _grps_surv)},{_i < (_max_grps select 2)}, {_i=_i+1}] do
for "_i" from (count _grps_surv) to ((_max_grps select 2) - 1) do
{
if(_max_p_grp select 2 > 0) then {
_probability = _rnd_grps select 2;
_chance = (random 100);
if(_chance < _probability) then {
_snipers=floor (random ((_max_p_grp select 2)-1));
_soldiers =((_max_p_grp select 2)-1) - _snipers;
_group = [_markername,2,_snipers,_soldiers,"",_respawn] call SAR_AI;
_grps_upd set [count _grps_upd,_group];
// update AI monitor
_check = [["grps_surv"],[_grps_upd],_markername] call SAR_AI_mon_upd;
};
};
};
};
};
// DEBUG

View File

@ -67,7 +67,6 @@ if((!isNull _aikiller) && (isPlayer _aikiller) && (_aikiller isKindOf "Exile_Uni
ExileClientPlayerScore = _playerRespect;
(owner _aikiller) publicVariableClient "ExileClientPlayerScore";
ExileClientPlayerScore = nil;
format ["setAccountMoneyAndRespect:%1:%2:%3", _playerMoney, _playerRespect, _playerUID] call ExileServer_system_database_query_fireAndForget;
@ -107,7 +106,6 @@ if((!isNull _aikiller) && (isPlayer _aikiller) && (_aikiller isKindOf "Exile_Uni
ExileClientPlayerScore = _playerRespect;
(owner _aikiller) publicVariableClient "ExileClientPlayerScore";
ExileClientPlayerScore = nil;
format ["setAccountMoneyAndRespect:%1:%2:%3", _playerMoney, _playerRespect, _playerUID] call ExileServer_system_database_query_fireAndForget;

View File

@ -12,7 +12,7 @@
http://www.hod-servers.com
*/
private ["_message","_ai","_aikiller","_aikilled_type","_aikilled_side","_aikilled_group_side","_aikiller_group_side","_aikiller_type","_aikiller_name","_aikiller_side","_respect","_humankills","_banditkills","_ai_xp_type","_xp_gain","_tmp","_sphere_alpha","_sphere_red","_sphere_green","_sphere_blue","_obj_text_string","_ai_killer_xp","_ai_killer_xp_new","_ai_type","_ai_xp","_ai_killer_xp_type","_ai_killer_type"];
private ["_message","_ai","_aikiller","_aikilled_type","_aikilled_side","_aikilled_group_side","_aikiller_group_side","_aikiller_type","_aikiller_name","_aikiller_side","_respect","_humankills","_banditkills","_tmp","_sphere_alpha","_sphere_red","_sphere_green","_sphere_blue","_obj_text_string","_ai_type","_ai_killer_type"];
if (!isServer) exitWith {};
@ -42,7 +42,7 @@ _ai_killer_type = _aikiller getVariable ["SAR_AI_type",""];
if (SAR_KILL_MSG) then {
if(isPlayer _aikiller) then {
_message = format["A %3 %2 was killed by Player: %1",_aikiller_name,_ai_type,_ai_xp_type];
_message = format["A %2 was killed by Player: %1",_aikiller_name,_ai_type];
diag_log _message;
//[nil, nil, rspawn, [[West,"airbase"], _message], { (_this select 0) sideChat (_this select 1) }] call RE;
@ -73,7 +73,6 @@ if ((!isNull _aikiller) && (_aikiller isKindOf "Exile_Unit_Player")) then {
ExileClientPlayerScore = _playerRespect;
(owner _aikiller) publicVariableClient "ExileClientPlayerScore";
ExileClientPlayerScore = nil;
format ["setAccountMoneyAndRespect:%1:%2:%3", _playerMoney, _playerRespect, _playerUID] call ExileServer_system_database_query_fireAndForget;
@ -107,7 +106,6 @@ if ((!isNull _aikiller) && (_aikiller isKindOf "Exile_Unit_Player")) then {
ExileClientPlayerScore = _playerRespect;
(owner _aikiller) publicVariableClient "ExileClientPlayerScore";
ExileClientPlayerScore = nil;
format ["setAccountMoneyAndRespect:%1:%2:%3", _playerMoney, _playerRespect, _playerUID] call ExileServer_system_database_query_fireAndForget;

View File

@ -26,7 +26,7 @@ SAR_KILL_MSG = false; // Set to true for announcing AI kills to the server *Th
SAR_dynamic_spawning = true; // Turn dynamic grid spawns on or off
SAR_Base_Gaurds = true; // Turn AI territory gurads on or off
SAR_dynamic_group_respawn = true; // Turn dynamic grid AI respawn on or off
SAR_AI_STEAL_VEHICLE = true; // Turn the option for AI using vehicles to reach their destination on or off
SAR_AI_STEAL_VEHICLE = false; // Turn the option for AI using vehicles to reach their destination on or off
SAR_AI_disable_UPSMON_AI = false; // Turning this off could have unintended consequences
SAR_respawn_waittime = 300; // How long to wait before dynamic IA respawns
SAR_DESPAWN_TIMEOUT = 120; // How long to wait before despawning dynamic AI
@ -130,3 +130,7 @@ SAR_heli_type = ["B_Heli_Light_01_stripped_F"];
/* -------------------------------- Do Not Edit Below. If you do the AI will not work properly. -------------------------------- */
SAR_HC = false;
SAR_AI_friendly_side = RESISTANCE;
SAR_AI_unfriendly_side = EAST;
SAR_leader_number = 0;
SAR_AI_monitor = [];

View File

@ -174,11 +174,11 @@ if (_respawn) then {
_ups_para_list pushBack [_respawn_time];
};
if(!SAR_AI_STEAL_VEHICLE) then {
_ups_para_list pushBack ['NOVEH'];
if !(SAR_AI_STEAL_VEHICLE) then {
_ups_para_list pushBack ['NOVEH2'];
};
if(SAR_AI_disable_UPSMON_AI) then {
if (SAR_AI_disable_UPSMON_AI) then {
_ups_para_list pushBack ['NOAI'];
};

View File

@ -29,21 +29,21 @@ if (_argc > 1) then {
_side = SAR_AI_friendly_side;
_type = "sold";
_ai_type = "AI Military";
_ai_id = "id_SAR_sold_man"
_ai_id = "id_SAR_sold_man";
};
case 2:
{
_side = SAR_AI_friendly_side;
_type = "surv";
_ai_type = "AI Survivor";
_ai_id = "id_SAR_surv_lead"
_ai_id = "id_SAR_surv_lead";
};
case 3:
{
_side = SAR_AI_unfriendly_side;
_type = "band";
_ai_type = "AI Bandit";
_ai_id = "id_SAR_band"
_ai_id = "id_SAR_band";
};
};
} else {
@ -92,12 +92,17 @@ _heli setVehicleAmmo 1;
[_heli] joinSilent _groupheli;
sleep 1;
_leader = _groupheli createunit [_leaderNPC call BIS_fnc_selectRandom, [(_rndpos select 0) + 10, _rndpos select 1, 0], [], 0.5, "NONE"];
_leader = _groupheli createunit [(_leaderNPC call BIS_fnc_selectRandom), [(_rndpos select 0) + 10, _rndpos select 1, 0], [], 0.5, "NONE"];
[_leader,_leader_weapon_names,_leader_items,_leader_tools] call SAR_unit_loadout;
[_leader] spawn SAR_AI_trace_veh;
_leader setIdentity _ai_id;
switch (_grouptype) do
{
case 1:{_leader setIdentity "id_SAR_sold_man";};
case 2:{_leader setIdentity "id_SAR_surv_lead";};
case 3:{_leader setIdentity "id_SAR_band";};
};
[_leader] spawn SAR_AI_reammo;
_leader addMPEventHandler ["MPkilled", {Null = _this spawn SAR_AI_killed;}];
@ -120,7 +125,7 @@ _leader setVehicleVarname _leadername;
_leader setVariable ["SAR_leader_name",_leadername,false];
*/
// store AI type on the AI
_leader setVariable ["SAR_AI_type",_ai_type pushBack " Leader",false];
_leader setVariable ["SAR_AI_type",_ai_type + " Leader",false];
/*
// set behaviour & speedmode
_leader setspeedmode "FULL";
@ -137,7 +142,12 @@ _soldier_tools = ["rifleman",_type] call SAR_unit_loadout_tools;
_man2heli moveInTurret [_heli,[0]];
[_man2heli] spawn SAR_AI_trace_veh;
_man2heli setIdentity _ai_id;
switch (_grouptype) do
{
case 1:{_man2heli setIdentity "id_SAR_sold_man";};
case 2:{_man2heli setIdentity "id_SAR_surv_lead";};
case 3:{_man2heli setIdentity "id_SAR_band";};
};
[_man2heli] spawn SAR_AI_reammo;
_man2heli addMPEventHandler ["MPkilled", {Null = _this spawn SAR_AI_killed;}];
@ -166,7 +176,12 @@ _soldier_tools = ["rifleman",_type] call SAR_unit_loadout_tools;
_man3heli moveInTurret [_heli,[1]];
[_man3heli] spawn SAR_AI_trace_veh;
_man3heli setIdentity _ai_id;
switch (_grouptype) do
{
case 1:{_man3heli setIdentity "id_SAR_sold_man";};
case 2:{_man3heli setIdentity "id_SAR_surv_lead";};
case 3:{_man3heli setIdentity "id_SAR_band";};
};
[_man3heli] spawn SAR_AI_reammo;
_man3heli addMPEventHandler ["MPkilled", {Null = _this spawn SAR_AI_killed;}];

View File

@ -128,7 +128,12 @@ _groupvehicles = createGroup _side;
[_leader,_leader_weapon_names,_leader_items,_leader_tools] call SAR_unit_loadout;
[_leader] spawn SAR_AI_trace_veh;
_leader setIdentity _ai_id;
switch (_grouptype) do
{
case 1:{_leader setIdentity "id_SAR_sold_man";};
case 2:{_leader setIdentity "id_SAR_surv_lead";};
case 3:{_leader setIdentity "id_SAR_band";};
};
[_leader] spawn SAR_AI_reammo;
_leader addMPEventHandler ["MPkilled", {Null = _this spawn SAR_AI_killed;}];
@ -174,7 +179,12 @@ _groupvehicles = createGroup _side;
[_this,_sniper_weapon_names,_sniper_items,_sniper_tools] call SAR_unit_loadout;
[_this] spawn SAR_AI_trace_veh;
_this setIdentity _ai_id;
switch (_grouptype) do
{
case 1:{_this setIdentity "id_SAR_sold_man";};
case 2:{_this setIdentity "id_SAR_surv_lead";};
case 3:{_this setIdentity "id_SAR_band";};
};
[_this] spawn SAR_AI_reammo;
_this addMPEventHandler ["MPkilled", {Null = _this spawn SAR_AI_killed;}];
@ -214,7 +224,12 @@ _groupvehicles = createGroup _side;
[_this,_soldier_weapon_names,_soldier_items,_soldier_tools] call SAR_unit_loadout;
[_this] spawn SAR_AI_trace_veh;
_this setIdentity _ai_id;
switch (_grouptype) do
{
case 1:{_this setIdentity "id_SAR_sold_man";};
case 2:{_this setIdentity "id_SAR_surv_lead";};
case 3:{_this setIdentity "id_SAR_band";};
};
[_this] spawn SAR_AI_reammo;
_this addMPEventHandler ["MPkilled", {Null = _this spawn SAR_AI_killed;}];

View File

@ -14,7 +14,7 @@
*/
private ["_baseOwner","_attackAll","_friendlyPlayers","_ai","_entity_array"];
if (isServer or !hasInterface) exitWith {}; // Do not execute on server or any headless client(s)
if (isServer || !hasInterface) exitWith {}; // Do not execute on server or any headless client(s)
_ai = _this select 0;

View File

@ -14,7 +14,7 @@
*/
private ["_ai","_entity_array","_sleeptime","_detectrange"];
if (isServer or !hasInterface) exitWith {}; // Do not execute on server or any headless client(s)
if (isServer || !hasInterface) exitWith {}; // Do not execute on server or any headless client(s)
_ai = _this select 0;

View File

@ -0,0 +1,33 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Chernarus
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=2500;
// y coordinate of the first, bottom left grid center point
_starty=2800;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=6;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=6;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 1000;

View File

@ -0,0 +1,32 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Fallujah
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=2500;
// y coordinate of the first, bottom left grid center point
_starty=2800;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=6;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=6;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 1000;

View File

@ -0,0 +1,32 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Lingor by Wyqer
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=1000;
// y coordinate of the first, bottom left grid center point
_starty=1000;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=6;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=6;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 750;

View File

@ -0,0 +1,32 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Celle
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=2500;
// y coordinate of the first, bottom left grid center point
_starty=2800;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=5;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=5;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 650;

View File

@ -0,0 +1,32 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Namalsk
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=2900;
// y coordinate of the first, bottom left grid center point
_starty=5600;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=4;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=4;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 900;

View File

@ -0,0 +1,32 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Panthera
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=2500;
// y coordinate of the first, bottom left grid center point
_starty=2800;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=6;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=6;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 1000;

View File

@ -0,0 +1,32 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Takistan
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=2500;
// y coordinate of the first, bottom left grid center point
_starty=2800;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=6;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=6;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 1000;

View File

@ -0,0 +1,32 @@
// =========================================================================================================
// SAR_AI - DayZ AI library
// Version: 1.0.0
// Author: Sarge (sarge@krumeich.ch)
//
// Wiki: to come
// Forum: to come
//
// ---------------------------------------------------------------------------------------------------------
// Required:
// UPSMon
// SHK_pos
//
// ---------------------------------------------------------------------------------------------------------
// grid cfg file for Taviana
// last modified: 5.3.2013
// ---------------------------------------------------------------------------------------------------------
// x coordinate of the first, bottom left grid center point
_startx=2500;
// y coordinate of the first, bottom left grid center point
_starty=1500;
// gridsize x (how many single squares in the grid) for the x-axis
_gridsize_x=6;
// gridsize y (how many single squares in the grid) for the y-axis
_gridsize_y=7;
// distance from the center of one square of the grid to the border of that square. so overall size of a square in the grid is 2x gridwidth / 2x gridwidth
_gridwidth = 1500;

View File

@ -46,55 +46,17 @@ if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
diag_log format["SAR_AI: Dynamic spawning definition / adjustments started"];
// Blacklist using 0s
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_0"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_2_0"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_0"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_12_0"] call SAR_AI_mon_upd;
// Blacklist Safezones using 0s
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_5"] call SAR_AI_mon_upd;// Top left safezone
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_1"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_1"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_12_1"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_6_4"] call SAR_AI_mon_upd;// Airbase safezone
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_6_5"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_7_4"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_7_5"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_2"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_2"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_12_2"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_3"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_3"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_12_3"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_4"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_4"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_12_4"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_5"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_5"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_5"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_12_5"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_6"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_6"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_6"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_12_6"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_7_7"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_8_7"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_9_7"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_2_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_3_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_4_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_5_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_6_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_7_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_8_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_9_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_10_8"] call SAR_AI_mon_upd;
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_10_8"] call SAR_AI_mon_upd;// Top right safezone
[["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_11_8"] call SAR_AI_mon_upd;
diag_log format["SAR_AI: Dynamic spawning definition / adjustments finished"];
};
@ -199,7 +161,7 @@ if (_type isEqualTo "static") then {
// define your static air patrols here
/* //Heli Patrol NWAF
//Heli Patrol NWAF
[SAR_marker_DEBUG_veh,1,true] call SAR_AI_heli;
//Heli Patrol NEAF
@ -217,7 +179,7 @@ if (_type isEqualTo "static") then {
[SAR_marker_DEBUG_veh,1,true,30] call SAR_AI_heli;
[SAR_marker_DEBUG_veh,1,true,30] call SAR_AI_heli;
[SAR_marker_DEBUG_veh,3,true,30] call SAR_AI_heli;
[SAR_marker_DEBUG_veh,3,true,30] call SAR_AI_heli; */
[SAR_marker_DEBUG_veh,3,true,30] call SAR_AI_heli;
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];

View File

@ -0,0 +1,384 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
//
// grid definition for the automatic spawn system
//
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
diag_log format["SAR_AI: Dynamic spawning definition / adjustments started"];
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,100,100],[0,2,1]],"SAR_area_0_0"] call SAR_AI_mon_upd;
// Balota, 1 bandit groups, 0 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[1,0,2],[80,0,80],[2,0,3]],"SAR_area_1_0"] call SAR_AI_mon_upd;
// Cherno, 2 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[2,0,3],[75,0,75],[4,0,4]],"SAR_area_2_0"] call SAR_AI_mon_upd;
// Prido, 1 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[1,0,3],[50,0,50],[4,0,2]],"SAR_area_3_0"] call SAR_AI_mon_upd;
// Elektro, 2 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[2,0,3],[50,0,50],[4,0,4]],"SAR_area_4_0"] call SAR_AI_mon_upd;
// Kamyshovo, 0 bandit groups, 0 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[0,0,1],[0,0,80],[0,0,3]],"SAR_area_5_0"] call SAR_AI_mon_upd;
// Tulga, 0 bandit groups, 0 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[0,0,1],[0,0,80],[0,0,3]],"SAR_area_5_1"] call SAR_AI_mon_upd;
// Solni, 1 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[1,0,0],[80,0,0],[2,0,0]],"SAR_area_5_2"] call SAR_AI_mon_upd;
// Berezino, 0 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[0,0,3],[0,0,75],[0,0,3]],"SAR_area_5_3"] call SAR_AI_mon_upd;
// Khelm, 1 bandit groups, 0 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[1,0,1],[75,0,75],[3,0,3]],"SAR_area_5_4"] call SAR_AI_mon_upd;
// NEAF, 0 bandit groups, 3 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[0,3,1],[0,50,75],[0,2,4]],"SAR_area_5_5"] call SAR_AI_mon_upd;
// NWAF, 0 bandit groups, 2 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[0,2,1],[0,50,75],[0,2,4]],"SAR_area_1_4"] call SAR_AI_mon_upd;
// Stary, 3 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[3,0,3],[50,0,50],[3,0,3]],"SAR_area_2_2"] call SAR_AI_mon_upd;
// Devils Castle, 2 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[2,0,0],[75,0,0],[3,0,0]],"SAR_area_2_4"] call SAR_AI_mon_upd;
// Skalka, 1 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[1,0,0],[75,0,0],[3,0,0]],"SAR_area_0_5"] call SAR_AI_mon_upd;
// Petrovka1, 2 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[2,0,0],[75,0,0],[3,0,0]],"SAR_area_1_5"] call SAR_AI_mon_upd;
// Petrovka2, 2 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[2,0,0],[75,0,0],[3,0,0]],"SAR_area_2_5"] call SAR_AI_mon_upd;
// Pobeda, 2 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[2,0,0],[75,0,0],[3,0,0]],"SAR_area_3_5"] call SAR_AI_mon_upd;
// Krasno, 0 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[0,1,1],[0,75,75],[0,4,2]],"SAR_area_4_5"] call SAR_AI_mon_upd;
// test south of lopatino, 1 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
[["max_grps","rnd_grps","max_p_grp"],[[1,0,0],[100,0,0],[6,0,0]],"SAR_area_0_3"] call SAR_AI_mon_upd;
diag_log format["SAR_AI: Dynamic spawning definition / adjustments finished"];
};
if (_type isEqualTo "static") then {
//
// Definition of area markers for static spawns
//
diag_log format["SAR_AI: Static spawning area definition started"];
// soutcoast, heli patrol area
_this = createMarker ["SAR_marker_helipatrol_southcoast", [7997.2837, 2687.6707]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [6500, 1200];
SAR_marker_helipatrol_southcoast = _this;
// eastcoast, heli patrol area
_this = createMarker ["SAR_marker_helipatrol_eastcoast", [13304.196, 8220.9795]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [1200, 6000];
SAR_marker_helipatrol_eastcoast = _this;
// NWAF, heli patrol area
_this = createMarker ["SAR_marker_helipatrol_nwaf", [4525.3335, 10292.299]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [1500, 500];
_this setMarkerDir 59.354115;
SAR_marker_helipatrol_nwaf = _this;
// NEAF, heli patrol area
_this = createMarker ["SAR_marker_helipatrol_neaf", [12034.16, 12725.376, 0]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [1000, 600];
SAR_marker_helipatrol_neaf = _this;
_this = createMarker ["SAR_marker_DEBUG_veh", [1951.4304, 11905.569]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 1000];
_this setMarkerDir -19.085985;
SAR_marker_DEBUG_veh = _this;
_this = createMarker ["SAR_marker_DEBUG_devilscastle", [6913.47,11437.2,0.001]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [10, 10];
SAR_marker_DEBUG_devilscastle = _this;
diag_log format["SAR_AI: Static spawning area definition finished"];
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
// Static, predefined heli patrol areas with configurable units
//---------------------------------------------------------------------------------
//
// format: [areamarker,type_of_group,(respawn),(respawntime)] call SAR_AI;
//
// areamarker : Name of an area, as defined in your area definitions (MUST NOT BE similar to SAR_area_ ! THIS IS IMPORTANT!)
// type_of_group : 1 = military, 2 = survivors, 3 = bandits
//
// respawn : true or false (optional)
// respawntime : time in secs until group respawns (optional)
// air_vehicle_type : classnema of the air vehicle you want to use
//
//
// Note: The crew will be automatically seized to man any available gun in the airplane / heli.
//
// Examples:
//
// A) military air group patrolling, respawning, respawn time = default configured time, using default randomized vehicles
//
// [SAR_marker_DEBUG,1,true] call SAR_AI_heli;
//
// B) bandit air group patrolling, not respawning,
//
// [SAR_marker_DEBUG,3] call SAR_AI_heli;
//
// C) survivor air group patrolling, respawning, respawn time = 120 seconds
//
// [SAR_marker_DEBUG,true,120] call SAR_AI_heli;
//
//---------------------------------------------------------------------------------
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// define your static air patrols here
//
//Heli Patrol NWAF
[SAR_marker_helipatrol_nwaf,1,true] call SAR_AI_heli;
//Heli Patrol NEAF
[SAR_marker_helipatrol_neaf,1,true] call SAR_AI_heli;
// Heli patrol south coast
[SAR_marker_helipatrol_southcoast,1,true] call SAR_AI_heli;
[SAR_marker_helipatrol_southcoast,1,true] call SAR_AI_heli;
// heli patrol east coast
[SAR_marker_helipatrol_eastcoast,1,true] call SAR_AI_heli;
[SAR_marker_helipatrol_eastcoast,1,true] call SAR_AI_heli;
// example war scenario in the northwest. Comment OUT after having had a look at it!
[SAR_marker_DEBUG_veh,1,true,30] call SAR_AI_heli;
[SAR_marker_DEBUG_veh,1,true,30] call SAR_AI_heli;
[SAR_marker_DEBUG_veh,3,true,30] call SAR_AI_heli;
[SAR_marker_DEBUG_veh,3,true,30] call SAR_AI_heli;
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
//
// format: [areamarker,type_of_group,number_of_snipers,number_of_riflemen,action_to_do,(respawn),(respawntime)] call SAR_AI;
//
// areamarker : Name of an area, as defined in your area definitions (MUST NOT BE similar to SAR_area_ ! THIS IS IMPORTANT!)
// type_of_group : 1 = military, 2 = survivors, 3 = bandits
// number_of_snipers : amount of snipers in the group
// number_of_riflemen : amount of riflemen in the group
//
// action_to_do : groupaction (optional, default is "patrol")
// possible values:
// "fortify" -> the group will search for nearby buildings and move in them. They will stay there until an enemy spotted, then they will chase him.
// "ambush" -> the group will look for a nearby road, and setup an ambush. They will not move until an enemy was spotted.
// "patrol" -> the group will patrol random waypoints in the area, and engage any enemy they see.
//
// respawn : true or false (optional)
// respawntime : time in secs until group respawns (optional)
//
// Examples:
//
// A) military group patrolling, with 1 leader and 1 rifleman, respawning, respawn time = default configured time
//
// [SAR_marker_DEBUG,1,0,1,"patrol",true] call SAR_AI;
//
// B) bandit group patrolling, with 1 leader, 2 snipers and 1 rifleman, respawning, respawn time = 30 seconds
//
// [SAR_marker_DEBUG,3,2,1,"patrol",true,30] call SAR_AI;
//
// C) survivor group fortifying, with 1 leader, 1 sniper and 3 riflemen, not respawning
//
// [SAR_marker_DEBUG,2,1,3,"fortify",false] call SAR_AI;
//
//---------------------------------------------------------------------------------
diag_log format["SAR_AI: Static Spawning for infantry patrols started"];
//
// define your static infantry patrols here
//
[SAR_marker_DEBUG_devilscastle,1,0,6,"fortify",true] call SAR_AI;
// example war scenario in the northwest. Comment OUT after having had a look at it!
[SAR_marker_DEBUG_veh,1,0,9,"patrol",true] call SAR_AI;
[SAR_marker_DEBUG_veh,2,0,9,"patrol",true] call SAR_AI;
[SAR_marker_DEBUG_veh,3,0,9,"patrol",true] call SAR_AI;
[SAR_marker_DEBUG_veh,3,0,9,"patrol",true] call SAR_AI;
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
// -------------------------------------------------------------------------------------
//
// Static spawns for vehicle groups
//
// format: [areamarker,type_of_group,vehicle array,crew array,(respawn),(respawntime)] call SAR_AI_land;
//
//
// areamarker : Name of an area, as defined in your area definitions
// type_of_group : 1 = military, 2 = survivors, 3 = bandits
// vehicle array : e.g. ["car1"], MUST be enclosed by [], and MUST be valid vehicle classnames. multiple vehicles are possible, like this: ["car1","car1","car1"]
// crew array : e.g. [[1,2,3]] -> the first entry in the array element sets if the leader travels in that vehicle, the second is the number of snipers in the vehicle, the third is the number of riflemen.
// must match to the number of defined vehicles, so for the above example, you need: [[1,2,3],[0,1,2],[0,1,1]]
//
//
// respawn : true or false (optional)
// respawntime : time in secs until group respawns (optional)
//
//
//
// Examples:
//
// A) This will spawn an AI group with 1 vehicle(UAZ), and 3 AI in it
/*
[
SAR_marker_DEBUG_veh_1, // Name of the area that the vehicle patrol will spawn in
1, // type of group
["UAZ_Unarmed_TK_EP1"], // used vehicles
[[1,1,1]], // Vehicle initial crew
false // if this group should respawn or not
] call SAR_AI_land;
*/
//
// B) This will spawn an AI group with 1 vehicle, 3 AI in the UAZ, and this group will respawn after 60 seconds
/*
[
SAR_marker_DEBUG_veh_1, // Name of the area that the vehicle patrol will spawn in
1, // type of group
["UAZ_Unarmed_TK_EP1"], // used vehicle
[[1,1,1]], // Vehicle initial crews
true, // if this group should respawn or not
60 // waittime until this group will respawn
] call SAR_AI_land;
*/
//
// -------------------------------------------------------------------------------------
diag_log format["SAR_AI: Static Spawning for vehicle patrols started"];
//
// define your static vehicle patrols here
//
// example war scenario in the northwest. Comment OUT after having had a look at it!
/* [
SAR_marker_DEBUG_veh, // Name of the area that the vehicle patrol will spawn in
1, // type of group
["LandRover_CZ_EP1","M1030","M1030","LandRover_CZ_EP1"], // used vehicle
[[1,1,1],[0,1,1],[0,1,1],[0,1,1]], // Vehicle initial crew
true, // if this group should respawn or not
10
] call SAR_AI_land;
[
SAR_marker_DEBUG_veh, // Name of the area that the vehicle patrol will spawn in
3, // type of group
["M1030","M1030","M1030","M1030"], // used vehicle
[[1,1,0],[0,1,1],[0,1,1],[0,1,1]], // Vehicle initial crew
true, // if this group should respawn or not
60 // waittime until this group will respawn
] call SAR_AI_land;
[
SAR_marker_DEBUG_veh, // Name of the area that the vehicle patrol will spawn in
2, // type of group
["M1030"], // used vehicle
[[1,1,0]], // Vehicle initial crew
true, // if this group should respawn or not
60 // waittime until this group will respawn
] call SAR_AI_land; */
diag_log format["SAR_AI: Static Spawning for vehicle patrols finished"];
// ---- end of configuration area ----
};

View File

@ -0,0 +1,117 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
// --------------------------------------------------
// grid definition for the automatic spawn system
//
// examples see the chernarus file
// --------------------------------------------------
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
// add entries here ...
};
if (_type isEqualTo "static") then {
// ---------------------------------------------------------------
// Definition of area markers for static spawns
// ---------------------------------------------------------------
// add if needed, see examples in the chernarus file
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
diag_log format["SAR_AI: Area & Trigger definition finalized"];
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// Static, predefined heli patrol areas with configurable units
//
// Parameters used:
// Areaname
// 1,2,3 = soldier, survivors, bandits
//
// add if needed, see examples in the chernarus file
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
// Example: [SAR_area_DEBUG,1,0,1,""] call SAR_AI;
//
// SAR_area_DEBUG = areaname (must have been defined further up)
// 1 = type of group (1 = soldiers, 2 = survivors, 3 = bandits)
// 0 = amount of snipers in the group
// 1 = amount of rifleman in the group
//
//
// Example entries:
// SARGE DEBUG - Debug group
// military, 0 snipers, 1 riflemen, patrol
//[SAR_area_DEBUG,1,0,1,""] call SAR_AI;
// military, 2 snipers, 4 riflemen, patrol
//[SAR_area_DEBUG,1,2,4,""] call SAR_AI;
// survivors, 1 snipers, 3 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,2,1,3,""] call SAR_AI;
// bandits, 5 snipers, 2 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,3,5,2,""] call SAR_AI;
//---------------------------------------------------------------------------------
// add here if needed
// ---- end of configuration area ----
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
};

View File

@ -0,0 +1,205 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
// --------------------------------------------------
// grid definition for the automatic spawn system
//
// examples see the chernarus file
// --------------------------------------------------
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,2],[45,0,45],[0,0,0]],"SAR_area_0_0"] call SAR_AI_mon_upd; //Pintosa, Alma, Corda, Mercadio
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,2],[45,0,45],[0,0,0]],"SAR_area_1_0"] call SAR_AI_mon_upd; //Verto, Medlina
_check = [["max_grps","rnd_grps","max_p_grp"],[[4,3,4],[75,70,85],[2,2,1]],"SAR_area_2_0"] call SAR_AI_mon_upd; //Calamar (main+south)
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[20,20,20],[0,0,1]],"SAR_area_3_0"] call SAR_AI_mon_upd; //Wilderness
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,1],[0,25,25],[0,0,1]],"SAR_area_4_0"] call SAR_AI_mon_upd; //Depot (Old Mines)
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,2],[25,0,45],[0,0,0]],"SAR_area_5_0"] call SAR_AI_mon_upd; //Chupinka
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,1],[25,0,35],[1,0,1]],"SAR_area_0_1"] call SAR_AI_mon_upd; //Drassen, Rago
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_1"] call SAR_AI_mon_upd; //Barro, Aguado - NO SPAWNS
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,2],[35,40,45],[2,1,2]],"SAR_area_2_1"] call SAR_AI_mon_upd; //Bilbado, Montehofo, Calamar (north)
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,2],[15,0,35],[1,0,1]],"SAR_area_3_1"] call SAR_AI_mon_upd; //Negroso, Lagosa, Prospero
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,1],[35,0,35],[0,0,1]],"SAR_area_4_1"] call SAR_AI_mon_upd; //El Villon, Marcella, Monga
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,1],[35,0,35],[1,0,1]],"SAR_area_5_1"] call SAR_AI_mon_upd; //Pikawas, Palida
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_2"] call SAR_AI_mon_upd; //Villa Oscura, Motodrom Rapido - NO SPAWNS
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,0,1],[45,0,35],[1,0,1]],"SAR_area_1_2"] call SAR_AI_mon_upd; //Los Peligron, Morada, OPEN WASTELAND
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,1],[35,30,35],[1,1,1]],"SAR_area_2_2"] call SAR_AI_mon_upd; //San Arluco (south), Aeropuerto Peligron, Pancho
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,2,2],[75,70,65],[2,2,2]],"SAR_area_3_2"] call SAR_AI_mon_upd; //Corazon, Checkpoint Sur
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,2,2],[45,50,55],[0,1,1]],"SAR_area_4_2"] call SAR_AI_mon_upd; //Victorin, SanVigado
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_5_2"] call SAR_AI_mon_upd; //WATER ONLY - NO SPAWNS
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,2],[45,30,45],[0,0,1]],"SAR_area_0_3"] call SAR_AI_mon_upd; //Pocobay, Benio, Pista
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,2],[55,60,55],[2,1,1]],"SAR_area_1_3"] call SAR_AI_mon_upd; //Vidora, Mairango, Fernando, Elcanto
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,2],[50,50,50],[2,2,1]],"SAR_area_2_3"] call SAR_AI_mon_upd; //Mercielo, Guayucca, Tucos, San Arluco (north)
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[65,60,75],[0,1,1]],"SAR_area_3_3"] call SAR_AI_mon_upd; //Calapedro, OPEN WASTELAND
_check = [["max_grps","rnd_grps","max_p_grp"],[[4,2,2],[75,60,55],[2,1,2]],"SAR_area_4_3"] call SAR_AI_mon_upd; //Maruko (south), Dump Yard
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_5_3"] call SAR_AI_mon_upd; //WATER ONLY - NO SPAWNS
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_4"] call SAR_AI_mon_upd; //East Island tip - NO SPAWNS
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,1],[75,75,75],[1,1,1]],"SAR_area_1_4"] call SAR_AI_mon_upd; //FOB Eddie, OPEN WASTELAND
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,2],[65,50,55],[1,1,2]],"SAR_area_2_4"] call SAR_AI_mon_upd; //Aculto, Garibosa, Research Lab 101
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,2],[75,60,55],[1,2,1]],"SAR_area_3_4"] call SAR_AI_mon_upd; //San Isobel, Rommelo Raceway, Maruko airport (west)
_check = [["max_grps","rnd_grps","max_p_grp"],[[5,3,2],[75,70,65],[1,1,1]],"SAR_area_4_4"] call SAR_AI_mon_upd; //Maruko (north), Maruko airport (east)
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,2,0],[55,50,0],[2,1,0]],"SAR_area_5_4"] call SAR_AI_mon_upd; //NE Island (south)
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_5"] call SAR_AI_mon_upd; //DEBUG ISLAND - NO SPAWNS
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,2,1],[75,70,45],[2,2,1]],"SAR_area_1_5"] call SAR_AI_mon_upd; //Prison, OPEN WASTELAND
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,1],[75,70,60],[0,0,0]],"SAR_area_2_5"] call SAR_AI_mon_upd; //OPEN WASTELAND
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_3_5"] call SAR_AI_mon_upd; //MAINLY WATER - NO SPAWNS
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,0],[50,50,0],[0,0,0]],"SAR_area_4_5"] call SAR_AI_mon_upd; //SMALL NE ISLAND
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,1],[45,40,35],[2,1,0]],"SAR_area_5_5"] call SAR_AI_mon_upd; //NE Island (north)
};
if (_type isEqualTo "static") then {
_this = createMarker ["SAR_patrol_prison", [3024.6147, 7969.0239]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [1500, 1050];
SAR_marker_helipatrol_prison = _this;
_this = createMarker ["SAR_patrol_maruko_airport", [6451.5801, 6991.4985]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [1000, 1500];
SAR_marker_helipatrol_maruko_airport = _this;
_this = createMarker ["SAR_patrol_fob_eddie", [3058.3813, 6605.2446]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [1500, 1500];
SAR_marker_helipatrol_fob_eddie = _this;
_this = createMarker ["SAR_patrol_calamar", [4261.3984, 1487.6489]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [2000, 2000];
SAR_marker_helipatrol_calamar = _this;
_this = createMarker ["SAR_patrol_mainland", [3280.0093, 3431.8176]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [4500, 4500];
SAR_marker_helipatrol_mainland = _this;
// ---------------------------------------------------------------
// Definition of area markers for static spawns
// ---------------------------------------------------------------
// add if needed, see examples in the chernarus file
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
diag_log format["SAR_AI: Area & Trigger definition finalized"];
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// Static, predefined heli patrol areas with configurable units
//
// Parameters used:
// Areaname
// 1,2,3 = soldier, survivors, bandits
//
// add if needed, see examples in the chernarus file
[SAR_marker_helipatrol_prison,floor(random 2)+1] call SAR_AI_heli;
[SAR_marker_helipatrol_maruko_airport,floor(random 2)+1] call SAR_AI_heli;
[SAR_marker_helipatrol_fob_eddie,floor(random 2)+1] call SAR_AI_heli;
[SAR_marker_helipatrol_calamar,floor(random 2)+1] call SAR_AI_heli;
[SAR_marker_helipatrol_mainland,floor(random 2)+1] call SAR_AI_heli;
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
// Example: [SAR_area_DEBUG,1,0,1,""] call SAR_AI;
//
// SAR_area_DEBUG = areaname (must have been defined further up)
// 1 = type of group (1 = soldiers, 2 = survivors, 3 = bandits)
// 0 = amount of snipers in the group
// 1 = amount of rifleman in the group
//
//
// Example entries:
// SARGE DEBUG - Debug group
// military, 0 snipers, 1 riflemen, patrol
//[SAR_area_DEBUG,1,0,1,""] call SAR_AI;
// military, 2 snipers, 4 riflemen, patrol
//[SAR_area_DEBUG,1,2,4,""] call SAR_AI;
// survivors, 1 snipers, 3 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,2,1,3,""] call SAR_AI;
// bandits, 5 snipers, 2 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,3,5,2,""] call SAR_AI;
//---------------------------------------------------------------------------------
// add here if needed
// ---- end of configuration area ----
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
};

View File

@ -0,0 +1,696 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
// --------------------------------------------------
// grid definition for the automatic spawn system
//
// examples see the chernarus file
// --------------------------------------------------
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
// Lindwedel & mellendorf
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
// Schwarmstedt & highway 7 bridge
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_0_1"] call SAR_AI_mon_upd;
// Hademstorf
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_0_2"] call SAR_AI_mon_upd;
// Fallingbostel & Dushorn
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_0_3"] call SAR_AI_mon_upd;
// Benefeld
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_0_4"] call SAR_AI_mon_upd;
//-------------------
// Fuhrberg & South Highway 7
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_1_0"] call SAR_AI_mon_upd;
// Thoren
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_1_1"] call SAR_AI_mon_upd;
// Melssendorf
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_1_2"] call SAR_AI_mon_upd;
// Wasteland
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_1_3"] call SAR_AI_mon_upd;
// Dorfmark
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_1_4"] call SAR_AI_mon_upd;
//---------------------
// gas station west of SAF
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_2_0"] call SAR_AI_mon_upd;
// Winsen & Sudwinsen
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_2_1"] call SAR_AI_mon_upd;
// Walle & Offen
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_2_2"] call SAR_AI_mon_upd;
// Bergen
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_2_3"] call SAR_AI_mon_upd;
// Wietzendorf
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_2_4"] call SAR_AI_mon_upd;
//------------------------
// Celle & SAF
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_3_0"] call SAR_AI_mon_upd;
// Klein Hehlen & Schuen Region
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_3_1"] call SAR_AI_mon_upd;
// Eversen
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_3_2"] call SAR_AI_mon_upd;
// Beckedorf
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_3_3"] call SAR_AI_mon_upd;
// Muden & Northern Pond
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_3_4"] call SAR_AI_mon_upd;
//------------------------
// Wienhausen
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_4_0"] call SAR_AI_mon_upd;
// North of Wienhausen
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_4_1"] call SAR_AI_mon_upd;
// Eschede
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_4_2"] call SAR_AI_mon_upd;
// South of Fassberg & NAF
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[3,1,1],[3,3,3]],"SAR_area_4_3"] call SAR_AI_mon_upd;
// Fassberg & NAF
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[9,3,3],[4,4,4]],"SAR_area_4_4"] call SAR_AI_mon_upd;
};
if (_type isEqualTo "static") then {
// ---------------------------------------------------------------
// Definition of area markers for static spawns
// ---------------------------------------------------------------
_this = createMarker ["Celle_Courtyard", [8769.3633, 2077.6267, 0]];
_this setMarkerText "Celle_Courtyard";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Celle_Courtyard = _this;
_this = createMarker ["SAF_Control_Tower", [7593.5557, 1075.5316, 2.5749207e-005]];
_this setMarkerText "SAF_Control_Tower";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_SAF_Control_Tower = _this;
_this = createMarker ["Wienhausen", [10796.543, 794.20032, 1.0967255e-005]];
_this setMarkerText "Wienhausen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Wienhausen = _this;
_this = createMarker ["Lachendorf", [11945.233, 2269.1538, 9.5367432e-007]];
_this setMarkerText "Lachendorf";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Lachendorf = _this;
_this = createMarker ["Hambuhren", [6976.8833, 2576.8459, 4.7683716e-006]];
_this setMarkerText "Hambuhren";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Hambuhren = _this;
_this = createMarker ["Ovelgonne", [6156.8647, 2619.8801, -1.1444092e-005]];
_this setMarkerText "Ovelgonne";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Ovelgonne = _this;
_this = createMarker ["Fuhrberg", [4671.6343, 443.48831, 9.5367432e-006]];
_this setMarkerText "Fuhrberg";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Fuhrberg = _this;
_this = createMarker ["Wietze", [4672.1519, 3009.2664, 2.0980835e-005]];
_this setMarkerText "Wietze";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Wietze = _this;
_this = createMarker ["Sudwinsen", [5618.9297, 3712.0496, -4.7683716e-006]];
_this setMarkerText "Sudwinsen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Sudwinsen = _this;
_this = createMarker ["Winsen", [5576.0605, 4354.6401, -9.5367432e-007]];
_this setMarkerText "Winsen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Winsen = _this;
_this = createMarker ["Wolthausen", [7112.8071, 4622.9976, -2.0980835e-005]];
_this setMarkerText "Wolthausen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Wolthausen = _this;
_this = createMarker ["Eschede", [11830.458, 5652.0806, 2.6702881e-005]];
_this setMarkerText "Eschede";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Eschede = _this;
_this = createMarker ["Schuen", [9038.9385, 3837.918, -4.9591064e-005]];
_this setMarkerText "Schuen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Schuen = _this;
_this = createMarker ["NAF_Control_Tower", [11102.345, 11203.669, 8.5830688e-006]];
_this setMarkerText "NAF_Control_Tower";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_NAF_Control_Tower = _this;
_this = createMarker ["Fassberg", [10436.042, 10689.137, -2.8610229e-006]];
_this setMarkerText "Fassberg";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Fassberg = _this;
_this = createMarker ["Wietzendorf", [6848.2852, 11163.889, 2.6702881e-005]];
_this setMarkerText "Wietzendorf";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Wietzendorf = _this;
_this = createMarker ["Dorfmark", [2984.6731, 10950.419, 1.9073486e-006]];
_this setMarkerText "Dorfmark";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Dorfmark = _this;
_this = createMarker ["Benefeld", [715.7384, 11086.646, 7.6293945e-006]];
_this setMarkerText "Benefeld";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Benefeld = _this;
_this = createMarker ["Fallingbostel", [1606.4475, 9430.5176, 1.9073486e-006]];
_this setMarkerText "Fallingbostel";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Fallingbostel = _this;
_this = createMarker ["Dushorn", [571.11353, 8693.5762, 5.7220459e-006]];
_this setMarkerText "Dushorn";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Dushorn = _this;
_this = createMarker ["Schwarmstedt", [447.49429, 3814.2073, -5.7220459e-006]];
_this setMarkerText "Schwarmstedt";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Schwarmstedt = _this;
_this = createMarker ["Hademstorf", [614.74182, 5104.7773, -3.8146973e-006]];
_this setMarkerText "Hademstorf";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Hademstorf = _this;
_this = createMarker ["Thoren", [2702.6433, 4069.988, -1.9073486e-006]];
_this setMarkerText "Thoren";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Thoren = _this;
_this = createMarker ["Mellendorf", [2301.0278, 1215.074, -3.0517578e-005]];
_this setMarkerText "Mellendorf";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Mellendorf = _this;
_this = createMarker ["Lindwedel", [1678.7277, 2053.5579, -9.5367432e-006]];
_this setMarkerText "Lindwedel";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Lindwedel = _this;
_this = createMarker ["Eversen", [8469.7305, 6320.751, -3.8146973e-006]];
_this setMarkerText "Eversen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Eversen = _this;
_this = createMarker ["Beckedorf", [8414.5283, 8088.9531, 6.2942505e-005]];
_this setMarkerText "Beckedorf";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Beckedorf = _this;
_this = createMarker ["Offen", [6851.1323, 6618.6309, 2.2888184e-005]];
_this setMarkerText "Offen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Offen = _this;
_this = createMarker ["Walle", [6247.1572, 5803.9072, 3.8146973e-006]];
_this setMarkerText "Walle";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Walle = _this;
_this = createMarker ["Meissendorf", [4542.5371, 5519.3491, 3.8146973e-006]];
_this setMarkerText "Meissendorf";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Meissendorf = _this;
_this = createMarker ["Bergen", [6760.0996, 7975.769, 5.7220459e-006]];
_this setMarkerText "Bergen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Bergen = _this;
_this = createMarker ["Bonstorf", [8349.6416, 9591.1768, 3.8146973e-005]];
_this setMarkerText "Bonstorf";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Bonstorf = _this;
_this = createMarker ["Muden", [9515.9932, 10121.562, 2.4795532e-005]];
_this setMarkerText "Muden";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Muden = _this;
_this = createMarker ["Hermannsburg", [9001.0996, 8901.415, -3.8146973e-005]];
_this setMarkerText "Hermannsburg";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Hermannsburg = _this;
_this = createMarker ["Gross_Hehlen", [8513.2227, 3162.3447, 1.1444092e-005]];
_this setMarkerText "Gross_Hehlen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Gross_Hehlen = _this;
_this = createMarker ["Vorwerk", [9380.126, 3269.1462, 1.9073486e-006]];
_this setMarkerText "Vorwerk";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Vorwerk = _this;
_this = createMarker ["Hehlentor", [9036.2773, 2586.5928, 2.8610229e-005]];
_this setMarkerText "Hehlentor";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Hehlentor = _this;
_this = createMarker ["Klein_Hehlen", [8350.9766, 2752.293, 2.4795532e-005]];
_this setMarkerText "Klein Hehlen";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Klein_Hehlen = _this;
_this = createMarker ["Eastmost_along_river", [12195.065, 977.573, -1.8119812e-005]];
_this setMarkerText "Eastmost_along_river";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Eastmost_along_river = _this;
_this = createMarker ["Westmost_along_river", [59.358772, 5208.2036, 3.7670135e-005]];
_this setMarkerText "Westmost_along_river";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Westmost_along_river = _this;
_this = createMarker ["NW_Corner", [17.684713, 12274.881, 0]];
_this setMarkerText "NW_Corner";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_NW_Corner = _this;
_this = createMarker ["NE_Corner", [12186.046, 12218.783, -2.4795532e-005]];
_this setMarkerText "NE_Corner";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_NE_Corner = _this;
_this = createMarker ["SE_Corner", [12213.908, 29.648508, -2.0980835e-005]];
_this setMarkerText "SE_Corner";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_SE_Corner = _this;
_this = createMarker ["SW_Corner", [46.516766, 31.434532, 0]];
_this setMarkerText "SW_Corner";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_SW_Corner = _this;
_this = createMarker ["Northern_point_on_Highway_7", [5035.2646, 12151.317, -6.1988831e-006]];
_this setMarkerText "Northern_point_on_Highway_7";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Northern_point_on_Highway_7 = _this;
_this = createMarker ["Southern_end_of_Highway_7", [3567.832, 142.28204, 1.1444092e-005]];
_this setMarkerText "Southern_end_of_Highway_7";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Southern_end_of_Highway_7 = _this;
_this = createMarker ["Highway_7_Bridge", [1594.113, 4385.8452, 0]];
_this setMarkerText "Highway_7_Bridge";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Highway_7_Bridge = _this;
_this = createMarker ["Wasteland", [4421.6313, 8189.4146, -5.3405762e-005]];
_this setMarkerText "Wasteland";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [1300, 1300];
Manatee_Wasteland = _this;
_this = createMarker ["SAF_Hangars", [7556.9375, 1502.7905, 0]];
_this setMarkerText "SAF_Hangars";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_SAF_Hangars = _this;
_this = createMarker ["Schuen_Military_Base", [9185.0029, 4135.4775, 0]];
_this setMarkerText "Schuen_Military_Base";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_Schuen_Military_Base = _this;
_this = createMarker ["NAF_Barracks", [10483.776, 11535.362, 0]];
_this setMarkerText "NAF_Barracks";
_this setMarkerShape "ELLIPSE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [300, 300];
Manatee_NAF_Barracks = _this;
_this = createMarker ["South_East_Quadrant", [9427.334, 3538.8962, 0]];
_this setMarkerText "South_East_Quadrant";
_this setMarkerShape "RECTANGLE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [3500, 3500];
Manatee_South_East_Quadrant = _this;
_this = createMarker ["North_East_Quadrant", [9427.752, 9693.2197, 0]];
_this setMarkerText "North_East_Quadrant";
_this setMarkerShape "RECTANGLE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [3500, 3500];
Manatee_North_East_Quadrant = _this;
_this = createMarker ["South_West_Quadrant", [3027.6523, 3293.8015, 0]];
_this setMarkerText "South_West_Quadrant";
_this setMarkerShape "RECTANGLE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [3500, 3500];
Manatee_South_West_Quadrant = _this;
_this = createMarker ["North_West_Quadrant", [2972.1943, 9165.0508, -1.7166138e-005]];
_this setMarkerText "North_West_Quadrant";
_this setMarkerShape "RECTANGLE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [3500, 3500];
Manatee_North_West_Quadrant = _this;
_this = createMarker ["Map_Center", [6070.0127, 6405.2798, -3.4332275e-005]];
_this setMarkerText "Map_Center";
_this setMarkerShape "RECTANGLE";
_this setMarkerType "Flag";
_this setMarkeralpha 0;
_this setMarkerBrush "Solid";
_this setMarkerSize [7000, 7000];
Manatee_Map_Center = _this;
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
diag_log format["SAR_AI: Area & Trigger definition finalized"];
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// Static, predefined heli patrol areas with configurable units
//
// Parameters used:
// Areaname
// 1,2,3 = soldier, survivors, bandits
//
// Map Center - Soldiers
[Manatee_Map_Center,1] call SAR_AI_heli;
// North Western Bandits
[Manatee_North_West_Quadrant,3] call SAR_AI_heli;
// North Eastern Bandits
[Manatee_North_East_Quadrant,3] call SAR_AI_heli;
// South Eastern Survivors
[Manatee_South_East_Quadrant,2] call SAR_AI_heli;
// South Western Survivors
[Manatee_South_West_Quadrant,2] call SAR_AI_heli;
// add if needed, see examples in the chernarus file
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
// Example: [SAR_area_DEBUG,1,0,1,""] call SAR_AI;
//
// SAR_area_DEBUG = areaname (must have been defined further up)
// 1 = type of group (1 = soldiers, 2 = survivors, 3 = bandits)
// 0 = amount of snipers in the group
// 1 = amount of rifleman in the group
//
//
// BANDITS - 3 Snipers, 7 rifleman. SAF & NAF
[Manatee_SAF_Control_Tower,3,3,7,""] call SAR_AI;
[Manatee_NAF_Control_Tower,3,3,7,""] call SAR_AI;
// Example entries:
// SARGE DEBUG - Debug group
// military, 0 snipers, 1 riflemen, patrol
//[SAR_area_DEBUG,1,0,1,""] call SAR_AI;
// military, 2 snipers, 4 riflemen, patrol
//[SAR_area_DEBUG,1,2,4,""] call SAR_AI;
// survivors, 1 snipers, 3 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,2,1,3,""] call SAR_AI;
// bandits, 5 snipers, 2 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,3,5,2,""] call SAR_AI;
//---------------------------------------------------------------------------------
// add here if needed
// ---- end of configuration area ----
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
};

View File

@ -0,0 +1,145 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
//
// grid definition for the automatic spawn system
//
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
// West Point, 2 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,2],[50,75,100],[2,3,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
// Water, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_3"] call SAR_AI_mon_upd;
// Brensk, 3 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,1,1],[80,50,75],[2,2,3]],"SAR_area_1_0"] call SAR_AI_mon_upd;
// Tara Bridge, 2 bandit groups, 0 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,0,2],[70,0,70],[3,0,3]],"SAR_area_2_0"] call SAR_AI_mon_upd;
// South East coast, 1 bandit groups, 1 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,3],[30,20,60],[2,2,3]],"SAR_area_3_0"] call SAR_AI_mon_upd;
// Lubjansk, 1 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,3],[50,0,75],[2,0,4]],"SAR_area_1_3"] call SAR_AI_mon_upd;
// Sebjan airport, 2 bandit groups, 2 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,1],[50,50,30],[3,3,2]],"SAR_area_2_2"] call SAR_AI_mon_upd;
// Norinsk, 2 bandit groups, 3 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,3,1],[75,75,50],[3,3,3]],"SAR_area_1_1"] call SAR_AI_mon_upd;
// Object A1, 2 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,2],[80,75,75],[2,2,4]],"SAR_area_1_2"] call SAR_AI_mon_upd;
// Jalovisko, 2 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,3],[20,0,50],[3,0,3]],"SAR_area_3_3"] call SAR_AI_mon_upd;
// Tara, 2 bandit groups, 0 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,0,2],[75,0,75],[3,0,3]],"SAR_area_2_1"] call SAR_AI_mon_upd;
};
if (_type isEqualTo "static") then {
// ---------------------------------------------------------------
// Definition of area markers for static spawns
// ---------------------------------------------------------------
// add if needed, see examples in the chernarus file
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
diag_log format["SAR_AI: Area & Trigger definition finalized"];
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// Static, predefined heli patrol areas with configurable units
//
// Parameters used:
// Areaname
// 1,2,3 = soldier, survivors, bandits
//
// add if needed, see examples in the chernarus file
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
// Example: [SAR_area_DEBUG,1,0,1,""] call SAR_AI;
//
// SAR_area_DEBUG = areaname (must have been defined further up)
// 1 = type of group (1 = soldiers, 2 = survivors, 3 = bandits)
// 0 = amount of snipers in the group
// 1 = amount of rifleman in the group
//
//
// Example entries:
// SARGE DEBUG - Debug group
// military, 0 snipers, 1 riflemen, patrol
//[SAR_area_DEBUG,1,0,1,""] call SAR_AI;
// military, 2 snipers, 4 riflemen, patrol
//[SAR_area_DEBUG,1,2,4,""] call SAR_AI;
// survivors, 1 snipers, 3 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,2,1,3,""] call SAR_AI;
// bandits, 5 snipers, 2 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,3,5,2,""] call SAR_AI;
//---------------------------------------------------------------------------------
// add here if needed
// ---- end of configuration area ----
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
};

View File

@ -0,0 +1,117 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
// --------------------------------------------------
// grid definition for the automatic spawn system
//
// examples see the chernarus file
// --------------------------------------------------
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
// add entries here ...
};
if (_type isEqualTo "static") then {
// ---------------------------------------------------------------
// Definition of area markers for static spawns
// ---------------------------------------------------------------
// add if needed, see examples in the chernarus file
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
diag_log format["SAR_AI: Area & Trigger definition finalized"];
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// Static, predefined heli patrol areas with configurable units
//
// Parameters used:
// Areaname
// 1,2,3 = soldier, survivors, bandits
//
// add if needed, see examples in the chernarus file
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
// Example: [SAR_area_DEBUG,1,0,1,""] call SAR_AI;
//
// SAR_area_DEBUG = areaname (must have been defined further up)
// 1 = type of group (1 = soldiers, 2 = survivors, 3 = bandits)
// 0 = amount of snipers in the group
// 1 = amount of rifleman in the group
//
//
// Example entries:
// SARGE DEBUG - Debug group
// military, 0 snipers, 1 riflemen, patrol
//[SAR_area_DEBUG,1,0,1,""] call SAR_AI;
// military, 2 snipers, 4 riflemen, patrol
//[SAR_area_DEBUG,1,2,4,""] call SAR_AI;
// survivors, 1 snipers, 3 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,2,1,3,""] call SAR_AI;
// bandits, 5 snipers, 2 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,3,5,2,""] call SAR_AI;
//---------------------------------------------------------------------------------
// add here if needed
// ---- end of configuration area ----
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
};

View File

@ -0,0 +1,117 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
// --------------------------------------------------
// grid definition for the automatic spawn system
//
// examples see the chernarus file
// --------------------------------------------------
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
// add entries here ...
};
if (_type isEqualTo "static") then {
// ---------------------------------------------------------------
// Definition of area markers for static spawns
// ---------------------------------------------------------------
// add if needed, see examples in the chernarus file
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
diag_log format["SAR_AI: Area & Trigger definition finalized"];
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// Static, predefined heli patrol areas with configurable units
//
// Parameters used:
// Areaname
// 1,2,3 = soldier, survivors, bandits
//
// add if needed, see examples in the chernarus file
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
// Example: [SAR_area_DEBUG,1,0,1,""] call SAR_AI;
//
// SAR_area_DEBUG = areaname (must have been defined further up)
// 1 = type of group (1 = soldiers, 2 = survivors, 3 = bandits)
// 0 = amount of snipers in the group
// 1 = amount of rifleman in the group
//
//
// Example entries:
// SARGE DEBUG - Debug group
// military, 0 snipers, 1 riflemen, patrol
//[SAR_area_DEBUG,1,0,1,""] call SAR_AI;
// military, 2 snipers, 4 riflemen, patrol
//[SAR_area_DEBUG,1,2,4,""] call SAR_AI;
// survivors, 1 snipers, 3 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,2,1,3,""] call SAR_AI;
// bandits, 5 snipers, 2 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,3,5,2,""] call SAR_AI;
//---------------------------------------------------------------------------------
// add here if needed
// ---- end of configuration area ----
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
};

View File

@ -0,0 +1,320 @@
/*
IMPORTANT: The grid squares are named like : SAR_area_0_0
where the first 0 is the x counter, and the second 0 the y counter.
So to adress the bottom left square in the grid, you use SAR_area_0_0.
The square above that one would be: SAR_area_0_1
the square one to the right of the bottom left square is SAR_area_1_0
You want to change the number arrays in the below lines:
The order for these numbers is always [BANDIT, SURVIVOR, SOLDIER]
Lets take an example for Chernarus
// Kamenka, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
[[0,1,2],[0,75,100],[0,4,3]]
the first set of numbers : 0,1,2
stands for
0 bandit groups
1 soldier group
2 surivors groups
thats the max that can spawn in this grid
the second set of numbers : 0,75,100
that means:
0% probability to spawn bandit groups
75% for soldiers
100% for survivors
the last set of numbers : 0,4,3
thats the maximum number of ppl in the group (plus 1 leader)
0 bandits
max 4 (+1 leader) soldiers
max 3 (+1 leader) survivors
this number is randomized
*/
// --------------------------------------------------
// grid definition for the automatic spawn system
//
// examples see the chernarus file
// --------------------------------------------------
_type = _this select 0;
// grid definition for the automatic spawn system
if ((_type isEqualTo "dynamic") && SAR_dynamic_spawning) then {
// KNIN, 0 bandit groups, 2 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,2,1],[0,75,100],[0,4,3]],"SAR_area_0_0"] call SAR_AI_mon_upd;
// ASH, 0 bandit groups, 0 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,1],[0,0,80],[0,0,3]],"SAR_area_1_0"] call SAR_AI_mon_upd;
// TOPOLKA, 2 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,0,3],[75,0,75],[4,0,4]],"SAR_area_2_0"] call SAR_AI_mon_upd;
// SEVEN, 1 bandit groups, 0 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,3],[50,0,50],[4,0,2]],"SAR_area_3_0"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_4_0"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_5_0"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,1],[0,0,0],[0,0,0]],"SAR_area_0_1"] call SAR_AI_mon_upd;
// LES SPICAK, 1 bandit groups, 0 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,0,2],[80,0,60],[2,0,2]],"SAR_area_1_1"] call SAR_AI_mon_upd;
// BRANIBOR, 3 bandit groups, 1 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,1,3],[60,50,75],[2,3,3]],"SAR_area_2_1"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_3_1"] call SAR_AI_mon_upd;
// OTOK, 1 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[75,50,75],[3,2,3]],"SAR_area_4_1"] call SAR_AI_mon_upd;
// NIZHINA, 0 bandit groups, 3 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,3,3],[0,50,75],[0,2,4]],"SAR_area_5_1"] call SAR_AI_mon_upd;
// MITROVICE, 2 bandit groups, 2 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,1],[90,50,75],[4,2,4]],"SAR_area_0_2"] call SAR_AI_mon_upd;
// BILGRAD, 3 bandit groups, 1 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,1,3],[50,50,50],[3,3,3]],"SAR_area_1_2"] call SAR_AI_mon_upd;
// KRASNOZNAMENSK, 2 bandit groups, 3 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,3,1],[75,50,75],[3,4,4]],"SAR_area_2_2"] call SAR_AI_mon_upd;
// BRIDGE, 1 bandit groups, 2 soldier groups, 3 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,2,3],[75,100,75],[3,3,2]],"SAR_area_3_2"] call SAR_AI_mon_upd;
// BOYE, 0 bandit groups, 0 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,2],[0,0,100],[0,0,5]],"SAR_area_4_2"] call SAR_AI_mon_upd;
// BYELOV, 0 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,1,2],[0,75,100],[0,5,4]],"SAR_area_5_2"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_3"] call SAR_AI_mon_upd;
// CHERNOVAR, 2 bandit groups, 0 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,0,1],[75,0,50],[3,0,3]],"SAR_area_1_3"] call SAR_AI_mon_upd;
// ARMY_BASE, 0 bandit groups, 3 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,3,1],[0,75,75],[0,3,6]],"SAR_area_2_3"] call SAR_AI_mon_upd;
// ETANOVSK, 3 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,1,1],[75,75,75],[3,4,2]],"SAR_area_3_3"] call SAR_AI_mon_upd;
// SABINA, 1 bandit groups, 3 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,3,1],[20,75,100],[4,4,2]],"SAR_area_4_3"] call SAR_AI_mon_upd;
// DUBOVO_AF, 1 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[75,75,75],[2,4,2]],"SAR_area_5_3"] call SAR_AI_mon_upd;
// KRES, 1 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[75,75,75],[2,4,2]],"SAR_area_0_4"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_4"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_2_4"] call SAR_AI_mon_upd;
// CHRVENI, 1 bandit groups, 2 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,2,2],[50,75,75],[4,4,2]],"SAR_area_3_4"] call SAR_AI_mon_upd;
// SOLIBOR, 1 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[50,75,75],[3,4,2]],"SAR_area_4_4"] call SAR_AI_mon_upd;
// MOLOTOVSK, 1 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[50,75,75],[4,4,2]],"SAR_area_5_4"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_5"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_5"] call SAR_AI_mon_upd;
// YELENI, 0 bandit groups, 3 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,3,1],[0,75,75],[0,4,3]],"SAR_area_2_5"] call SAR_AI_mon_upd;
// LYPESTOK, 2 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,1],[50,75,75],[5,4,2]],"SAR_area_3_5"] call SAR_AI_mon_upd;
// SEVASTOPOL, 1 bandit groups, 1 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[1,1,1],[75,75,75],[2,4,2]],"SAR_area_4_5"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_5_5"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_0_6"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_1_6"] call SAR_AI_mon_upd;
// KAMENI, 3 bandit groups, 2 soldier groups, 1 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[3,2,1],[100,75,75],[2,4,5]],"SAR_area_2_6"] call SAR_AI_mon_upd;
// YAROSLAV, 2 bandit groups, 2 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,2,2],[80,75,75],[3,4,2]],"SAR_area_3_6"] call SAR_AI_mon_upd;
// DALNOGORSK, 2 bandit groups, 1 soldier groups, 2 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[2,1,2],[75,75,75],[3,4,4]],"SAR_area_4_6"] call SAR_AI_mon_upd;
// WATER, 0 bandit groups, 0 soldier groups, 0 survivor groups - spawn probability ba,so,su - maximum group members ba,so,su
_check = [["max_grps","rnd_grps","max_p_grp"],[[0,0,0],[0,0,0],[0,0,0]],"SAR_area_5_6"] call SAR_AI_mon_upd;
};
if (_type isEqualTo "static") then {
// ---------------------------------------------------------------
// Definition of area markers for static spawns
// ---------------------------------------------------------------
// add if needed, see examples in the chernarus file
// Sabina, heli patrol area
_this = createMarker ["SAR_patrol_sabina", [14894.9, 11081.3]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [1000, 4500];
SAR_marker_helipatrol_sabina = _this;
// Lyepestok, heli patrol area
_this = createMarker ["SAR_patrol_lyepestok", [11579.5, 15413.4]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [400, 400];
SAR_marker_helipatrol_lyepestok = _this;
// NWAF, heli patrol area
_this = createMarker ["SAR_patrol_nwaf", [10567, 18429.6]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [800, 1000];
SAR_marker_helipatrol_nwaf = _this;
// Dubovo, heli patrol area
_this = createMarker ["SAR_patrol_dubovo", [16540.9, 12674.3]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [500, 5000];
SAR_marker_helipatrol_dubovo = _this;
// Krasnoznamensk, heli patrol area
_this = createMarker ["SAR_patrol_kraz", [8482.28, 8101.42]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [500, 1700];
_this setMarkerDir 262.10;
SAR_marker_helipatrol_kraz = _this;
// Branibor, heli patrol area
_this = createMarker ["SAR_patrol_branibor", [7206.91, 4933.56]];
_this setMarkerShape "RECTANGLE";
_this setMarkeralpha 0;
_this setMarkerType "Flag";
_this setMarkerBrush "Solid";
_this setMarkerSize [400, 5000];
_this setMarkerDir 127.30;
SAR_marker_helipatrol_branibor = _this;
// ----------------------------------------------------------------------------------------
// End of area marker definition section
// ----------------------------------------------------------------------------------------
diag_log format["SAR_AI: Area & Trigger definition finalized"];
diag_log format["SAR_AI: Static Spawning for Helicopter patrols started"];
//
// Static, predefined heli patrol areas with configurable units
//
// Parameters used:
// Areaname
// 1,2,3 = soldier, survivors, bandits
//
//Heli Patrol Sabina
[SAR_marker_helipatrol_sabina,1] call SAR_AI_heli;
//Heli Patrol Lyepestok
[SAR_marker_helipatrol_lyepestok,1] call SAR_AI_heli;
//Heli patrol NWAF
[SAR_marker_helipatrol_nwaf,1] call SAR_AI_heli;
//Heli patrol Dubovo
[SAR_marker_helipatrol_dubovo,1] call SAR_AI_heli;
//Heli patrol Krasnoznamensk
[SAR_marker_helipatrol_kraz,1] call SAR_AI_heli;
//Heli patrol Branibor
[SAR_marker_helipatrol_branibor,1] call SAR_AI_heli;
// add if needed, see examples in the chernarus file
diag_log format["SAR_AI: Static Spawning for Helicopter patrols finished"];
//---------------------------------------------------------------------------------
// Static, predefined infantry patrols in defined areas with configurable units
//---------------------------------------------------------------------------------
// Example: [SAR_area_DEBUG,1,0,1,""] call SAR_AI;
//
// SAR_area_DEBUG = areaname (must have been defined further up)
// 1 = type of group (1 = soldiers, 2 = survivors, 3 = bandits)
// 0 = amount of snipers in the group
// 1 = amount of rifleman in the group
//
//
// Example entries:
// SARGE DEBUG - Debug group
// military, 0 snipers, 1 riflemen, patrol
//[SAR_area_DEBUG,1,0,1,""] call SAR_AI;
// military, 2 snipers, 4 riflemen, patrol
//[SAR_area_DEBUG,1,2,4,""] call SAR_AI;
// survivors, 1 snipers, 3 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,2,1,3,""] call SAR_AI;
// bandits, 5 snipers, 2 riflemen, patrolling the NWAF
//[SAR_marker_helipatrol_nwaf,3,5,2,""] call SAR_AI;
//---------------------------------------------------------------------------------
// add here if needed
// ---- end of configuration area ----
diag_log format["SAR_AI: Static Spawning for infantry patrols finished"];
};