Esempio n. 1
0
 public void AddWeaponComponent(WeaponData weapon, WeaponComponentHash hash)
 {
     if (!this.componentData.ContainsKey(hash))
     {
         return;
     }
     AddWeaponComponent(weapon, this.componentData[hash]);
 }
Esempio n. 2
0
 public void SetComponent(WeaponComponentHash component, bool active)
 {
     if (active)
     {
         Function.Call(Native.Hash.GIVE_WEAPON_COMPONENT_TO_PED, _owner.Handle, Hash, component);
     }
     else
     {
         Function.Call(Native.Hash.REMOVE_WEAPON_COMPONENT_FROM_PED, _owner.Handle, Hash, component);
     }
 }
 public WeaponComponent this[WeaponComponentHash componentHash]
 {
     get
     {
         if (!this._components.Contains <WeaponComponentHash>(componentHash))
         {
             return(_invalidComponent);
         }
         WeaponComponent component = null;
         if (!this._weaponComponents.TryGetValue(componentHash, out component))
         {
             component = new WeaponComponent(this._owner, this._weapon, componentHash);
             this._weaponComponents.Add(componentHash, component);
         }
         return(component);
     }
 }
 public WeaponComponent this[WeaponComponentHash componentHash]
 {
     get
     {
         if (!((IEnumerable <WeaponComponentHash>) this._components).Contains <WeaponComponentHash>(componentHash))
         {
             return((WeaponComponent)WeaponComponentCollection._invalidComponent);
         }
         WeaponComponent weaponComponent = (WeaponComponent)null;
         if (!this._weaponComponents.TryGetValue(componentHash, out weaponComponent))
         {
             weaponComponent = new WeaponComponent(this._owner, this._weapon, componentHash);
             this._weaponComponents.Add(componentHash, weaponComponent);
         }
         return(weaponComponent);
     }
 }
 public WeaponComponent this[int index]
 {
     get
     {
         WeaponComponent component = null;
         if ((index < 0) || (index >= this.Count))
         {
             return(_invalidComponent);
         }
         WeaponComponentHash key = this._components[index];
         if (!this._weaponComponents.TryGetValue(key, out component))
         {
             component = new WeaponComponent(this._owner, this._weapon, key);
             this._weaponComponents.Add(key, component);
         }
         return(component);
     }
 }
 public WeaponComponent this[int index]
 {
     get
     {
         WeaponComponent weaponComponent = (WeaponComponent)null;
         if (index < 0 || index >= this.Count)
         {
             return((WeaponComponent)WeaponComponentCollection._invalidComponent);
         }
         WeaponComponentHash component = this._components[index];
         if (!this._weaponComponents.TryGetValue(component, out weaponComponent))
         {
             weaponComponent = new WeaponComponent(this._owner, this._weapon, component);
             this._weaponComponents.Add(component, weaponComponent);
         }
         return(weaponComponent);
     }
 }
        public WeaponComponent this[WeaponComponentHash componentHash]
        {
            get
            {
                if (_components.Contains(componentHash))
                {
                    WeaponComponent component = null;
                    if (!_weaponComponents.TryGetValue(componentHash, out component))
                    {
                        component = new WeaponComponent(_owner, _weapon, componentHash);
                        _weaponComponents.Add(componentHash, component);
                    }

                    return(component);
                }
                else
                {
                    return(_invalidComponent);
                }
            }
        }
        public WeaponComponent this[int index]
        {
            get
            {
                WeaponComponent component = null;
                if (index >= 0 && index < Count)
                {
                    WeaponComponentHash componentHash = _components[index];

                    if (!_weaponComponents.TryGetValue(componentHash, out component))
                    {
                        component = new WeaponComponent(_owner, _weapon, componentHash);
                        _weaponComponents.Add(componentHash, component);
                    }
                    return(component);
                }
                else
                {
                    return(_invalidComponent);
                }
            }
        }
Esempio n. 9
0
        private static ComponentAttachmentPoint _GetAttachmentPoint(WeaponHash hash, WeaponComponentHash componentHash)
        {
            switch (hash)
            {
            case WeaponHash.Pistol:
                switch (componentHash)
                {
                case WeaponComponentHash.PistolClip01:
                case WeaponComponentHash.PistolClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtPiFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtPiSupp02:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.PistolVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.CombatPistol:
                switch (componentHash)
                {
                case WeaponComponentHash.CombatPistolClip01:
                case WeaponComponentHash.CombatPistolClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtPiFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtPiSupp:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.CombatPistolVarmodLowrider:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.APPistol:
                switch (componentHash)
                {
                case WeaponComponentHash.APPistolClip01:
                case WeaponComponentHash.APPistolClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtPiFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtPiSupp:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.APPistolVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.MicroSMG:
                switch (componentHash)
                {
                case WeaponComponentHash.MicroSMGClip01:
                case WeaponComponentHash.MicroSMGClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtPiFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtScopeMacro:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.AtArSupp02:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.MicroSMGVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.SMG:
                switch (componentHash)
                {
                case WeaponComponentHash.SMGClip01:
                case WeaponComponentHash.SMGClip02:
                case WeaponComponentHash.SMGClip03:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtScopeMacro02:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.AtPiSupp:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.SMGVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.AssaultRifle:
                switch (componentHash)
                {
                case WeaponComponentHash.AssaultRifleClip01:
                case WeaponComponentHash.AssaultRifleClip02:
                case WeaponComponentHash.AssaultRifleClip03:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArAfGrip:
                    return(ComponentAttachmentPoint.Grip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtScopeMacro:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.AtArSupp02:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.AssaultRifleVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.CarbineRifle:
                switch (componentHash)
                {
                case WeaponComponentHash.CarbineRifleClip01:
                case WeaponComponentHash.CarbineRifleClip02:
                case WeaponComponentHash.CarbineRifleClip03:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtRailCover01:
                    return(ComponentAttachmentPoint.Rail);

                case WeaponComponentHash.AtArAfGrip:
                    return(ComponentAttachmentPoint.Grip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtScopeMedium:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.AtArSupp:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.CarbineRifleVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.AdvancedRifle:
                switch (componentHash)
                {
                case WeaponComponentHash.AdvancedRifleClip01:
                case WeaponComponentHash.AdvancedRifleClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtScopeSmall:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.AtArSupp:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.AdvancedRifleVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.MG:
                switch (componentHash)
                {
                case WeaponComponentHash.MGClip01:
                case WeaponComponentHash.MGClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtScopeSmall02:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.MGVarmodLowrider:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.CombatMG:
                switch (componentHash)
                {
                case WeaponComponentHash.CombatMGClip01:
                case WeaponComponentHash.CombatMGClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArAfGrip:
                    return(ComponentAttachmentPoint.Grip);

                case WeaponComponentHash.AtScopeMedium:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.CombatMGVarmodLowrider:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.PumpShotgun:
                switch (componentHash)
                {
                case WeaponComponentHash.PumpShotgunClip01:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtArSupp:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.PumpShotgunVarmodLowrider:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.AssaultShotgun:
                switch (componentHash)
                {
                case WeaponComponentHash.AssaultShotgunClip01:
                case WeaponComponentHash.AssaultShotgunClip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArAfGrip:
                    return(ComponentAttachmentPoint.Grip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtArSupp:
                    return(ComponentAttachmentPoint.Supp);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.SniperRifle:
                switch (componentHash)
                {
                case WeaponComponentHash.SniperRifleClip01:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArSupp02:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.AtScopeLarge:
                case WeaponComponentHash.AtScopeMax:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.SniperRifleVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.HeavySniper:
                switch (componentHash)
                {
                case WeaponComponentHash.HeavySniperClip01:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtScopeLarge:
                case WeaponComponentHash.AtScopeMax:
                    return(ComponentAttachmentPoint.Scope);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.GrenadeLauncher:
                switch (componentHash)
                {
                case WeaponComponentHash.GrenadeLauncherClip01:
                    return(ComponentAttachmentPoint.Grip);

                case WeaponComponentHash.AtArAfGrip:
                    return(ComponentAttachmentPoint.Grip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtScopeSmall:
                    return(ComponentAttachmentPoint.Scope);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.Minigun:
                switch (componentHash)
                {
                case WeaponComponentHash.MinigunClip01:
                    return(ComponentAttachmentPoint.Clip);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.AssaultSMG:
                switch (componentHash)
                {
                case WeaponComponentHash.AssaultSMGClip01:
                case WeaponComponentHash.AssaultSMGClip02:
                    return(ComponentAttachmentPoint.Clip);


                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtScopeMacro:
                    return(ComponentAttachmentPoint.Scope);

                case WeaponComponentHash.AtArSupp02:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.AssaultSMGVarmodLowrider:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.BullpupShotgun:
                switch (componentHash)
                {
                case WeaponComponentHash.BullpupShotgunClip01:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtArAfGrip:
                    return(ComponentAttachmentPoint.Grip);

                case WeaponComponentHash.AtArFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtArSupp02:
                    return(ComponentAttachmentPoint.Supp);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.Pistol50:
                switch (componentHash)
                {
                case WeaponComponentHash.Pistol50Clip01:
                case WeaponComponentHash.Pistol50Clip02:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.AtPiFlsh:
                    return(ComponentAttachmentPoint.FlashLaser);

                case WeaponComponentHash.AtArSupp02:
                    return(ComponentAttachmentPoint.Supp);

                case WeaponComponentHash.Pistol50VarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }

            case WeaponHash.SawnOffShotgun:
                switch (componentHash)
                {
                case WeaponComponentHash.SawnoffShotgunClip01:
                    return(ComponentAttachmentPoint.Clip);

                case WeaponComponentHash.SawnoffShotgunVarmodLuxe:
                    return(ComponentAttachmentPoint.GunRoot);

                default:
                    return(ComponentAttachmentPoint.Invalid);
                }
            }
            for (int i = 0, count = Function.Call <int>(Native.Hash.GET_NUM_DLC_WEAPONS); i < count; i++)
            {
                unsafe
                {
                    DlcWeaponData weaponData;
                    if (Function.Call <bool>(Native.Hash.GET_DLC_WEAPON_DATA, i, &weaponData))
                    {
                        if (weaponData.Hash == hash)
                        {
                            int maxComp = Function.Call <int>(Native.Hash.GET_NUM_DLC_WEAPON_COMPONENTS, i);

                            for (int j = 0; j < maxComp; j++)
                            {
                                DlcWeaponComponentData componentData;
                                if (Function.Call <bool>(Native.Hash.GET_DLC_WEAPON_COMPONENT_DATA, i, j, &componentData))
                                {
                                    if (componentData.Hash == componentHash)
                                    {
                                        return(componentData.AttachPoint);
                                    }
                                }
                            }
                            break;
                        }
                    }
                }
            }
            return(ComponentAttachmentPoint.Invalid);
        }
Esempio n. 10
0
 public static ComponentAttachmentPoint GetAttachmentPoint(WeaponHash hash, WeaponComponentHash componentHash)
 {
     return(_GetAttachmentPoint(hash, componentHash));
 }
Esempio n. 11
0
 internal WeaponComponent(Ped owner, Weapon weapon, WeaponComponentHash component)
 {
     _owner     = owner;
     _weapon    = weapon;
     _component = component;
 }
Esempio n. 12
0
        private static string _GetComponentDisplayNameFromHash(WeaponHash hash, WeaponComponentHash component)
        {
            if (hash == WeaponHash.KnuckleDuster)
            {
                switch (component)
                {
                case WeaponComponentHash.KnuckleVarmodBase:
                    return("WT_KNUCKLE");

                case WeaponComponentHash.KnuckleVarmodPimp:
                    return("WCT_KNUCK_02");

                case WeaponComponentHash.KnuckleVarmodBallas:
                    return("WCT_KNUCK_BG");

                case WeaponComponentHash.KnuckleVarmodDollar:
                    return("WCT_KNUCK_DLR");

                case WeaponComponentHash.KnuckleVarmodDiamond:
                    return("WCT_KNUCK_DMD");

                case WeaponComponentHash.KnuckleVarmodHate:
                    return("WCT_KNUCK_HT");

                case WeaponComponentHash.KnuckleVarmodLove:
                    return("WCT_KNUCK_LV");

                case WeaponComponentHash.KnuckleVarmodPlayer:
                    return("WCT_KNUCK_PC");

                case WeaponComponentHash.KnuckleVarmodKing:
                    return("WCT_KNUCK_SLG");

                case WeaponComponentHash.KnuckleVarmodVagos:
                    return("WCT_KNUCK_VG");
                }
            }
            else
            {
                switch (component)
                {
                case WeaponComponentHash.Invalid:
                    return("WCT_INVALID");

                case WeaponComponentHash.AtRailCover01:
                    return("WCT_RAIL");

                case WeaponComponentHash.AtArAfGrip:
                    return("WCT_GRIP");

                case WeaponComponentHash.AtPiFlsh:
                case WeaponComponentHash.AtArFlsh:
                    return("WCT_FLASH");

                case WeaponComponentHash.AtScopeMacro:
                    return("WCT_SCOPE_MAC");

                case WeaponComponentHash.AtScopeMacro02:
                    return("WCT_SCOPE_MAC");

                case WeaponComponentHash.AtScopeSmall:
                    return("WCT_SCOPE_SML");

                case WeaponComponentHash.AtScopeSmall02:
                    return("WCT_SCOPE_SML");

                case WeaponComponentHash.AtScopeMedium:
                    return("WCT_SCOPE_MED");

                case WeaponComponentHash.AtScopeLarge:
                    return("WCT_SCOPE_LRG");

                case WeaponComponentHash.AtScopeMax:
                    return("WCT_SCOPE_MAX");

                case WeaponComponentHash.AtPiSupp:
                case WeaponComponentHash.AtArSupp:
                case WeaponComponentHash.AtArSupp02:
                case WeaponComponentHash.AtSrSupp:
                    return("WCT_SUPP");

                case WeaponComponentHash.PistolClip01:
                case WeaponComponentHash.CombatPistolClip01:
                case WeaponComponentHash.APPistolClip01:
                case WeaponComponentHash.MicroSMGClip01:
                case WeaponComponentHash.AssaultRifleClip01:
                case WeaponComponentHash.CarbineRifleClip01:
                case WeaponComponentHash.AdvancedRifleClip01:
                case WeaponComponentHash.MGClip01:
                case WeaponComponentHash.CombatMGClip01:
                case WeaponComponentHash.AssaultShotgunClip01:
                case WeaponComponentHash.SniperRifleClip01:
                case WeaponComponentHash.HeavySniperClip01:
                case WeaponComponentHash.AssaultSMGClip01:
                case WeaponComponentHash.Pistol50Clip01:
                case (WeaponComponentHash)0x0BAAB157:
                case (WeaponComponentHash)0x5AF49386:
                case (WeaponComponentHash)0xCAEBD246:
                case (WeaponComponentHash)0xF8955D89:
                case WeaponComponentHash.SNSPistolClip01:
                case WeaponComponentHash.VintagePistolClip01:
                case WeaponComponentHash.HeavyShotgunClip01:
                case WeaponComponentHash.MarksmanRifleClip01:
                case WeaponComponentHash.CombatPDWClip01:
                case WeaponComponentHash.MarksmanPistolClip01:
                case WeaponComponentHash.MachinePistolClip01:
                    return("WCT_CLIP1");

                case WeaponComponentHash.PistolClip02:
                case WeaponComponentHash.CombatPistolClip02:
                case WeaponComponentHash.APPistolClip02:
                case WeaponComponentHash.MicroSMGClip02:
                case WeaponComponentHash.SMGClip02:
                case WeaponComponentHash.AssaultRifleClip02:
                case WeaponComponentHash.CarbineRifleClip02:
                case WeaponComponentHash.AdvancedRifleClip02:
                case WeaponComponentHash.MGClip02:
                case WeaponComponentHash.CombatMGClip02:
                case WeaponComponentHash.AssaultShotgunClip02:
                case WeaponComponentHash.MinigunClip01:
                case WeaponComponentHash.AssaultSMGClip02:
                case WeaponComponentHash.Pistol50Clip02:
                case (WeaponComponentHash)0x6CBF371B:
                case (WeaponComponentHash)0xE1C5FFFA:
                case (WeaponComponentHash)0x3E7E6956:
                case WeaponComponentHash.SNSPistolClip02:
                case WeaponComponentHash.VintagePistolClip02:
                case WeaponComponentHash.HeavyShotgunClip02:
                case WeaponComponentHash.MarksmanRifleClip02:
                case WeaponComponentHash.CombatPDWClip02:
                case WeaponComponentHash.MachinePistolClip02:
                    return("WCT_CLIP2");

                case WeaponComponentHash.AtScopeLargeFixedZoom:
                    return("WCT_SCOPE_LRG");

                case WeaponComponentHash.AtPiSupp02:
                    return("WCT_SUPP");

                case WeaponComponentHash.AssaultRifleVarmodLuxe:
                case WeaponComponentHash.CarbineRifleVarmodLuxe:
                case WeaponComponentHash.PistolVarmodLuxe:
                case WeaponComponentHash.SMGVarmodLuxe:
                case WeaponComponentHash.MicroSMGVarmodLuxe:
                case (WeaponComponentHash)0x161E9241:
                case WeaponComponentHash.AssaultSMGVarmodLowrider:
                case WeaponComponentHash.CombatPistolVarmodLowrider:
                case WeaponComponentHash.MGVarmodLowrider:
                case WeaponComponentHash.PumpShotgunVarmodLowrider:
                    return("WCT_VAR_GOLD");

                case WeaponComponentHash.AdvancedRifleVarmodLuxe:
                case WeaponComponentHash.APPistolVarmodLuxe:
                case WeaponComponentHash.SawnoffShotgunVarmodLuxe:
                case WeaponComponentHash.BullpupRifleVarmodLow:
                    return("WCT_VAR_METAL");

                case WeaponComponentHash.Pistol50VarmodLuxe:
                    return("WCT_VAR_SIL");

                case WeaponComponentHash.HeavyPistolVarmodLuxe:
                case WeaponComponentHash.SniperRifleVarmodLuxe:
                case WeaponComponentHash.SNSPistolVarmodLowrider:
                    return("WCT_VAR_WOOD");

                case WeaponComponentHash.CombatMGVarmodLowrider:
                case WeaponComponentHash.SpecialCarbineVarmodLowrider:
                    return("WCT_VAR_ETCHM");

                case WeaponComponentHash.SwitchbladeVarmodBase:
                    return("WCT_SB_BASE");

                case WeaponComponentHash.SwitchbladeVarmodVar1:
                    return("WCT_SB_VAR1");

                case WeaponComponentHash.SwitchbladeVarmodVar2:
                    return("WCT_SB_VAR2");

                case WeaponComponentHash.RevolverClip01:
                    return("WCT_CLIP1");

                case WeaponComponentHash.RevolverVarmodBoss:
                    return("WCT_REV_VARB");

                case WeaponComponentHash.RevolverVarmodGoon:
                    return("WCT_REV_VARG");

                case WeaponComponentHash.SMGClip03:
                case WeaponComponentHash.AssaultRifleClip03:
                case WeaponComponentHash.HeavyShotgunClip03:
                    return("WCT_CLIP_DRM");

                case WeaponComponentHash.CarbineRifleClip03:
                    return("WCT_CLIP_BOX");
                }
            }
            string result = "WCT_INVALID";

            for (int i = 0, count = Function.Call <int>(Native.Hash.GET_NUM_DLC_WEAPONS); i < count; i++)
            {
                unsafe
                {
                    DlcWeaponData weaponData;
                    if (Function.Call <bool>(Native.Hash.GET_DLC_WEAPON_DATA, i, &weaponData))
                    {
                        if (weaponData.Hash == hash)
                        {
                            int maxComp = Function.Call <int>(Native.Hash.GET_NUM_DLC_WEAPON_COMPONENTS, i);

                            for (int j = 0; j < maxComp; j++)
                            {
                                DlcWeaponComponentData componentData;
                                if (Function.Call <bool>(Native.Hash.GET_DLC_WEAPON_COMPONENT_DATA, i, j, &componentData))
                                {
                                    if (componentData.Hash == component)
                                    {
                                        return(componentData.DisplayName);
                                    }
                                }
                            }
                            break;
                        }
                    }
                }
            }

            return(result);
        }
        public static unsafe WeaponComponentHash[] GetComponentsFromHash(
            WeaponHash hash)
        {
            switch (hash)
            {
            case WeaponHash.SniperRifle:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.SniperRifleClip01,
                    WeaponComponentHash.AtScopeLarge,
                    WeaponComponentHash.AtScopeMax,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.SniperRifleVarmodLuxe
                });

            case WeaponHash.CombatPDW:
                return(new WeaponComponentHash[6]
                {
                    WeaponComponentHash.CombatPDWClip01,
                    WeaponComponentHash.CombatPDWClip02,
                    WeaponComponentHash.CombatPDWClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArAfGrip
                });

            case WeaponHash.HeavySniper:
                return(new WeaponComponentHash[3]
                {
                    WeaponComponentHash.HeavySniperClip01,
                    WeaponComponentHash.AtScopeLarge,
                    WeaponComponentHash.AtScopeMax
                });

            case WeaponHash.MicroSMG:
                return(new WeaponComponentHash[6]
                {
                    WeaponComponentHash.MicroSMGClip01,
                    WeaponComponentHash.MicroSMGClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.MicroSMGVarmodLuxe
                });

            case WeaponHash.Pistol:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.PistolClip01,
                    WeaponComponentHash.PistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp02,
                    WeaponComponentHash.PistolVarmodLuxe
                });

            case WeaponHash.PumpShotgun:
                return(new WeaponComponentHash[3]
                {
                    WeaponComponentHash.AtSrSupp,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.PumpShotgunVarmodLowrider
                });

            case WeaponHash.APPistol:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.APPistolClip01,
                    WeaponComponentHash.APPistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.APPistolVarmodLuxe
                });

            case WeaponHash.SMG:
                return(new WeaponComponentHash[8]
                {
                    WeaponComponentHash.SMGClip01,
                    WeaponComponentHash.SMGClip02,
                    WeaponComponentHash.SMGClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.AtScopeMacro02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.SMGVarmodLuxe
                });

            case WeaponHash.Minigun:
                return(new WeaponComponentHash[1]
                {
                    WeaponComponentHash.MinigunClip01
                });

            case WeaponHash.CombatPistol:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.CombatPistolClip01,
                    WeaponComponentHash.CombatPistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.CombatPistolVarmodLowrider
                });

            case WeaponHash.SawnOffShotgun:
                return(new WeaponComponentHash[1]
                {
                    WeaponComponentHash.SawnoffShotgunVarmodLuxe
                });

            case WeaponHash.BullpupRifle:
                return(new WeaponComponentHash[7]
                {
                    WeaponComponentHash.BullpupRifleClip01,
                    WeaponComponentHash.BullpupRifleClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.BullpupRifleVarmodLow
                });

            case WeaponHash.CombatMG:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.CombatMGClip01,
                    WeaponComponentHash.CombatMGClip02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.CombatMGVarmodLowrider
                });

            case WeaponHash.CarbineRifle:
                return(new WeaponComponentHash[9]
                {
                    WeaponComponentHash.CarbineRifleClip01,
                    WeaponComponentHash.CarbineRifleClip02,
                    WeaponComponentHash.CarbineRifleClip03,
                    WeaponComponentHash.AtRailCover01,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.CarbineRifleVarmodLuxe
                });

            case WeaponHash.Pistol50:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.Pistol50Clip01,
                    WeaponComponentHash.Pistol50Clip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.Pistol50VarmodLuxe
                });

            case WeaponHash.MG:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.MGClip01,
                    WeaponComponentHash.MGClip02,
                    WeaponComponentHash.AtScopeSmall02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.MGVarmodLowrider
                });

            case WeaponHash.BullpupShotgun:
                return(new WeaponComponentHash[3]
                {
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtArSupp02
                });

            case WeaponHash.GrenadeLauncher:
                return(new WeaponComponentHash[3]
                {
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall
                });

            case WeaponHash.AdvancedRifle:
                return(new WeaponComponentHash[6]
                {
                    WeaponComponentHash.AdvancedRifleClip01,
                    WeaponComponentHash.AdvancedRifleClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.AdvancedRifleVarmodLuxe
                });

            case WeaponHash.SNSPistol:
                return(new WeaponComponentHash[3]
                {
                    WeaponComponentHash.SNSPistolClip01,
                    WeaponComponentHash.SNSPistolClip02,
                    WeaponComponentHash.SNSPistolVarmodLowrider
                });

            case WeaponHash.AssaultRifle:
                return(new WeaponComponentHash[8]
                {
                    WeaponComponentHash.AssaultRifleClip01,
                    WeaponComponentHash.AssaultRifleClip02,
                    WeaponComponentHash.AssaultRifleClip03,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AssaultRifleVarmodLuxe
                });

            case WeaponHash.SpecialCarbine:
                return(new WeaponComponentHash[8]
                {
                    WeaponComponentHash.SpecialCarbineClip01,
                    WeaponComponentHash.SpecialCarbineClip02,
                    WeaponComponentHash.SpecialCarbineClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.SpecialCarbineVarmodLowrider
                });

            case WeaponHash.Revolver:
                return(new WeaponComponentHash[3]
                {
                    WeaponComponentHash.RevolverClip01,
                    WeaponComponentHash.RevolverVarmodBoss,
                    WeaponComponentHash.RevolverVarmodGoon
                });

            case WeaponHash.KnuckleDuster:
                return(new WeaponComponentHash[9]
                {
                    WeaponComponentHash.KnuckleVarmodPimp,
                    WeaponComponentHash.KnuckleVarmodBallas,
                    WeaponComponentHash.KnuckleVarmodDollar,
                    WeaponComponentHash.KnuckleVarmodDiamond,
                    WeaponComponentHash.KnuckleVarmodHate,
                    WeaponComponentHash.KnuckleVarmodLove,
                    WeaponComponentHash.KnuckleVarmodPlayer,
                    WeaponComponentHash.KnuckleVarmodKing,
                    WeaponComponentHash.KnuckleVarmodVagos
                });

            case WeaponHash.MachinePistol:
                return(new WeaponComponentHash[4]
                {
                    WeaponComponentHash.MachinePistolClip01,
                    WeaponComponentHash.MachinePistolClip02,
                    WeaponComponentHash.MachinePistolClip03,
                    WeaponComponentHash.AtPiSupp
                });

            case WeaponHash.SwitchBlade:
                return(new WeaponComponentHash[2]
                {
                    WeaponComponentHash.SwitchbladeVarmodVar1,
                    WeaponComponentHash.SwitchbladeVarmodVar2
                });

            case WeaponHash.AssaultShotgun:
                return(new WeaponComponentHash[5]
                {
                    WeaponComponentHash.AssaultShotgunClip01,
                    WeaponComponentHash.AssaultShotgunClip02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtArSupp
                });

            case WeaponHash.AssaultSMG:
                return(new WeaponComponentHash[6]
                {
                    WeaponComponentHash.AssaultSMGClip01,
                    WeaponComponentHash.AssaultSMGClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AssaultSMGVarmodLowrider
                });

            default:
                WeaponComponentHash[] weaponComponentHashArray1 = (WeaponComponentHash[])null;
                int num = 0;
                for (int index1 = Function.Call <int>(Hash.GET_NUM_DLC_WEAPONS, (InputArgument[])Array.Empty <InputArgument>()); num < index1; ++num)
                {
                    DlcWeaponData dlcWeaponData;
                    if (Function.Call <bool>(Hash.GET_DLC_WEAPON_DATA, (InputArgument)num, (InputArgument)(void *)&dlcWeaponData) && dlcWeaponData.Hash == hash)
                    {
                        WeaponComponentHash[] weaponComponentHashArray2 = new WeaponComponentHash[Function.Call <int>(Hash.GET_NUM_DLC_WEAPON_COMPONENTS, (InputArgument)num)];
                        for (int index2 = 0; index2 < weaponComponentHashArray2.Length; ++index2)
                        {
                            DlcWeaponComponentData weaponComponentData;
                            InputArgument[]        inputArgumentArray = new InputArgument[3]
                            {
                                (InputArgument)num,
                                (InputArgument)index2,
                                (InputArgument)(void *)&weaponComponentData
                            };
                            weaponComponentHashArray2[index2] = !Function.Call <bool>(Hash.GET_DLC_WEAPON_COMPONENT_DATA, inputArgumentArray) ? WeaponComponentHash.Invalid : weaponComponentData.Hash;
                        }
                        return(weaponComponentHashArray2);
                    }
                }
                if (weaponComponentHashArray1 == null)
                {
                    weaponComponentHashArray1 = new WeaponComponentHash[0];
                }
                return(weaponComponentHashArray1);
            }
        }
Esempio n. 14
0
 public void Hash()
 {
     this.hash = (WeaponComponentHash)Game.GenerateHash(this.name);
 }
        public static unsafe WeaponComponentHash[] GetComponentsFromHash(WeaponHash hash)
        {
            if (hash <= ((WeaponHash)(-2084633992)))
            {
                if (hash <= WeaponHash.APPistol)
                {
                    if (hash <= WeaponHash.HeavySniper)
                    {
                        if (hash == WeaponHash.SniperRifle)
                        {
                            return(new WeaponComponentHash[] { WeaponComponentHash.SniperRifleClip01, WeaponComponentHash.AtScopeLarge, WeaponComponentHash.AtScopeMax, WeaponComponentHash.AtArSupp02, WeaponComponentHash.SniperRifleVarmodLuxe });
                        }
                        if (hash == WeaponHash.CombatPDW)
                        {
                            return(new WeaponComponentHash[] { WeaponComponentHash.CombatPDWClip01, WeaponComponentHash.CombatPDWClip02, WeaponComponentHash.CombatPDWClip03, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeSmall, WeaponComponentHash.AtArAfGrip });
                        }
                        if (hash == WeaponHash.HeavySniper)
                        {
                            return(new WeaponComponentHash[] { WeaponComponentHash.HeavySniperClip01, WeaponComponentHash.AtScopeLarge, WeaponComponentHash.AtScopeMax });
                        }
                    }
                    else if (hash <= WeaponHash.Pistol)
                    {
                        if (hash == WeaponHash.MicroSMG)
                        {
                            return(new WeaponComponentHash[] { WeaponComponentHash.MicroSMGClip01, WeaponComponentHash.MicroSMGClip02, WeaponComponentHash.AtPiFlsh, WeaponComponentHash.AtScopeMacro, WeaponComponentHash.AtArSupp02, WeaponComponentHash.MicroSMGVarmodLuxe });
                        }
                        if (hash == WeaponHash.Pistol)
                        {
                            return(new WeaponComponentHash[] { WeaponComponentHash.PistolClip01, WeaponComponentHash.PistolClip02, WeaponComponentHash.AtPiFlsh, WeaponComponentHash.AtPiSupp02, WeaponComponentHash.PistolVarmodLuxe });
                        }
                    }
                    else
                    {
                        if (hash == WeaponHash.PumpShotgun)
                        {
                            return(new WeaponComponentHash[] { WeaponComponentHash.AtSrSupp, WeaponComponentHash.AtArFlsh, WeaponComponentHash.PumpShotgunVarmodLowrider });
                        }
                        if (hash == WeaponHash.APPistol)
                        {
                            return(new WeaponComponentHash[] { WeaponComponentHash.APPistolClip01, WeaponComponentHash.APPistolClip02, WeaponComponentHash.AtPiFlsh, WeaponComponentHash.AtPiSupp, WeaponComponentHash.APPistolVarmodLuxe });
                        }
                    }
                }
                else if (hash <= WeaponHash.CombatPistol)
                {
                    if (hash == WeaponHash.SMG)
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.SMGClip01, WeaponComponentHash.SMGClip02, WeaponComponentHash.SMGClip03, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtPiSupp, WeaponComponentHash.AtScopeMacro02, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.SMGVarmodLuxe });
                    }
                    if (hash == WeaponHash.Minigun)
                    {
                        return(new WeaponComponentHash[] { ((WeaponComponentHash)(-924946682)) });
                    }
                    if (hash == WeaponHash.CombatPistol)
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.CombatPistolClip01, WeaponComponentHash.CombatPistolClip02, WeaponComponentHash.AtPiFlsh, WeaponComponentHash.AtPiSupp, WeaponComponentHash.CombatPistolVarmodLowrider });
                    }
                }
                else if (hash > WeaponHash.BullpupRifle)
                {
                    if (hash == WeaponHash.CombatMG)
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.CombatMGClip01, WeaponComponentHash.CombatMGClip02, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.AtScopeMedium, WeaponComponentHash.CombatMGVarmodLowrider });
                    }
                    if (hash == ((WeaponHash)(-2084633992)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.CarbineRifleClip01, WeaponComponentHash.CarbineRifleClip02, WeaponComponentHash.CarbineRifleClip03, WeaponComponentHash.AtRailCover01, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeMedium, WeaponComponentHash.AtArSupp, WeaponComponentHash.CarbineRifleVarmodLuxe });
                    }
                }
                else
                {
                    if (hash == WeaponHash.SawnOffShotgun)
                    {
                        return(new WeaponComponentHash[] { ((WeaponComponentHash)(-2052698631)) });
                    }
                    if (hash == WeaponHash.BullpupRifle)
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.BullpupRifleClip01, WeaponComponentHash.BullpupRifleClip02, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeSmall, WeaponComponentHash.AtArSupp, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.BullpupRifleVarmodLow });
                    }
                }
            }
            else if (hash <= ((WeaponHash)(-1074790547)))
            {
                if (hash <= ((WeaponHash)(-1654528753)))
                {
                    if (hash == ((WeaponHash)(-1716589765)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.Pistol50Clip01, WeaponComponentHash.Pistol50Clip02, WeaponComponentHash.AtPiFlsh, WeaponComponentHash.AtArSupp02, WeaponComponentHash.Pistol50VarmodLuxe });
                    }
                    if (hash == ((WeaponHash)(-1660422300)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.MGClip01, WeaponComponentHash.MGClip02, WeaponComponentHash.AtScopeSmall02, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.MGVarmodLowrider });
                    }
                    if (hash == ((WeaponHash)(-1654528753)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.AtArAfGrip, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtArSupp02 });
                    }
                }
                else if (hash <= ((WeaponHash)(-1357824103)))
                {
                    if (hash == ((WeaponHash)(-1568386805)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.AtArAfGrip, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeSmall });
                    }
                    if (hash == ((WeaponHash)(-1357824103)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.AdvancedRifleClip01, WeaponComponentHash.AdvancedRifleClip02, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeSmall, WeaponComponentHash.AtArSupp, WeaponComponentHash.AdvancedRifleVarmodLuxe });
                    }
                }
                else
                {
                    if (hash == ((WeaponHash)(-1076751822)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.SNSPistolClip01, WeaponComponentHash.SNSPistolClip02, WeaponComponentHash.SNSPistolVarmodLowrider });
                    }
                    if (hash == ((WeaponHash)(-1074790547)))
                    {
                        return(new WeaponComponentHash[] { WeaponComponentHash.AssaultRifleClip01, WeaponComponentHash.AssaultRifleClip02, WeaponComponentHash.AssaultRifleClip03, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeMacro, WeaponComponentHash.AtArSupp02, WeaponComponentHash.AssaultRifleVarmodLuxe });
                    }
                }
            }
            else if (hash <= ((WeaponHash)(-656458692)))
            {
                if (hash == ((WeaponHash)(-1063057011)))
                {
                    return(new WeaponComponentHash[] { WeaponComponentHash.SpecialCarbineClip01, WeaponComponentHash.SpecialCarbineClip02, WeaponComponentHash.SpecialCarbineClip03, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeMedium, WeaponComponentHash.AtArSupp02, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.SpecialCarbineVarmodLowrider });
                }
                if (hash == ((WeaponHash)(-1045183535)))
                {
                    return(new WeaponComponentHash[] { WeaponComponentHash.RevolverClip01, WeaponComponentHash.RevolverVarmodBoss, WeaponComponentHash.RevolverVarmodGoon });
                }
                if (hash == ((WeaponHash)(-656458692)))
                {
                    return(new WeaponComponentHash[] { WeaponComponentHash.KnuckleVarmodPimp, WeaponComponentHash.KnuckleVarmodBallas, WeaponComponentHash.KnuckleVarmodDollar, WeaponComponentHash.KnuckleVarmodDiamond, WeaponComponentHash.KnuckleVarmodHate, WeaponComponentHash.KnuckleVarmodLove, WeaponComponentHash.KnuckleVarmodPlayer, WeaponComponentHash.KnuckleVarmodKing, WeaponComponentHash.KnuckleVarmodVagos });
                }
            }
            else if (hash > ((WeaponHash)(-538741184)))
            {
                if (hash == ((WeaponHash)(-494615257)))
                {
                    return(new WeaponComponentHash[] { WeaponComponentHash.AssaultShotgunClip01, WeaponComponentHash.AssaultShotgunClip02, WeaponComponentHash.AtArAfGrip, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtArSupp });
                }
                if (hash == ((WeaponHash)(-270015777)))
                {
                    return(new WeaponComponentHash[] { WeaponComponentHash.AssaultSMGClip01, WeaponComponentHash.AssaultSMGClip02, WeaponComponentHash.AtArFlsh, WeaponComponentHash.AtScopeMacro, WeaponComponentHash.AtArSupp02, WeaponComponentHash.AssaultSMGVarmodLowrider });
                }
            }
            else
            {
                if (hash == ((WeaponHash)(-619010992)))
                {
                    return(new WeaponComponentHash[] { WeaponComponentHash.MachinePistolClip01, WeaponComponentHash.MachinePistolClip02, WeaponComponentHash.MachinePistolClip03, WeaponComponentHash.AtPiSupp });
                }
                if (hash == ((WeaponHash)(-538741184)))
                {
                    return(new WeaponComponentHash[] { WeaponComponentHash.SwitchbladeVarmodVar1, ((WeaponComponentHash)(-409758110)) });
                }
            }
            WeaponComponentHash[] hashArray = null;
            int num2 = 0;
            int num3 = Function.Call <int>(Hash.GET_NUM_DLC_WEAPONS, Array.Empty <InputArgument>());

            while (num2 < num3)
            {
                DlcWeaponData   data2;
                InputArgument[] arguments = new InputArgument[] { num2, (IntPtr) & data2 };
                if (Function.Call <bool>(Hash.GET_DLC_WEAPON_DATA, arguments) && (data2.Hash == hash))
                {
                    InputArgument[] argumentArray2 = new InputArgument[] { num2 };
                    hashArray = new WeaponComponentHash[Function.Call <int>(Hash.GET_NUM_DLC_WEAPON_COMPONENTS, argumentArray2)];
                    for (int i = 0; i < hashArray.Length; i++)
                    {
                        DlcWeaponComponentData data;
                        InputArgument[]        argumentArray3 = new InputArgument[] { num2, i, (IntPtr) & data };
                        hashArray[i] = !Function.Call <bool>(Hash.GET_DLC_WEAPON_COMPONENT_DATA, argumentArray3) ? ((WeaponComponentHash)(-1)) : data.Hash;
                    }
                    return(hashArray);
                }
                num2++;
            }
            return(new WeaponComponentHash[0]);
        }
Esempio n. 16
0
 public static string GetComponentDisplayNameFromHash(WeaponHash hash, WeaponComponentHash component)
 {
     return(_GetComponentDisplayNameFromHash(hash, component));
 }
        static WeaponComponentHash[] GetComponentsFromHash(WeaponHash hash)
        {
            switch (hash)
            {
            case WeaponHash.Pistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.PistolClip01,
                    WeaponComponentHash.PistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp02,
                    WeaponComponentHash.PistolVarmodLuxe,
                });

            case WeaponHash.CombatPistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CombatPistolClip01,
                    WeaponComponentHash.CombatPistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.CombatPistolVarmodLowrider,
                });

            case WeaponHash.APPistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.APPistolClip01,
                    WeaponComponentHash.APPistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.APPistolVarmodLuxe,
                });

            case WeaponHash.MicroSMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MicroSMGClip01,
                    WeaponComponentHash.MicroSMGClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.MicroSMGVarmodLuxe,
                });

            case WeaponHash.SMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SMGClip01,
                    WeaponComponentHash.SMGClip02,
                    WeaponComponentHash.SMGClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.AtScopeMacro02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.SMGVarmodLuxe,
                });

            case WeaponHash.AssaultRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AssaultRifleClip01,
                    WeaponComponentHash.AssaultRifleClip02,
                    WeaponComponentHash.AssaultRifleClip03,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AssaultRifleVarmodLuxe,
                });

            case WeaponHash.CarbineRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CarbineRifleClip01,
                    WeaponComponentHash.CarbineRifleClip02,
                    WeaponComponentHash.CarbineRifleClip03,
                    WeaponComponentHash.AtRailCover01,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.CarbineRifleVarmodLuxe,
                });

            case WeaponHash.AdvancedRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AdvancedRifleClip01,
                    WeaponComponentHash.AdvancedRifleClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.AdvancedRifleVarmodLuxe,
                });

            case WeaponHash.MG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MGClip01,
                    WeaponComponentHash.MGClip02,
                    WeaponComponentHash.AtScopeSmall02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.MGVarmodLowrider,
                });

            case WeaponHash.CombatMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CombatMGClip01,
                    WeaponComponentHash.CombatMGClip02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.CombatMGVarmodLowrider,
                });

            case WeaponHash.PumpShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AtSrSupp,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.PumpShotgunVarmodLowrider,
                });

            case WeaponHash.AssaultShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AssaultShotgunClip01,
                    WeaponComponentHash.AssaultShotgunClip02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtArSupp,
                });

            case WeaponHash.SniperRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SniperRifleClip01,
                    WeaponComponentHash.AtScopeLarge,
                    WeaponComponentHash.AtScopeMax,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.SniperRifleVarmodLuxe,
                });

            case WeaponHash.HeavySniper:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.HeavySniperClip01,
                    WeaponComponentHash.AtScopeLarge,
                    WeaponComponentHash.AtScopeMax,
                });

            case WeaponHash.GrenadeLauncher:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                });

            case WeaponHash.Minigun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MinigunClip01,
                });

            case WeaponHash.AssaultSMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AssaultSMGClip01,
                    WeaponComponentHash.AssaultSMGClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AssaultSMGVarmodLowrider,
                });

            case WeaponHash.BullpupShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtArSupp02,
                });

            case WeaponHash.Pistol50:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.Pistol50Clip01,
                    WeaponComponentHash.Pistol50Clip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.Pistol50VarmodLuxe,
                });

            case WeaponHash.CombatPDW:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CombatPDWClip01,
                    WeaponComponentHash.CombatPDWClip02,
                    WeaponComponentHash.CombatPDWClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArAfGrip,
                });

            case WeaponHash.SawnOffShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SawnoffShotgunVarmodLuxe,
                });

            case WeaponHash.BullpupRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.BullpupRifleClip01,
                    WeaponComponentHash.BullpupRifleClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.BullpupRifleVarmodLow,
                });

            case WeaponHash.SNSPistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SNSPistolClip01,
                    WeaponComponentHash.SNSPistolClip02,
                    WeaponComponentHash.SNSPistolVarmodLowrider,
                });

            case WeaponHash.SpecialCarbine:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SpecialCarbineClip01,
                    WeaponComponentHash.SpecialCarbineClip02,
                    WeaponComponentHash.SpecialCarbineClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.SpecialCarbineVarmodLowrider,
                });

            case WeaponHash.KnuckleDuster:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.KnuckleVarmodPimp,
                    WeaponComponentHash.KnuckleVarmodBallas,
                    WeaponComponentHash.KnuckleVarmodDollar,
                    WeaponComponentHash.KnuckleVarmodDiamond,
                    WeaponComponentHash.KnuckleVarmodHate,
                    WeaponComponentHash.KnuckleVarmodLove,
                    WeaponComponentHash.KnuckleVarmodPlayer,
                    WeaponComponentHash.KnuckleVarmodKing,
                    WeaponComponentHash.KnuckleVarmodVagos,
                });

            case WeaponHash.MachinePistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MachinePistolClip01,
                    WeaponComponentHash.MachinePistolClip02,
                    WeaponComponentHash.MachinePistolClip03,
                    WeaponComponentHash.AtPiSupp,
                });

            case WeaponHash.SwitchBlade:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SwitchbladeVarmodVar1,
                    WeaponComponentHash.SwitchbladeVarmodVar2,
                });

            case WeaponHash.Revolver:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.RevolverClip01,
                    WeaponComponentHash.RevolverVarmodBoss,
                    WeaponComponentHash.RevolverVarmodGoon,
                });
            }

            WeaponComponentHash[] result = null;

            for (int i = 0, count = Function.Call <int>(Native.Hash.GET_NUM_DLC_WEAPONS); i < count; i++)
            {
                unsafe
                {
                    DlcWeaponData weaponData;
                    if (Function.Call <bool>(Native.Hash.GET_DLC_WEAPON_DATA, i, &weaponData))
                    {
                        if (weaponData.Hash == hash)
                        {
                            result = new WeaponComponentHash[Function.Call <int>(Native.Hash.GET_NUM_DLC_WEAPON_COMPONENTS, i)];

                            for (int j = 0; j < result.Length; j++)
                            {
                                DlcWeaponComponentData componentData;
                                if (Function.Call <bool>(Native.Hash.GET_DLC_WEAPON_COMPONENT_DATA, i, j, &componentData))
                                {
                                    result[j] = componentData.Hash;
                                }
                                else
                                {
                                    result[j] = WeaponComponentHash.Invalid;
                                }
                            }
                            return(result);
                        }
                    }
                }
            }


            if (result == null)
            {
                result = new WeaponComponentHash[0];
            }

            return(result);
        }
