Advertisement
Guest User

AALSSW

a guest
Aug 6th, 2017
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.04 KB | None | 0 0
  1. if (!isServer) exitWith {diag_log "AALSSW : It's not a server. I'm stopped"};
  2. [{
  3. waitUntil {time > 0};
  4. if (!isNil "check_backWeapon") exitWith {diag_log "AALSSW : Executed before. Stopped"};
  5. while {true} do {
  6. //(isNil {player getVariable ["AALSSW", nil]})
  7. waitUntil {!isNull player};
  8. waitUntil {sleep 10; (player != (player getVariable ["AALSSW", objNull]))};
  9. player setVariable ["AALSSW", player];
  10. check_backWeapon = true;
  11. aalssw_fnc_gearInterupt =
  12. {
  13. if (isNull (_this select 2)) then
  14. {
  15. if (!isNil {(_this select 1) getVariable "aalssw_wpnHolder"}) then
  16. {
  17. aalssw_grounds = [];
  18. _ground = "GroundWeaponHolder" createVehicle position player;
  19. _ground setPosATL (player modelToWorld [0,0.4,0]);
  20. _ground setDir getDir player;
  21. _ground enableSimulation false;
  22. _ground setVariable ["tempHolder", true];
  23. _ground spawn {waitUntil {sleep 3; isNull (findDisplay 602)}; _this enableSimulation true};
  24. _nearSup = ((player modelToWorld [0,.8,1]) nearSupplies 2.3);
  25. {
  26. _x spawn
  27. {
  28. if (!(_this getVariable ['aalssw_wpnHolder',false])) then
  29. {
  30. if !((_this isKindOf "man") && (alive _this)) then {aalssw_grounds = aalssw_grounds + [_this]}
  31. }
  32. }
  33. } forEach _nearSup;
  34. if (count aalssw_grounds > 0) then
  35. {
  36. if (((aalssw_grounds select 0) isKindOf "man") && (!isNull wpnHolderLeft)) then
  37. {
  38. _gear = "GroundWeaponHolder" createVehicle position player;
  39. _gear attachTo [(_this select 1),[0,0,0], "pelvis"];
  40. detach _gear;
  41. _gear enableSimulation false;
  42. _gear setVariable ["tempHolder", true];
  43. _gear spawn
  44. {
  45. waitUntil {!(isNull (findDisplay 602))};
  46. sleep 1;
  47. _this setPosATL (player modelToWorld [0,1,0]);
  48. _this enableSimulation true;
  49. _this setDir getDir player;
  50. };
  51. player action ["Gear", aalssw_grounds select 0];
  52. }
  53. else
  54. {
  55. player action ["Gear", aalssw_grounds select 0];
  56. };
  57. }
  58. else
  59. {
  60. private "_ground";
  61. _ground = "GroundWeaponHolder" createVehicle position player;
  62. _ground setPosATL (player modelToWorld [0,0.4,0]);
  63. _ground setDir getDir player;
  64. _ground setVariable ["tempHolder", true];
  65. player action ["Gear",_ground];
  66. waitUntil {!(isNull (findDisplay 602))};
  67. waitUntil {(isNull (findDisplay 602))};
  68. _ground spawn {waitUntil {sleep 3; isNull (findDisplay 602)}; _this enableSimulation true};
  69. sleep 1;
  70. };
  71. _ground enableSimulation true;
  72. }
  73. else
  74. {
  75. if ((_this select 1) isKindOf "man") then
  76. {
  77. _gear = "GroundWeaponHolder" createVehicle position player;
  78. _gear attachTo [(_this select 1),[0,0,0], "pelvis"];
  79. detach _gear;
  80. _gear enableSimulation false;
  81. _gear setVariable ["tempHolder", true];
  82. [_gear,(_this select 1)] spawn
  83. {
  84. _gear = (_this select 0);
  85. sleep 1;
  86. waitUntil {!(isNull (findDisplay 602))};
  87. sleep 2;
  88. _gear setPosATL ((_this select 1) modelToWorld [0,0,0]);
  89. _gear enableSimulation true;
  90. _gear setDir getDir player;
  91. };
  92. player action ["Gear", (_this select 1)];
  93. };
  94. };
  95. }
  96. else
  97. {
  98. if (!isNil {(_this select 2) getVariable "aalssw_wpnHolder"}) then
  99. {
  100. _tempGear = (_this select 1);
  101. _tempGear spawn
  102. {
  103. _gear = "GroundWeaponHolder" createVehicle position player;
  104. _gear attachTo [player,[0,0,0], "pelvis"];
  105. detach _gear;
  106. _gear enableSimulation false;
  107. _gear setVariable ["tempHolder", true];
  108. _gear spawn
  109. {
  110. waitUntil {!(isNull (findDisplay 602))};
  111. sleep 1;
  112. _this setPosATL (player modelToWorld [0,1,0]);
  113. _this enableSimulation true;
  114. _this setDir getDir player;
  115. };
  116. player action ["Gear",_this];
  117. };
  118. };
  119. };
  120. };
  121.  
  122. aalssw_fnc_invInterupt =
  123. {
  124. aalssw_inventoryContainers = _this;
  125. waitUntil {(!(isNull (findDisplay 602)))};
  126. player setVariable ["InvOpened",1];
  127. waitUntil {sleep 0.001; (isNull (findDisplay 602))};
  128. player setVariable ["InvOpened",0];
  129. {if ((typeOf _x == "GroundWeaponHolder") && (!isNil {_x getVariable "tempHolder"})) then {if ((count ((itemCargo _x) + (weaponCargo _x) + (backpackCargo _x) + (magazineCargo _x))) == 0) then {deleteVehicle _x}}} forEach (player nearSupplies 3);
  130. };
  131.  
  132. aalssw_fnc_switchWpn =
  133. {
  134. _wpn = currentWeapon player;
  135. _stance = stance player;
  136. if (_wpn == "") then
  137. {
  138. _wpn = (player getVariable ["wpnHolster",""]);
  139. if (_wpn != "") then
  140. {
  141. player setVariable ["wpnHolster",""];
  142. if ((_wpn == handgunWeapon player) && (_stance == "CROUCH")) then
  143. {
  144. player selectWeapon _wpn;
  145. player playMoveNow "AmovPknlMstpSnonWnonDnon_AmovPknlMstpSrasWpstDnon_end";
  146. [[player, {_this playMoveNow "AmovPknlMstpSnonWnonDnon_AmovPknlMstpSrasWpstDnon_end"}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP
  147. }
  148. else
  149. {
  150. player selectWeapon _wpn;
  151. };
  152. }
  153. }
  154. else
  155. {
  156. if ((_wpn == handgunWeapon player) && (_stance != "CROUCH")) then
  157. {
  158. player setVariable ["wpnHolster",_wpn];
  159. player action ["switchWeapon", player, player, -1]
  160. };
  161. if (_wpn == primaryWeapon player) then
  162. {
  163. if (_stance == "CROUCH") then
  164. {
  165. player playMoveNow "AmovPknlMstpSrasWrflDnon_AmovPknlMstpSnonWnonDnon";
  166. [[player, {_this playMoveNow "AmovPknlMstpSrasWrflDnon_AmovPknlMstpSnonWnonDnon"}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP
  167. };
  168. if (_stance == "PRONE") then
  169. {
  170. player playMoveNow "AmovPpneMstpSrasWrflDnon_AmovPpneMstpSnonWnonDnon";
  171. [[player, {_this playMoveNow "AmovPpneMstpSrasWrflDnon_AmovPpneMstpSnonWnonDnon"}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP
  172. };
  173. player setVariable ["wpnHolster",_wpn];
  174. player action ["switchWeapon", player, player, -1]
  175. };
  176. if (_wpn == secondaryWeapon player) then
  177. {
  178. player setVariable ["wpnHolster",_wpn];
  179. player action ["switchWeapon", player, player,-1]
  180. };
  181. if (_wpn == binocular player) then
  182. {
  183. player setVariable ["wpnHolster",_wpn];
  184. if (_stance == "CROUCH") then
  185. {player action ["switchWeapon", player, player,-1]; player playMoveNow "amovpknlmstpsnonwnondnon"; [[player, {_this playMoveNow "amovpknlmstpsnonwnondnon"}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP}
  186. else
  187. {player action ["switchWeapon", player, player,-1]}
  188. };
  189. };
  190. };
  191.  
  192. aalssw_fnc_leftWeapon =
  193. {
  194. check_backWeapon = false;
  195. _primaryWeapon = nil;
  196. _anim = animationState player;
  197. _animSpeed = getAnimSpeedCoef player;
  198. _stance = stance player;
  199. if (primaryWeapon player != "") then {{if ((_x select 0) == (primaryWeapon player)) then {_primaryWeapon = _x}} forEach (weaponsItems player);};
  200.  
  201. if ((primaryWeapon player != "") && (isNil {player getVariable ["leftWeapon", nil]})) exitWith //Put on left
  202. {
  203. if (currentWeapon player == "") then
  204. {
  205. player selectWeapon (primaryWeapon player);
  206. };
  207. switch (_stance) do
  208. {
  209. case "STAND" :
  210. {
  211. player playAction "SecondaryWeapon";
  212. _anim = animationState player;
  213. waitUntil {animationState player != _anim};
  214. sleep 1.5;
  215. [[[player, "amovpercmstpsnonwnondnon"], {(_this select 0) playMoveNow (_this select 1)}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
  216. sleep 0.5;
  217. };
  218. case "CROUCH" :
  219. {
  220. player playAction "SecondaryWeapon";
  221. _anim = animationState player;
  222. waitUntil {animationState player != _anim};
  223. sleep 1.2;
  224. waitUntil {animationState player != "amovpknlmstpsraswlnrdnon_amovpknlmstpsnonwnondnon"};
  225. sleep 0.1;
  226. waitUntil {animationState player != "amovpknlmstpsraswlnrdnon_amovpknlmstpsnonwnondnon"};
  227. [[[player, "amovpknlmstpsnonwnondnon"], {(_this select 0) playMoveNow (_this select 1)}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
  228. };
  229. case "PRONE" :
  230. {
  231. player playAction "PlayerCrouch";
  232. sleep (1.1 / _animSpeed);
  233. player playAction "SecondaryWeapon";
  234. _anim = animationState player;
  235. waitUntil {animationState player != _anim};
  236. sleep 1.5;
  237. [[[player, "amovppnemstpsnonwnondnon"], {(_this select 0) playMoveNow (_this select 1)}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
  238. sleep 0.5;
  239. };
  240. default {};
  241. };
  242. _man = createAgent ["VirtualMan_F", (player modelToWorld [0,-2,0]), [], 0, "NONE"];
  243. _man attachTo [player,[0,0,10],"pelvis"];
  244. _man setAnimSpeedCoef 100;
  245. _man allowDamage false;
  246. _baseWeapon = (_primaryWeapon select 0);
  247. _man addWeapon _baseWeapon;
  248. removeAllPrimaryWeaponItems _man;
  249. for "_n" from 1 to ((count _primaryWeapon) -1) do {_man addWeaponItem [_baseWeapon, _primaryWeapon select _n];};
  250. wpnHolderLeft = "Weapon_Empty" createVehicle getPosATL player;
  251. wpnHolderLeft attachTo [player,[0.05,-0.03,-0.03],"launcher"];
  252. wpnHolderLeft setVariable ["aalssw_wpnHolder",true,true];
  253. handler_backWeapon = addMissionEventHandler ["EachFrame",{wpnHolderLeft setVectorDirAndUp [((player selectionPosition "rightShoulder") vectorAdd [-0.10,-0.11,-0.05]) vectorFromTo (player selectionPosition "leftshoulder"),(player selectionPosition "spine3") vectorFromTo (player selectionPosition "launcher")];}];
  254. _man action ["PutWeapon", wpnHolderLeft, primaryWeapon _man];
  255. waitUntil {sleep 0.001; ((weaponCargo wpnHolderLeft) select 0) == _baseWeapon};
  256. player setUserActionText [action_putLeft, format [localize "str_action_weaponinhand", (getText (configfile >> "CfgWeapons" >> ((weaponCargo wpnHolderLeft) select 0) >> "displayName"))]];
  257. detach _man;
  258. deleteVehicle _man;
  259. wpnHolderLeft setDamage 1;
  260. player removeWeaponGlobal (primaryWeapon player);
  261. player setUserActionText [action_switchLeft, format [localize "str_action_weapononback", (getText (configfile >> "CfgWeapons" >> (primaryWeapon player) >> "displayName"))]];
  262. clearMagazineCargoGlobal wpnHolderLeft;
  263. clearItemCargoGlobal wpnHolderLeft;
  264. clearBackpackCargoGlobal wpnHolderLeft;
  265. _mass = (getNumber (configfile >> "CfgWeapons" >> _baseWeapon >> "WeaponSlotsInfo" >> "mass")) / 133;
  266. player setVariable ["leftWeaponMass", _mass];
  267. player setUnitTrait ["loadCoef", (player getUnitTrait "loadCoef") + _mass];
  268. sleep 1.618;
  269. player setVariable ["leftWeapon", _primaryWeapon];
  270. check_backWeapon = true;
  271. };
  272.  
  273. if ((primaryWeapon player == "") && (!isNil {player getVariable ["leftWeapon", nil]})) exitWith //Take on left
  274. {
  275. if (_stance == "PRONE") then
  276. {
  277. player playAction "PrimaryWeapon"
  278. }
  279. else
  280. {
  281. player playAction "SecondaryWeapon";
  282. _anim = animationState player;
  283. waitUntil {animationState player != _anim}; sleep 1.3;
  284. player selectWeapon (primaryWeapon player);
  285. };
  286. (uniformContainer player) addMagazineAmmoCargo [(getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "magazines") select 0),1,1];
  287. if (count (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "muzzles") select 0) == 2) then
  288. {(uniformContainer player) addMagazineAmmoCargo [(getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "muzzles") select 1) >> "magazines") select 0),1,1];};
  289. removeMissionEventHandler ["EachFrame", handler_backWeapon];
  290. detach wpnHolderLeft;
  291. deleteVehicle wpnHolderLeft;
  292. player addWeapon ((player getVariable ["leftWeapon",nil]) select 0);
  293. removeAllPrimaryWeaponItems player;
  294. player removePrimaryWeaponItem (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "magazines") select 0);
  295. if (count (player getVariable ["leftWeapon",nil]) == 7) then
  296. {player removePrimaryWeaponItem (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0)>> (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "muzzles") select 1) >> "magazines") select 0);};
  297. for "_n" from 1 to (count (player getVariable ["leftWeapon",nil])) do {player addWeaponItem [((player getVariable ["leftWeapon",nil]) select 0), (player getVariable ["leftWeapon",nil]) select _n];};
  298. player selectWeapon primaryWeapon player;
  299. _mass = player getVariable ["leftWeaponMass", 0];
  300. player setUnitTrait ["loadCoef", (player getUnitTrait "loadCoef") - _mass];
  301. sleep 1.618;
  302. player setUserActionText [action_switchLeft, format [localize "str_action_weaponinhand", (getText (configfile >> "CfgWeapons" >> ((weaponCargo wpnHolderLeft) select 0) >> "displayName"))]];
  303. player setVariable ["leftWeapon",nil];
  304. check_backWeapon = true;
  305. };
  306.  
  307. if ((primaryWeapon player != "") && (!isNil {player getVariable ["leftWeapon", nil]})) exitWith //Switch
  308. {
  309. if (currentWeapon player == "") then
  310. {
  311. player selectWeapon primaryWeapon player;
  312. sleep 2.6;
  313. };
  314. switch (_stance) do
  315. {
  316. case "STAND" :
  317. {
  318. if (weaponLowered player) then {player action ["WeaponOnBack", player]};
  319. if (currentWeapon player != primaryWeapon player) then {player selectWeapon (primaryWeapon player); sleep 1.6};
  320. player playAction "SecondaryWeapon";
  321. _anim = animationState player;
  322. waitUntil {animationState player == "amovpercmstpsraswrfldnon_amovpercmstpsraswlnrdnon"}; sleep (1 / _animSpeed);
  323. [[[player, _anim], {(_this select 0) playMoveNow (_this select 1)}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
  324. };
  325. case "CROUCH" :
  326. {
  327. if (weaponLowered player) then {player action ["WeaponOnBack", player]};
  328. if (currentWeapon player != primaryWeapon player) then {player selectWeapon (primaryWeapon player); sleep 1.6};
  329. player playAction "SecondaryWeapon";
  330. _anim = animationState player;
  331. waitUntil {animationState player == "amovpknlmstpsraswrfldnon_amovpknlmstpsraswlnrdnon"}; sleep (1 / _animSpeed);
  332. [[[player, _anim], {(_this select 0) playMoveNow (_this select 1)}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
  333. };
  334. case "PRONE" :
  335. {
  336. player playAction "PlayerCrouch";
  337. sleep (1.1 / _animSpeed);
  338. _anim = animationState player;
  339. if (weaponLowered player) then {player action ["WeaponOnBack", player]};
  340. if (currentWeapon player != primaryWeapon player) then {player selectWeapon (primaryWeapon player); sleep 1.6};
  341. player playAction "SecondaryWeapon";
  342. _anim = animationState player;
  343. waitUntil {animationState player == "amovpknlmstpsraswrfldnon_amovpknlmstpsraswlnrdnon"}; sleep (1 / _animSpeed);
  344. [[[player, _anim], {(_this select 0) playMoveNow (_this select 1)}], "BIS_fnc_spawn", true, false, false] call BIS_fnc_MP;
  345. };
  346. default {};
  347. };
  348. _man =createAgent ["VirtualMan_F", (player modelToWorld [0,-2,0]), [], 0, "NONE"];
  349. _man attachTo [player,[0,0,10],"pelvis"];
  350. _man setAnimSpeedCoef 100;
  351. _man allowDamage false;
  352. _baseWeapon = (_primaryWeapon select 0);
  353. _man addWeapon _baseWeapon;
  354. removeAllPrimaryWeaponItems _man;
  355. for "_n" from 1 to ((count _primaryWeapon) -1) do {_man addWeaponItem [_baseWeapon, _primaryWeapon select _n];};
  356. removeMissionEventHandler ["EachFrame", handler_backWeapon];
  357. [wpnHolderLeft, _baseWeapon] spawn
  358. {
  359. waitUntil {((weaponCargo wpnHolderLeft) select 0) == (_this select 1)};
  360. detach (_this select 0);
  361. deleteVehicle (_this select 0);
  362. };
  363. wpnHolderLeft = "Weapon_Empty" createVehicle getPosATL player;
  364. wpnHolderLeft attachTo [player,[0.05,-0.03,-0.03],"launcher"];
  365. wpnHolderLeft setVariable ["aalssw_wpnHolder",true,true];
  366. handler_backWeapon = addMissionEventHandler ["EachFrame",{wpnHolderLeft setVectorDirAndUp [((player selectionPosition "rightShoulder") vectorAdd [-0.10,-0.11,-0.05]) vectorFromTo (player selectionPosition "leftshoulder"),(player selectionPosition "spine3") vectorFromTo (player selectionPosition "launcher")];}];
  367. _man action ["PutWeapon", wpnHolderLeft, primaryWeapon _man];
  368.  
  369. waitUntil {((weaponCargo wpnHolderLeft) select 0) == _baseWeapon};
  370. uniformContainer player addMagazineAmmoCargo [(getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "magazines") select 0),1,1];
  371. if (count (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "muzzles") select 0) == 2) then
  372. {uniformContainer player addMagazineAmmoCargo [(getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0)>> (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "muzzles") select 1) >> "magazines") select 0),1,1];};
  373. player addWeapon ((player getVariable ["leftWeapon",nil]) select 0);
  374. removeAllPrimaryWeaponItems player;
  375. player removePrimaryWeaponItem (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "magazines") select 0);
  376. if (count (player getVariable ["leftWeapon",nil]) == 7) then
  377. {player removePrimaryWeaponItem (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0)>> (getArray (configFile >> "CfgWeapons" >> ((player getVariable ["leftWeapon",nil]) select 0) >> "muzzles") select 1) >> "magazines") select 0);};
  378. for "_n" from 1 to (count (player getVariable ["leftWeapon",nil])) do {player addWeaponItem [((player getVariable ["leftWeapon",nil]) select 0), (player getVariable ["leftWeapon",nil]) select _n];};
  379. player selectWeapon primaryWeapon player;
  380. _man spawn {sleep 1.618; detach _this; deleteVehicle _this;};
  381. _mass = player getVariable ["leftWeaponMass", 0];
  382. player setUnitTrait ["loadCoef", (player getUnitTrait "loadCoef") - _mass];
  383. _mass = (getNumber (configfile >> "CfgWeapons" >> _baseWeapon >> "WeaponSlotsInfo" >> "mass")) / 133;
  384. player setVariable ["leftWeaponMass", _mass];
  385. player setUnitTrait ["loadCoef", (player getUnitTrait "loadCoef") + _mass];
  386. sleep 1.618;
  387. player setUserActionText [action_switchLeft, format [localize "str_action_weaponinhand", (getText (configfile >> "CfgWeapons" >> ((weaponCargo wpnHolderLeft) select 0) >> "displayName"))]];
  388. wpnHolderLeft setDamage 1;
  389. player setVariable ["leftWeapon", _primaryWeapon];
  390. check_backWeapon = true;
  391. };
  392. };
  393. //------------------------------------------------Actions
  394. aalssw_fnc_leftWeaponActions =
  395. {
  396. action_switchLeft = player addAction ["Take weapon back",aalssw_fnc_leftWeapon,[],1,false,true,"SwitchWeapon",'((secondaryWeapon player == "") && (vehicle player == player) && (!isNil {player getVariable ["leftWeapon", nil]}) && (check_backWeapon) && (_this == _target))'];
  397. action_putLeft = player addAction ["Put weapon on back",aalssw_fnc_leftWeapon,[],1,false,true,"SwitchWeapon",'((secondaryWeapon player == "") && (vehicle player == player) && (isNil {player getVariable ["leftWeapon", nil]}) && (primaryWeapon player != "") && (check_backWeapon) && (_this == _target))'];
  398. if (({["ace_", _x] call BIS_fnc_inString} count activatedAddons) < 100) then {
  399. action_hideWpn = player addAction ["Hide weapon",aalssw_fnc_switchWpn,[],0,false,true,"buldTerrainShowNode",'((vehicle player == player) && (currentWeapon player != "") && (currentWeapon player != binocular player) && (_this == _target))'];
  400. };
  401. };
  402. [] spawn
  403. {
  404. while{(player == (player getVariable ["AALSSW", objNull]))} do
  405. {
  406. [] call aalssw_fnc_leftWeaponActions;
  407. waitUntil {sleep 10; (!(action_putLeft in (actionIDs player)))};
  408. }
  409. };
  410. [] spawn
  411. {
  412. while{true} do
  413. {
  414. waitUntil {sleep 0.1; check_backWeapon};
  415. player setUserActionText [action_putLeft, format [localize "str_action_weapononback", (getText (configfile >> "CfgWeapons" >> (primaryWeapon player) >> "displayName"))]];
  416. if (!isNil {player getVariable ["leftWeapon", nil]}) then {player setUserActionText [action_switchLeft, format [localize "str_action_weaponinhand", (getText (configfile >> "CfgWeapons" >> (((player getVariable ["leftWeapon",nil]) select 0)) >> "displayName"))]];};
  417. }
  418. };
  419. [] spawn
  420. {
  421. while{true} do
  422. {
  423. waitUntil {sleep 0.1; (currentWeapon player != "")};
  424. player setUserActionText [action_hideWpn, format [localize "str_action_hide_weapon", (getText (configfile >> "CfgWeapons" >> (currentWeapon player) >> "displayName"))]];
  425. }
  426. };
  427. [] spawn
  428. {
  429. while{true} do
  430. {
  431. waitUntil {sleep 0.1; ((secondaryWeapon player != "") && (!isNil {player getVariable ["leftWeapon", nil]}))};
  432. player playAction "PutDown";
  433. removeMissionEventHandler ["EachFrame", handler_backWeapon];
  434. detach wpnHolderLeft;
  435. wpnHolderLeft setVehiclePosition [(player modelToWorld [0,1,0]), [], 0, "CAN_COLLIDE"];
  436. wpnHolderLeft setVariable ["aalssw_wpnHolder",nil,true];
  437. wpnHolderLeft setDamage 0;
  438. wpnHolderLeft = nil;
  439. player setVariable ["leftWeapon",nil];
  440. }
  441. };
  442.  
  443. aalssw_handler_take = player addEventHandler ["Take", {if (((!isNull wpnHolderLeft) && (!isNil "wpnHolderLeft")) && (vehicle player == player)) then {wpnHolderLeft attachTo [player,[0.05,-0.03,-0.03],"launcher"]}}];
  444. aalssw_handler_respawn = player addEventHandler ["Respawn", {player setVariable ["AALSSW", player];}];
  445. aalssw_handler_killed = player addEventHandler ["Killed",
  446. {
  447. if ((isNil "wpnHolderLeft") || (isNull wpnHolderLeft)) exitWith {};
  448. detach wpnHolderLeft; wpnHolderLeft setVehiclePosition [getPosASL player, [], 0, "CAN_COLLIDE"]; wpnHolderLeft setVariable ["aalssw_wpnHolder",nil,true]; player setVariable ["leftWeapon",nil]; wpnHolderLeft setDamage 0; wpnHolderLeft = nil; removeMissionEventHandler ["EachFrame",handler_backWeapon];
  449. }];
  450. aalssw_handler_invOpened = player addEventHandler ["InventoryOpened",
  451. {
  452. if (vehicle player != player) exitWith {if (player getVariable ["InvOpened",0] != 1) then {_this spawn aalssw_fnc_invInterupt}};
  453. if (isNil {player getVariable ["leftWeapon", nil]}) exitWith {if (player getVariable ["InvOpened",0] != 1) then {_this spawn aalssw_fnc_invInterupt}};
  454. if ((isNil {(_this select 1) getVariable "aalssw_wpnHolder"}) && (isNil {(_this select 2) getVariable "aalssw_wpnHolder"}) && (!((_this select 1) isKindOf "man"))) exitWith
  455. {if (player getVariable ["InvOpened",0] != 1) then {_this spawn aalssw_fnc_invInterupt}};
  456. if (((_this select 1) isKindOf "man") && (({typeOf _x == "GroundWeaponHolder"} count ((_this select 1) nearSupplies 2)) != 0)) exitWith
  457. {
  458. _gear = "GroundWeaponHolder" createVehicle position (_this select 1);
  459. _gear setPosWorld (getPosWorld (_this select 1));
  460. _gear enableSimulation false;
  461. _gear setVariable ["tempHolder", true];
  462. [_gear,(_this select 1)] spawn
  463. {
  464. _gear = (_this select 0);
  465. sleep 1;
  466. waitUntil {!(isNull (findDisplay 602))};
  467. sleep 2;
  468. _gear setPosATL ((_this select 1) modelToWorld [0,0,0]);
  469. _gear enableSimulation true;
  470. _gear setDir getDir player;
  471. };
  472. if (player getVariable ["InvOpened",0] != 1) then {_this spawn aalssw_fnc_invInterupt}
  473. };
  474. [0, _this select 1, _this select 2] spawn aalssw_fnc_gearInterupt; true
  475. }];
  476. aalssw_handler_getin = player addEventHandler ["GetInMan",
  477. {
  478. detach wpnHolderLeft;
  479. wpnHolderLeft setPosASL [0,0,0];
  480. }];
  481. aalssw_handler_getout = player addEventHandler ["GetOutMan", {wpnHolderLeft attachTo [player,[0.05,-0.03,-0.03],"launcher"]}];
  482.  
  483. }},"BIS_fnc_spawn",true,true] call BIS_fnc_MP;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement