Advertisement
Guest User

SAR_setup_AI_patrol.sqf (error)

a guest
Mar 26th, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.31 KB | None | 0 0
  1. // =========================================================================================================
  2. // SAR_AI - DayZ AI library
  3. // Version: 1.1.0
  4. // Author: Sarge (sarge@krumeich.ch)
  5. //
  6. // Wiki: to come
  7. // Forum: http://opendayz.net/index.php?threads/sarge-ai-framework-public-release.8391/
  8. //
  9. // ---------------------------------------------------------------------------------------------------------
  10. // Required:
  11. // UPSMon
  12. // SHK_pos
  13. //
  14. // ---------------------------------------------------------------------------------------------------------
  15. // SAR_setup_AI_patrol.sqf
  16. // last modified: 1.4.2013
  17. // ---------------------------------------------------------------------------------------------------------
  18. // Parameters:
  19. // [ _patrol_area_name (Markername of area to patrol),
  20. // grouptype (numeric -> 1=military, 2=survivor, 3=bandits),
  21. // number_of_snipers (numeric),
  22. // number of riflemen (numeric),
  23. // behaviour (string -> "patrol", "fortify", "ambush", "noUpsmon")
  24. // respawn (boolean, -> true,false)
  25. // ]
  26. // ------------------------------------------------------------------------------------------------------------
  27.  
  28.  
  29. private ["_leadername","_patrol_area_name","_grouptype","_snipers","_riflemen","_action","_side","_leader_group","_riflemenlist","_sniperlist","_rndpos","_group","_leader","_i","_cond","_respawn","_leader_weapon_names","_leader_items","_leader_tools","_soldier_weapon_names","_soldier_items","_soldier_tools","_sniper_weapon_names","_sniper_items","_sniper_tools","_leaderskills","_riflemanskills","_sniperskills","_ups_para_list"];
  30.  
  31. if(!isServer) exitWith {};
  32.  
  33. _patrol_area_name = _this select 0;
  34. _grouptype = _this select 1;
  35. _snipers = _this select 2;
  36. _riflemen = _this select 3;
  37. _action = _this select 4;
  38. _respawn = _this select 5;
  39.  
  40. switch (_grouptype) do
  41. {
  42. case 1: // military
  43. {
  44. _side = SAR_AI_friendly_side;
  45. _leader_group = SAR_leader_sold_list call BIS_fnc_selectRandom;
  46. _riflemenlist = SAR_soldier_sold_list;
  47. _sniperlist = SAR_sniper_sold_list;
  48.  
  49. _leaderskills = SAR_leader_sold_skills;
  50. _riflemanskills = SAR_soldier_sold_skills;
  51. _sniperskills = SAR_sniper_sold_skills;
  52.  
  53. };
  54. case 2: // survivors
  55. {
  56. _side = SAR_AI_friendly_side;
  57. _leader_group = SAR_leader_surv_list call BIS_fnc_selectRandom;
  58. _riflemenlist = SAR_soldier_surv_list;
  59. _sniperlist = SAR_sniper_surv_list;
  60.  
  61. _leaderskills = SAR_leader_surv_skills;
  62. _riflemanskills = SAR_soldier_surv_skills;
  63. _sniperskills = SAR_sniper_surv_skills;
  64.  
  65. };
  66. case 3: // bandits
  67. {
  68. _side = SAR_AI_unfriendly_side;
  69. _leader_group = SAR_leader_band_list call BIS_fnc_selectRandom;
  70. _riflemenlist = SAR_soldier_band_list;
  71. _sniperlist = SAR_sniper_band_list;
  72.  
  73. _leaderskills = SAR_leader_band_skills;
  74. _riflemanskills = SAR_soldier_band_skills;
  75. _sniperskills = SAR_sniper_band_skills;
  76.  
  77. };
  78. };
  79.  
  80. _leader_weapon_names = ["leader"] call SAR_unit_loadout_weapons;
  81. _leader_items = ["leader"] call SAR_unit_loadout_items;
  82. _leader_tools = ["leader"] call SAR_unit_loadout_tools;
  83.  
  84. _soldier_weapon_names = ["soldier"] call SAR_unit_loadout_weapons;
  85. _soldier_items = ["soldier"] call SAR_unit_loadout_items;
  86. _soldier_tools = ["soldier"] call SAR_unit_loadout_tools;
  87.  
  88. _sniper_weapon_names = ["sniper"] call SAR_unit_loadout_weapons;
  89. _sniper_items = ["sniper"] call SAR_unit_loadout_items;
  90. _sniper_tools = ["sniper"] call SAR_unit_loadout_tools;
  91.  
  92.  
  93.  
  94. // get a random starting position that is on land
  95.  
  96. _rndpos = [_patrol_area_name] call SHK_pos;
  97.  
  98. _group = createGroup _side;
  99.  
  100. // protect group from being deleted by DayZ
  101. _group setVariable ["SAR_protect",true,true];
  102.  
  103. // create leader of the group
  104. _leader = _group createunit [_leader_group, [(_rndpos select 0) + 10, _rndpos select 1, 0], [], 0.5, "FORM"];
  105.  
  106. [_leader,_leader_weapon_names,_leader_items,_leader_tools] call SAR_unit_loadout;
  107.  
  108. _leader setVehicleInit "null = [this] execVM 'addons\SARGE\SAR_trace_entities.sqf';this setIdentity 'id_SAR_sold_lead';";
  109. _leader addMPEventHandler ["MPkilled", {Null = _this execVM "addons\SARGE\SAR_aikilled.sqf";}];
  110. _leader addMPEventHandler ["MPHit", {Null = _this execVM "addons\SARGE\SAR_aihit.sqf";}];
  111.  
  112. _leader addEventHandler ["HandleDamage",{if (_this select 1!="") then {_unit=_this select 0;damage _unit+((_this select 2)-damage _unit)*SAR_leader_health_factor}}];
  113.  
  114. _cond="(side _this == west) && (side _target == resistance) && ('ItemBloodbag' in magazines _this)";
  115.  
  116. [nil,_leader,rADDACTION,"Give me a blood transfusion!", "addons\SARGE\SAR_interact.sqf","",1,true,true,"",_cond] call RE;
  117.  
  118. [_leader] joinSilent _group;
  119.  
  120. // set skills of the leader
  121. {
  122. _leader setskill [_x select 0,(_x select 1 +(floor(random 2) * (_x select 2)))];
  123. } foreach _leaderskills;
  124.  
  125. SAR_leader_number = SAR_leader_number + 1;
  126.  
  127. _leadername = format["SAR_leader_%1",SAR_leader_number];
  128.  
  129. _leader setVehicleVarname _leadername;
  130.  
  131. // SARGE - do i need this name on the clientside ???
  132.  
  133. // create global variable for this group
  134. call compile format ["KRON_UPS_%1=1",_leadername];
  135.  
  136. // if needed broadcast to the clients
  137. //_leader Call Compile Format ["%1=_This ; PublicVariable ""%1""",_leadername];
  138.  
  139. // create crew
  140. for [{_i=0}, {_i < _snipers}, {_i=_i+1}] do
  141. {
  142. _this = _group createunit [_sniperlist call BIS_fnc_selectRandom, [(_rndpos select 0) - 30, _rndpos select 1, 0], [], 0.5, "FORM"];
  143.  
  144. [_this,_sniper_weapon_names,_sniper_items,_sniper_tools] call SAR_unit_loadout;
  145.  
  146. _this setVehicleInit "null = [this] execVM 'addons\SARGE\SAR_trace_entities.sqf';this setIdentity 'id_SAR';";
  147. _this addMPEventHandler ["MPkilled", {Null = _this execVM "addons\SARGE\SAR_aikilled.sqf";}];
  148. _this addMPEventHandler ["MPHit", {Null = _this execVM "addons\SARGE\SAR_aihit.sqf";}];
  149. [_this] joinSilent _group;
  150. // set skills
  151. {
  152. _this setskill [_x select 0,(_x select 1 +(floor(random 2) * (_x select 2)))];
  153. } foreach _sniperskills;
  154.  
  155. };
  156.  
  157. for [{_i=0}, {_i < _riflemen}, {_i=_i+1}] do
  158. {
  159. _this = _group createunit [_riflemenlist call BIS_fnc_selectRandom, [(_rndpos select 0) + 30, _rndpos select 1, 0], [], 0.5, "FORM"];
  160.  
  161. [_this,_soldier_weapon_names,_soldier_items,_soldier_tools] call SAR_unit_loadout;
  162.  
  163. _this setVehicleInit "null = [this] execVM 'addons\SARGE\SAR_trace_entities.sqf';this setIdentity 'id_SAR_sold_man';";
  164. _this addMPEventHandler ["MPkilled", {Null = _this execVM "addons\SARGE\SAR_aikilled.sqf";}];
  165. _this addMPEventHandler ["MPHit", {Null = _this execVM "addons\SARGE\SAR_aihit.sqf";}];
  166. [_this] joinSilent _group;
  167.  
  168. // set skills
  169. {
  170. _this setskill [_x select 0,(_x select 1 +(floor(random 2) * (_x select 2)))];
  171. } foreach _riflemanskills;
  172.  
  173. };
  174.  
  175. _leader = leader _group;
  176.  
  177. // initialize upsmon for the group
  178.  
  179. _ups_para_list = [_leader,_patrol_area_name,'nowait','nofollow','aware','showmarker','delete:',SAR_DELETE_TIMEOUT];
  180.  
  181. if (_respawn) then { <<<----------------E_R_R_O_R----------------
  182. _ups_para_list = _ups_para_list + ['respawn'];
  183. };
  184.  
  185. if(!SAR_AI_STEAL_VEHICLE) then {
  186. _ups_para_list = _ups_para_list + ['noveh'];
  187. };
  188.  
  189. if(SAR_AI_disable_UPSMON_AI) then {
  190. _ups_para_list = _ups_para_list + ['noai'];
  191. };
  192.  
  193.  
  194. if(_action == "") then {_action = "patrol";};
  195.  
  196. switch (_action) do {
  197.  
  198. case "noupsmon":
  199. {
  200. };
  201. case "fortify":
  202. {
  203. _ups_para_list = _ups_para_list + ['fortify'];
  204. _ups_para_list execVM 'addons\UPSMON\scripts\upsmon.sqf';
  205. };
  206. case "fortify2":
  207. {
  208. _ups_para_list = _ups_para_list + ['fortify2'];
  209. _ups_para_list execVM 'addons\UPSMON\scripts\upsmon.sqf';
  210. };
  211. case "patrol":
  212. {
  213. _ups_para_list execVM 'addons\UPSMON\scripts\upsmon.sqf';
  214. };
  215. case "ambush":
  216. {
  217. _ups_para_list = _ups_para_list + ['ambush'];
  218. _ups_para_list execVM 'addons\UPSMON\scripts\upsmon.sqf';
  219. };
  220. };
  221.  
  222.  
  223. processInitCommands;
  224.  
  225. if(SAR_EXTREME_DEBUG) then {
  226. diag_log format["SAR_EXTREME_DEBUG: Infantry group spawned in: %1 with action: %2",_patrol_area_name,_action];
  227. };
  228. _group;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement