mirror of
https://github.com/Teh-Dango/Sarge-AI.git
synced 2024-08-30 16:32:11 +00:00
70 lines
2.0 KiB
Plaintext
70 lines
2.0 KiB
Plaintext
/*
|
|
# Original #
|
|
Sarge AI System 1.5
|
|
Created for Arma 2: DayZ Mod
|
|
Author: Sarge
|
|
https://github.com/Swiss-Sarge
|
|
|
|
# Fork #
|
|
Sarge AI System 2.0+
|
|
Modded for Arma 3: Exile Mod
|
|
Changes: Dango
|
|
http://www.hod-servers.com
|
|
|
|
*/
|
|
private ["_baseOwner","_attackAll","_friendlyPlayers","_ai","_entity_array"];
|
|
|
|
if (isServer || !hasInterface) exitWith {}; // Do not execute on server or any headless client(s)
|
|
|
|
_ai = _this select 0;
|
|
|
|
_friendlyPlayers = _ai getVariable ["SAR_FLAG_FRIENDLY", []];
|
|
_attackAll = _ai getVariable ["ATTACK_ALL", true];
|
|
|
|
_baseOwner = 0;
|
|
|
|
while {alive _ai || !isNull _ai} do {
|
|
_friendlyPlayers = _ai getVariable ["SAR_FLAG_FRIENDLY", []];
|
|
_attackAll = _ai getVariable ["ATTACK_ALL", false];
|
|
_entity_array = (getPosATL _ai) nearEntities [["CAManBase","Air","Car","Motorcycle","Tank"],SAR_DETECT_HOSTILE + 200];
|
|
|
|
if (SAR_EXTREME_DEBUG) then {
|
|
diag_log format ["Sarge AI System: Territory patrol gaurds ready. Friendly base UID array is: %1",_friendlyPlayers];
|
|
};
|
|
|
|
if (_attackAll) then {
|
|
{
|
|
if (isPlayer _x) then {
|
|
_baseOwner = 0;
|
|
if (_baseOwner == 0) then {
|
|
if ((getPlayerUID _x) in _friendlyPlayers) then {
|
|
_x addrating 50000;
|
|
_x setVariable ["BaseOwner", 1, true];
|
|
if (SAR_EXTREME_DEBUG) then {
|
|
diag_log format ["Sarge AI System: Rating has been adjusted for authorized player with UID %1",(getPlayerUID _x)];
|
|
};
|
|
} else {
|
|
_x addrating -50000;
|
|
if (SAR_EXTREME_DEBUG) then {
|
|
diag_log format ["Sarge AI System: Rating has been adjusted for unauthorized player with UID %1",(getPlayerUID _x)];
|
|
};
|
|
};
|
|
} else {
|
|
if (_baseOwner == 1 && rating _x < 50000) then {
|
|
_x addrating 50000;
|
|
};
|
|
};
|
|
} else {
|
|
_tFriendlyPlayers = _x getVariable ["SAR_FLAG_FRIENDLY", []];
|
|
_result = [_tFriendlyPlayers, _friendlyPlayers] call BIS_fnc_arrayCompare;
|
|
if (_result) then {
|
|
_x addrating 50000;
|
|
} else {
|
|
_x addrating -50000;
|
|
};
|
|
};
|
|
} forEach _entity_array;
|
|
};
|
|
sleep 5;
|
|
};
|