Guest User

GTA V: Hunk's Expansion edited

a guest
Feb 8th, 2020
60
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. using GTA;
  3. using GTA.Math;
  4. using GTA.Native;
  5. using iFruitAddon2;
  6. using NativeUI;
  7. using NAudio.Wave;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Drawing;
  11. using System.Globalization;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Xml.Linq;
  15.  
  16. namespace GTAExpansion
  17. {
  18.     public class GTAExpansion : Script
  19.     {
  20.         private ScriptSettings config = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini");
  21.         private bool showHints = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("SETTINGS", "HINT_TOGGLE ", true);
  22.         private int main_menu_btn_on_foot = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("SETTINGS", "MAIN_MENU_BTN_ON_FOOT", 36);
  23.         private int main_menu_btn_in_vehicle = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("SETTINGS", "MAIN_MENU_BTN_IN_VEHICLE", 73);
  24.         private int main_menu_btn = 36;
  25.         private int GameTimeRef = 0;
  26.         private bool loaded = false;
  27.         private bool MaskIsOn = false;
  28.         private bool followCamera = false;
  29.         private Camera follow_camera = (Camera)null;
  30.         private int followCameraTimer = 0;
  31.         private int camTimer = 0;
  32.         private bool buyBag = false;
  33.         private bool buyHolster = false;
  34.         private bool buySupplies = false;
  35.         private int sellerAvailableItems = 0;
  36.         private System.Random rnd = new System.Random();
  37.         private int holster_toggle_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("HOLSTER_SETTINGS", "TOGGLE_HOLSTER_BTN", 37);
  38.         private int intimidate_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("HOLSTER_SETTINGS", "INTIMIDATE_BTN", 24);
  39.         private bool useHipHolster = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("HOLSTER_SETTINGS", "USE_HIP_HOLSTER", false);
  40.         private bool drawHolsterIcon = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("HOLSTER_SETTINGS", "ICON_DRAW", false);
  41.         private int holsterIconX = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("HOLSTER_SETTINGS", "X", 195);
  42.         private int holsterIconY = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("HOLSTER_SETTINGS", "Y", 620);
  43.         private int holsterIconW = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("HOLSTER_SETTINGS", "Width", 82);
  44.         private int holsterIconH = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("HOLSTER_SETTINGS", "Height", 85);
  45.         private bool customHolsterAnim = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("HOLSTER_SETTINGS", "CUSTOM_HOLSTER_ANIMATION", false);
  46.         private bool holsterSet = false;
  47.         private bool check = false;
  48.         private bool goodToGo = false;
  49.         private Model choosenPistol = (Model)Function.Call<int>(Hash._0x0A6DB4965674D243, (InputArgument)Game.Player.Character);
  50.         private Model prevPistol = (Model)Function.Call<int>(Hash._0x0A6DB4965674D243, (InputArgument)Game.Player.Character);
  51.         private bool weaponPistol = false;
  52.         private int holsterTimerCounterLong = 0;
  53.         private int holsterTimerCounterShort = 0;
  54.         private bool intimidation = false;
  55.         private bool hasHolster = false;
  56.         private int mask_toggle_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("OUTFIT_COMPONENTS_SETTINGS", "MASK_TOGGLE_BTN", 249);
  57.         private int gloves_toggle_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("OUTFIT_COMPONENTS_SETTINGS", "GLOVES_TOGGLE_BTN", 249);
  58.         private int glasses_toggle_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("OUTFIT_COMPONENTS_SETTINGS", "GLASSES_TOGGLE_BTN", 249);
  59.         private bool mask0 = false;
  60.         private bool mask1 = false;
  61.         private bool mask2 = false;
  62.         private bool mask3 = false;
  63.         private bool mask4 = false;
  64.         private bool gloves0 = false;
  65.         private bool gloves1 = false;
  66.         private bool gloves2 = false;
  67.         private bool gloves3 = false;
  68.         private bool gloves4 = false;
  69.         private bool glasses0 = false;
  70.         private bool glasses1 = false;
  71.         private bool glasses2 = false;
  72.         private bool glasses3 = false;
  73.         private bool glasses4 = false;
  74.         private int maskTimeCounter = 0;
  75.         private int earphone_toggle_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("EAR_RADIO_SETTINGS", "EARPHONE_TOGGLE_KEY", 249);
  76.         private int readio_off_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("EAR_RADIO_SETTINGS", "TURN_OFF_RADIO", 174);
  77.         private int prevStation = (int)byte.MaxValue;
  78.         private int earRadioTimer = 0;
  79.         private int wallet_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("WALLET_SETTINGS", "WALLET_CHECK_BTN", 157);
  80.         private bool inProcessWallet = false;
  81.         private bool walletCount = false;
  82.         private float animSpeed = 0.0f;
  83.         private int bag_menu_btn = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("DUFFLEBAG_SETTINGS", "BAG_MENU_BTN", 45);
  84.         private bool drawStrap = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("DUFFLEBAG_SETTINGS", "DRAW_STRAP", true);
  85.         private float xd = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "x_default", 0.21f);
  86.         private float yd = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "y_default", -0.3f);
  87.         private float zd = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "z_default", -0.2f);
  88.         private float xrd = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "x_rot_default", 45.8999f);
  89.         private float yrd = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "y_rot_default", 84.6992f);
  90.         private float zrd = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "z_rot_default", 114.1992f);
  91.         private float xsdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "x_sky_diving_gear", -0.45f);
  92.         private float ysdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "y_sky_diving_gear", -0.05f);
  93.         private float zsdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "z_sky_diving_gear", -0.45f);
  94.         private float xrsdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "x_rot_sky_diving_gear", 0.0f);
  95.         private float yrsdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "y_rot_sky_diving_gear", 40f);
  96.         private float zrsdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "z_rot_sky_diving_gear", -45f);
  97.         private float xdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "x_diving_gear", -0.1f);
  98.         private float ydg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "y_diving_gear", -0.35f);
  99.         private float zdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "z_diving_gear", -0.07f);
  100.         private float xrdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "x_rot_diving_gear", 25f);
  101.         private float yrdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "y_rot_diving_gear", 25f);
  102.         private float zrdg = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<float>("DUFFLEBAG_SETTINGS", "z_rot_diving_gear", 0.0f);
  103.         private string bagModel = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<string>("DUFFLEBAG_SETTINGS", "BAG", "p_ld_heist_bag_s_pro_o");
  104.         private string bagModelFull = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<string>("DUFFLEBAG_SETTINGS", "BAG_FULL", "p_ld_heist_bag_s_pro");
  105.         private string stashedBagModel = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<string>("DUFFLEBAG_SETTINGS", "BAG_STASHED", "p_ld_heist_bag_s_pro2_s");
  106.         private XDocument doc = XDocument.Load("scripts\\Expansion\\WeaponStash.xml");
  107.         private PedHash[] allPedHashes = (PedHash[])Enum.GetValues(typeof(PedHash));
  108.         private WeaponHash[] allWeaponHashes = (WeaponHash[])Enum.GetValues(typeof(WeaponHash));
  109.         private WeaponComponent[] allComponentsHashes = (WeaponComponent[])Enum.GetValues(typeof(WeaponComponent));
  110.         private WeaponTint[] allTintHashes = (WeaponTint[])Enum.GetValues(typeof(WeaponTint));
  111.         private bool skyDiving = false;
  112.         private bool wearingGear = false;
  113.         private bool changedPosition = false;
  114.         private bool bagPickUp = false;
  115.         private bool notifed = false;
  116.         private bool canTakeBagFromVehicle = false;
  117.         private bool canPutOnBagOnExit = false;
  118.         private BlipSprite sellerBlip = BlipSprite.Information;
  119.         private int TotalPrice = 0;
  120.         private int BagPrice = 100;
  121.         private int HolsterPrice = 50;
  122.         private int SupplyPrice = 25;
  123.         private bool greeting = false;
  124.         private bool greetingFinished = false;
  125.         private bool deal = false;
  126.         private bool payed = false;
  127.         private int timeOut = 0;
  128.         private bool inProcessBag = false;
  129.         private bool canceled = false;
  130.         private bool findSellerOption = false;
  131.         private int DufflebagTimeCounter = 0;
  132.         private int sellerDialogCounter = 6;
  133.         private Prop cur_bag = (Prop)null;
  134.         private bool hasBag = false;
  135.         private bool isBagBought = false;
  136.         private bool isBagDropped = false;
  137.         private bool extraEffects = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("CIGS_AND_PILLS_SETTINGS", "EXTRA_EFFECTS", false);
  138.         private bool screenFX = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("CIGS_AND_PILLS_SETTINGS", "SCREEN_EFFECT", true);
  139.         private bool hintShow = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<bool>("CIGS_AND_PILLS_SETTINGS", "SHOW_HINTS", true);
  140.         private int swallowBTN = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("CIGS_AND_PILLS_SETTINGS", "PILLS_SWALLOW_BTN", 51);
  141.         private int maxPills = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("CIGS_AND_PILLS_SETTINGS", "MAX_PILLS", 25);
  142.         private int extraFXDuration = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("CIGS_AND_PILLS_SETTINGS", "EFFECTS_DURATION", 1000);
  143.         private bool cigsAndPillsCountDown = false;
  144.         private int cigsAndPillsCounter = 15;
  145.         private int pillsCount = 10;
  146.         private bool blockKeys = false;
  147.         private int cigsCount = 10;
  148.         private int smokeBTN = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("CIGS_AND_PILLS_SETTINGS", "SMOKE_TOGGLE_BTN", 44);
  149.         private int maxCigs = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("CIGS_AND_PILLS_SETTINGS", "MAX_CIGS", 25);
  150.         private int max_cig_durability = ScriptSettings.Load("scripts\\Expansion\\Expansion.ini").GetValue<int>("CIGS_AND_PILLS_SETTINGS", "MAX_CIG_DURABILITY", 25);
  151.         private int cig_durability = 0;
  152.         private string smokeType = "prop_amb_ciggy_01";
  153.         private bool playCigAndSmokeAnim = true;
  154.         private bool flame = false;
  155.         private int smoke = -1;
  156.         private bool smoking = false;
  157.         private bool startSmoke = true;
  158.         private bool play_swallow_pills_anim = false;
  159.         private string medbagObject = "prop_ld_health_pack";
  160.         private bool canRefill = false;
  161.         private bool inProcessCigsAndPills = false;
  162.         private bool extraEffectsStat = false;
  163.         private int extraEffectsTimer = 0;
  164.         private float slowMoScale = 0.0f;
  165.         private Prop pillsJar = (Prop)null;
  166.         private bool inMenu = false;
  167.         private List<WeaponHash> stashedWeapons = new List<WeaponHash>();
  168.         private List<WeaponHash> characterWeapons = new List<WeaponHash>();
  169.         private List<object> mainMenuListString = new List<object>();
  170.         private Color btnColor1 = Color.Transparent;
  171.         private Color btnColor2 = Color.GhostWhite;
  172.         private Color btnTextColor1 = Color.White;
  173.         private Color btnTextColor2 = Color.Black;
  174.         private Entity CamObject;
  175.         private WaveFileReader WavereaderDown;
  176.         private WaveChannel32 wavechanDown;
  177.         private DirectSoundOut DSODown;
  178.         private float volumeDown;
  179.         private Prop holster;
  180.         private Ped player;
  181.         private Ped prevPlayer;
  182.         private Prop HolstedPistolPrev;
  183.         private Prop HolstedPistol;
  184.         private int worldPistolModel;
  185.         private Prop[] holsterProp;
  186.         private Ped[] closestPeds;
  187.         private Ped target;
  188.         private bool headset;
  189.         private Prop wallet;
  190.         private Prop walletOpened;
  191.         private uint prevWeapon;
  192.         private Ped seller;
  193.         private Prop cig;
  194.         private Prop medbag;
  195.         private CustomiFruit _iFruit;
  196.         private iFruitContact callContact;
  197.         private MenuPool modMenuPool;
  198.         private UIMenu mainMenu;
  199.  
  200.         private void update_inventory_status(Ped ped)
  201.         {
  202.             this.cur_bag = this.bagModelReturn(ped);
  203.             this.hasBag = this.doesPedWearingBag(ped);
  204.             this.hasHolster = this.doesPedHasHolster(ped);
  205.             this.isBagBought = this.doesPedHasInventoryBag(ped);
  206.             this.isBagDropped = this.DoesDroppedBagExist(ped);
  207.         }
  208.  
  209.         private bool isOccupied(Ped ped)
  210.         {
  211.             int num;
  212.             if (!Function.Call<bool>(Hash._0xD3C2E180A40F031E, Array.Empty<InputArgument>()) && ped.IsVisible)
  213.             {
  214.                 if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"missmic2@meat_hook", (InputArgument)"michael_meat_hook_fall", (InputArgument)3))
  215.                 {
  216.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"missmic2@meat_hook", (InputArgument)"michael_meat_hook_idle", (InputArgument)3))
  217.                     {
  218.                         if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"missmic2@meat_hook", (InputArgument)"michael_meat_hook_react_a", (InputArgument)3))
  219.                         {
  220.                             if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"missmic2@meat_hook", (InputArgument)"michael_meat_hook_react_b", (InputArgument)3))
  221.                             {
  222.                                 if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"missmic2@meat_hook", (InputArgument)"michael_meat_hook_react_c", (InputArgument)3))
  223.                                 {
  224.                                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"missmic2@meat_hook", (InputArgument)"michael_meat_hook_react_d", (InputArgument)3))
  225.                                     {
  226.                                         if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)3))
  227.                                         {
  228.                                             if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter", (InputArgument)3))
  229.                                             {
  230.                                                 if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@exit", (InputArgument)"exit", (InputArgument)3))
  231.                                                 {
  232.                                                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"intro", (InputArgument)3))
  233.                                                     {
  234.                                                         if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"outro", (InputArgument)3))
  235.                                                         {
  236.                                                             if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"intro", (InputArgument)3))
  237.                                                             {
  238.                                                                 if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"outro", (InputArgument)3))
  239.                                                                 {
  240.                                                                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"move_m@intimidation@cop@unarmed", (InputArgument)"idle", (InputArgument)3))
  241.                                                                     {
  242.                                                                         if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"mp_arrest_paired", (InputArgument)"cop_p1_rf_right_0", (InputArgument)3))
  243.                                                                         {
  244.                                                                             if (!Function.Call<bool>(Hash._0x2E397FD2ECD37C87, (InputArgument)Game.Player))
  245.                                                                             {
  246.                                                                                 if (!Function.Call<bool>(Hash._0x3998B1276A3300E5, (InputArgument)Game.Player.Character) && !Game.Player.Character.IsGoingIntoCover && !Game.Player.Character.IsInCover())
  247.                                                                                 {
  248.                                                                                     if (!Function.Call<bool>(Hash._0xBB062B2B5722478E, (InputArgument)Game.Player.Character) && !Function.Call<bool>(Hash._0xD3C2E180A40F031E, Array.Empty<InputArgument>()) && (!Game.Player.Character.IsInWater && !Game.Player.Character.IsJumping) && (!Game.Player.Character.IsOnFire && !Game.Player.Character.IsFalling && !Game.Player.Character.IsDiving))
  249.                                                                                     {
  250.                                                                                         if (!Function.Call<bool>(Hash._0xE3B6097CC25AA69E, (InputArgument)ped))
  251.                                                                                         {
  252.                                                                                             num = !Function.Call<bool>(Hash._0x2E397FD2ECD37C87, (InputArgument)Game.Player) ? 1 : 0;
  253.                                                                                             goto label_22;
  254.                                                                                         }
  255.                                                                                     }
  256.                                                                                 }
  257.                                                                             }
  258.                                                                         }
  259.                                                                     }
  260.                                                                 }
  261.                                                             }
  262.                                                         }
  263.                                                     }
  264.                                                 }
  265.                                             }
  266.                                         }
  267.                                     }
  268.                                 }
  269.                             }
  270.                         }
  271.                     }
  272.                 }
  273.             }
  274.             num = 0;
  275.         label_22:
  276.             return num == 0;
  277.         }
  278.  
  279.         private void followCameraCreateFunc(Ped ped, Entity follow_object)
  280.         {
  281.             ++this.camTimer;
  282.             if (this.camTimer >= 150)
  283.             {
  284.                 this.camTimer = 0;
  285.                 this.followCamera = false;
  286.             }
  287.             if (!Game.Player.Character.IsSittingInVehicle())
  288.             {
  289.                 if (Function.Call<int>(Hash._0x8D4D46230B2C353A, Array.Empty<InputArgument>()) != 4)
  290.                 {
  291.                     if (this.follow_camera == (Camera)null)
  292.                     {
  293.                         this.follow_camera = World.CreateCamera(GameplayCamera.Position, Vector3.Zero, GameplayCamera.FieldOfView);
  294.                         World.RenderingCamera = this.follow_camera;
  295.                         if (!(follow_object != (Entity)null) || !follow_object.Exists())
  296.                             return;
  297.                         this.follow_camera.PointAt(follow_object);
  298.                     }
  299.                     else
  300.                     {
  301.                         if (World.RenderingCamera != this.follow_camera)
  302.                             World.RenderingCamera = this.follow_camera;
  303.                         if (follow_object != (Entity)null && follow_object.Exists())
  304.                             this.follow_camera.PointAt(follow_object);
  305.                         this.follow_camera.Position = GameplayCamera.Position;
  306.                         this.follow_camera.Rotation = GameplayCamera.Rotation;
  307.                         if (this.followCameraTimer < 300 && this.followCameraTimer < 100)
  308.                         {
  309.                             ++this.followCameraTimer;
  310.                             if ((double)this.follow_camera.FieldOfView > (double)GameplayCamera.FieldOfView - 3.0)
  311.                                 this.follow_camera.FieldOfView -= 0.1f;
  312.                         }
  313.                     }
  314.                 }
  315.                 else if (this.follow_camera != (Camera)null && this.follow_camera.Exists())
  316.                 {
  317.                     if (World.RenderingCamera == this.follow_camera)
  318.                         World.RenderingCamera = (Camera)null;
  319.                     this.follow_camera.Destroy();
  320.                     this.follow_camera = (Camera)null;
  321.                 }
  322.             }
  323.             else if (this.follow_camera == (Camera)null)
  324.             {
  325.                 this.follow_camera = World.CreateCamera(GameplayCamera.Position, Vector3.Zero, GameplayCamera.FieldOfView);
  326.                 World.RenderingCamera = this.follow_camera;
  327.                 if (follow_object != (Entity)null && follow_object.Exists())
  328.                     this.follow_camera.PointAt(follow_object);
  329.             }
  330.             else
  331.             {
  332.                 if (World.RenderingCamera != this.follow_camera)
  333.                     World.RenderingCamera = this.follow_camera;
  334.                 if (follow_object != (Entity)null && follow_object.Exists())
  335.                     this.follow_camera.PointAt(follow_object);
  336.                 this.follow_camera.Position = GameplayCamera.Position;
  337.                 this.follow_camera.Rotation = GameplayCamera.Rotation;
  338.                 if (this.followCameraTimer < 300 && this.followCameraTimer < 100)
  339.                 {
  340.                     ++this.followCameraTimer;
  341.                     if ((double)this.follow_camera.FieldOfView > (double)GameplayCamera.FieldOfView - 3.0)
  342.                         this.follow_camera.FieldOfView -= 0.1f;
  343.                 }
  344.             }
  345.         }
  346.  
  347.         private void followCameraDeleteFunc(Ped ped, Entity follow_obje)
  348.         {
  349.             if (!(this.follow_camera != (Camera)null) || !this.follow_camera.Exists())
  350.                 return;
  351.             this.follow_camera.Position = GameplayCamera.Position;
  352.             this.follow_camera.Rotation = GameplayCamera.Rotation;
  353.             if (this.followCameraTimer > 0)
  354.             {
  355.                 --this.followCameraTimer;
  356.                 if ((double)this.follow_camera.FieldOfView != (double)GameplayCamera.FieldOfView)
  357.                 {
  358.                     if ((double)this.follow_camera.FieldOfView > (double)GameplayCamera.FieldOfView)
  359.                         this.follow_camera.FieldOfView -= 0.1f;
  360.                     else
  361.                         this.follow_camera.FieldOfView += 0.1f;
  362.                 }
  363.                 else
  364.                 {
  365.                     if (World.RenderingCamera == this.follow_camera)
  366.                         World.RenderingCamera = (Camera)null;
  367.                     this.follow_camera.Destroy();
  368.                     this.follow_camera = (Camera)null;
  369.                 }
  370.             }
  371.             else
  372.             {
  373.                 if (World.RenderingCamera == this.follow_camera)
  374.                     World.RenderingCamera = (Camera)null;
  375.                 this.follow_camera.Destroy();
  376.                 this.follow_camera = (Camera)null;
  377.             }
  378.         }
  379.  
  380.         private void checkMask(Ped ped)
  381.         {
  382.             if (ped.Model.Hash == this.GetHashKey("PLAYER_ZERO"))
  383.             {
  384.                 int num;
  385.                 if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 7)
  386.                 {
  387.                     if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 9)
  388.                     {
  389.                         if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 14)
  390.                         {
  391.                             if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 21)
  392.                             {
  393.                                 if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 23)
  394.                                 {
  395.                                     if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)9) != 8)
  396.                                     {
  397.                                         if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 2)
  398.                                         {
  399.                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 14)
  400.                                             {
  401.                                                 if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 15)
  402.                                                 {
  403.                                                     if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 16)
  404.                                                     {
  405.                                                         if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 17)
  406.                                                         {
  407.                                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 18)
  408.                                                             {
  409.                                                                 if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 19)
  410.                                                                 {
  411.                                                                     if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 20)
  412.                                                                     {
  413.                                                                         if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 23)
  414.                                                                         {
  415.                                                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 25)
  416.                                                                             {
  417.                                                                                 num = this.mask0 ? 1 : 0;
  418.                                                                                 goto label_19;
  419.                                                                             }
  420.                                                                         }
  421.                                                                     }
  422.                                                                 }
  423.                                                             }
  424.                                                         }
  425.                                                     }
  426.                                                 }
  427.                                             }
  428.                                         }
  429.                                     }
  430.                                 }
  431.                             }
  432.                         }
  433.                     }
  434.                 }
  435.                 num = 1;
  436.             label_19:
  437.                 if (num != 0)
  438.                 {
  439.                     this.MaskIsOn = true;
  440.                     if (this.smoke != -1 && (uint)this.smoke > 0U)
  441.                         this.stopSmokingFunc(ped);
  442.                 }
  443.                 else
  444.                     this.MaskIsOn = false;
  445.             }
  446.             Model model = ped.Model;
  447.             if (model.Hash == this.GetHashKey("PLAYER_ONE"))
  448.             {
  449.                 int num;
  450.                 if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 4)
  451.                 {
  452.                     if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 5)
  453.                     {
  454.                         if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 8)
  455.                         {
  456.                             if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 9)
  457.                             {
  458.                                 if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 18)
  459.                                 {
  460.                                     if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)9) != 4)
  461.                                     {
  462.                                         if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)2) != 5)
  463.                                         {
  464.                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 1)
  465.                                             {
  466.                                                 if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 6)
  467.                                                 {
  468.                                                     if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 8)
  469.                                                     {
  470.                                                         if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 9)
  471.                                                         {
  472.                                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 10)
  473.                                                             {
  474.                                                                 if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 13)
  475.                                                                 {
  476.                                                                     if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 14)
  477.                                                                     {
  478.                                                                         num = this.mask1 ? 1 : 0;
  479.                                                                         goto label_41;
  480.                                                                     }
  481.                                                                 }
  482.                                                             }
  483.                                                         }
  484.                                                     }
  485.                                                 }
  486.                                             }
  487.                                         }
  488.                                     }
  489.                                 }
  490.                             }
  491.                         }
  492.                     }
  493.                 }
  494.                 num = 1;
  495.             label_41:
  496.                 if (num != 0)
  497.                 {
  498.                     this.MaskIsOn = true;
  499.                     if (this.smoke != -1 && (uint)this.smoke > 0U)
  500.                         this.stopSmokingFunc(ped);
  501.                 }
  502.                 else
  503.                     this.MaskIsOn = false;
  504.             }
  505.             model = ped.Model;
  506.             if (model.Hash != this.GetHashKey("PLAYER_TWO"))
  507.                 return;
  508.             int num1;
  509.             if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 1)
  510.             {
  511.                 if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 6)
  512.                 {
  513.                     if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 10)
  514.                     {
  515.                         if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 13)
  516.                         {
  517.                             if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)8) != 15)
  518.                             {
  519.                                 if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)9) != 5)
  520.                                 {
  521.                                     if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)9) != 6)
  522.                                     {
  523.                                         if (Function.Call<int>(Hash._0x67F3780DD425D4FC, (InputArgument)ped, (InputArgument)9) != 7)
  524.                                         {
  525.                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 2)
  526.                                             {
  527.                                                 if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 14)
  528.                                                 {
  529.                                                     if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 15)
  530.                                                     {
  531.                                                         if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 16)
  532.                                                         {
  533.                                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 17)
  534.                                                             {
  535.                                                                 if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 18)
  536.                                                                 {
  537.                                                                     if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 19)
  538.                                                                     {
  539.                                                                         if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 20)
  540.                                                                         {
  541.                                                                             if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 23)
  542.                                                                             {
  543.                                                                                 if (Function.Call<int>(Hash._0x898CC20EA75BACD8, (InputArgument)ped, (InputArgument)0) != 25)
  544.                                                                                 {
  545.                                                                                     num1 = this.mask2 ? 1 : 0;
  546.                                                                                     goto label_67;
  547.                                                                                 }
  548.                                                                             }
  549.                                                                         }
  550.                                                                     }
  551.                                                                 }
  552.                                                             }
  553.                                                         }
  554.                                                     }
  555.                                                 }
  556.                                             }
  557.                                         }
  558.                                     }
  559.                                 }
  560.                             }
  561.                         }
  562.                     }
  563.                 }
  564.             }
  565.             num1 = 1;
  566.         label_67:
  567.             if (num1 != 0)
  568.             {
  569.                 this.MaskIsOn = true;
  570.                 if (this.smoke != -1 && (uint)this.smoke > 0U)
  571.                     this.stopSmokingFunc(ped);
  572.             }
  573.             else
  574.                 this.MaskIsOn = false;
  575.         }
  576.  
  577.         private void AnimPlayFunc(
  578.           Ped ped,
  579.           float actionPoint,
  580.           float stopPoint,
  581.           string animDict,
  582.           string animName,
  583.           float animSpeed,
  584.           int animFlags,
  585.           Action Action)
  586.         {
  587.             if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName, (InputArgument)3))
  588.             {
  589.                 if (animFlags == 1)
  590.                     ped.Task.PlayAnimation(animDict, animName, animSpeed, -1, AnimationFlags.UpperBodyOnly | AnimationFlags.AllowRotation);
  591.                 if (animFlags == 2)
  592.                     ped.Task.PlayAnimation(animDict, animName, animSpeed, -1, AnimationFlags.StayInEndFrame | AnimationFlags.UpperBodyOnly | AnimationFlags.AllowRotation);
  593.                 if (animFlags == 3)
  594.                     ped.Task.PlayAnimation(animDict, animName, animSpeed, -1, AnimationFlags.AllowRotation);
  595.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) != (double)actionPoint)
  596.                     return;
  597.                 Action();
  598.             }
  599.             else if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) > (double)stopPoint)
  600.                 Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)animName, (InputArgument)animDict, (InputArgument)3f);
  601.         }
  602.  
  603.         private void DisableControlsFunc(bool block_movements)
  604.         {
  605.             Game.DisableControlThisFrame(2, Control.NextCamera);
  606.             if (block_movements)
  607.             {
  608.                 Game.DisableControlThisFrame(2, Control.MoveLeft);
  609.                 Game.DisableControlThisFrame(2, Control.MoveLeftOnly);
  610.                 Game.DisableControlThisFrame(2, Control.MoveRight);
  611.                 Game.DisableControlThisFrame(2, Control.MoveRightOnly);
  612.                 Game.DisableControlThisFrame(2, Control.MoveUp);
  613.                 Game.DisableControlThisFrame(2, Control.MoveUpOnly);
  614.                 Game.DisableControlThisFrame(2, Control.MoveDown);
  615.                 Game.DisableControlThisFrame(2, Control.MoveDownOnly);
  616.                 Game.DisableControlThisFrame(2, Control.ScriptPadLeft);
  617.                 Game.DisableControlThisFrame(2, Control.ScriptPadRight);
  618.                 Game.DisableControlThisFrame(2, Control.ScriptPadUp);
  619.                 Game.DisableControlThisFrame(2, Control.ScriptPadDown);
  620.                 Game.DisableControlThisFrame(2, Control.VehicleMoveLeft);
  621.                 Game.DisableControlThisFrame(2, Control.VehicleMoveRight);
  622.                 Game.DisableControlThisFrame(2, Control.VehicleMoveLeft);
  623.                 Game.DisableControlThisFrame(2, Control.VehicleMoveRightOnly);
  624.                 Game.DisableControlThisFrame(2, Control.VehicleMoveLeftOnly);
  625.                 Game.DisableControlThisFrame(2, Control.VehicleMoveLeftRight);
  626.             }
  627.             Game.DisableControlThisFrame(2, Control.VehicleCinCam);
  628.             Game.DisableControlThisFrame(2, Control.VehicleNextRadio);
  629.             Game.DisableControlThisFrame(2, Control.VehiclePrevRadio);
  630.             Game.DisableControlThisFrame(2, Control.VehicleHeadlight);
  631.             Game.DisableControlThisFrame(2, Control.VehicleHorn);
  632.             Game.DisableControlThisFrame(2, Control.VehicleHandbrake);
  633.             Game.DisableControlThisFrame(2, Control.VehicleExit);
  634.             Game.DisableControlThisFrame(2, Control.SelectWeapon);
  635.             Game.DisableControlThisFrame(2, Control.Phone);
  636.             Game.DisableControlThisFrame(2, Control.PhoneCameraDOF);
  637.             Game.DisableControlThisFrame(2, Control.PhoneCameraExpression);
  638.             Game.DisableControlThisFrame(2, Control.PhoneCameraFocusLock);
  639.             Game.DisableControlThisFrame(2, Control.PhoneCameraGrid);
  640.             Game.DisableControlThisFrame(2, Control.PhoneCameraSelfie);
  641.             Game.DisableControlThisFrame(2, Control.PhoneCancel);
  642.             Game.DisableControlThisFrame(2, Control.PhoneDown);
  643.             Game.DisableControlThisFrame(2, Control.PhoneLeft);
  644.             Game.DisableControlThisFrame(2, Control.PhoneRight);
  645.             Game.DisableControlThisFrame(2, Control.PhoneUp);
  646.             Game.DisableControlThisFrame(2, Control.PhoneOption);
  647.             Game.DisableControlThisFrame(2, Control.PhoneExtraOption);
  648.             Game.DisableControlThisFrame(2, Control.PhoneSelect);
  649.             Game.DisableControlThisFrame(2, Control.Aim);
  650.             Game.DisableControlThisFrame(2, Control.Attack);
  651.             Game.DisableControlThisFrame(2, Control.Attack2);
  652.             Game.DisableControlThisFrame(2, Control.Sprint);
  653.             Game.DisableControlThisFrame(2, Control.Reload);
  654.             Game.DisableControlThisFrame(2, Control.Phone);
  655.             Game.DisableControlThisFrame(2, Control.Jump);
  656.             Game.DisableControlThisFrame(2, Control.VehicleCarJump);
  657.             Game.DisableControlThisFrame(2, Control.RappelJump);
  658.             Game.DisableControlThisFrame(2, Control.RappelLongJump);
  659.             Game.DisableControlThisFrame(2, Control.VehicleJump);
  660.             Game.DisableControlThisFrame(2, Control.Cover);
  661.             Game.DisableControlThisFrame(2, Control.MeleeAttack1);
  662.             Game.DisableControlThisFrame(2, Control.MeleeAttack2);
  663.             Game.DisableControlThisFrame(2, Control.MeleeAttackAlternate);
  664.             Game.DisableControlThisFrame(2, Control.MeleeAttackHeavy);
  665.             Game.DisableControlThisFrame(2, Control.MeleeAttackLight);
  666.             Game.DisableControlThisFrame(2, Control.Context);
  667.             Game.DisableControlThisFrame(2, Control.ContextSecondary);
  668.             Game.DisableControlThisFrame(2, Control.AccurateAim);
  669.             Game.DisableControlThisFrame(2, Control.Duck);
  670.             Game.DisableControlThisFrame(2, Control.Enter);
  671.             Game.DisableControlThisFrame(2, Control.VehicleAccelerate);
  672.         }
  673.  
  674.         private void Notify(string text, string subject, int r, int g, int b, string icon)
  675.         {
  676.             Function.Call(Hash._0x202709F4C58A0424, (InputArgument)"STRING");
  677.             Function.Call(Hash._0x6C188BE134E074AA, (InputArgument)"");
  678.             Function.Call(Hash._0x17430B918701C342, (InputArgument)r, (InputArgument)g, (InputArgument)b, (InputArgument)200);
  679.             Function.Call(Hash._0x531B84E7DA981FB6, (InputArgument)icon, (InputArgument)icon, (InputArgument)true, (InputArgument)7, (InputArgument)text, (InputArgument)subject, (InputArgument)1f, (InputArgument)"", (InputArgument)4);
  680.             Function.Call(Hash._0x2ED7843F8F801023, (InputArgument)true, (InputArgument)true);
  681.             Function.Call(Hash._0x67C540AA08E4A6F5, (InputArgument)(-1), (InputArgument)"OTHER_TEXT", (InputArgument)"HUD_AWARDS");
  682.         }
  683.  
  684.         public void Draw(
  685.           int mode,
  686.           bool hasBag,
  687.           bool bagInCar,
  688.           bool hasHolster,
  689.           bool isBagBought,
  690.           bool bagIsDropped)
  691.         {
  692.             Scaleform scaleform = new Scaleform("instructional_buttons");
  693.             scaleform.CallFunction("CLEAR_ALL");
  694.             scaleform.CallFunction("TOGGLE_MOUSE_BUTTONS", (object)0);
  695.             scaleform.CallFunction("CREATE_CONTAINER");
  696.             if (mode == 1)
  697.                 scaleform.CallFunction("SET_DATA_SLOT", (object)1, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)51), (object)"Grab bag");
  698.             if (mode == 2)
  699.             {
  700.                 scaleform.CallFunction("SET_DATA_SLOT", (object)1, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)176), (object)"Find closest Dealer");
  701.                 if (this.isBagDropped)
  702.                     scaleform.CallFunction("SET_DATA_SLOT", (object)3, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)0), (object)"Mark Stashed Bag");
  703.                 scaleform.CallFunction("SET_DATA_SLOT", (object)2, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)177), (object)"Cancel");
  704.             }
  705.             if (mode == 3)
  706.             {
  707.                 if (!isBagBought)
  708.                 {
  709.                     if (!this.buyBag)
  710.                         scaleform.CallFunction("SET_DATA_SLOT", (object)4, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)52), (object)("Check bag (" + this.BagPrice.ToString() + " $)"));
  711.                     else
  712.                         scaleform.CallFunction("SET_DATA_SLOT", (object)4, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)52), (object)"Uncheck bag");
  713.                 }
  714.                 if (!hasHolster)
  715.                 {
  716.                     if (!this.buyHolster)
  717.                         scaleform.CallFunction("SET_DATA_SLOT", (object)5, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)73), (object)("Check holster (" + this.HolsterPrice.ToString() + " $)"));
  718.                     else
  719.                         scaleform.CallFunction("SET_DATA_SLOT", (object)5, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)73), (object)"Uncheck holster");
  720.                 }
  721.                 if (this.cigsCount < this.maxCigs || this.pillsCount < this.maxPills)
  722.                 {
  723.                     if (!this.buySupplies)
  724.                         scaleform.CallFunction("SET_DATA_SLOT", (object)2, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)0), (object)("Check supplies (" + this.SupplyPrice.ToString() + " $)"));
  725.                     else
  726.                         scaleform.CallFunction("SET_DATA_SLOT", (object)2, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)0), (object)"Uncheck supplies");
  727.                 }
  728.                 if (this.buyBag || this.buyHolster || this.buySupplies)
  729.                     scaleform.CallFunction("SET_DATA_SLOT", (object)3, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)51), (object)"Confirm");
  730.                 scaleform.CallFunction("SET_DATA_SLOT", (object)1, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)75), (object)"Cancel");
  731.             }
  732.             if (mode == 4)
  733.             {
  734.                 if (!this.intimidation)
  735.                 {
  736.                     scaleform.CallFunction("SET_DATA_SLOT", (object)1, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.smokeBTN), (object)("Smoke (" + this.cigsCount.ToString() + " cigs left)"));
  737.                     scaleform.CallFunction("SET_DATA_SLOT", (object)2, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.swallowBTN), (object)("Pills (" + this.pillsCount.ToString() + " pills left)"));
  738.                     if (!Game.Player.Character.IsSittingInVehicle())
  739.                         scaleform.CallFunction("SET_DATA_SLOT", (object)3, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)1, (InputArgument)this.wallet_btn), (object)"Wallet");
  740.                     scaleform.CallFunction("SET_DATA_SLOT", (object)4, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.earphone_toggle_btn), (object)"Earphone");
  741.                     if (this.headset)
  742.                         scaleform.CallFunction("SET_DATA_SLOT", (object)5, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)1, (InputArgument)this.readio_off_btn), (object)"Toggle Radio");
  743.                     scaleform.CallFunction("SET_DATA_SLOT", (object)6, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.mask_toggle_btn), (object)"Mask");
  744.                     scaleform.CallFunction("SET_DATA_SLOT", (object)7, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.gloves_toggle_btn), (object)"Gloves");
  745.                     scaleform.CallFunction("SET_DATA_SLOT", (object)8, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.glasses_toggle_btn), (object)"Glasses");
  746.                     if (hasHolster)
  747.                     {
  748.                         scaleform.CallFunction("SET_DATA_SLOT", (object)9, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.holster_toggle_btn), (object)"Holster");
  749.                         if ((Entity)this.holster != (Entity)null && this.holster.Exists() && !this.intimidation)
  750.                             scaleform.CallFunction("SET_DATA_SLOT", (object)10, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)1, (InputArgument)this.intimidate_btn), (object)"Start Intimidate");
  751.                     }
  752.                     if (hasBag)
  753.                         scaleform.CallFunction("SET_DATA_SLOT", (object)11, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.bag_menu_btn), (object)"Bag menu");
  754.                     else if (bagInCar)
  755.                         scaleform.CallFunction("SET_DATA_SLOT", (object)11, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)this.bag_menu_btn), (object)"Grab bag");
  756.                 }
  757.                 else
  758.                 {
  759.                     scaleform.CallFunction("SET_DATA_SLOT", (object)1, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)24), (object)"Start Intimidate");
  760.                     scaleform.CallFunction("SET_DATA_SLOT", (object)2, (object)Function.Call<string>(Hash._0x0499D7B09FC9B407, (InputArgument)2, (InputArgument)25), (object)"Stop Intimidate");
  761.                 }
  762.             }
  763.             scaleform.CallFunction("DRAW_INSTRUCTIONAL_BUTTONS", (object)-1);
  764.             scaleform.Render2D();
  765.         }
  766.  
  767.         private void iconDrawFunc(int x, int y, int width, int height, string icon_name)
  768.         {
  769.             if (File.Exists("scripts\\Expansion\\" + icon_name))
  770.                 UI.DrawTexture(".\\Scripts\\Expansion\\" + icon_name, 0, 1, 1500, new Point(x, y), new Size(width, height));
  771.             else
  772.                 UI.ShowSubtitle(icon_name + " was not found");
  773.         }
  774.  
  775.         private int GetHashKey(string value)
  776.         {
  777.             return Function.Call<int>(Hash._0xD24D37CC275948CC, (InputArgument)value);
  778.         }
  779.  
  780.         private void soundFX(Ped ped, string sound_fx)
  781.         {
  782.             if (File.Exists("scripts\\Expansion\\" + sound_fx))
  783.             {
  784.                 this.WavereaderDown = new WaveFileReader("scripts\\Expansion\\" + sound_fx);
  785.                 this.wavechanDown = new WaveChannel32((WaveStream)this.WavereaderDown);
  786.                 this.volumeDown = this.config.GetValue<float>("Settings", "Global Volume Down", 30f);
  787.                 this.DSODown = new DirectSoundOut();
  788.                 if (ped.IsSittingInVehicle())
  789.                 {
  790.                     if (Function.Call<int>(Hash._0xA4FF579AC0E3AAAE, Array.Empty<InputArgument>()) == 4)
  791.                     {
  792.                         this.DSODown.Init((IWaveProvider)this.wavechanDown);
  793.                         this.wavechanDown.Volume = (float)((double)this.volumeDown / 100.0 / 10.0);
  794.                     }
  795.                     if (Function.Call<int>(Hash._0xA4FF579AC0E3AAAE, Array.Empty<InputArgument>()) != 4)
  796.                     {
  797.                         if (ped.CurrentVehicle.Model.IsCar)
  798.                         {
  799.                             float num1 = Function.Call<float>(Hash._0xFE3F9C29F7B32BD5, (InputArgument)ped.CurrentVehicle.Handle, (InputArgument)0);
  800.                             float num2 = Function.Call<float>(Hash._0xFE3F9C29F7B32BD5, (InputArgument)ped.CurrentVehicle.Handle, (InputArgument)1);
  801.                             float num3 = Function.Call<float>(Hash._0xFE3F9C29F7B32BD5, (InputArgument)ped.CurrentVehicle.Handle, (InputArgument)2);
  802.                             float num4 = Function.Call<float>(Hash._0xFE3F9C29F7B32BD5, (InputArgument)ped.CurrentVehicle.Handle, (InputArgument)3);
  803.                             this.DSODown.Init((IWaveProvider)this.wavechanDown);
  804.                             this.wavechanDown.Volume = (float)((double)this.volumeDown / 100.0 / 10.0);
  805.                             int num5;
  806.                             if (Function.Call<bool>(Hash._0x8AC862B0B32C5B80, (InputArgument)ped.CurrentVehicle))
  807.                             {
  808.                                 if (Function.Call<bool>(Hash._0x46E571A0E20D01F1, (InputArgument)ped.CurrentVehicle, (InputArgument)0))
  809.                                 {
  810.                                     if (Function.Call<bool>(Hash._0x46E571A0E20D01F1, (InputArgument)ped.CurrentVehicle, (InputArgument)1) && (double)num1 <= 0.3 && ((double)num2 <= 0.3 && (double)num3 <= 0.3))
  811.                                     {
  812.                                         num5 = (double)num4 > 0.3 ? 1 : 0;
  813.                                         goto label_11;
  814.                                     }
  815.                                 }
  816.                             }
  817.                             num5 = 1;
  818.                         label_11:
  819.                             if (num5 != 0)
  820.                             {
  821.                                 this.DSODown.Init((IWaveProvider)this.wavechanDown);
  822.                                 this.wavechanDown.Volume = (float)((double)this.volumeDown / 100.0 / 15.0);
  823.                             }
  824.                             int num6;
  825.                             if (Function.Call<bool>(Hash._0x8AC862B0B32C5B80, (InputArgument)ped.CurrentVehicle))
  826.                             {
  827.                                 if (Function.Call<bool>(Hash._0x46E571A0E20D01F1, (InputArgument)ped.CurrentVehicle, (InputArgument)0))
  828.                                 {
  829.                                     if (Function.Call<bool>(Hash._0x46E571A0E20D01F1, (InputArgument)ped.CurrentVehicle, (InputArgument)1) && (double)num1 < 0.1 && ((double)num2 < 0.1 && (double)num3 < 0.1))
  830.                                     {
  831.                                         num6 = (double)num4 < 0.1 ? 1 : 0;
  832.                                         goto label_18;
  833.                                     }
  834.                                 }
  835.                             }
  836.                             num6 = 0;
  837.                         label_18:
  838.                             if (num6 != 0)
  839.                             {
  840.                                 this.DSODown.Init((IWaveProvider)this.wavechanDown);
  841.                                 this.wavechanDown.Volume = (float)((double)this.volumeDown / 100.0 / 20.0);
  842.                             }
  843.                         }
  844.                         else
  845.                         {
  846.                             this.DSODown.Init((IWaveProvider)this.wavechanDown);
  847.                             this.wavechanDown.Volume = (float)((double)this.volumeDown / 100.0 / 15.0);
  848.                         }
  849.                     }
  850.                 }
  851.                 else
  852.                 {
  853.                     this.DSODown.Init((IWaveProvider)this.wavechanDown);
  854.                     this.wavechanDown.Volume = (float)((double)this.volumeDown / 100.0 / 10.0);
  855.                 }
  856.                 this.DSODown.Play();
  857.                 this.DSODown.Dispose();
  858.             }
  859.             else
  860.                 UI.Notify("scripts/Expansion/ " + sound_fx + " ~r~Wasnt found", true);
  861.         }
  862.  
  863.         private void checkHolsterAfterCharacterSwitch(Ped ped)
  864.         {
  865.             Prop[] allProps = World.GetAllProps((Model)(this.useHipHolster ? "prop_holster_01" : "prop_pistol_holster"));
  866.             for (int index = 0; index < allProps.Length; ++index)
  867.             {
  868.                 if ((Entity)allProps[index] != (Entity)null && allProps[index].Exists())
  869.                 {
  870.                     if (!allProps[index].IsAttached())
  871.                     {
  872.                         this.holster = allProps[index];
  873.                         this.AttachHolster(ped);
  874.                         this.holsterSet = true;
  875.                         break;
  876.                     }
  877.                     if (allProps[index].IsAttachedTo((Entity)ped))
  878.                     {
  879.                         this.holster = allProps[index];
  880.                         this.holsterSet = true;
  881.                         break;
  882.                     }
  883.                 }
  884.                 else
  885.                 {
  886.                     Script.Wait(2000);
  887.                     if ((Entity)allProps[index] != (Entity)null && !allProps[index].Exists())
  888.                     {
  889.                         this.holster = (Prop)null;
  890.                         this.holsterSet = false;
  891.                         break;
  892.                     }
  893.                     if ((Entity)allProps[index] == (Entity)null)
  894.                     {
  895.                         this.holster = (Prop)null;
  896.                         this.holsterSet = false;
  897.                         break;
  898.                     }
  899.                 }
  900.             }
  901.         }
  902.  
  903.         private void checkPistolAfterScriptReload(Ped ped, string model)
  904.         {
  905.             if (!Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey(model), (InputArgument)true, (InputArgument)false, (InputArgument)false).Exists())
  906.                 return;
  907.             Prop prop = Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey(model), (InputArgument)true, (InputArgument)false, (InputArgument)false);
  908.             if (Function.Call<bool>(Hash._0xEFBE71898A993728, (InputArgument)prop, (InputArgument)ped))
  909.                 prop.Delete();
  910.         }
  911.  
  912.         private void checkPistolFunc(Ped ped, WeaponHash gun, string model)
  913.         {
  914.             if (!Function.Call<bool>(Hash._0x8DECB02F88F428BC, (InputArgument)ped, (InputArgument)((uint)gun), (InputArgument)false))
  915.                 return;
  916.             this.choosenPistol = (Model)gun;
  917.             this.worldPistolModel = this.GetHashKey(model);
  918.             Function.Call(Hash._0x963D27A58DF860AC, (InputArgument)this.worldPistolModel);
  919.             this.HolstedPistol = World.CreateProp((Model)this.worldPistolModel, Game.Player.Character.Position, true, false);
  920.             this.AttachPistol(Game.Player.Character);
  921.         }
  922.  
  923.         private void removeHolstedPistolFunc(
  924.           Ped ped,
  925.           Prop holsted_pistol,
  926.           WeaponHash gun,
  927.           string world_pistol_model)
  928.         {
  929.             if (Function.Call<bool>(Hash._0x8DECB02F88F428BC, (InputArgument)ped, (InputArgument)((uint)gun)) || this.worldPistolModel != this.GetHashKey(world_pistol_model) || (!((Entity)holsted_pistol != (Entity)null) || !holsted_pistol.Exists()))
  930.                 return;
  931.             this.worldPistolModel = 0;
  932.             this.choosenPistol = (Model)((string)null);
  933.             this.HolstedPistol.Delete();
  934.             this.HolstedPistol = (Prop)null;
  935.         }
  936.  
  937.         private void AttackSpeech(Ped ped)
  938.         {
  939.             if (ped.Model.Hash == this.GetHashKey("PLAYER_TWO"))
  940.                 Function.Call(Hash._0x3523634255FC3318, (InputArgument)ped, (InputArgument)"FIGHT", (InputArgument)"TREVOR_ANGRY", (InputArgument)"SPEECH_PARAMS_FORCE", (InputArgument)0);
  941.             Model model = ped.Model;
  942.             if (model.Hash == this.GetHashKey("PLAYER_ONE"))
  943.                 Function.Call(Hash._0x3523634255FC3318, (InputArgument)ped, (InputArgument)"FIGHT", (InputArgument)"FRANKLIN_ANGRY", (InputArgument)"SPEECH_PARAMS_FORCE", (InputArgument)0);
  944.             model = ped.Model;
  945.             if (model.Hash == this.GetHashKey("PLAYER_ZERO"))
  946.                 Function.Call(Hash._0x3523634255FC3318, (InputArgument)ped, (InputArgument)"FIGHT", (InputArgument)"MICHAEL_ANGRY", (InputArgument)"SPEECH_PARAMS_FORCE", (InputArgument)0);
  947.             model = ped.Model;
  948.             int num;
  949.             if (model.Hash != this.GetHashKey("PLAYER_ZERO"))
  950.             {
  951.                 model = ped.Model;
  952.                 if (model.Hash != this.GetHashKey("PLAYER_ONE"))
  953.                 {
  954.                     model = ped.Model;
  955.                     num = model.Hash != this.GetHashKey("PLAYER_TWO") ? 1 : 0;
  956.                     goto label_10;
  957.                 }
  958.             }
  959.             num = 0;
  960.         label_10:
  961.             if (num == 0)
  962.                 return;
  963.             if (Function.Call<bool>(Hash._0x6D9F5FAA7488BA46, (InputArgument)ped))
  964.                 Function.Call(Hash._0x3523634255FC3318, (InputArgument)ped, (InputArgument)"BLIND_RANGE", (InputArgument)"PACKIE", (InputArgument)"SPEECH_PARAMS_FORCE", (InputArgument)0);
  965.             else
  966.                 Function.Call(Hash._0x3523634255FC3318, (InputArgument)ped, (InputArgument)"BLIND_RANGE", (InputArgument)"TALINA", (InputArgument)"SPEECH_PARAMS_FORCE", (InputArgument)0);
  967.         }
  968.  
  969.         private void GetHolsterPropFunction(Ped ped)
  970.         {
  971.             ped.GetOffsetInWorldCoords(new Vector3(0.0f, 0.0f, 0.0f));
  972.             this.holsterProp = !this.useHipHolster ? World.GetAllProps((Model)"prop_holster_01") : World.GetAllProps((Model)"prop_pistol_holster");
  973.             for (int index = 0; index < this.holsterProp.Length; ++index)
  974.             {
  975.                 if (this.holsterProp[index].Exists() && (Entity)this.holsterProp[index] != (Entity)null)
  976.                 {
  977.                     this.holsterProp[index].Delete();
  978.                     this.holsterProp[index] = (Prop)null;
  979.                     break;
  980.                 }
  981.             }
  982.         }
  983.  
  984.         private void GetClosestPedDetectionFunction(Ped ped)
  985.         {
  986.             ped.GetOffsetInWorldCoords(new Vector3(0.0f, 0.0f, 0.0f));
  987.             this.closestPeds = World.GetNearbyPeds(ped.Position, 10f);
  988.             for (int index = 0; index < this.closestPeds.Length; ++index)
  989.             {
  990.                 int num1;
  991.                 if (Function.Call<bool>(Hash._0xB980061DA992779D, (InputArgument)this.closestPeds[index]) && (Entity)this.closestPeds[index] != (Entity)null && (this.closestPeds[index].Exists() && this.closestPeds[index].IsAlive) && ((double)this.closestPeds[index].Position.DistanceTo(ped.Position) < 15.0 && (Entity)this.closestPeds[index] != (Entity)ped))
  992.                     num1 = Function.Call<int>(Hash._0xF162E133B4E7A675, (InputArgument)this.closestPeds[index]) != Function.Call<int>(Hash._0xF162E133B4E7A675, (InputArgument)ped) ? 1 : 0;
  993.                 else
  994.                     num1 = 0;
  995.                 if (num1 != 0)
  996.                 {
  997.                     int num2;
  998.                     if (Function.Call<int>(Hash._0xFF059E1E4C01E63C, (InputArgument)this.closestPeds[index]) != 0)
  999.                     {
  1000.                         if (Function.Call<int>(Hash._0xFF059E1E4C01E63C, (InputArgument)this.closestPeds[index]) != 1)
  1001.                         {
  1002.                             if (Function.Call<int>(Hash._0xFF059E1E4C01E63C, (InputArgument)this.closestPeds[index]) != 2)
  1003.                             {
  1004.                                 if (Function.Call<int>(Hash._0xFF059E1E4C01E63C, (InputArgument)this.closestPeds[index]) != 6)
  1005.                                 {
  1006.                                     if (Function.Call<int>(Hash._0xFF059E1E4C01E63C, (InputArgument)this.closestPeds[index]) != 29)
  1007.                                     {
  1008.                                         if (Function.Call<int>(Hash._0xFF059E1E4C01E63C, (InputArgument)this.closestPeds[index]) != 27)
  1009.                                         {
  1010.                                             num2 = Function.Call<int>(Hash._0xFF059E1E4C01E63C, (InputArgument)this.closestPeds[index]) != 21 ? 1 : 0;
  1011.                                             goto label_13;
  1012.                                         }
  1013.                                     }
  1014.                                 }
  1015.                             }
  1016.                         }
  1017.                     }
  1018.                     num2 = 0;
  1019.                 label_13:
  1020.                     if (num2 != 0)
  1021.                         Function.Call(Hash._0x72C896464915D1B1, (InputArgument)this.closestPeds[index], (InputArgument)ped);
  1022.                     else if (Game.Player.WantedLevel < 1)
  1023.                         ++Game.Player.WantedLevel;
  1024.                 }
  1025.             }
  1026.         }
  1027.  
  1028.         private void AttachPistol(Ped ped)
  1029.         {
  1030.             if (!((Entity)this.holster != (Entity)null) || !this.holster.Exists() || !((Entity)ped != (Entity)null) || !ped.Exists())
  1031.                 return;
  1032.             Function.Call(Hash._0xA53ED5520C07654A, (InputArgument)this.HolstedPistol, (InputArgument)this.holster, (InputArgument)true);
  1033.             Function.Call(Hash._0xA53ED5520C07654A, (InputArgument)this.HolstedPistol, (InputArgument)ped, (InputArgument)true);
  1034.             if (!this.useHipHolster)
  1035.             {
  1036.                 int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)24818);
  1037.                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.HolstedPistol, (InputArgument)ped, (InputArgument)num, (InputArgument)(-0.09f), (InputArgument)0.07f, (InputArgument)(-0.21f), (InputArgument)110f, (InputArgument)(-190f), (InputArgument)13f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1038.             }
  1039.             else
  1040.             {
  1041.                 int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)57597);
  1042.                 if (this.worldPistolModel == this.GetHashKey("w_pi_pistol50"))
  1043.                     Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.HolstedPistol, (InputArgument)ped, (InputArgument)num, (InputArgument)0.05f, (InputArgument)(-0.017f), (InputArgument)(-0.21f), (InputArgument)93f, (InputArgument)(-190f), (InputArgument)12.4f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1044.                 else
  1045.                     Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.HolstedPistol, (InputArgument)ped, (InputArgument)num, (InputArgument)0.005f, (InputArgument)(-0.02f), (InputArgument)(-0.21f), (InputArgument)90f, (InputArgument)(-190f), (InputArgument)13f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1046.             }
  1047.         }
  1048.  
  1049.         private void AttachHolster(Ped ped)
  1050.         {
  1051.             Function.Call(Hash._0xA53ED5520C07654A, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)true);
  1052.             Function.Call(Hash._0xA53ED5520C07654A, (InputArgument)this.holster, (InputArgument)this.choosenPistol, (InputArgument)true);
  1053.             if (!this.useHipHolster)
  1054.             {
  1055.                 int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)24818);
  1056.                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)(-0.025f), (InputArgument)(-0.01f), (InputArgument)0.025f, (InputArgument)180f, (InputArgument)90f, (InputArgument)0.0f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1057.             }
  1058.             else
  1059.             {
  1060.                 int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)57597);
  1061.                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)0.0f, (InputArgument)(-0.013f), (InputArgument)(-0.215f), (InputArgument)90f, (InputArgument)0.0f, (InputArgument)90f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1062.             }
  1063.         }
  1064.  
  1065.         private void IconHolsterDrawFunc(Ped ped)
  1066.         {
  1067.             if (this.drawHolsterIcon && !Function.Call<bool>(Hash._0x157F93B036700462, Array.Empty<InputArgument>()) && !Function.Call<bool>(Hash._0xA86478C6958735C5, Array.Empty<InputArgument>()) && !Function.Call<bool>(Hash._0xD3C2E180A40F031E, Array.Empty<InputArgument>()))
  1068.             {
  1069.                 this.iconDrawFunc(this.holsterIconX, this.holsterIconY, this.holsterIconW, this.holsterIconH, "holsterFull.png");
  1070.             }
  1071.             else
  1072.             {
  1073.                 if (!this.weaponPistol || ped.IsInVehicle() || (!this.drawHolsterIcon || Function.Call<bool>(Hash._0x157F93B036700462, Array.Empty<InputArgument>())) || Function.Call<bool>(Hash._0xA86478C6958735C5, Array.Empty<InputArgument>()) || Function.Call<bool>(Hash._0xD3C2E180A40F031E, Array.Empty<InputArgument>()))
  1074.                     return;
  1075.                 this.iconDrawFunc(this.holsterIconX, this.holsterIconY, this.holsterIconW, this.holsterIconH, "holsterEmpty.png");
  1076.             }
  1077.         }
  1078.  
  1079.         private void SaveHolster(Ped ped)
  1080.         {
  1081.             bool flag = false;
  1082.             string str = "";
  1083.             foreach (PedHash allPedHash in this.allPedHashes)
  1084.             {
  1085.                 if (ped.Model == (Model)allPedHash)
  1086.                 {
  1087.                     str = allPedHash.ToString();
  1088.                     flag = true;
  1089.                 }
  1090.             }
  1091.             if (!flag)
  1092.                 str = ped.Model.ToString();
  1093.             if (this.doc.Element((XName)"WeaponList").Element((XName)str) == null)
  1094.                 this.doc.Element((XName)"WeaponList").Add((object)new XElement((XName)str));
  1095.             if (this.doc.Element((XName)"WeaponList").Element((XName)str).Attribute((XName)"holster") == null)
  1096.             {
  1097.                 this.doc.Element((XName)"WeaponList").Element((XName)str).Add((object)new XAttribute((XName)"holster", (object)true));
  1098.                 this.saveDoc();
  1099.                 this.doc.Element((XName)"WeaponList").Element((XName)str).Attribute((XName)"holster").SetValue((object)true);
  1100.                 this.saveDoc();
  1101.             }
  1102.             else
  1103.             {
  1104.                 this.doc.Element((XName)"WeaponList").Element((XName)str).Attribute((XName)"holster").SetValue((object)true);
  1105.                 this.saveDoc();
  1106.             }
  1107.         }
  1108.  
  1109.         private bool doesPedHasHolster(Ped ped)
  1110.         {
  1111.             bool flag = false;
  1112.             string str = "";
  1113.             foreach (PedHash allPedHash in this.allPedHashes)
  1114.             {
  1115.                 if (ped.Model == (Model)allPedHash)
  1116.                 {
  1117.                     str = allPedHash.ToString();
  1118.                     flag = true;
  1119.                 }
  1120.             }
  1121.             if (!flag)
  1122.                 str = ped.Model.ToString();
  1123.             if (this.doc.Element((XName)"WeaponList").Element((XName)str) == null)
  1124.                 this.doc.Element((XName)"WeaponList").Add((object)new XElement((XName)str));
  1125.             XElement xelement = this.doc.Element((XName)"WeaponList").Element((XName)str);
  1126.             return xelement.Attribute((XName)"holster") != null && xelement.Attribute((XName)"holster").Value == "true";
  1127.         }
  1128.  
  1129.         private void DeleteHolster(Ped ped)
  1130.         {
  1131.             bool flag = false;
  1132.             string str = "";
  1133.             foreach (PedHash allPedHash in this.allPedHashes)
  1134.             {
  1135.                 if (ped.Model == (Model)allPedHash)
  1136.                 {
  1137.                     str = allPedHash.ToString();
  1138.                     flag = true;
  1139.                 }
  1140.             }
  1141.             if (!flag)
  1142.                 str = ped.Model.ToString();
  1143.             if (this.doc.Element((XName)"WeaponList").Element((XName)str) == null)
  1144.                 this.doc.Element((XName)"WeaponList").Add((object)new XElement((XName)str));
  1145.             if (this.doc.Element((XName)"WeaponList").Element((XName)str).Attribute((XName)"holster") == null)
  1146.             {
  1147.                 this.doc.Element((XName)"WeaponList").Element((XName)str).Add((object)new XAttribute((XName)"holster", (object)false));
  1148.                 this.saveDoc();
  1149.                 this.doc.Element((XName)"WeaponList").Element((XName)str).Attribute((XName)"holster").SetValue((object)false);
  1150.                 this.saveDoc();
  1151.             }
  1152.             else
  1153.             {
  1154.                 this.doc.Element((XName)"WeaponList").Element((XName)str).Attribute((XName)"holster").SetValue((object)false);
  1155.                 this.saveDoc();
  1156.             }
  1157.         }
  1158.  
  1159.         private void SetHolster(Ped ped)
  1160.         {
  1161.             if (!((Entity)ped != (Entity)null) || !ped.Exists())
  1162.                 return;
  1163.             if (!this.useHipHolster)
  1164.             {
  1165.                 if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"oddjobs@basejump@ig_15", (InputArgument)"puton_parachute", (InputArgument)3))
  1166.                 {
  1167.                     Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"oddjobs@basejump@ig_15", (InputArgument)"puton_parachute", (InputArgument)45f, (InputArgument)(-12.0), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1168.                     Script.Wait(700);
  1169.                     Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"puton_parachute", (InputArgument)"oddjobs@basejump@ig_15", (InputArgument)3);
  1170.                 }
  1171.             }
  1172.             else if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"mp_arrest_paired", (InputArgument)"cop_p1_rf_right_0", (InputArgument)3))
  1173.             {
  1174.                 Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"mp_arrest_paired", (InputArgument)"cop_p1_rf_right_0", (InputArgument)7f, (InputArgument)(-12.0), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1175.                 Script.Wait(700);
  1176.                 Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"cop_p1_rf_right_0", (InputArgument)"mp_arrest_paired", (InputArgument)3);
  1177.             }
  1178.             this.holsterSet = true;
  1179.             if (!this.useHipHolster)
  1180.             {
  1181.                 if (Function.Call<bool>(Hash._0xBFA48E2FF417213F, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_pistol_holster"), (InputArgument)0))
  1182.                 {
  1183.                     Prop prop = Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_pistol_holster"), (InputArgument)true, (InputArgument)false, (InputArgument)false);
  1184.                     if (Function.Call<bool>(Hash._0xEFBE71898A993728, (InputArgument)prop, (InputArgument)ped))
  1185.                     {
  1186.                         this.holster = prop;
  1187.                         int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)24818);
  1188.                         Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)(-0.025f), (InputArgument)(-0.01f), (InputArgument)0.025f, (InputArgument)180f, (InputArgument)90f, (InputArgument)0.0f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1189.                     }
  1190.                     else if (Function.Call<bool>(Hash._0xC0296A2EDF545E92, (InputArgument)this.GetHashKey("prop_pistol_holster")))
  1191.                     {
  1192.                         if (Function.Call<bool>(Hash._0x98A4EB5D89A0C952, (InputArgument)this.GetHashKey("prop_pistol_holster")))
  1193.                         {
  1194.                             this.holster = World.CreateProp((Model)"prop_pistol_holster", ped.Position, true, false);
  1195.                             int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)24818);
  1196.                             Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)(-0.025f), (InputArgument)(-0.01f), (InputArgument)0.025f, (InputArgument)180f, (InputArgument)90f, (InputArgument)0.0f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1197.                         }
  1198.                         else
  1199.                             UI.Notify("holster model has not loaded yet");
  1200.                     }
  1201.                     else
  1202.                         UI.Notify("holster model is invalid");
  1203.                 }
  1204.                 else if (Function.Call<bool>(Hash._0xC0296A2EDF545E92, (InputArgument)this.GetHashKey("prop_pistol_holster")))
  1205.                 {
  1206.                     if (Function.Call<bool>(Hash._0x98A4EB5D89A0C952, (InputArgument)this.GetHashKey("prop_pistol_holster")))
  1207.                     {
  1208.                         this.holster = World.CreateProp((Model)"prop_pistol_holster", ped.Position, true, false);
  1209.                         int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)24818);
  1210.                         Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)(-0.025f), (InputArgument)(-0.01f), (InputArgument)0.025f, (InputArgument)180f, (InputArgument)90f, (InputArgument)0.0f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1211.                     }
  1212.                     else
  1213.                         UI.Notify("holster model has not loaded yet");
  1214.                 }
  1215.                 else
  1216.                     UI.Notify("holster model is invalid");
  1217.             }
  1218.             else if (Function.Call<bool>(Hash._0xBFA48E2FF417213F, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_holster_01"), (InputArgument)0))
  1219.             {
  1220.                 Prop prop = Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_holster_01"), (InputArgument)true, (InputArgument)false, (InputArgument)false);
  1221.                 if (Function.Call<bool>(Hash._0xEFBE71898A993728, (InputArgument)prop, (InputArgument)ped))
  1222.                 {
  1223.                     this.holster = prop;
  1224.                     int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)57597);
  1225.                     Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)0.0f, (InputArgument)(-0.013f), (InputArgument)(-0.215f), (InputArgument)90f, (InputArgument)0.0f, (InputArgument)90f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1226.                 }
  1227.                 else if (Function.Call<bool>(Hash._0xC0296A2EDF545E92, (InputArgument)this.GetHashKey("prop_holster_01")))
  1228.                 {
  1229.                     if (Function.Call<bool>(Hash._0x98A4EB5D89A0C952, (InputArgument)this.GetHashKey("prop_holster_01")))
  1230.                     {
  1231.                         this.holster = World.CreateProp((Model)"prop_holster_01", ped.Position, true, false);
  1232.                         int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)57597);
  1233.                         Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)0.0f, (InputArgument)(-0.013f), (InputArgument)(-0.215f), (InputArgument)90f, (InputArgument)0.0f, (InputArgument)90f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1234.                     }
  1235.                     else
  1236.                         UI.Notify("holster model has not loaded yet");
  1237.                 }
  1238.                 else
  1239.                     UI.Notify("holster model is invalid");
  1240.             }
  1241.             else if (Function.Call<bool>(Hash._0xC0296A2EDF545E92, (InputArgument)this.GetHashKey("prop_holster_01")))
  1242.             {
  1243.                 if (Function.Call<bool>(Hash._0x98A4EB5D89A0C952, (InputArgument)this.GetHashKey("prop_holster_01")))
  1244.                 {
  1245.                     this.holster = World.CreateProp((Model)"prop_holster_01", ped.Position, true, false);
  1246.                     int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)57597);
  1247.                     Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.holster, (InputArgument)ped, (InputArgument)num, (InputArgument)0.0f, (InputArgument)(-0.013f), (InputArgument)(-0.215f), (InputArgument)90f, (InputArgument)0.0f, (InputArgument)90f, (InputArgument)true, (InputArgument)true, (InputArgument)false, (InputArgument)true, (InputArgument)2, (InputArgument)true);
  1248.                 }
  1249.                 else
  1250.                     UI.Notify("holster model has not loaded yet");
  1251.             }
  1252.             else
  1253.                 UI.Notify("holster model is invalid");
  1254.         }
  1255.  
  1256.         private void UnsetHolster(Ped ped)
  1257.         {
  1258.             if (!((Entity)ped != (Entity)null) || !ped.Exists())
  1259.                 return;
  1260.             if (!this.useHipHolster)
  1261.             {
  1262.                 if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"skydive@parachute@", (InputArgument)"chute_off", (InputArgument)3))
  1263.                 {
  1264.                     ped.Task.ClearAll();
  1265.                     Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"skydive@parachute@", (InputArgument)"chute_off", (InputArgument)12f, (InputArgument)(-12.0), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1266.                     Script.Wait(700);
  1267.                     Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"chute_off", (InputArgument)"skydive@parachute@", (InputArgument)3);
  1268.                 }
  1269.             }
  1270.             else if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"mp_arrest_paired", (InputArgument)"cop_p1_rf_right_0", (InputArgument)3))
  1271.             {
  1272.                 Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"mp_arrest_paired", (InputArgument)"cop_p1_rf_right_0", (InputArgument)7f, (InputArgument)(-12.0), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1273.                 Script.Wait(700);
  1274.                 Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"cop_p1_rf_right_0", (InputArgument)"mp_arrest_paired", (InputArgument)3);
  1275.             }
  1276.             this.holsterSet = false;
  1277.             if ((Entity)this.holster != (Entity)null && this.holster.Exists())
  1278.             {
  1279.                 this.holster.Delete();
  1280.                 this.holster = (Prop)null;
  1281.             }
  1282.             if ((Entity)this.HolstedPistol != (Entity)null && this.HolstedPistol.Exists())
  1283.             {
  1284.                 this.HolstedPistol = (Prop)null;
  1285.                 Function.Call(Hash._0x4899CB088EDF59B8, (InputArgument)ped, (InputArgument)this.choosenPistol);
  1286.             }
  1287.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_pistol");
  1288.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_combatpistol");
  1289.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_appistol");
  1290.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_pistol50");
  1291.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_heavypistol");
  1292.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_vintage_pistol");
  1293.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_revolver");
  1294.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_pistolmk2");
  1295.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_revolvermk2");
  1296.             this.checkPistolAfterScriptReload(Game.Player.Character, "w_pi_wep1_gun");
  1297.         }
  1298.  
  1299.         private void PropsControlFunc(
  1300.           Ped ped,
  1301.           string action,
  1302.           bool condition,
  1303.           string section,
  1304.           int type)
  1305.         {
  1306.             Function.Call(Hash._0xDE2EF5DA284CC8DF, Array.Empty<InputArgument>());
  1307.             Function.Call(Hash._0xADFF1B2A555F5FBA, Array.Empty<InputArgument>());
  1308.             Function.Call(Hash._0x5A4F9EDF1673F704, (InputArgument)0);
  1309.             Function.Call(Hash._0xAC253D7842768F48, (InputArgument)0);
  1310.             int num1 = 0;
  1311.             int num2 = 0;
  1312.             int num3 = 0;
  1313.             if (type != 2 | condition)
  1314.             {
  1315.                 num1 = this.config.GetValue<int>(section, action + "COMPONENTID", 9);
  1316.                 num2 = this.config.GetValue<int>(section, action + "MODEL", 0);
  1317.                 num3 = this.config.GetValue<int>(section, action + "TEXTURE", 0);
  1318.             }
  1319.             if (type == 1)
  1320.             {
  1321.                 if (Function.Call<bool>(Hash._0xE825F6B6CEA7671D, (InputArgument)ped, (InputArgument)num1, (InputArgument)num2, (InputArgument)num3))
  1322.                 {
  1323.                     Function.Call(Hash._0x262B14F48D29DE80, (InputArgument)ped, (InputArgument)num1, (InputArgument)num2, (InputArgument)num3);
  1324.                 }
  1325.                 else
  1326.                 {
  1327.                     Function.Call(Hash._0x17430B918701C342, (InputArgument)((int)byte.MaxValue), (InputArgument)((int)sbyte.MaxValue), (InputArgument)80, (InputArgument)100);
  1328.                     UI.Notify("Invalid Component number", true);
  1329.                 }
  1330.             }
  1331.             if (type != 2)
  1332.                 return;
  1333.             if (condition)
  1334.             {
  1335.                 if (Function.Call<bool>(Hash._0x2B16A3BFF1FBCE49, (InputArgument)ped, (InputArgument)num1, (InputArgument)num2, (InputArgument)num3))
  1336.                 {
  1337.                     Function.Call(Hash._0x93376B65A266EB5F, (InputArgument)ped, (InputArgument)num1, (InputArgument)num2, (InputArgument)num3, (InputArgument)false);
  1338.                 }
  1339.                 else
  1340.                 {
  1341.                     Function.Call(Hash._0x17430B918701C342, (InputArgument)((int)byte.MaxValue), (InputArgument)((int)sbyte.MaxValue), (InputArgument)80, (InputArgument)100);
  1342.                     UI.Notify("Invalid Prop number", true);
  1343.                 }
  1344.             }
  1345.             else
  1346.                 Function.Call(Hash._0x0943E5B8E078E76E, (InputArgument)ped, (InputArgument)1);
  1347.         }
  1348.  
  1349.         private void SmokeProceEffectsFunc(Ped ped, int type)
  1350.         {
  1351.             --this.cig_durability;
  1352.             Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1353.             Function.Call(Hash._0x0D53A3B8DA0809D2, (InputArgument)"scr_sh_cig_exhale_mouth", (InputArgument)this.cig, (InputArgument)(-0.1f), (InputArgument)0.0f, (InputArgument)0.0f, (InputArgument)(this.cig.Rotation.X + 90f), (InputArgument)this.cig.Rotation.Y, (InputArgument)this.cig.Rotation.Z, (InputArgument)1.0, (InputArgument)false, (InputArgument)false, (InputArgument)false);
  1354.             if (type == 1)
  1355.             {
  1356.                 if (Function.Call<bool>(Hash._0x6D9F5FAA7488BA46, (InputArgument)ped))
  1357.                 {
  1358.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)3))
  1359.                         return;
  1360.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") > 0.6)
  1361.                     {
  1362.                         this.flame = false;
  1363.                         int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)32679);
  1364.                         Vector3 vector3 = Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num, (InputArgument)0, (InputArgument)(-0.1), (InputArgument)0);
  1365.                         Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1366.                         Function.Call(Hash._0x25129531F77B9ED3, (InputArgument)"scr_sh_cig_exhale_mouth", (InputArgument)vector3.X, (InputArgument)vector3.Y, (InputArgument)((double)vector3.Z + 0.6), (InputArgument)ped.Rotation.X, (InputArgument)ped.Rotation.Y, (InputArgument)ped.Rotation.Z, (InputArgument)1.7, (InputArgument)false, (InputArgument)false, (InputArgument)false);
  1367.                     }
  1368.                     else
  1369.                     {
  1370.                         int num;
  1371.                         if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") < 0.5)
  1372.                             num = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") > 0.1 ? 1 : 0;
  1373.                         else
  1374.                             num = 0;
  1375.                         if (num != 0)
  1376.                             this.flame = true;
  1377.                     }
  1378.                 }
  1379.                 else if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b", (InputArgument)3))
  1380.                 {
  1381.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") > 0.6)
  1382.                     {
  1383.                         this.flame = false;
  1384.                         int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)32679);
  1385.                         Vector3 vector3 = Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num, (InputArgument)0, (InputArgument)(-0.1), (InputArgument)0);
  1386.                         Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1387.                         Function.Call(Hash._0x25129531F77B9ED3, (InputArgument)"scr_sh_cig_exhale_mouth", (InputArgument)vector3.X, (InputArgument)vector3.Y, (InputArgument)((double)vector3.Z + 0.6), (InputArgument)ped.Rotation.X, (InputArgument)ped.Rotation.Y, (InputArgument)ped.Rotation.Z, (InputArgument)1.7, (InputArgument)false, (InputArgument)false, (InputArgument)false);
  1388.                     }
  1389.                     else
  1390.                     {
  1391.                         int num;
  1392.                         if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") < 0.5)
  1393.                             num = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") > 0.1 ? 1 : 0;
  1394.                         else
  1395.                             num = 0;
  1396.                         if (num != 0)
  1397.                             this.flame = true;
  1398.                     }
  1399.                 }
  1400.             }
  1401.             else
  1402.             {
  1403.                 Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1404.                 Function.Call(Hash._0x0D53A3B8DA0809D2, (InputArgument)"scr_sh_cig_exhale_mouth", (InputArgument)this.cig, (InputArgument)(-0.1f), (InputArgument)0.0f, (InputArgument)0.0f, (InputArgument)(this.cig.Rotation.X + 90f), (InputArgument)this.cig.Rotation.Y, (InputArgument)this.cig.Rotation.Z, (InputArgument)0.5, (InputArgument)false, (InputArgument)false, (InputArgument)false);
  1405.                 int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)32679);
  1406.                 Vector3 vector3 = Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num, (InputArgument)0, (InputArgument)(-0.1), (InputArgument)0);
  1407.                 Function.Call(Hash._0xB80D8756B4668AB6, (InputArgument)"scr_safehouse");
  1408.                 while (true)
  1409.                 {
  1410.                     if (!Function.Call<bool>(Hash._0x8702416E512EC454, (InputArgument)"scr_safehouse"))
  1411.                         Script.Wait(10);
  1412.                     else
  1413.                         break;
  1414.                 }
  1415.                 Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1416.                 if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"idle_a", (InputArgument)3))
  1417.                 {
  1418.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"idle_a") < 0.5)
  1419.                     {
  1420.                         this.flame = false;
  1421.                         Function.Call(Hash._0x25129531F77B9ED3, (InputArgument)"scr_sh_cig_exhale_mouth", (InputArgument)vector3.X, (InputArgument)vector3.Y, (InputArgument)((double)vector3.Z + 0.5), (InputArgument)ped.Rotation.X, (InputArgument)ped.Rotation.Y, (InputArgument)ped.Rotation.Z, (InputArgument)1.7, (InputArgument)false, (InputArgument)false, (InputArgument)false);
  1422.                     }
  1423.                     else
  1424.                         this.flame = true;
  1425.                 }
  1426.             }
  1427.         }
  1428.  
  1429.         private void SmokeLoopFunc(Ped ped, int type)
  1430.         {
  1431.             this.smoking = true;
  1432.             switch (type)
  1433.             {
  1434.                 case 1:
  1435.                     int num1;
  1436.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)3))
  1437.                         num1 = !Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b", (InputArgument)3) ? 1 : 0;
  1438.                     else
  1439.                         num1 = 0;
  1440.                     if (num1 != 0)
  1441.                     {
  1442.                         if (Function.Call<bool>(Hash._0x6D9F5FAA7488BA46, (InputArgument)Game.Player.Character))
  1443.                         {
  1444.                             if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"intro", (InputArgument)3))
  1445.                                 break;
  1446.                             Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)Game.Player.Character, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)1f, (InputArgument)(-1f), (InputArgument)(-1), (InputArgument)49, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1447.                             break;
  1448.                         }
  1449.                         if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)Game.Player.Character, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"intro", (InputArgument)3))
  1450.                             Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)Game.Player.Character, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b", (InputArgument)1f, (InputArgument)(-1f), (InputArgument)(-1), (InputArgument)49, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1451.                         break;
  1452.                     }
  1453.                     if ((Entity)this.cig != (Entity)null && this.cig.Exists())
  1454.                     {
  1455.                         int num2 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)64017);
  1456.                         if (Function.Call<bool>(Hash._0x6D9F5FAA7488BA46, (InputArgument)Game.Player.Character))
  1457.                         {
  1458.                             if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") > 0.109999999403954)
  1459.                                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num2, (InputArgument)0.017, (InputArgument)(-0.01), (InputArgument)0.0, (InputArgument)0.0, (InputArgument)(-120.0), (InputArgument)(-90.0), (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1460.                         }
  1461.                         else if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") > 0.109999999403954)
  1462.                             Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num2, (InputArgument)0.017, (InputArgument)(-0.01), (InputArgument)0.0, (InputArgument)0.0, (InputArgument)0.0, (InputArgument)(-90.0), (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1463.                     }
  1464.                     break;
  1465.                 case 2:
  1466.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"idle_a", (InputArgument)3))
  1467.                     {
  1468.                         int num2 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)64017);
  1469.                         Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num2, (InputArgument)0.017, (InputArgument)(-0.01), (InputArgument)0.0, (InputArgument)0.0, (InputArgument)(-120.0), (InputArgument)(-90.0), (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1470.                         Game.Player.Character.Task.PlayAnimation("amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", "idle_a", 1f, -1, AnimationFlags.Loop | AnimationFlags.UpperBodyOnly | AnimationFlags.AllowRotation | AnimationFlags.CancelableWithMovement);
  1471.                     }
  1472.                     break;
  1473.             }
  1474.         }
  1475.  
  1476.         private void PauseSmokeFunc(Ped ped, int type)
  1477.         {
  1478.             if (type == 1)
  1479.             {
  1480.                 if (Function.Call<bool>(Hash._0x6D9F5FAA7488BA46, (InputArgument)ped))
  1481.                 {
  1482.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") > 0.6)
  1483.                     {
  1484.                         double num1 = (double)Function.Call<float>(Hash._0x4487C259F0F70977, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)0.3f);
  1485.                         if (ped.Model.Hash != this.GetHashKey("PLAYER_ZERO") && ped.Model.Hash != this.GetHashKey("PLAYER_ONE") && ped.Model.Hash != this.GetHashKey("PLAYER_TWO"))
  1486.                         {
  1487.                             int num2 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)47419);
  1488.                             Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num2, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1489.                             Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num2, (InputArgument)0.0f, (InputArgument)0.0f, (InputArgument)0.01f, (InputArgument)55f, (InputArgument)85f, (InputArgument)0.0f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1490.                         }
  1491.                         else
  1492.                         {
  1493.                             int num2 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)65068);
  1494.                             Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num2, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1495.                             Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num2, (InputArgument)0.02f, (InputArgument)(-0.05f), (InputArgument)0.1f, (InputArgument)30f, (InputArgument)85f, (InputArgument)0.0f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1496.                         }
  1497.                         Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"idle_a", (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)3);
  1498.                         this.playCigAndSmokeAnim = false;
  1499.                         this.smoking = false;
  1500.                     }
  1501.                     else
  1502.                     {
  1503.                         int num1;
  1504.                         if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") < 0.5)
  1505.                             num1 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") > 0.3 ? 1 : 0;
  1506.                         else
  1507.                             num1 = 0;
  1508.                         if (num1 == 0)
  1509.                             return;
  1510.                         if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)3))
  1511.                         {
  1512.                             Model model = ped.Model;
  1513.                             int num2;
  1514.                             if (model.Hash != this.GetHashKey("PLAYER_ZERO"))
  1515.                             {
  1516.                                 model = ped.Model;
  1517.                                 if (model.Hash != this.GetHashKey("PLAYER_ONE"))
  1518.                                 {
  1519.                                     model = ped.Model;
  1520.                                     num2 = model.Hash != this.GetHashKey("PLAYER_TWO") ? 1 : 0;
  1521.                                     goto label_16;
  1522.                                 }
  1523.                             }
  1524.                             num2 = 0;
  1525.                         label_16:
  1526.                             if (num2 != 0)
  1527.                             {
  1528.                                 int num3 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)47419);
  1529.                                 Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num3, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1530.                                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num3, (InputArgument)(1f / 1000f), (InputArgument)0.0f, (InputArgument)0.01f, (InputArgument)55f, (InputArgument)85f, (InputArgument)0.0f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1531.                             }
  1532.                             else
  1533.                             {
  1534.                                 int num3 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)65068);
  1535.                                 Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num3, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1536.                                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num3, (InputArgument)0.02f, (InputArgument)(-0.05f), (InputArgument)0.1f, (InputArgument)30f, (InputArgument)85f, (InputArgument)0.0f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1537.                             }
  1538.                             Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"idle_a", (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)3);
  1539.                             this.playCigAndSmokeAnim = false;
  1540.                             this.smoking = false;
  1541.                         }
  1542.                     }
  1543.                 }
  1544.                 else if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") > 0.6)
  1545.                 {
  1546.                     double num1 = (double)Function.Call<float>(Hash._0x4487C259F0F70977, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b", (InputArgument)0.3f);
  1547.                     if (ped.Model.Hash != this.GetHashKey("PLAYER_ZERO") && ped.Model.Hash != this.GetHashKey("PLAYER_ONE") && ped.Model.Hash != this.GetHashKey("PLAYER_TWO"))
  1548.                     {
  1549.                         int num2 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)47419);
  1550.                         Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num2, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1551.                         Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num2, (InputArgument)0.0f, (InputArgument)0.0f, (InputArgument)0.01f, (InputArgument)0, (InputArgument)0, (InputArgument)45f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1552.                     }
  1553.                     Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"idle_b", (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)3);
  1554.                     this.playCigAndSmokeAnim = false;
  1555.                     this.smoking = false;
  1556.                 }
  1557.                 else
  1558.                 {
  1559.                     int num1;
  1560.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") < 0.5)
  1561.                         num1 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") > 0.1 ? 1 : 0;
  1562.                     else
  1563.                         num1 = 0;
  1564.                     if (num1 != 0)
  1565.                     {
  1566.                         if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b", (InputArgument)3))
  1567.                         {
  1568.                             Model model = ped.Model;
  1569.                             int num2;
  1570.                             if (model.Hash != this.GetHashKey("PLAYER_ZERO"))
  1571.                             {
  1572.                                 model = ped.Model;
  1573.                                 if (model.Hash != this.GetHashKey("PLAYER_ONE"))
  1574.                                 {
  1575.                                     model = ped.Model;
  1576.                                     num2 = model.Hash != this.GetHashKey("PLAYER_TWO") ? 1 : 0;
  1577.                                     goto label_34;
  1578.                                 }
  1579.                             }
  1580.                             num2 = 0;
  1581.                         label_34:
  1582.                             if (num2 != 0)
  1583.                             {
  1584.                                 int num3 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)47419);
  1585.                                 Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num3, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1586.                                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num3, (InputArgument)(1f / 1000f), (InputArgument)0.0f, (InputArgument)0.01f, (InputArgument)0, (InputArgument)0, (InputArgument)55f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1587.                             }
  1588.                             Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"idle_b", (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)3);
  1589.                             this.playCigAndSmokeAnim = false;
  1590.                             this.smoking = false;
  1591.                         }
  1592.                     }
  1593.                 }
  1594.             }
  1595.             else
  1596.             {
  1597.                 this.flame = false;
  1598.                 this.smoking = false;
  1599.                 if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"idle_a", (InputArgument)3))
  1600.                 {
  1601.                     Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"idle_a", (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)3);
  1602.                     this.playCigAndSmokeAnim = false;
  1603.                 }
  1604.             }
  1605.         }
  1606.  
  1607.         private void StopSmokeFunc(Ped ped, int type)
  1608.         {
  1609.             if (type == 1)
  1610.             {
  1611.                 int num1;
  1612.                 if (!Function.Call<bool>(Hash._0x2E397FD2ECD37C87, (InputArgument)Game.Player))
  1613.                     num1 = !Function.Call<bool>(Hash._0x2AFE52F782F25775, (InputArgument)ped) ? 1 : 0;
  1614.                 else
  1615.                     num1 = 0;
  1616.                 if (num1 == 0 || !((Entity)this.cig != (Entity)null))
  1617.                     return;
  1618.                 if (Function.Call<bool>(Hash._0x6D9F5FAA7488BA46, (InputArgument)ped))
  1619.                 {
  1620.                     if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)3))
  1621.                     {
  1622.                         int num2;
  1623.                         if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") >= 0.300000011920929)
  1624.                             num2 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a") < 0.600000023841858 ? 1 : 0;
  1625.                         else
  1626.                             num2 = 0;
  1627.                         if (num2 != 0)
  1628.                             Function.Call(Hash._0x4487C259F0F70977, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_b@idle_a", (InputArgument)"idle_a", (InputArgument)0.6);
  1629.                     }
  1630.                 }
  1631.                 else if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b", (InputArgument)3))
  1632.                 {
  1633.                     int num2;
  1634.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") >= 0.300000011920929)
  1635.                         num2 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b") < 0.600000023841858 ? 1 : 0;
  1636.                     else
  1637.                         num2 = 0;
  1638.                     if (num2 != 0)
  1639.                         Function.Call(Hash._0x4487C259F0F70977, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@idle_a", (InputArgument)"idle_b", (InputArgument)0.6);
  1640.                 }
  1641.                 int num3 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)64017);
  1642.                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num3, (InputArgument)0.017, (InputArgument)(-0.01), (InputArgument)0.0, (InputArgument)0.0, (InputArgument)(-120.0), (InputArgument)(-90.0), (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1643.                 if (Function.Call<bool>(Hash._0x6D9F5FAA7488BA46, (InputArgument)ped))
  1644.                 {
  1645.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"intro", (InputArgument)3))
  1646.                     {
  1647.                         if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@exit", (InputArgument)"exit", (InputArgument)3))
  1648.                             Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@exit", (InputArgument)"exit", (InputArgument)3f, (InputArgument)(-3f), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1649.                         else if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@exit", (InputArgument)"exit") >= 0.5)
  1650.                         {
  1651.                             this.cigsAndPillsCountDown = false;
  1652.                             this.smoke = -1;
  1653.                             this.startSmoke = true;
  1654.                             this.flame = false;
  1655.                             if ((Entity)this.cig != (Entity)null)
  1656.                             {
  1657.                                 Function.Call(Hash._0x961AC54BF0613F5D, (InputArgument)this.cig, (InputArgument)true, (InputArgument)true);
  1658.                                 this.cig.MarkAsNoLongerNeeded();
  1659.                                 this.cig = (Prop)null;
  1660.                             }
  1661.                         }
  1662.                     }
  1663.                 }
  1664.                 else if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"intro", (InputArgument)3))
  1665.                 {
  1666.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@exit", (InputArgument)"exit", (InputArgument)3))
  1667.                         Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@exit", (InputArgument)"exit", (InputArgument)3f, (InputArgument)(-3f), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1668.                     else if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_leaning@female@smoke@exit", (InputArgument)"exit") >= 0.5)
  1669.                     {
  1670.                         this.smoke = -1;
  1671.                         this.startSmoke = true;
  1672.                         this.flame = false;
  1673.                         this.cigsAndPillsCountDown = false;
  1674.                         if ((Entity)this.cig != (Entity)null)
  1675.                         {
  1676.                             Function.Call(Hash._0x961AC54BF0613F5D, (InputArgument)this.cig, (InputArgument)true, (InputArgument)true);
  1677.                             this.cig.MarkAsNoLongerNeeded();
  1678.                             this.cig = (Prop)null;
  1679.                         }
  1680.                     }
  1681.                 }
  1682.             }
  1683.             else
  1684.             {
  1685.                 int num1;
  1686.                 if (!Function.Call<bool>(Hash._0xB2C086CC1BF8F2BF, (InputArgument)ped))
  1687.                 {
  1688.                     if (!Function.Call<bool>(Hash._0x2E397FD2ECD37C87, (InputArgument)Game.Player))
  1689.                     {
  1690.                         if (!Function.Call<bool>(Hash._0x2AFE52F782F25775, (InputArgument)ped))
  1691.                         {
  1692.                             num1 = (Entity)this.cig != (Entity)null ? 1 : 0;
  1693.                             goto label_48;
  1694.                         }
  1695.                     }
  1696.                 }
  1697.                 num1 = 0;
  1698.             label_48:
  1699.                 if (num1 != 0)
  1700.                 {
  1701.                     int num2 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)64017);
  1702.                     Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num2, (InputArgument)0.017, (InputArgument)(-0.01), (InputArgument)0.0, (InputArgument)0.0, (InputArgument)(-120.0), (InputArgument)(-90.0), (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1703.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"exit", (InputArgument)3))
  1704.                     {
  1705.                         this.cigsAndPillsCountDown = true;
  1706.                         this.cigsAndPillsCounter = 1;
  1707.                         Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"exit", (InputArgument)3f, (InputArgument)(-3f), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1708.                     }
  1709.                     if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"exit", (InputArgument)3) && this.cigsAndPillsCounter <= 1)
  1710.                     {
  1711.                         this.cigsAndPillsCountDown = false;
  1712.                         this.smoke = -1;
  1713.                         this.startSmoke = true;
  1714.                         if ((Entity)this.cig != (Entity)null)
  1715.                         {
  1716.                             this.cig.Delete();
  1717.                             this.cig = (Prop)null;
  1718.                         }
  1719.                     }
  1720.                     if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)"idle_a", (InputArgument)3))
  1721.                         Function.Call(Hash._0x28004F88151E03E0, (InputArgument)ped, (InputArgument)"exit", (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ds@base", (InputArgument)3);
  1722.                 }
  1723.             }
  1724.         }
  1725.  
  1726.         private void StartSmokeFunc(Ped ped, int type)
  1727.         {
  1728.             this.smoking = true;
  1729.             if (!((Entity)this.cig != (Entity)null))
  1730.                 return;
  1731.             if (type == 1)
  1732.             {
  1733.                 int num1 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)18905);
  1734.                 Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num1, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1735.                 Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1736.                 int num2;
  1737.                 if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"reaction@intimidation@cop@unarmed", (InputArgument)"intro", (InputArgument)3))
  1738.                     num2 = !Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter", (InputArgument)3) ? 1 : 0;
  1739.                 else
  1740.                     num2 = 0;
  1741.                 if (num2 != 0)
  1742.                     Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter", (InputArgument)1f, (InputArgument)(-1f), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1743.                 if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter", (InputArgument)3))
  1744.                 {
  1745.                     int num3;
  1746.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter") >= 0.100000001490116)
  1747.                         num3 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter") < 0.200000002980232 ? 1 : 0;
  1748.                     else
  1749.                         num3 = 0;
  1750.                     if (num3 != 0)
  1751.                     {
  1752.                         this.cigsAndPillsCountDown = true;
  1753.                         this.cigsAndPillsCounter = 9;
  1754.                         this.cig.IsVisible = true;
  1755.                     }
  1756.                     if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter") < 0.6)
  1757.                     {
  1758.                         int num4;
  1759.                         if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter") < 0.200000002980232)
  1760.                             num4 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@world_human_smoking@male@male_a@enter", (InputArgument)"enter") > 0.131999999284744 ? 1 : 0;
  1761.                         else
  1762.                             num4 = 0;
  1763.                         if (num4 != 0 && this.cig.Exists())
  1764.                         {
  1765.                             int num5;
  1766.                             if (ped.Model.Hash != this.GetHashKey("PLAYER_ZERO"))
  1767.                             {
  1768.                                 Model model = ped.Model;
  1769.                                 if (model.Hash != this.GetHashKey("PLAYER_ONE"))
  1770.                                 {
  1771.                                     model = ped.Model;
  1772.                                     num5 = model.Hash != this.GetHashKey("PLAYER_TWO") ? 1 : 0;
  1773.                                     goto label_22;
  1774.                                 }
  1775.                             }
  1776.                             num5 = 0;
  1777.                         label_22:
  1778.                             if (num5 != 0)
  1779.                             {
  1780.                                 int num6 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)47419);
  1781.                                 Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num6, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1782.                                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num6, (InputArgument)0.0f, (InputArgument)0.0f, (InputArgument)0.01f, (InputArgument)0, (InputArgument)0, (InputArgument)55f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1783.                             }
  1784.                             else
  1785.                             {
  1786.                                 int num6 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)65068);
  1787.                                 Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num6, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1788.                                 Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.cig, (InputArgument)ped, (InputArgument)num6, (InputArgument)0.02f, (InputArgument)(-0.05f), (InputArgument)0.1f, (InputArgument)45f, (InputArgument)90f, (InputArgument)0.0f, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1789.                             }
  1790.                         }
  1791.                         if (this.cigsAndPillsCounter == 6)
  1792.                         {
  1793.                             this.LighterSoundFX(ped);
  1794.                             int num5 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)64017);
  1795.                             Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num5, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1796.                             Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1797.                             Function.Call(Hash._0x0D53A3B8DA0809D2, (InputArgument)"scr_sh_lighter_flame", (InputArgument)this.cig, (InputArgument)(-0.075f), (InputArgument)(1f / 500f), (InputArgument)0.0f, (InputArgument)this.cig.Rotation.X, (InputArgument)this.cig.Rotation.Y, (InputArgument)this.cig.Rotation.Z, (InputArgument)0.11, (InputArgument)true, (InputArgument)true, (InputArgument)true);
  1798.                         }
  1799.                         if (this.cigsAndPillsCounter <= 0)
  1800.                         {
  1801.                             this.startSmoke = false;
  1802.                             this.cigsAndPillsCountDown = false;
  1803.                             this.cig_durability = this.max_cig_durability;
  1804.                             --this.cigsCount;
  1805.                             Function.Call(Hash._0x17430B918701C342, (InputArgument)((int)byte.MaxValue), (InputArgument)((int)sbyte.MaxValue), (InputArgument)80, (InputArgument)100);
  1806.                             UI.Notify("Cigs left: ~r~" + this.cigsCount.ToString(), true);
  1807.                         }
  1808.                     }
  1809.                     else
  1810.                     {
  1811.                         this.startSmoke = false;
  1812.                         this.cigsAndPillsCountDown = false;
  1813.                         this.cig_durability = this.max_cig_durability;
  1814.                         --this.cigsCount;
  1815.                         Function.Call(Hash._0x17430B918701C342, (InputArgument)((int)byte.MaxValue), (InputArgument)((int)sbyte.MaxValue), (InputArgument)80, (InputArgument)100);
  1816.                         UI.Notify("Cigs left: ~r~" + this.cigsCount.ToString(), true);
  1817.                     }
  1818.                 }
  1819.             }
  1820.             else if ((Entity)this.cig != (Entity)null)
  1821.             {
  1822.                 int num1 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)18905);
  1823.                 Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num1, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1824.                 int num2;
  1825.                 if (!Function.Call<bool>(Hash._0xB2C086CC1BF8F2BF, (InputArgument)ped))
  1826.                 {
  1827.                     if (!Function.Call<bool>(Hash._0x2E397FD2ECD37C87, (InputArgument)Game.Player))
  1828.                     {
  1829.                         num2 = !Function.Call<bool>(Hash._0x2AFE52F782F25775, (InputArgument)ped) ? 1 : 0;
  1830.                         goto label_38;
  1831.                     }
  1832.                 }
  1833.                 num2 = 0;
  1834.             label_38:
  1835.                 if (num2 != 0)
  1836.                 {
  1837.                     if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ps@base", (InputArgument)"idle_c", (InputArgument)3))
  1838.                     {
  1839.                         Function.Call(Hash._0xEA47FE3719165B94, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ps@base", (InputArgument)"idle_c", (InputArgument)3f, (InputArgument)(-3f), (InputArgument)(-1), (InputArgument)48, (InputArgument)0.0f, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1840.                         this.cig.IsVisible = true;
  1841.                     }
  1842.                     else if (!this.cigsAndPillsCountDown)
  1843.                     {
  1844.                         this.LighterSoundFX(ped);
  1845.                         Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1846.                         Function.Call(Hash._0x0D53A3B8DA0809D2, (InputArgument)"scr_sh_lighter_flame", (InputArgument)this.cig, (InputArgument)(-0.075f), (InputArgument)(1f / 500f), (InputArgument)0.0f, (InputArgument)this.cig.Rotation.X, (InputArgument)this.cig.Rotation.Y, (InputArgument)this.cig.Rotation.Z, (InputArgument)0.11, (InputArgument)true, (InputArgument)true, (InputArgument)true);
  1847.                         this.cigsAndPillsCountDown = true;
  1848.                         this.cigsAndPillsCounter = 3;
  1849.                     }
  1850.                 }
  1851.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)"amb@code_human_in_car_mp_actions@first_person@smoke@std@ps@base", (InputArgument)"idle_c") > 0.25)
  1852.                 {
  1853.                     this.startSmoke = false;
  1854.                     this.cigsAndPillsCountDown = false;
  1855.                     this.cig_durability = this.max_cig_durability;
  1856.                     --this.cigsCount;
  1857.                     Function.Call(Hash._0x17430B918701C342, (InputArgument)((int)byte.MaxValue), (InputArgument)((int)sbyte.MaxValue), (InputArgument)80, (InputArgument)100);
  1858.                     UI.Notify("Cigs left: ~r~" + this.cigsCount.ToString(), true);
  1859.                 }
  1860.             }
  1861.         }
  1862.  
  1863.         private void LighterSoundFX(Ped ped)
  1864.         {
  1865.             this.soundFX(ped, "lighter.wav");
  1866.             Script.Wait(500);
  1867.             this.soundFX(ped, "puff.wav");
  1868.             int num = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)64017);
  1869.             Vector3 vector3 = Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1870.             Function.Call(Hash._0x6C38AF3693A69A91, (InputArgument)"scr_safehouse");
  1871.             Function.Call(Hash._0x25129531F77B9ED3, (InputArgument)"scr_sh_lighter_sparks", (InputArgument)vector3.X, (InputArgument)vector3.Y, (InputArgument)vector3.Z, (InputArgument)ped.Rotation.X, (InputArgument)ped.Rotation.Y, (InputArgument)ped.Rotation.Z, (InputArgument)1.5, (InputArgument)true, (InputArgument)false, (InputArgument)false);
  1872.             Script.Wait(1000);
  1873.             this.soundFX(ped, "sizzle.wav");
  1874.         }
  1875.  
  1876.         private void stopSmokingFunc(Ped ped)
  1877.         {
  1878.             if ((Entity)this.cig != (Entity)null)
  1879.             {
  1880.                 if (Function.Call<bool>(Hash._0xEFBE71898A993728, (InputArgument)Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey(this.smokeType), (InputArgument)true, (InputArgument)false, (InputArgument)false)))
  1881.                     Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey(this.smokeType), (InputArgument)true, (InputArgument)false, (InputArgument)false).Delete();
  1882.             }
  1883.             else
  1884.                 this.cig.Delete();
  1885.             this.smoke = -1;
  1886.             this.startSmoke = true;
  1887.             if (this.playCigAndSmokeAnim)
  1888.                 this.playCigAndSmokeAnim = false;
  1889.             this.cig = (Prop)null;
  1890.         }
  1891.  
  1892.         private void SwallowPillsFunction(Ped ped)
  1893.         {
  1894.             Function.Call(Hash._0xDE2EF5DA284CC8DF, Array.Empty<InputArgument>());
  1895.             Function.Call(Hash._0xADFF1B2A555F5FBA, Array.Empty<InputArgument>());
  1896.             Function.Call(Hash._0x5A4F9EDF1673F704, (InputArgument)0);
  1897.             Function.Call(Hash._0xAC253D7842768F48, (InputArgument)0);
  1898.             string animDict = "friends@frl@ig_1";
  1899.             string animName = "drink_lamar";
  1900.             if (this.cigsAndPillsCounter > 15)
  1901.                 return;
  1902.             if (!Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName, (InputArgument)3))
  1903.             {
  1904.                 Function.Call(Hash._0x88CBB5CEB96B7BD2, (InputArgument)ped, (InputArgument)false, (InputArgument)0);
  1905.                 Function.Call(Hash._0xD75ACCF5E0FB5367, (InputArgument)ped, (InputArgument)false, (InputArgument)0);
  1906.                 if (ped.IsInCover())
  1907.                     ped.Task.ClearAllImmediately();
  1908.                 ped.Task.PlayAnimation(animDict, animName, 32f, 12000, AnimationFlags.UpperBodyOnly | AnimationFlags.AllowRotation);
  1909.                 Function.Call(Hash._0x4487C259F0F70977, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName, (InputArgument)0.15f);
  1910.             }
  1911.             if (Function.Call<bool>(Hash._0x1F0B79228E461EC9, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName, (InputArgument)3))
  1912.             {
  1913.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) < 0.150000005960464)
  1914.                     Function.Call(Hash._0x4487C259F0F70977, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName, (InputArgument)0.15f);
  1915.                 int num1;
  1916.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) >= 0.189999997615814)
  1917.                     num1 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) < 0.19149999320507 ? 1 : 0;
  1918.                 else
  1919.                     num1 = 0;
  1920.                 if (num1 != 0)
  1921.                 {
  1922.                     int num2 = Function.Call<int>(Hash._0x3F428D08BE5AAE31, (InputArgument)ped, (InputArgument)4090);
  1923.                     Function.Call<Vector3>(Hash._0x17C07FC640E86B4E, (InputArgument)ped, (InputArgument)num2, (InputArgument)0, (InputArgument)0, (InputArgument)0);
  1924.                     int num3;
  1925.                     if ((Entity)this.pillsJar == (Entity)null)
  1926.                         num3 = Function.Call<bool>(Hash._0xBFA48E2FF417213F, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_cs_pills"), (InputArgument)0) ? 1 : 0;
  1927.                     else
  1928.                         num3 = 0;
  1929.                     if (num3 != 0)
  1930.                     {
  1931.                         Prop prop = Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_cs_pills"), (InputArgument)true, (InputArgument)false, (InputArgument)false);
  1932.                         if (Function.Call<bool>(Hash._0xEFBE71898A993728, (InputArgument)prop, (InputArgument)ped) && (Entity)this.pillsJar == (Entity)null)
  1933.                             this.pillsJar = prop;
  1934.                     }
  1935.                     else
  1936.                     {
  1937.                         this.pillsJar = World.CreateProp((Model)"prop_cs_pills", ped.Position, true, false);
  1938.                         Function.Call(Hash._0xA53ED5520C07654A, (InputArgument)this.pillsJar, (InputArgument)ped, (InputArgument)true);
  1939.                     }
  1940.                     if (Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_cs_pills"), (InputArgument)true, (InputArgument)false, (InputArgument)false).Exists())
  1941.                     {
  1942.                         Prop prop = Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_cs_pills"), (InputArgument)true, (InputArgument)false, (InputArgument)false);
  1943.                         int num4;
  1944.                         if ((Entity)prop != (Entity)this.pillsJar)
  1945.                             num4 = Function.Call<bool>(Hash._0xEFBE71898A993728, (InputArgument)prop, (InputArgument)ped) ? 1 : 0;
  1946.                         else
  1947.                             num4 = 0;
  1948.                         if (num4 != 0 && prop.Exists())
  1949.                             prop.Delete();
  1950.                     }
  1951.                     Function.Call(Hash._0x6B9BBD38AB0796DF, (InputArgument)this.pillsJar, (InputArgument)ped, (InputArgument)num2, (InputArgument)(-0.01), (InputArgument)(-0.03), (InputArgument)(-0.02), (InputArgument)(-150.0), (InputArgument)40.0, (InputArgument)0.0, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)false, (InputArgument)2, (InputArgument)true);
  1952.                     this.soundFX(ped, "shakeJar.wav");
  1953.                 }
  1954.                 int num5;
  1955.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) >= 0.270000010728836)
  1956.                     num5 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) < 0.271299988031387 ? 1 : 0;
  1957.                 else
  1958.                     num5 = 0;
  1959.                 if (num5 != 0)
  1960.                     this.soundFX(ped, "openJar.wav");
  1961.                 int num6;
  1962.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) >= 0.550000011920929)
  1963.                     num6 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) < 0.551500022411346 ? 1 : 0;
  1964.                 else
  1965.                     num6 = 0;
  1966.                 if (num6 != 0)
  1967.                     this.soundFX(ped, "swallow.wav");
  1968.                 int num7;
  1969.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) >= 0.649999976158142)
  1970.                     num7 = (double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) < 0.65149998664856 ? 1 : 0;
  1971.                 else
  1972.                     num7 = 0;
  1973.                 if (num7 != 0)
  1974.                     this.soundFX(ped, "openJar.wav");
  1975.                 if ((double)Function.Call<float>(Hash._0x346D81500D088F42, (InputArgument)ped, (InputArgument)animDict, (InputArgument)animName) >= 0.85)
  1976.                 {
  1977.                     this.soundFX(ped, "shakeJar.wav");
  1978.                     this.inProcessCigsAndPills = false;
  1979.                     this.cigsAndPillsCounter = 0;
  1980.                     this.play_swallow_pills_anim = false;
  1981.                     ped.Task.ClearAll();
  1982.                     if ((Entity)this.pillsJar != (Entity)null && this.pillsJar.Exists())
  1983.                     {
  1984.                         if (this.pillsCount <= 0)
  1985.                         {
  1986.                             Function.Call(Hash._0x961AC54BF0613F5D, (InputArgument)this.pillsJar, (InputArgument)true, (InputArgument)false);
  1987.                             this.pillsJar.MarkAsNoLongerNeeded();
  1988.                             this.pillsJar = (Prop)null;
  1989.                         }
  1990.                         else
  1991.                         {
  1992.                             this.pillsJar.Delete();
  1993.                             this.pillsJar = (Prop)null;
  1994.                         }
  1995.                     }
  1996.                     Prop[] nearbyProps = World.GetNearbyProps(ped.Position, 3f, (Model)this.GetHashKey("prop_cs_pills"));
  1997.                     if ((uint)nearbyProps.Length > 0U)
  1998.                     {
  1999.                         foreach (Entity entity in nearbyProps)
  2000.                             entity.Delete();
  2001.                     }
  2002.                     else if (Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_cs_pills"), (InputArgument)true, (InputArgument)false, (InputArgument)false).Exists())
  2003.                     {
  2004.                         Prop prop = Function.Call<Prop>(Hash._0xE143FA2249364369, (InputArgument)ped.Position.X, (InputArgument)ped.Position.Y, (InputArgument)ped.Position.Z, (InputArgument)3f, (InputArgument)this.GetHashKey("prop_cs_pills"), (InputArgument)true, (InputArgument)false, (InputArgument)false);
  2005.                         if (Function.Call<bool>(Hash._0xEFBE71898A993728, (InputArgument)prop, (InputArgument)ped) && prop.Exists())
  2006.                             prop.Delete();
  2007.                     }
  2008.                     Function.Call(Hash._0xB8BEC0CA6F0EDB0F, (InputArgument)ped);
  2009.                     Function.Call(Hash._0xB9EFD5C25018725A, (InputArgument)"AllowAmbientSpeechInSlowMo", (InputArgument)true);
  2010.                     Function.Call(Hash._0xBAF20C5432058024, (InputArgument)ped, (InputArgument)false);
  2011.                     Function.Call(Hash._0x8E04FEDD28D42462, (InputArgument)ped, (InputArgument)"GENERIC_DRINK", (InputArgument)"SPEECH_PARAMS_FORCE_SHOUTED");
  2012.                     if (!this.extraEffects)
  2013.                         ped.Health = ped.MaxHealth;
  2014.                     this.pillsCount -= this.rnd.Next(1, 4);
  2015.                     this.extraEffectsTimer = this.extraFXDuration;
  2016.                     this.extraEffectsStat = true;
  2017.                     this.slowMoScale = 1f;
  2018.                     Function.Call(Hash._0xBAF20C5432058024, (InputArgument)ped, (InputArgument)true);
  2019.                     Function.Call(Hash._0x67C540AA08E4A6F5, (InputArgument)(-1), (InputArgument)"FocusIn", (InputArgument)"HintCamSounds");
  2020.                     if (this.screenFX && !this.extraEffects)
  2021.                     {
  2022.                         if (!Function.Call<bool>(Hash._0x36AD3E690DA5ACEB, (InputArgument)"FocusIn"))
  2023.                             Function.Call(Hash._0x2206BF9A37B7F724, (InputArgument)"FocusIn", (InputArgument)100, (InputArgument)false);
  2024.                     }
  2025.                     if (!this.screenFX && this.extraEffects)
  2026.                     {
  2027.                         if (!Function.Call<bool>(Hash._0x36AD3E690DA5ACEB, (InputArgument)"FocusIn"))
  2028.                             Function.Call(Hash._0x2206BF9A37B7F724, (InputArgument)"FocusIn", (InputArgument)100, (InputArgument)false);
  2029.                     }
  2030.                     this.blockKeys = false;
  2031.                 }
  2032.             }
  2033.         }
  2034.  
  2035.         private void saveDoc()
  2036.         {
  2037.             this.doc.Save("scripts\\Expansion\\WeaponStash.xml");
  2038.         }
  2039.  
  2040.         private void ContactAnsweredDate(iFruitContact contact)
  2041.         {
  2042.             this.soundFX(Game.Player.Character, "beep.wav");
  2043.             this.update_inventory_status(Game.Player.Character);
  2044.             this._iFruit.Close(0);
  2045.             this.callContact.EndCall();
  2046.             if (this.deal && !this.payed)
  2047.             {
  2048.                 if (!((Entity)this.seller != (Entity)null) || (double)this.seller.Position.DistanceTo(Game.Player.Character.Position) >= 15.0 || this.payed)
  2049.                     return;
  2050.                 this.payed = true;
  2051.             }
  2052.             else
  2053.                 this.findSellerOption = true;
  2054.         }
  2055.  
  2056.         private void Setup(Ped ped)
  2057.         {
  2058.             this.modMenuPool = new MenuPool();
  2059.             this.mainMenu = new UIMenu("Inventory Menu", "Select option");
  2060.             this.modMenuPool.Add(this.mainMenu);
  2061.             this.mainMenu.OnMenuClose += new MenuCloseEvent(this.onMenuClose);
  2062.             UIMenu uiMenu1 = new UIMenu("Stash weapon", "Select Weapon");
  2063.             UIMenu uiMenu2 = new UIMenu("Take weapon", "Select Weapon");
  2064.             UIMenuColoredItem StashItem = new UIMenuColoredItem("Stash", this.btnColor1, this.btnColor2);
  2065.             StashItem.SetRightBadge(UIMenuItem.BadgeStyle.Ammo);
  2066.             StashItem.TextColor = this.btnTextColor1;
  2067.             StashItem.HighlightedTextColor = this.btnTextColor2;
  2068.             UIMenuColoredItem TakeItem = new UIMenuColoredItem("Take", this.btnColor1, this.btnColor2);
  2069.             TakeItem.SetRightBadge(UIMenuItem.BadgeStyle.Ammo);
  2070.             TakeItem.TextColor = this.btnTextColor1;
  2071.             TakeItem.HighlightedTextColor = this.btnTextColor2;
  2072.             UIMenuColoredItem RemoveBag = new UIMenuColoredItem("Take Bag off", this.btnColor1, this.btnColor2);
  2073.             UIMenuColoredItem ChangeBagPosition = new UIMenuColoredItem("Change Bag Position", this.btnColor1, this.btnColor2);
  2074.             UIMenuColoredItem SaveOutfit = new UIMenuColoredItem("Save outfit", this.btnColor1, this.btnColor2);
  2075.             UIMenuColoredItem LoadOutfit = new UIMenuColoredItem("Load outfit", this.btnColor1, this.btnColor2);
  2076.             UIMenuColoredItem CloseMenu = new UIMenuColoredItem("Exit", Color.Transparent, Color.GhostWhite);
  2077.             SaveOutfit.SetRightBadge(UIMenuItem.BadgeStyle.Clothes);
  2078.             SaveOutfit.TextColor = this.btnTextColor1;
  2079.             SaveOutfit.HighlightedTextColor = this.btnTextColor2;
  2080.             LoadOutfit.SetRightBadge(UIMenuItem.BadgeStyle.Clothes);
  2081.             LoadOutfit.TextColor = this.btnTextColor1;
  2082.             LoadOutfit.HighlightedTextColor = this.btnTextColor2;
  2083.             RemoveBag.SetRightBadge(UIMenuItem.BadgeStyle.Tick);
  2084.             CloseMenu.SetRightBadge(UIMenuItem.BadgeStyle.Lock);
  2085.             CloseMenu.TextColor = this.btnTextColor1;
  2086.             CloseMenu.HighlightedTextColor = this.btnTextColor2;
  2087.             ChangeBagPosition.SetRightBadge(UIMenuItem.BadgeStyle.Makeup);
  2088.             ChangeBagPosition.TextColor = this.btnTextColor1;
  2089.             ChangeBagPosition.HighlightedTextColor = this.btnTextColor2;
  2090.             RemoveBag.SetRightBadge(UIMenuItem.BadgeStyle.Clothes);
  2091.             RemoveBag.TextColor = this.btnTextColor1;
  2092.             RemoveBag.HighlightedTextColor = this.btnTextColor2;
  2093.             bool flag1 = false;
  2094.             string character = "";
  2095.             foreach (PedHash allPedHash in this.allPedHashes)
  2096.             {
  2097.                 if (ped.Model == (Model)allPedHash)
  2098.                 {
  2099.                     character = allPedHash.ToString();
  2100.                     flag1 = true;
  2101.                 }
  2102.             }
  2103.             if (!flag1)
  2104.                 character = ped.Model.ToString();
  2105.             if (this.doc.Element((XName)"WeaponList").Element((XName)character) == null)
  2106.                 this.doc.Element((XName)"WeaponList").Add((object)new XElement((XName)character));
  2107.             if (!this.mainMenuListString.Contains((object)uiMenu2))
  2108.             {
  2109.                 this.mainMenuListString.Add((object)uiMenu2);
  2110.                 UIMenu uiMenu3 = this.modMenuPool.AddSubMenu(this.mainMenu, "Take Weapons");
  2111.                 this.mainMenu.CurrentSelection = 0;
  2112.                 if (this.doc.Element((XName)"WeaponList").Element((XName)character) != null && this.doc.Element((XName)"WeaponList").Element((XName)character).Elements() != null)
  2113.                 {
  2114.                     foreach (XElement element in this.doc.Element((XName)"WeaponList").Element((XName)character).Elements())
  2115.                     {
  2116.                         foreach (WeaponHash allWeaponHash in this.allWeaponHashes)
  2117.                         {
  2118.                             int num;
  2119.                             if (element.Name.ToString() == allWeaponHash.ToString())
  2120.                             {
  2121.                                 XName name1 = element.Name;
  2122.                                 WeaponHash weaponHash = WeaponHash.Unarmed;
  2123.                                 XName xname1 = (XName)weaponHash.ToString();
  2124.                                 if (name1 != xname1)
  2125.                                 {
  2126.                                     XName name2 = element.Name;
  2127.                                     weaponHash = WeaponHash.Parachute;
  2128.                                     XName xname2 = (XName)weaponHash.ToString();
  2129.                                     num = name2 != xname2 ? 1 : 0;
  2130.                                     goto label_18;
  2131.                                 }
  2132.                             }
  2133.                             num = 0;
  2134.                         label_18:
  2135.                             if (num != 0)
  2136.                             {
  2137.                                 UIMenuCheckboxItem menuCheckboxItem = new UIMenuCheckboxItem(element.Name.ToString(), false);
  2138.                                 if (!uiMenu3.MenuItems.Contains((UIMenuItem)menuCheckboxItem))
  2139.                                     uiMenu3.AddItem((UIMenuItem)menuCheckboxItem);
  2140.                             }
  2141.                         }
  2142.                     }
  2143.                 }
  2144.                 if (!uiMenu3.MenuItems.Contains((UIMenuItem)TakeItem))
  2145.                     uiMenu3.AddItem((UIMenuItem)TakeItem);
  2146.                 uiMenu3.OnItemSelect += (ItemSelectEvent)((sender, item, index) =>
  2147.                 {
  2148.                     if (item != TakeItem)
  2149.                         return;
  2150.                     foreach (WeaponHash stashedWeapon in this.stashedWeapons)
  2151.                     {
  2152.                         if (this.doc.Element((XName)"WeaponList").Element((XName)character) != null && this.doc.Element((XName)"WeaponList").Element((XName)character).Elements() != null)
  2153.                         {
  2154.                             foreach (XElement element in this.doc.Element((XName)"WeaponList").Element((XName)character).Elements())
  2155.                             {
  2156.                                 if (element.Element((XName)"AMMO") != null)
  2157.                                 {
  2158.                                     if (element.Name == (XName)stashedWeapon.ToString())
  2159.                                     {
  2160.                                         ped.Weapons.Give(stashedWeapon, (int)element.Element((XName)"AMMO"), false, false);
  2161.                                         foreach (WeaponComponent allComponentsHash in this.allComponentsHashes)
  2162.                                         {
  2163.                                             bool flag2 = Function.Call<bool>(Hash._0x5CEE3DF569CECAB0, (InputArgument)((int)stashedWeapon), (InputArgument)((int)allComponentsHash));
  2164.                                             if (element.Element((XName)allComponentsHash.ToString()) != null & flag2)
  2165.                                                 Function.Call(Hash._0xD966D51AA5B28BB9, (InputArgument)ped, (InputArgument)((int)stashedWeapon), (InputArgument)((int)allComponentsHash));
  2166.                                         }
  2167.                                         foreach (WeaponTint allTintHash in this.allTintHashes)
  2168.                                         {
  2169.                                             if (element.Attribute((XName)"tint") != null && element.Attribute((XName)"tint").Value == allTintHash.ToString())
  2170.                                                 Function.Call(Hash._0x50969B9B89ED5738, (InputArgument)ped, (InputArgument)((int)stashedWeapon), (InputArgument)((int)allTintHash));
  2171.                                         }
  2172.                                         element.Remove();
  2173.                                         this.saveDoc();
  2174.                                     }
  2175.                                 }
  2176.                                 else if (element.Name == (XName)stashedWeapon.ToString())
  2177.                                 {
  2178.                                     ped.Weapons.Give(stashedWeapon, 0, false, false);
  2179.                                     foreach (WeaponComponent allComponentsHash in this.allComponentsHashes)
  2180.                                     {
  2181.                                         bool flag2 = Function.Call<bool>(Hash._0x5CEE3DF569CECAB0, (InputArgument)((int)stashedWeapon), (InputArgument)((int)allComponentsHash));
  2182.                                         if (element.Element((XName)allComponentsHash.ToString()) != null & flag2)
  2183.                                             Function.Call(Hash._0xD966D51AA5B28BB9, (InputArgument)ped, (InputArgument)((int)stashedWeapon), (InputArgument)((int)allComponentsHash));
  2184.                                     }
  2185.                                     foreach (WeaponTint allTintHash in this.allTintHashes)
  2186.                                     {
  2187.                                         if (element.Attribute((XName)"tint") != null && element.Attribute((XName)"tint").Value == allTintHash.ToString())
  2188.                                             Function.Call(Hash._0x50969B9B89ED5738, (InputArgument)ped, (InputArgument)((int)stashedWeapon), (InputArgument)((int)allTintHash));
  2189.                                     }
  2190.                                     element.Remove();
  2191.                                     this.saveDoc();
  2192.                                 }
  2193.                             }
  2194.                         }
  2195.                     }
  2196.                     this.modMenuPool.CloseAllMenus();
  2197.                     this.inMenu = false;
  2198.                     if ((Entity)this.bagModelReturn(ped) != (Entity)null)
  2199.                         this.weaponInventoryAnim(this.bagModelReturn(ped), ped);
  2200.                 });
  2201.                 uiMenu3.OnCheckboxChange += (CheckboxChangeEvent)((sender, item, index) =>
  2202.                 {
  2203.                     if (item.Checked)
  2204.                     {
  2205.                         foreach (WeaponHash allWeaponHash in this.allWeaponHashes)
  2206.                         {
  2207.                             if (item.Text.ToString() == allWeaponHash.ToString() && !this.stashedWeapons.Contains(allWeaponHash))
  2208.                                 this.stashedWeapons.Add(allWeaponHash);
  2209.                         }
  2210.                     }
  2211.                     else
  2212.                     {
  2213.                         foreach (WeaponHash allWeaponHash in this.allWeaponHashes)
  2214.                         {
  2215.                             if (item.Text.ToString() == allWeaponHash.ToString() && this.stashedWeapons.Contains(allWeaponHash))
  2216.                                 this.stashedWeapons.Remove(allWeaponHash);
  2217.                         }
  2218.                     }
  2219.                 });
  2220.             }
  2221.             if (!this.mainMenuListString.Contains((object)uiMenu1))
  2222.             {
  2223.                 this.mainMenuListString.Add((object)uiMenu1);
  2224.                 UIMenu uiMenu3 = this.modMenuPool.AddSubMenu(this.mainMenu, "Stash Weapons");
  2225.                 this.mainMenu.CurrentSelection = 0;
  2226.                 foreach (WeaponHash allWeaponHash in this.allWeaponHashes)
  2227.                 {
  2228.                     if (ped.Weapons.HasWeapon(allWeaponHash))
  2229.                     {
  2230.                         UIMenuCheckboxItem menuCheckboxItem = new UIMenuCheckboxItem(allWeaponHash.ToString(), false);
  2231.                         if (!uiMenu3.MenuItems.Contains((UIMenuItem)menuCheckboxItem) && (allWeaponHash != WeaponHash.Unarmed && allWeaponHash != WeaponHash.Parachute))
  2232.                             uiMenu3.AddItem((UIMenuItem)menuCheckboxItem);
  2233.                     }
  2234.                 }
  2235.                 if (!uiMenu3.MenuItems.Contains((UIMenuItem)StashItem))
  2236.                     uiMenu3.AddItem((UIMenuItem)StashItem);
  2237.                 uiMenu3.OnItemSelect += (ItemSelectEvent)((sender, item, index) =>
  2238.                 {
  2239.                     if (item != StashItem)
  2240.                         return;
  2241.                     foreach (WeaponHash characterWeapon in this.characterWeapons)
  2242.                     {
  2243.                         XElement xelement = this.doc.Element((XName)"WeaponList").Element((XName)character);
  2244.                         int num1 = Function.Call<int>(Hash._0x015A522136D7F951, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2245.                         int num2;
  2246.                         if (Function.Call<uint>(Hash._0xC3287EE3050FB74C, (InputArgument)((int)characterWeapon)) != 2685387236U)
  2247.                             num2 = Function.Call<uint>(Hash._0xC3287EE3050FB74C, (InputArgument)((int)characterWeapon)) != 3566412244U ? 1 : 0;
  2248.                         else
  2249.                             num2 = 0;
  2250.                         if (num2 != 0)
  2251.                         {
  2252.                             if (xelement.Element((XName)characterWeapon.ToString()) == null)
  2253.                             {
  2254.                                 if (characterWeapon != WeaponHash.Unarmed)
  2255.                                 {
  2256.                                     xelement.Add((object)new XElement((XName)characterWeapon.ToString(), (object)new XElement((XName)"AMMO", (object)num1)));
  2257.                                     this.saveDoc();
  2258.                                     foreach (WeaponComponent allComponentsHash in this.allComponentsHashes)
  2259.                                     {
  2260.                                         bool flag2 = Function.Call<bool>(Hash._0xC593212475FAE340, (InputArgument)ped, (InputArgument)((int)characterWeapon), (InputArgument)((int)allComponentsHash));
  2261.                                         if (xelement.Element((XName)characterWeapon.ToString()).Element((XName)allComponentsHash.ToString()) == null & flag2)
  2262.                                         {
  2263.                                             xelement.Element((XName)characterWeapon.ToString()).Add((object)new XElement((XName)allComponentsHash.ToString()));
  2264.                                             this.saveDoc();
  2265.                                         }
  2266.                                     }
  2267.                                     foreach (WeaponTint allTintHash in this.allTintHashes)
  2268.                                     {
  2269.                                         int num3 = Function.Call<int>(Hash._0x2B9EEDC07BD06B9F, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2270.                                         if (allTintHash == (WeaponTint)num3)
  2271.                                         {
  2272.                                             if (xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint") == null)
  2273.                                             {
  2274.                                                 xelement.Element((XName)characterWeapon.ToString()).Add((object)new XAttribute((XName)"tint", (object)allTintHash.ToString()));
  2275.                                                 this.saveDoc();
  2276.                                             }
  2277.                                             else
  2278.                                             {
  2279.                                                 xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint").Value = allTintHash.ToString();
  2280.                                                 this.saveDoc();
  2281.                                             }
  2282.                                         }
  2283.                                     }
  2284.                                     if (characterWeapon != WeaponHash.Unarmed)
  2285.                                         Function.Call(Hash._0x4899CB088EDF59B8, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2286.                                 }
  2287.                             }
  2288.                             else if (xelement.Element((XName)characterWeapon.ToString()).Element((XName)"AMMO") == null)
  2289.                             {
  2290.                                 xelement.Element((XName)characterWeapon.ToString()).Add((object)new XElement((XName)"AMMO", (object)num1));
  2291.                                 this.saveDoc();
  2292.                                 foreach (WeaponComponent allComponentsHash in this.allComponentsHashes)
  2293.                                 {
  2294.                                     bool flag2 = Function.Call<bool>(Hash._0xC593212475FAE340, (InputArgument)ped, (InputArgument)((int)characterWeapon), (InputArgument)((int)allComponentsHash));
  2295.                                     if (xelement.Element((XName)characterWeapon.ToString()).Element((XName)allComponentsHash.ToString()) == null & flag2)
  2296.                                     {
  2297.                                         xelement.Element((XName)characterWeapon.ToString()).Add((object)new XElement((XName)allComponentsHash.ToString()));
  2298.                                         this.saveDoc();
  2299.                                     }
  2300.                                 }
  2301.                                 foreach (WeaponTint allTintHash in this.allTintHashes)
  2302.                                 {
  2303.                                     int num3 = Function.Call<int>(Hash._0x2B9EEDC07BD06B9F, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2304.                                     if (allTintHash == (WeaponTint)num3)
  2305.                                     {
  2306.                                         if (xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint") == null)
  2307.                                         {
  2308.                                             xelement.Element((XName)characterWeapon.ToString()).Add((object)new XAttribute((XName)"tint", (object)allTintHash.ToString()));
  2309.                                             this.saveDoc();
  2310.                                         }
  2311.                                         else
  2312.                                         {
  2313.                                             xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint").Value = allTintHash.ToString();
  2314.                                             this.saveDoc();
  2315.                                         }
  2316.                                     }
  2317.                                 }
  2318.                                 if (characterWeapon != WeaponHash.Unarmed)
  2319.                                     Function.Call(Hash._0x4899CB088EDF59B8, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2320.                             }
  2321.                             else
  2322.                             {
  2323.                                 int num3 = int.Parse(xelement.Element((XName)characterWeapon.ToString()).Element((XName)"AMMO").Value) + num1;
  2324.                                 xelement.Element((XName)characterWeapon.ToString()).Element((XName)"AMMO").Value = num3.ToString();
  2325.                                 this.saveDoc();
  2326.                                 foreach (WeaponComponent allComponentsHash in this.allComponentsHashes)
  2327.                                 {
  2328.                                     bool flag2 = Function.Call<bool>(Hash._0xC593212475FAE340, (InputArgument)ped, (InputArgument)((int)characterWeapon), (InputArgument)((int)allComponentsHash));
  2329.                                     if (xelement.Element((XName)characterWeapon.ToString()).Element((XName)allComponentsHash.ToString()) == null & flag2)
  2330.                                     {
  2331.                                         xelement.Element((XName)characterWeapon.ToString()).Add((object)new XElement((XName)allComponentsHash.ToString()));
  2332.                                         this.saveDoc();
  2333.                                     }
  2334.                                 }
  2335.                                 foreach (WeaponTint allTintHash in this.allTintHashes)
  2336.                                 {
  2337.                                     int num4 = Function.Call<int>(Hash._0x2B9EEDC07BD06B9F, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2338.                                     if (allTintHash == (WeaponTint)num4)
  2339.                                     {
  2340.                                         if (xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint") == null)
  2341.                                         {
  2342.                                             xelement.Element((XName)characterWeapon.ToString()).Add((object)new XAttribute((XName)"tint", (object)allTintHash.ToString()));
  2343.                                             this.saveDoc();
  2344.                                         }
  2345.                                         else
  2346.                                         {
  2347.                                             xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint").Value = allTintHash.ToString();
  2348.                                             this.saveDoc();
  2349.                                         }
  2350.                                     }
  2351.                                 }
  2352.                                 if (characterWeapon != WeaponHash.Unarmed)
  2353.                                     Function.Call(Hash._0x4899CB088EDF59B8, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2354.                             }
  2355.                         }
  2356.                         else
  2357.                         {
  2358.                             if (xelement.Element((XName)characterWeapon.ToString()) == null)
  2359.                             {
  2360.                                 xelement.Add((object)new XElement((XName)characterWeapon.ToString()));
  2361.                                 this.saveDoc();
  2362.                             }
  2363.                             foreach (WeaponTint allTintHash in this.allTintHashes)
  2364.                             {
  2365.                                 int num3 = Function.Call<int>(Hash._0x2B9EEDC07BD06B9F, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2366.                                 if (allTintHash == (WeaponTint)num3)
  2367.                                 {
  2368.                                     if (xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint") == null)
  2369.                                     {
  2370.                                         xelement.Element((XName)characterWeapon.ToString()).Add((object)new XAttribute((XName)"tint", (object)allTintHash.ToString()));
  2371.                                         this.saveDoc();
  2372.                                     }
  2373.                                     else
  2374.                                     {
  2375.                                         xelement.Element((XName)characterWeapon.ToString()).Attribute((XName)"tint").Value = allTintHash.ToString();
  2376.                                         this.saveDoc();
  2377.                                     }
  2378.                                 }
  2379.                             }
  2380.                             if (characterWeapon != WeaponHash.Unarmed)
  2381.                                 Function.Call(Hash._0x4899CB088EDF59B8, (InputArgument)ped, (InputArgument)((int)characterWeapon));
  2382.                         }
  2383.                     }
  2384.                     this.modMenuPool.CloseAllMenus();
  2385.                     this.inMenu = false;
  2386.                     if ((Entity)this.bagModelReturn(ped) != (Entity)null)
  2387.                         this.weaponInventoryAnim(this.bagModelReturn(ped), ped);
  2388.                 });
  2389.                 uiMenu3.OnCheckboxChange += (CheckboxChangeEvent)((sender, item, index) =>
  2390.                 {
  2391.                     if (item.Checked)
  2392.                     {
  2393.                         foreach (WeaponHash allWeaponHash in this.allWeaponHashes)
  2394.                         {
  2395.                             if (ped.Weapons.HasWeapon(allWeaponHash) && item.Text.ToString() == allWeaponHash.ToString() && !this.characterWeapons.Contains(allWeaponHash))
  2396.                                 this.characterWeapons.Add(allWeaponHash);
  2397.                         }
  2398.                     }
  2399.                     else
  2400.                     {
  2401.                         foreach (WeaponHash allWeaponHash in this.allWeaponHashes)
  2402.                         {
  2403.                             if (ped.Weapons.HasWeapon(allWeaponHash) && item.Text.ToString() == allWeaponHash.ToString() && this.characterWeapons.Contains(allWeaponHash))
  2404.                                 this.characterWeapons.Remove(allWeaponHash);
  2405.                         }
  2406.                     }
  2407.                 });
  2408.             }
  2409.             if ((Entity)this.bagModelReturn(ped) != (Entity)null)
  2410.             {
  2411.                 if (!this.mainMenu.MenuItems.Contains((UIMenuItem)RemoveBag))
  2412.                     this.mainMenu.AddItem((UIMenuItem)RemoveBag);
  2413.                 if (!this.mainMenu.MenuItems.Contains((UIMenuItem)SaveOutfit))
  2414.                     this.mainMenu.AddItem((UIMenuItem)SaveOutfit);
  2415.                 if (!this.mainMenu.MenuItems.Contains((UIMenuItem)LoadOutfit))
  2416.                     this.mainMenu.AddItem((UIMenuItem)LoadOutfit);
  2417.                 if (!this.mainMenu.MenuItems.Contains((UIMenuItem)ChangeBagPosition))
  2418.                     this.mainMenu.AddItem((UIMenuItem)ChangeBagPosition);
  2419.                 if (!this.mainMenu.MenuItems.Contains((UIMenuItem)CloseMenu))
  2420.                     this.mainMenu.AddItem((UIMenuItem)CloseMenu);
  2421.             }
  2422.             this.mainMenu.OnItemSelect += (ItemSelectEvent)((sender, item, index) =>
  2423.             {
  2424.                 if (item == RemoveBag && (Entity)this.bagModelReturn(ped) != (Entity)null)
  2425.                 {
  2426.                     this.inMenu = false;
  2427.                     Game.Player.Character.Task.ClearAll();
  2428.                     this.bagRemove(this.bagModelReturn(ped), ped);
  2429.                 }
  2430.                 if (item == SaveOutfit && (Entity)this.bagModelReturn(ped) != (Entity)null)
  2431.                 {
  2432.                     this.SaveOutfitFunc(ped);
  2433.                     this.modMenuPool.CloseAllMenus();
  2434.                     this.inMenu = false;
  2435.                 }
  2436.                 if (item == LoadOutfit && (Entity)this.bagModelReturn(ped) != (Entity)null)
  2437.                 {
  2438.                     this.LoadOutfitFunc(ped);
  2439.                     this.modMenuPool.CloseAllMenus();
  2440.                     this.inMenu = false;
  2441.                 }
  2442.                 if (item == ChangeBagPosition && (Entity)this.bagModelReturn(ped) != (Entity)null)
  2443.                 {
  2444.                     this.changedPosition = !this.changedPosition;
  2445.                     this.modMenuPool.CloseAllMenus();
  2446.                     this.inMenu = false;
  2447.                     Prop[] nearbyProps = World.GetNearbyProps(ped.Position, 2f, (Model)this.GetHashKey("prop_cs_heist_bag_strap_01"));
  2448.                     if (((IEnumerable<Prop>)nearbyProps).Count<Prop>() <= 0)
  2449.                     {
  2450.                         foreach (Prop prop2 in nearbyProps)
  2451.                         {
  2452.                             if ((Entity)prop2 == (Entity)null && !changedPosition)
  2453.                             {
  2454.  
  2455.                                 prop2.IsVisible = true;
  2456.                             }
  2457.                         }
  2458.                     }
  2459.                 }
  2460.                 if (item != CloseMenu || !((Entity)this.bagModelReturn(ped) != (Entity)null))
  2461.                     return;
  2462.                 this.mainMenuListString.Clear();
  2463.                 this.stashedWeapons.Clear();
  2464.                 this.inMenu = false;
  2465.                 this.weaponInventoryAnim(this.bagModelReturn(Game.Player.Character), Game.Player.Character);
  2466.             });
  2467.         }
  2468.  
  2469.         private void onMenuClose(UIMenu sender)
  2470.         {
  2471.             if (this.modMenuPool.IsAnyMenuOpen())
  2472.                 return;
  2473.             this.modMenuPool.CloseAllMenus();
  2474.             this.inMenu = false;
  2475.         }
  2476.  
  2477.         private void UsePhoneFunc(Ped ped)
  2478.         {
  2479.             this.DisableControlsFunc(false);
  2480.             Function.Call(Hash._0xC4E2813898C97A4B, (InputArgument)false);
  2481.             Function.Call(Hash._0x015C49A93E3E086E, (InputArgument)true);
  2482.             if (Function.Call<bool>(Hash._0x2AFE52F782F25775, (InputArgument)ped))
  2483.                 return;
  2484.             if (ped.Model == (Model)PedHash.Michael)
  2485.                 Function.Call(Hash._0xA4E8E696C532FBC7, (InputArgument)0);
  2486.             if (ped.Model == (Model)PedHash.Franklin)
  2487.                 Function.Call(Hash._0xA4E8E696C532FBC7, (InputArgument)2);
  2488.             if (ped.Model == (Model)PedHash.Trevor)
  2489.                 Function.Call(Hash._0xA4E8E696C532FBC7, (InputArgument)1);
  2490.             if (ped.Model != (Model)PedHash.Michael && ped.Model != (Model)PedHash.Franklin && ped.Model != (Model)PedHash.Trevor)
  2491.                 Function.Call(Hash._0xA4E8E696C532FBC7, (InputArgument)0);
  2492.         }
  2493.  
  2494.         private void ClosePhoneFunc(Ped ped, int ms, int ifruitCloseMS)
  2495.         {
  2496.             Script.Wait(ms);
  2497.             this._iFruit.Close(ifruitCloseMS);
  2498.             Function.Call(Hash._0x3BC861DF703E5097, Array.Empty<InputArgument>());
  2499.             ped.Task.ClearSecondary();
  2500.         }
  2501.  
  2502.         private void clearScriptFunction()
  2503.         {
  2504.             this.deal = false;
  2505.             this.greeting = false;
  2506.             this.greetingFinished = false;
  2507.             this.followCamera = false;
  2508.             this.canceled = false;
  2509.             this.sellerAvailableItems = 0;
  2510.             if ((Entity)this.seller != (Entity)null && this.seller.Exists())
  2511.             {
  2512.                 this.blipHandle(false, (Entity)this.seller, this.sellerBlip, "", 0.0f, 0, false, false);
  2513.                 Prop[] nearbyProps = World.GetNearbyProps(this.seller.Position, 10f, (Model)this.GetHashKey(this.bagModel));
  2514.                 if (((IEnumerable<Prop>)nearbyProps).Count<Prop>() > 0)
  2515.                 {
  2516.                     foreach (Prop prop in nearbyProps)
  2517.                     {
  2518.                         if (prop.IsAttachedTo((Entity)this.seller))
  2519.                             prop.Delete();
  2520.                     }
  2521.                 }
  2522.                 this.seller.MarkAsNoLongerNeeded();
  2523.                 this.seller = (Ped)null;
  2524.             }
  2525.             this.payed = false;
  2526.             Game.Pause(false);
  2527.             Game.Player.CanControlCharacter = true;
  2528.             Game.Player.Character.Task.ClearAll();
  2529.             World.RenderingCamera = (Camera)null;
  2530.         }
  2531.  
  2532.         private void sellerDialogFunc(
  2533.           int counter,
  2534.           bool holster_purchase,
  2535.           bool bag_purchase,
  2536.           bool supplies_purchase,
  2537.           Ped dealer)
  2538.         {
  2539.             if (this.payed)
  2540.             {
  2541.                 Function.Call(Hash._0x8E04FEDD28D42462, (InputArgument)Game.Player.Character, (InputArgument)"GENERIC_THANKS", (InputArgument)"SPEECH_PARAMS_FORCE");
  2542.                 Script.Wait(1000);
  2543.                 Function.Call(Hash._0x8E04FEDD28D42462, (InputArgument)dealer, (InputArgument)"GENERIC_BYE", (InputArgument)"SPEECH_PARAMS_FORCE");
  2544.                 if (this.TotalPrice + this.TotalPrice / 100 * 5 > 0)
  2545.                 {
  2546.                     this.Notify("MAZE", (this.TotalPrice + this.TotalPrice / 100 * 5).ToString() + "~g~ $ ~w~Transaction ~g~successfully ~w~completed", (int)byte.MaxValue, 0, 0, "CHAR_BANK_MAZE");
  2547.                     Game.Player.Money -= this.TotalPrice + this.TotalPrice / 100 * 5;
  2548.                     this.Notify("MAZE", "Payment transaction ~o~5%~w~ has been discharged", (int)byte.MaxValue, 0, 0, "CHAR_BANK_MAZE");
  2549.                     this.Notify("MAZE", "Thank you for using our service!", (int)byte.MaxValue, 0, 0, "CHAR_BANK_MAZE");
  2550.                 }
  2551.                 Function.Call(Hash._0xB138AAB8A70D3C69, (InputArgument)"TREVOR_SMALL_01");
  2552.                 if (bag_purchase)
  2553.                 {
  2554.                     this.ClearInventoryData(Game.Player.Character);
  2555.                     this.bagSet(this.bagModelCheck(Game.Player.Character), Game.Player.Character);
  2556.                     Function.Call(Hash._0x17430B918701C342, (InputArgument)0, (InputArgument)((int)byte.MaxValue), (InputArgument)0, (InputArgument)100);
  2557.                     UI.Notify("Dufflebag has benn ~g~purchased", true);
  2558.                 }
  2559.                 if (supplies_purchase)
  2560.                 {
  2561.                     int num1 = this.maxPills - this.pillsCount;
  2562.                     int num2 = this.maxCigs - this.cigsCount;
  2563.                     if (this.pillsCount < this.maxPills)
  2564.                     {
  2565.                         Function.Call(Hash._0x17430B918701C342, (InputArgument)0, (InputArgument)((int)byte.MaxValue), (InputArgument)0, (InputArgument)100);
  2566.                         this.pillsCount = this.maxPills;
  2567.                         UI.Notify("~g~+" + num1.ToString() + " ~w~Pills", true);
  2568.                     }
  2569.                     if (this.cigsCount < this.maxCigs)
  2570.                     {
  2571.                         Function.Call(Hash._0x17430B918701C342, (InputArgument)0, (InputArgument)((int)byte.MaxValue), (InputArgument)0, (InputArgument)100);
  2572.                         this.cigsCount = this.maxCigs;
  2573.                         UI.Notify("~g~+" + num2.ToString() + " ~w~Cigs", true);
  2574.                     }
  2575.                 }
  2576.                 if (holster_purchase)
  2577.                 {
  2578.                     this.SaveHolster(Game.Player.Character);
  2579.                     Function.Call(Hash._0x17430B918701C342, (InputArgument)0, (InputArgument)((int)byte.MaxValue), (InputArgument)0, (InputArgument)100);
  2580.                     UI.Notify("Holster has benn ~g~purchased", true);
  2581.                 }
  2582.             }
  2583.             this.clearScriptFunction();
  2584.             Game.Player.Character.Task.ClearAll();
  2585.             this.buyBag = false;
  2586.             this.buyHolster = false;
  2587.             this.buySupplies = false;
  2588.         }
  2589.  
  2590.  
  2591.  
  2592.         private void CreateSeller(Vector3 location)
  2593.         {
  2594.             Ped[] nearbyPeds = World.GetNearbyPeds(location, 125f, (Model)PedHash.Dealer01SMY);
  2595.             this.seller = (Ped)null;
  2596.             bool flag1 = false;
  2597.             if (((IEnumerable<Ped>)nearbyPeds).Count<Ped>() > 0)
  2598.             {
  2599.                 foreach (Ped ped in nearbyPeds)
  2600.                 {
  2601.                     if ((Entity)ped != (Entity)null && ped.IsAlive && ped.Exists())
  2602.                     {
  2603.                         this.seller = ped;
  2604.                         flag1 = true;
  2605.                         break;
  2606.                     }
  2607.                 }
  2608.             }
  2609.             if (!flag1)
  2610.                 this.seller = World.CreatePed((Model)PedHash.Dealer01SMY, location);
  2611.         &nb