Advertisement
skotracker

[Arma 3] Purchasing launchers directly from traders fix

Sep 20th, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * ExileClient_util_playerEquipment_add
  3.  *
  4.  * Exile Mod
  5.  * www.exilemod.com
  6.  * © 2015 Exile Mod Team
  7.  *
  8.  * Arma_3_AServer > mpmissions > Exile.Altis > config.cpp search for "class CfgExileCustomCode"
  9.  *
  10.  * Add this overwrite:  ExileClient_util_playerEquipment_add = "custom\rockets\ExileClient_util_playerEquipment_add.sqf";  // Rocket launcher fix
  11.  *
  12.  * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
  13.  * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
  14.  */
  15.  
  16. private["_player","_itemClassName","_bulletCount","_itemInformation","_itemCategory","_itemType","_added","_compatibleWeaponItems"];
  17. _player = _this select 0;
  18. _itemClassName = toLower (_this select 1);
  19. _bulletCount = [_this, 2, -1] call BIS_fnc_param;
  20. _itemInformation = [_itemClassName] call BIS_fnc_itemType;
  21. _itemCategory = _itemInformation select 0;
  22. _itemType = _itemInformation select 1;
  23. _added = false;
  24. if (_itemCategory isEqualTo "Magazine") then
  25. {
  26.     {
  27.         if !(_x isEqualTo "") then
  28.         {
  29.             switch (_forEachIndex) do
  30.             {
  31.                 case 0:
  32.                 {
  33.                     if ((primaryWeaponMagazine _player) isEqualTo []) then
  34.                     {
  35.                         _compatibleWeaponItems = _x call ExileClient_util_gear_getCompatibleWeaponItems;
  36.                         if (_itemClassName in _compatibleWeaponItems) then
  37.                         {  
  38.                             if (_bulletCount isEqualTo -1) then
  39.                             {
  40.                                 _player addPrimaryWeaponItem _itemClassName;
  41.                             }
  42.                             else
  43.                             {
  44.                                 _player addWeaponItem [_x, [_itemClassName, _bulletCount]];
  45.                             };
  46.                             _added = true;
  47.                         };
  48.                     };
  49.                 };
  50.                 case 1:
  51.                 {
  52.                     if ((secondaryWeaponMagazine _player) isEqualTo []) then
  53.                     {
  54.                         _compatibleWeaponItems = _x call ExileClient_util_gear_getCompatibleWeaponItems;
  55.                         if (_itemClassName in _compatibleWeaponItems) then
  56.                         {  
  57.                             if (_bulletCount isEqualTo -1) then
  58.                             {
  59.                                 _player addSecondaryWeaponItem _itemClassName;
  60.                             }
  61.                             else
  62.                             {
  63.                                 _player addWeaponItem [_x, [_itemClassName, _bulletCount]];
  64.                             };
  65.                             _added = true;
  66.                         };
  67.                     };
  68.                 };
  69.                 case 2:
  70.                 {
  71.                     if ((handgunMagazine _player) isEqualTo []) then
  72.                     {
  73.                         _compatibleWeaponItems = _x call ExileClient_util_gear_getCompatibleWeaponItems;
  74.                         if (_itemClassName in _compatibleWeaponItems) then
  75.                         {  
  76.                             if (_bulletCount isEqualTo -1) then
  77.                             {
  78.                                 _player addHandgunItem _itemClassName;
  79.                             }
  80.                             else
  81.                             {
  82.                                 _player addWeaponItem [_x, [_itemClassName, _bulletCount]];
  83.                             };
  84.                             _added = true;
  85.                         };
  86.                     };
  87.                 };
  88.             };
  89.         };
  90.         if (_added) exitWith {};
  91.     }
  92.     forEach [primaryWeapon _player, secondaryWeapon _player, handgunWeapon _player];
  93. }
  94. else
  95. {
  96.     switch (_itemType) do
  97.     {
  98.         case "AssaultRifle",
  99.         case "Rifle",
  100.         case "SniperRifle",
  101.         case "SubmachineGun",
  102.         case "MachineGun",
  103.         case "Launcher",
  104.         case "RocketLauncher",
  105.         case "MissileLauncher",
  106.         case "GrenadeLauncher":
  107.         {
  108.             _player addWeaponGlobal _itemClassName;
  109.             _added = true;
  110.         };
  111.         case "Handgun":
  112.         {
  113.             _player addWeaponGlobal _itemClassName;  
  114.             _added = true;
  115.         };
  116.         case "LaserDesignator",
  117.         case "Throw",
  118.         case "Binocular":
  119.         {
  120.             _player addWeaponGlobal _itemClassName;  
  121.             _added = true;
  122.         };
  123.         case "GPS",
  124.         case "Map",
  125.         case "Radio",
  126.         case "UAVTerminal",
  127.         case "Watch",
  128.         case "Compass",
  129.         case "NVGoggles",
  130.         case "Glasses":
  131.         {
  132.             _player linkItem _itemClassName;
  133.             _added = true;
  134.         };
  135.         case "Headgear":    { _player addHeadgear _itemClassName; _added = true; };
  136.         case "Backpack":    { _player addBackpackGlobal _itemClassName; _added = true; };
  137.         case "Uniform":     { _player forceAddUniform _itemClassName; _added = true; };
  138.         case "Vest":        { _player addVest _itemClassName; _added = true; };
  139.         case "AccessorySights",
  140.         case "AccessoryPointer",
  141.         case "AccessoryMuzzle",
  142.         case "AccessoryBipod":
  143.         {
  144.             {
  145.                 if !(_x isEqualTo "") then
  146.                 {
  147.                     _compatibleWeaponItems = _x call ExileClient_util_gear_getCompatibleWeaponItems;
  148.                     if (_itemClassName in _compatibleWeaponItems) exitWith
  149.                     {  
  150.                         switch (_forEachIndex) do
  151.                         {
  152.                             case 0: { _player addPrimaryWeaponItem _itemClassName; _added = true; };
  153.                             case 1: { _player addSecondaryWeaponItem _itemClassName; _added = true; };
  154.                             case 2: { _player addHandgunItem _itemClassName; _added = true; };
  155.                         };
  156.                     };
  157.                 };
  158.                 if (_added) exitWith {};
  159.             }
  160.             forEach [primaryWeapon _player, secondaryWeapon _player, handgunWeapon _player];
  161.         };
  162.     };
  163. };
  164. _added
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement