aeroson

Arma 3 - put any weapons onto your vehicle

Oct 17th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1.  
  2. systemChat "air_weapons.sqf start";
  3.  
  4.  
  5.  
  6.  
  7.  
  8. if(!isNil{(actions_ids)}) then {
  9. [] call (actions_remove);
  10. };
  11.  
  12. actions_ids = [];
  13. actions_addId = {
  14. (actions_ids) set [count (actions_ids), _this];
  15. };
  16.  
  17. actions_remove = {
  18. {
  19. player removeAction _x;
  20. } forEach (actions_ids);
  21. actions_ids = [];
  22. };
  23.  
  24. actions_addBack = {
  25. player addAction [
  26. "<t color='#cccccc'><img image='\A3\ui_f\data\gui\rsc\rscdisplayarcademap\icon_sidebar_show.paa' size='0.7' /> ... Back</t>",
  27. ([_this,0,{[] call (menu_main);}] call BIS_fnc_param),
  28. ([_this,1,[]] call BIS_fnc_param),
  29. 1000
  30. ] call (actions_addId);
  31. };
  32.  
  33.  
  34. weapons_classes=[];
  35. weapons_displayNames=[];
  36. weapons_magazines_classes=[];
  37. weapons_magazines_displayNames=[];
  38. weapons_magazines_counts=[];
  39.  
  40. _cfgWeapons = configFile >> "CfgWeapons";
  41. _cfgMagazines = configFile >> "CfgMagazines";
  42. _cfgVehicles = configFile >> "CfgVehicles";
  43.  
  44. for "_i" from 0 to ((count _cfgVehicles)-1) do {
  45.  
  46. _current = _cfgVehicles select _i;
  47. if(isClass(_current)) then {
  48.  
  49. _weapons = [];
  50.  
  51. if(
  52. (configName(_current) iskindof "car") ||
  53. (configName(_current) iskindof "air") ||
  54. true
  55. ) then {
  56. _weapons=getArray(_current>>"weapons");
  57. _cfgTurrets=_current>>"Turrets";
  58. for "_y" from 0 to (count _cfgTurrets)-1 do {
  59. {
  60. _weapons pushBack _x;
  61. } forEach getArray((_cfgTurrets select _y)>>"weapons");
  62. };
  63. };
  64.  
  65.  
  66. if(count(_weapons)>0) then {
  67. {
  68.  
  69. _displayName = getText(_cfgWeapons>>_x>>"DisplayName");
  70. if(_displayName!="" && !(_displayName in (weapons_displayNames))) then {
  71. (weapons_classes) pushBack _x;
  72. (weapons_displayNames) pushBack _displayName;
  73.  
  74. _magazines_classes = getArray(_cfgWeapons>>_x>>"Magazines");
  75. (weapons_magazines_classes) pushBack _magazines_classes;
  76.  
  77. _magazines_displayNames = [];
  78. _magazines_counts = [];
  79. {
  80. _magazines_displayNames pushBack getText(_cfgMagazines>>_x>>"DisplayName");
  81. _magazines_counts pushBack getNumber(_cfgMagazines>>_x>>"Count");
  82. } forEach _magazines_classes;
  83. (weapons_magazines_displayNames) pushBack _magazines_displayNames;
  84. (weapons_magazines_counts) pushBack _magazines_counts;
  85.  
  86. };
  87. } forEach _weapons;
  88. };
  89.  
  90. };
  91. };
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98. weapons_removeAll = {
  99. private "_tgt";
  100. _tgt = vehicle player;
  101. _curWeps = weapons vehicle player;
  102. _curMags = magazines vehicle player;
  103. _turMagDvr = _tgt magazinesTurret [-1];
  104. _turMag0 = _tgt magazinesTurret [0];
  105. _turMag1 = _tgt magazinesTurret [1];
  106. _turMag2 = _tgt magazinesTurret [2];
  107. while {count weapons _tgt > 0} do
  108. {
  109. {_tgt removeWeapon _x} forEach _curWeps;
  110. };
  111. while {count magazines _tgt > 0} do
  112. {
  113. {_tgt removeMagazine _x} forEach _curMags;
  114. };
  115. while {count (_tgt magazinesTurret [-1]) > 0} do
  116. {
  117. {_tgt removeMagazinesTurret [_x,[-1]]} forEach _turMagDvr;
  118. };
  119. while {count (_tgt magazinesTurret [0]) > 0} do
  120. {
  121. {_tgt removeMagazinesTurret [_x,[0]]} forEach _turMag0;
  122. };
  123. while {count (_tgt magazinesTurret [1]) > 0} do
  124. {
  125. {_tgt removeMagazinesTurret [_x,[1]]} forEach _turMag1;
  126. };
  127. while {count (_tgt magazinesTurret [2]) > 0} do
  128. {
  129. {_tgt removeMagazinesTurret [_x,[2]]} forEach _turMag2;
  130. };
  131.  
  132. };
  133.  
  134. magazine_add = {
  135. vehicle player addMagazine (_this select 1);
  136. if(!((_this select 0) in weapons vehicle player)) then {
  137. vehicle player addWeapon (_this select 0);
  138. };
  139. };
  140.  
  141.  
  142. menu_magazines = {
  143. [] call (actions_remove);
  144. _index = (weapons_classes) find (_this select 0);
  145. _classes = (weapons_magazines_classes) select _index;
  146. _counts = (weapons_magazines_counts) select _index;
  147. {
  148. (player addAction [
  149. format["Add %1 (%2)",_x,_counts select _forEachIndex ],
  150. { (_this select 3) call (magazine_add); },
  151. [ (_this select 0), _classes select _forEachIndex ],
  152. 1000
  153. ]) call (actions_addId);
  154. } forEach ((weapons_magazines_displayNames) select _index);
  155. [] call (actions_addBack);
  156. };
  157.  
  158.  
  159. getVehicleSpace = {
  160.  
  161. };
  162.  
  163.  
  164. menu_weapons = {
  165. [] call (actions_remove);
  166. [] call (actions_addBack);
  167. (player addAction [
  168. format["Remove all weapons (%1)", count weapons vehicle player],
  169. { (_this select 3) call (weapons_removeAll); },
  170. [],
  171. 1000
  172. ]) call (actions_addId);
  173. {
  174. (player addAction [
  175. format["Add %1 ...",_x],
  176. { (_this select 3) call (menu_magazines); },
  177. [(weapons_classes) select _forEachIndex],
  178. 1000
  179. ]) call (actions_addId);
  180. } forEach (weapons_displayNames);
  181. };
  182.  
  183.  
  184.  
  185.  
  186. menu_main = {
  187. [] call (actions_remove);
  188. (player addAction [
  189. "Add Weapons...",
  190. { call (menu_weapons); },
  191. [],
  192. 1000
  193. ]) call (actions_addId);
  194. };
  195.  
  196. [] call (menu_main);
  197.  
  198.  
  199. systemChat "air_weapons.sqf end";
Advertisement
Add Comment
Please, Sign In to add comment