Esempio n. 18
0
 public bool IsComponentActive(WeaponComponentHash component)
 {
     return(Function.Call <bool>(Native.Hash.HAS_PED_GOT_WEAPON_COMPONENT, _owner.Handle, Hash, component));
 }
Esempio n. 19
0
        private static WeaponComponentHash[] _GetComponentsFromHash(WeaponHash hash)
        {
            switch (hash)
            {
            case WeaponHash.Pistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.PistolClip01,
                    WeaponComponentHash.PistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp02,
                    WeaponComponentHash.PistolVarmodLuxe,
                });

            case WeaponHash.CombatPistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CombatPistolClip01,
                    WeaponComponentHash.CombatPistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.CombatPistolVarmodLowrider,
                });

            case WeaponHash.APPistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.APPistolClip01,
                    WeaponComponentHash.APPistolClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.APPistolVarmodLuxe,
                });

            case WeaponHash.MicroSMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MicroSMGClip01,
                    WeaponComponentHash.MicroSMGClip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.MicroSMGVarmodLuxe,
                });

            case WeaponHash.SMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SMGClip01,
                    WeaponComponentHash.SMGClip02,
                    WeaponComponentHash.SMGClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.AtScopeMacro02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.SMGVarmodLuxe,
                });

            case WeaponHash.AssaultRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AssaultRifleClip01,
                    WeaponComponentHash.AssaultRifleClip02,
                    WeaponComponentHash.AssaultRifleClip03,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AssaultRifleVarmodLuxe,
                });

            case WeaponHash.CarbineRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CarbineRifleClip01,
                    WeaponComponentHash.CarbineRifleClip02,
                    WeaponComponentHash.CarbineRifleClip03,
                    WeaponComponentHash.AtRailCover01,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.CarbineRifleVarmodLuxe,
                });

            case WeaponHash.AdvancedRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AdvancedRifleClip01,
                    WeaponComponentHash.AdvancedRifleClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.AdvancedRifleVarmodLuxe,
                });

            case WeaponHash.MG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MGClip01,
                    WeaponComponentHash.MGClip02,
                    WeaponComponentHash.AtScopeSmall02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.MGVarmodLowrider,
                });

            case WeaponHash.CombatMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CombatMGClip01,
                    WeaponComponentHash.CombatMGClip02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.CombatMGVarmodLowrider,
                });

            case WeaponHash.PumpShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AtSrSupp,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.PumpShotgunVarmodLowrider,
                });

            case WeaponHash.AssaultShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AssaultShotgunClip01,
                    WeaponComponentHash.AssaultShotgunClip02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtArSupp,
                });

            case WeaponHash.SniperRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SniperRifleClip01,
                    WeaponComponentHash.AtScopeLarge,
                    WeaponComponentHash.AtScopeMax,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.SniperRifleVarmodLuxe,
                });

            case WeaponHash.HeavySniper:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.HeavySniperClip01,
                    WeaponComponentHash.AtScopeLarge,
                    WeaponComponentHash.AtScopeMax,
                });

            case WeaponHash.GrenadeLauncher:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                });

            case WeaponHash.Minigun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MinigunClip01,
                });

            case WeaponHash.AssaultSMG:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AssaultSMGClip01,
                    WeaponComponentHash.AssaultSMGClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMacro,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AssaultSMGVarmodLowrider,
                });

            case WeaponHash.BullpupShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtArSupp02,
                });

            case WeaponHash.Pistol50:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.Pistol50Clip01,
                    WeaponComponentHash.Pistol50Clip02,
                    WeaponComponentHash.AtPiFlsh,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.Pistol50VarmodLuxe,
                });

            case WeaponHash.CombatPDW:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CombatPDWClip01,
                    WeaponComponentHash.CombatPDWClip02,
                    WeaponComponentHash.CombatPDWClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArAfGrip,
                });

            case WeaponHash.SawnOffShotgun:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SawnoffShotgunVarmodLuxe,
                });

            case WeaponHash.BullpupRifle:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.BullpupRifleClip01,
                    WeaponComponentHash.BullpupRifleClip02,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeSmall,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.BullpupRifleVarmodLow,
                });

            case WeaponHash.SNSPistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SNSPistolClip01,
                    WeaponComponentHash.SNSPistolClip02,
                    WeaponComponentHash.SNSPistolVarmodLowrider,
                });

            case WeaponHash.SpecialCarbine:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SpecialCarbineClip01,
                    WeaponComponentHash.SpecialCarbineClip02,
                    WeaponComponentHash.SpecialCarbineClip03,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtScopeMedium,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AtArAfGrip,
                    WeaponComponentHash.SpecialCarbineVarmodLowrider,
                });

            case WeaponHash.KnuckleDuster:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.KnuckleVarmodPimp,
                    WeaponComponentHash.KnuckleVarmodBallas,
                    WeaponComponentHash.KnuckleVarmodDollar,
                    WeaponComponentHash.KnuckleVarmodDiamond,
                    WeaponComponentHash.KnuckleVarmodHate,
                    WeaponComponentHash.KnuckleVarmodLove,
                    WeaponComponentHash.KnuckleVarmodPlayer,
                    WeaponComponentHash.KnuckleVarmodKing,
                    WeaponComponentHash.KnuckleVarmodVagos,
                });

            case WeaponHash.MachinePistol:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.MachinePistolClip01,
                    WeaponComponentHash.MachinePistolClip02,
                    WeaponComponentHash.MachinePistolClip03,
                    WeaponComponentHash.AtPiSupp,
                });

            case WeaponHash.SwitchBlade:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SwitchbladeVarmodVar1,
                    WeaponComponentHash.SwitchbladeVarmodVar2,
                });

            case WeaponHash.Revolver:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.RevolverClip01,
                    WeaponComponentHash.RevolverVarmodBoss,
                    WeaponComponentHash.RevolverVarmodGoon,
                });

            // GUNRUNNING
            case WeaponHash.PistolMk2:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.PistolMk2ClipNormal,
                    WeaponComponentHash.PistolMk2ClipExtended,
                    WeaponComponentHash.PistolMk2ClipFMJ,
                    WeaponComponentHash.PistolMk2ClipHollowpoint,
                    WeaponComponentHash.PistolMk2ClipIncendiary,
                    WeaponComponentHash.PistolMk2ClipTracer,
                    WeaponComponentHash.PistolMk2Scope,
                    WeaponComponentHash.PistolMk2Flash,
                    WeaponComponentHash.AtPiSupp02,
                    WeaponComponentHash.PistolMk2Compensator,
                    WeaponComponentHash.PistolMk2CamoDigital,
                    WeaponComponentHash.PistolMk2CamoBrushstroke,
                    WeaponComponentHash.PistolMk2CamoWoodland,
                    WeaponComponentHash.PistolMk2CamoSkull,
                    WeaponComponentHash.PistolMk2CamoSessanta,
                    WeaponComponentHash.PistolMk2CamoPerseus,
                    WeaponComponentHash.PistolMk2CamoLeopard,
                    WeaponComponentHash.PistolMk2CamoZebra,
                    WeaponComponentHash.PistolMk2CamoGeometric,
                    WeaponComponentHash.PistolMk2CamoBoom,
                    WeaponComponentHash.PistolMk2CamoPatriotic,
                    WeaponComponentHash.PistolMk2CamoSlideDigital,
                    WeaponComponentHash.PistolMk2CamoSlideBrushstroke,
                    WeaponComponentHash.PistolMk2CamoSlideWoodland,
                    WeaponComponentHash.PistolMk2CamoSlideSkull,
                    WeaponComponentHash.PistolMk2CamoSlideSessanta,
                    WeaponComponentHash.PistolMk2CamoSlidePerseus,
                    WeaponComponentHash.PistolMk2CamoSlideLeopard,
                    WeaponComponentHash.PistolMk2CamoSlideZebra,
                    WeaponComponentHash.PistolMk2CamoSlideGeometric,
                    WeaponComponentHash.PistolMk2CamoSlideBoom,
                    WeaponComponentHash.PistolMk2CamoSlidePatriotic,
                });

            case WeaponHash.AssaultRifleMk2:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.AssaultRifleMk2ClipNormal,
                    WeaponComponentHash.AssaultRifleMk2ClipExtended,
                    WeaponComponentHash.AssaultRifleMk2ClipArmorPiercing,
                    WeaponComponentHash.AssaultRifleMk2ClipFMJ,
                    WeaponComponentHash.AssaultRifleMk2ClipIncendiary,
                    WeaponComponentHash.AssaultRifleMk2ClipTracer,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.AtSights,
                    WeaponComponentHash.AtScopeMacroMk2,
                    WeaponComponentHash.AtScopeMediumMk2,
                    WeaponComponentHash.AtArSupp02,
                    WeaponComponentHash.AtMuzzle1,
                    WeaponComponentHash.AtMuzzle2,
                    WeaponComponentHash.AtMuzzle3,
                    WeaponComponentHash.AtMuzzle4,
                    WeaponComponentHash.AtMuzzle5,
                    WeaponComponentHash.AtMuzzle6,
                    WeaponComponentHash.AtMuzzle7,
                    WeaponComponentHash.AtArAfGrip2,
                    WeaponComponentHash.AssaultRifleMk2BarrelNormal,
                    WeaponComponentHash.AssaultRifleMk2BarrelHeavy,
                    WeaponComponentHash.AssaultRifleMk2CamoDigital,
                    WeaponComponentHash.AssaultRifleMk2CamoBrushstroke,
                    WeaponComponentHash.AssaultRifleMk2CamoWoodland,
                    WeaponComponentHash.AssaultRifleMk2CamoSkull,
                    WeaponComponentHash.AssaultRifleMk2CamoSessanta,
                    WeaponComponentHash.AssaultRifleMk2CamoPerseus,
                    WeaponComponentHash.AssaultRifleMk2CamoLeopard,
                    WeaponComponentHash.AssaultRifleMk2CamoZebra,
                    WeaponComponentHash.AssaultRifleMk2CamoGeometric,
                    WeaponComponentHash.AssaultRifleMk2CamoBoom,
                    WeaponComponentHash.AssaultRifleMk2CamoPatriotic,
                });

            case WeaponHash.CarbineRifleMk2:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CarbineRifleMk2ClipNormal,
                    WeaponComponentHash.CarbineRifleMk2ClipExtended,
                    WeaponComponentHash.CarbineRifleMk2ClipArmorPiercing,
                    WeaponComponentHash.CarbineRifleMk2ClipFMJ,
                    WeaponComponentHash.CarbineRifleMk2ClipIncendiary,
                    WeaponComponentHash.CarbineRifleMk2ClipTracer,
                    WeaponComponentHash.AtSights,
                    WeaponComponentHash.AtScopeMacroMk2,
                    WeaponComponentHash.AtScopeMediumMk2,
                    WeaponComponentHash.AtArAfGrip2,
                    WeaponComponentHash.CarbineRifleMk2BarrelNormal,
                    WeaponComponentHash.CarbineRifleMk2BarrelHeavy,
                    WeaponComponentHash.AtArSupp,
                    WeaponComponentHash.AtMuzzle1,
                    WeaponComponentHash.AtMuzzle2,
                    WeaponComponentHash.AtMuzzle3,
                    WeaponComponentHash.AtMuzzle4,
                    WeaponComponentHash.AtMuzzle5,
                    WeaponComponentHash.AtMuzzle6,
                    WeaponComponentHash.AtMuzzle7,
                    WeaponComponentHash.CarbineRifleMk2CamoDigital,
                    WeaponComponentHash.CarbineRifleMk2CamoBrushstroke,
                    WeaponComponentHash.CarbineRifleMk2CamoWoodland,
                    WeaponComponentHash.CarbineRifleMk2CamoSkull,
                    WeaponComponentHash.CarbineRifleMk2CamoSessanta,
                    WeaponComponentHash.CarbineRifleMk2CamoPerseus,
                    WeaponComponentHash.CarbineRifleMk2CamoLeopard,
                    WeaponComponentHash.CarbineRifleMk2CamoZebra,
                    WeaponComponentHash.CarbineRifleMk2CamoGeometric,
                    WeaponComponentHash.CarbineRifleMk2CamoBoom,
                    WeaponComponentHash.CarbineRifleMk2CamoPatriotic,
                });

            case WeaponHash.CombatMGMk2:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.CombatMGMk2ClipNormal,
                    WeaponComponentHash.CombatMGMk2ClipExtended,
                    WeaponComponentHash.CombatMGMk2ClipArmorPiercing,
                    WeaponComponentHash.CombatMGMk2ClipFMJ,
                    WeaponComponentHash.CombatMGMk2ClipIncendiary,
                    WeaponComponentHash.CombatMGMk2ClipTracer,
                    WeaponComponentHash.AtSights,
                    WeaponComponentHash.AtScopeSmallMk2,
                    WeaponComponentHash.AtScopeMediumMk2,
                    WeaponComponentHash.AtMuzzle1,
                    WeaponComponentHash.AtMuzzle2,
                    WeaponComponentHash.AtMuzzle3,
                    WeaponComponentHash.AtMuzzle4,
                    WeaponComponentHash.AtMuzzle5,
                    WeaponComponentHash.AtMuzzle6,
                    WeaponComponentHash.AtMuzzle7,
                    WeaponComponentHash.AtArAfGrip2,
                    WeaponComponentHash.CombatMGMk2BarrelNormal,
                    WeaponComponentHash.CombatMGMk2BarrelHeavy,
                    WeaponComponentHash.CombatMGMk2CamoDigital,
                    WeaponComponentHash.CombatMGMk2CamoBrushstroke,
                    WeaponComponentHash.CombatMGMk2CamoWoodland,
                    WeaponComponentHash.CombatMGMk2CamoSkull,
                    WeaponComponentHash.CombatMGMk2CamoSessanta,
                    WeaponComponentHash.CombatMGMk2CamoPerseus,
                    WeaponComponentHash.CombatMGMk2CamoLeopard,
                    WeaponComponentHash.CombatMGMk2CamoZebra,
                    WeaponComponentHash.CombatMGMk2CamoGeometric,
                    WeaponComponentHash.CombatMGMk2CamoBoom,
                    WeaponComponentHash.CombatMGMk2CamoPatriotic,
                });

            case WeaponHash.HeavySniperMk2:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.HeavySniperMk2ClipNormal,
                    WeaponComponentHash.HeavySniperMk2ClipExtended,
                    WeaponComponentHash.HeavySniperMk2ClipArmorPiercing,
                    WeaponComponentHash.HeavySniperMk2ClipExplosive,
                    WeaponComponentHash.HeavySniperMk2ClipFMJ,
                    WeaponComponentHash.HeavySniperMk2ClipIncendiary,
                    WeaponComponentHash.HeavySniperMk2ScopeLarge,
                    WeaponComponentHash.AtScopeMax,
                    WeaponComponentHash.HeavySniperMk2ScopeNightvision,
                    WeaponComponentHash.HeavySniperMk2ScopeThermal,
                    WeaponComponentHash.HeavySniperMk2Suppressor,
                    WeaponComponentHash.HeavySniperMk2Muzzle8,
                    WeaponComponentHash.HeavySniperMk2Muzzle9,
                    WeaponComponentHash.HeavySniperMk2BarrelNormal,
                    WeaponComponentHash.HeavySniperMk2BarrelHeavy,
                    WeaponComponentHash.HeavySniperMk2CamoDigital,
                    WeaponComponentHash.HeavySniperMk2CamoBrushstroke,
                    WeaponComponentHash.HeavySniperMk2CamoWoodland,
                    WeaponComponentHash.HeavySniperMk2CamoSkull,
                    WeaponComponentHash.HeavySniperMk2CamoSessanta,
                    WeaponComponentHash.HeavySniperMk2CamoPerseus,
                    WeaponComponentHash.HeavySniperMk2CamoLeopard,
                    WeaponComponentHash.HeavySniperMk2CamoZebra,
                    WeaponComponentHash.HeavySniperMk2CamoGeometric,
                    WeaponComponentHash.HeavySniperMk2CamoBoom,
                    WeaponComponentHash.HeavySniperMk2CamoPatriotic,
                });

            case WeaponHash.SMGMk2:
                return(new WeaponComponentHash[]
                {
                    WeaponComponentHash.SMGMk2ClipNormal,
                    WeaponComponentHash.SMGMk2ClipExtended,
                    WeaponComponentHash.SMGMk2ClipFMJ,
                    WeaponComponentHash.SMGMk2ClipHollowpoint,
                    WeaponComponentHash.SMGMk2ClipIncendiary,
                    WeaponComponentHash.SMGMk2ClipTracer,
                    WeaponComponentHash.AtArFlsh,
                    WeaponComponentHash.SMGMk2Sights,
                    WeaponComponentHash.SMGMk2ScopeMacro,
                    WeaponComponentHash.SMGMk2ScopeSmall,
                    WeaponComponentHash.AtPiSupp,
                    WeaponComponentHash.SMGMk2BarrelNormal,
                    WeaponComponentHash.SMGMk2BarrelHeavy,
                    WeaponComponentHash.AtMuzzle1,
                    WeaponComponentHash.AtMuzzle2,
                    WeaponComponentHash.AtMuzzle3,
                    WeaponComponentHash.AtMuzzle4,
                    WeaponComponentHash.AtMuzzle5,
                    WeaponComponentHash.AtMuzzle6,
                    WeaponComponentHash.AtMuzzle7,
                    WeaponComponentHash.SMGMk2CamoDigital,
                    WeaponComponentHash.SMGMk2CamoBrushstroke,
                    WeaponComponentHash.SMGMk2CamoWoodland,
                    WeaponComponentHash.SMGMk2CamoSkull,
                    WeaponComponentHash.SMGMk2CamoSessanta,
                    WeaponComponentHash.SMGMk2CamoPerseus,
                    WeaponComponentHash.SMGMk2CamoLeopard,
                    WeaponComponentHash.SMGMk2CamoZebra,
                    WeaponComponentHash.SMGMk2CamoGeometric,
                    WeaponComponentHash.SMGMk2CamoBoom,
                    WeaponComponentHash.SMGMk2CamoPatriotic,
                });
            }

            WeaponComponentHash[] result = null;

            for (int i = 0, count = API.GetNumDlcWeapons(); i < count; i++)
            {
                unsafe
                {
                    DlcWeaponData weaponData;
                    if (Function.Call <bool>(Hash.GET_DLC_WEAPON_DATA, i, &weaponData))
                    {
                        if (weaponData.Hash == hash)
                        {
                            result = new WeaponComponentHash[API.GetNumDlcWeaponComponents(i)];

                            for (int j = 0; j < result.Length; j++)
                            {
                                DlcWeaponComponentData componentData;
                                if (Function.Call <bool>(Hash.GET_DLC_WEAPON_COMPONENT_DATA, i, j, &componentData))
                                {
                                    result[j] = componentData.Hash;
                                }
                                else
                                {
                                    result[j] = WeaponComponentHash.Invalid;
                                }
                            }
                            return(result);
                        }
                    }
                }
            }


            if (result == null)
            {
                result = new WeaponComponentHash[0];
            }

            return(result);
        }
 internal WeaponComponent(Ped owner, Weapon weapon, WeaponComponentHash component)
 {
     this._owner     = owner;
     this._weapon    = weapon;
     this._component = component;
 }