aeroson

air_weapons.sqf

Jul 24th, 2015
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.06 KB | None | 0 0
  1.  
  2. systemChat "air_weapons.sqf";
  3.  
  4.  
  5.  
  6. // execvm "dev\air_weapons.sqf";
  7.  
  8.  
  9. /*
  10. vehicle player addAction ["<t color='#FF6600'>EJECT</t>",{
  11. _pos = getPos vehicle player;
  12. _vel = velocity vehicle player;
  13. player setPos [ _pos select 0, _pos select 1, (_pos select 2) +5];
  14. player setvelocity [_vel select 0, _vel select 1, (_vel select 2) + 50];
  15. }, "", 0, false, false, "", "player in _this"];
  16. */
  17.  
  18. #define PREFIX aero
  19. #define COMPONENT air_weapons
  20. //#define DEBUG_MODE
  21.  
  22. #define DOUBLES(A,B) ##A##_##B
  23. #define TRIPLES(A,B,C) ##A##_##B##_##C
  24. #define QUOTE(A) #A
  25. #define CONCAT(A,B) A####B
  26.  
  27. #define GVAR(A) TRIPLES(PREFIX,COMPONENT,A)
  28. #define QGVAR(A) QUOTE(GVAR(A))
  29.  
  30. #define INC(A) A=(A)+1
  31. #define DEC(A) A=(A)-1
  32. #define ADD(A,B) A=(A)+(B)
  33. #define SUB(A,B) A=(A)-(B)
  34. #define REM(A,B) A=A-[B]
  35. #define EL(A,B) ((A) select (B))
  36.  
  37. #define THIS(A) EL(this,A)
  38. #define _THIS(A) EL(_this,A)
  39.  
  40.  
  41.  
  42. if(!isNil{GVAR(actions_ids)}) then {
  43. [] call GVAR(actions_remove);
  44. };
  45.  
  46. GVAR(actions_ids) = [];
  47. GVAR(actions_addId) = {
  48. GVAR(actions_ids) set [count GVAR(actions_ids), _this];
  49. };
  50.  
  51. GVAR(actions_remove) = {
  52. {
  53. player removeAction _x;
  54. } forEach GVAR(actions_ids);
  55. GVAR(actions_ids) = [];
  56. };
  57.  
  58. GVAR(actions_addBack) = {
  59. player addAction [
  60. "<t color='#cccccc'><img image='\A3\ui_f\data\gui\rsc\rscdisplayarcademap\icon_sidebar_show.paa' size='0.7' /> ... Back</t>",
  61. ([_this,0,{[] call GVAR(menu_main);}] call BIS_fnc_param),
  62. ([_this,1,[]] call BIS_fnc_param),
  63. 1000
  64. ] call GVAR(actions_addId);
  65. };
  66.  
  67.  
  68. GVAR(weapons_classes)=[];
  69. GVAR(weapons_displayNames)=[];
  70. GVAR(weapons_magazines_classes)=[];
  71. GVAR(weapons_magazines_displayNames)=[];
  72. GVAR(weapons_magazines_counts)=[];
  73.  
  74. _cfgWeapons = configFile >> "CfgWeapons";
  75. _cfgMagazines = configFile >> "CfgMagazines";
  76. _cfgVehicles = configFile >> "CfgVehicles";
  77.  
  78. for "_i" from 0 to ((count _cfgVehicles)-1) do {
  79.  
  80. _current = _cfgVehicles select _i;
  81. if(isClass(_current)) then {
  82.  
  83. _weapons = [];
  84.  
  85. if(
  86. (configName(_current) iskindof "car") ||
  87. (configName(_current) iskindof "air") ||
  88. true
  89. ) then {
  90. _weapons=getArray(_current>>"weapons");
  91. _cfgTurrets=_current>>"Turrets";
  92. for "_y" from 0 to (count _cfgTurrets)-1 do {
  93. {
  94. _weapons pushBack _x;
  95. } forEach getArray((_cfgTurrets select _y)>>"weapons");
  96. };
  97. };
  98.  
  99.  
  100. if(count(_weapons)>0) then {
  101. {
  102.  
  103. _displayName = getText(_cfgWeapons>>_x>>"DisplayName");
  104. if(_displayName!="" && !(_displayName in GVAR(weapons_displayNames))) then {
  105. GVAR(weapons_classes) pushBack _x;
  106. GVAR(weapons_displayNames) pushBack _displayName;
  107.  
  108. _magazines_classes=getArray(_cfgWeapons>>_x>>"Magazines");
  109. GVAR(weapons_magazines_classes) pushBack _magazines_classes;
  110.  
  111. _magazines_displayNames = [];
  112. _magazines_counts = [];
  113. {
  114. _magazines_displayNames pushBack getText(_cfgMagazines>>_x>>"DisplayName");
  115. _magazines_counts pushBack getNumber(_cfgMagazines>>_x>>"Count");
  116. } forEach _magazines_classes;
  117. GVAR(weapons_magazines_displayNames) pushBack _magazines_displayNames;
  118. GVAR(weapons_magazines_counts) pushBack _magazines_counts;
  119.  
  120. };
  121. } forEach _weapons;
  122. };
  123.  
  124. };
  125. };
  126.  
  127.  
  128.  
  129. /*
  130. _type==65536 // rocket pods
  131. _count>10 //
  132.  
  133. _target = vehicle player;
  134.  
  135.  
  136. if(add
  137.  
  138. _config = configFile >> "CfgVehicles";
  139.  
  140.  
  141.  
  142. getArray(_config>>_this>>"Magazines");
  143. */
  144.  
  145.  
  146.  
  147.  
  148. GVAR(weapons_removeAll) = {
  149. /*{
  150. vehicle player removeMagazine _x;
  151. } forEach magazines vehicle player;
  152. {
  153. vehicle player removeWeapon _x;
  154. } forEach weapons vehicle player;*/
  155. private "_tgt";
  156. _tgt = vehicle player;
  157. _curWeps = weapons vehicle player;
  158. _curMags = magazines vehicle player;
  159. _turMagDvr = _tgt magazinesTurret [-1];
  160. _turMag0 = _tgt magazinesTurret [0];
  161. _turMag1 = _tgt magazinesTurret [1];
  162. _turMag2 = _tgt magazinesTurret [2];
  163. while {count weapons _tgt > 0} do
  164. {
  165. {_tgt removeWeapon _x} forEach _curWeps;
  166. };
  167. while {count magazines _tgt > 0} do
  168. {
  169. {_tgt removeMagazine _x} forEach _curMags;
  170. };
  171. while {count (_tgt magazinesTurret [-1]) > 0} do
  172. {
  173. {_tgt removeMagazinesTurret [_x,[-1]]} forEach _turMagDvr;
  174. };
  175. while {count (_tgt magazinesTurret [0]) > 0} do
  176. {
  177. {_tgt removeMagazinesTurret [_x,[0]]} forEach _turMag0;
  178. };
  179. while {count (_tgt magazinesTurret [1]) > 0} do
  180. {
  181. {_tgt removeMagazinesTurret [_x,[1]]} forEach _turMag1;
  182. };
  183. while {count (_tgt magazinesTurret [2]) > 0} do
  184. {
  185. {_tgt removeMagazinesTurret [_x,[2]]} forEach _turMag2;
  186. };
  187.  
  188. };
  189.  
  190. // [weapon classname, magazine classname]
  191. GVAR(magazine_add) = {
  192. vehicle player addMagazine _THIS(1);
  193. if(!(_THIS(0) in weapons vehicle player)) then {
  194. vehicle player addWeapon _THIS(0);
  195. };
  196. };
  197.  
  198.  
  199. // [weapon classname]
  200. GVAR(menu_magazines) = {
  201. [] call GVAR(actions_remove);
  202. _index = GVAR(weapons_classes) find _THIS(0);
  203. _classes = GVAR(weapons_magazines_classes) select _index;
  204. _counts = GVAR(weapons_magazines_counts) select _index;
  205. {
  206. (player addAction [
  207. format["Add %1 (%2)",_x,_counts select _forEachIndex ],
  208. { _THIS(3) call GVAR(magazine_add); },
  209. [ _THIS(0), _classes select _forEachIndex ],
  210. 1000
  211. ]) call GVAR(actions_addId);
  212. } forEach (GVAR(weapons_magazines_displayNames) select _index);
  213. [] call GVAR(actions_addBack);
  214. };
  215.  
  216.  
  217. // [typeof vehicle}
  218. GVAR(getVehicleSpace) = {
  219.  
  220. };
  221.  
  222.  
  223. GVAR(menu_weapons) = {
  224. [] call GVAR(actions_remove);
  225. [] call GVAR(actions_addBack);
  226. (player addAction [
  227. format["Remove all weapons (%1)", count weapons vehicle player],
  228. { _THIS(3) call GVAR(weapons_removeAll); },
  229. [],
  230. 1000
  231. ]) call GVAR(actions_addId);
  232. {
  233. (player addAction [
  234. format["Add %1 ...",_x],
  235. { _THIS(3) call GVAR(menu_magazines); },
  236. [GVAR(weapons_classes) select _forEachIndex],
  237. 1000
  238. ]) call GVAR(actions_addId);
  239. } forEach GVAR(weapons_displayNames);
  240. };
  241.  
  242.  
  243.  
  244.  
  245. GVAR(menu_main) = {
  246. [] call GVAR(actions_remove);
  247. (player addAction [
  248. "Add Weapons...",
  249. { call GVAR(menu_weapons); },
  250. [],
  251. 1000
  252. ]) call GVAR(actions_addId);
  253. };
  254.  
  255. [] call GVAR(menu_main);
  256.  
  257.  
  258. systemChat "air_weapons.sqf end";
Advertisement
Add Comment
Please, Sign In to add comment