Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. Los Santos Drug Wars
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

    3. Suggestions

Happy Holidays from the GTANet team!

Determine whether weapon has suppressor equipped or whether ped was ki


Prof_Farnsworth
 Share

Recommended Posts

Prof_Farnsworth

As the title states does anyone know how to retrieve this information from a weapon or tell whether a ped was killed with a suppressor?

 

Any help is appreciated, thanks.

 

Prof

Edited by Prof_Farnsworth
Link to comment
Share on other sites

As the title states does anyone know how to retrieve this information from a weapon or tell whether a ped was killed with a suppressor?

 

Any help is appreciated, thanks.

 

Prof

 

There is a function

WEAPON::IS_PED_WEAPON_COMPONENT_ACTIVE

Do you think that if that returns true and the ped gets a kill, you can assume it was with the suppressor?

 

edit:

 

like if IS_PED_WEAPON_COMPONENT_ACTIVE returns supressor as true and (deceased) was killed by Ped with suppressor true, then (deceased) was killed with a suppressor?

Edited by Colata
Link to comment
Share on other sites

Prof_Farnsworth

Thanks for the reply. Guess I'll need to do some testing.

Link to comment
Share on other sites

Here is some C# code, not sure what language you use, but:

int weaponComponentHash = Function.Call<int>(Hash.GET_HASH_KEY, "COMPONENT_AT_PI_SUPP");bool hasWeaponGotComponent = Function.Call<bool>(Hash.HAS_PED_GOT_WEAPON_COMPONENT, Game.Player.Character, (int) WeaponHash.APPistol, weaponComponentHash);

This will check if AP Pistol has a suppressor. Below are the possible suppressor components (i believe it's all of them):

  • COMPONENT_AT_PI_SUPP
  • COMPONENT_AT_PI_SUPP_02
  • COMPONENT_AT_AR_SUPP
  • COMPONENT_AT_AR_SUPP_02
  • COMPONENT_AT_SR_SUPP
  • COMPONENT_AT_SR_SUPP_02

so you could do something like:

List<string> weaponComponentList = new List<string>(){    "COMPONENT_AT_PI_SUPP", "COMPONENT_AT_PI_SUPP_02", "COMPONENT_AT_AR_SUPP",    "COMPONENT_AT_AR_SUPP_02", "COMPONENT_AT_SR_SUPP", "COMPONENT_AT_SR_SUPP_02"};foreach (WeaponHash weapon in Enum.GetValues(typeof(WeaponHash))){    foreach (string weaponComponent in weaponComponentList)    {        int weaponComponentHash = Function.Call<int>(Hash.GET_HASH_KEY, weaponComponent);        bool hasWeaponGotComponent = Function.Call<bool>(Hash.HAS_PED_GOT_WEAPON_COMPONENT, Game.Player.Character, (int) weapon, weaponComponentHash);        if (hasWeaponGotComponent && Game.Player.Character.Weapons.Current.Hash == weapon)        {            // Code goes here.        }    }}

This was just quick from the top of my head, there might be a better way around it. You could probably instead of checking for all weapons and comparing them with your current weapon just check for the weapon the player is currently using, changing to the following:

bool hasWeaponGotComponent = Function.Call<bool>(Hash.HAS_PED_GOT_WEAPON_COMPONENT, Game.Player.Character, (int) Game.Player.Character.Weapons.Current.Hash, weaponComponentHash);

this way you would not need the first foreach :-)

Edited by frodzet
  • Like 1
Link to comment
Share on other sites

Prof_Farnsworth

Here is some C# code, not sure what language you use, but:

int weaponComponentHash = Function.Call<int>(Hash.GET_HASH_KEY, "COMPONENT_AT_PI_SUPP");bool hasWeaponGotComponent = Function.Call<bool>(Hash.HAS_PED_GOT_WEAPON_COMPONENT, Game.Player.Character, (int) WeaponHash.APPistol, weaponComponentHash);

This will check if AP Pistol has a suppressor. Below are the possible suppressor components (i believe it's all of them):

  • COMPONENT_AT_PI_SUPP
  • COMPONENT_AT_PI_SUPP_02
  • COMPONENT_AT_AR_SUPP
  • COMPONENT_AT_AR_SUPP_02
  • COMPONENT_AT_SR_SUPP
  • COMPONENT_AT_SR_SUPP_02

so you could do something like:

List<string> weaponComponentList = new List<string>(){    "COMPONENT_AT_PI_SUPP", "COMPONENT_AT_PI_SUPP_02", "COMPONENT_AT_AR_SUPP",    "COMPONENT_AT_AR_SUPP_02", "COMPONENT_AT_SR_SUPP", "COMPONENT_AT_SR_SUPP_02"};foreach (WeaponHash weapon in Enum.GetValues(typeof(WeaponHash))){    foreach (string weaponComponent in weaponComponentList)    {        int weaponComponentHash = Function.Call<int>(Hash.GET_HASH_KEY, weaponComponent);        bool hasWeaponGotComponent = Function.Call<bool>(Hash.HAS_PED_GOT_WEAPON_COMPONENT, Game.Player.Character, (int) weapon, weaponComponentHash);        if (hasWeaponGotComponent && Game.Player.Character.Weapons.Current.Hash == weapon)        {            // Code goes here.        }    }}

This was just quick from the top of my head, there might be a better way around it. You could probably instead of checking for all weapons and comparing them with your current weapon just check for the weapon the player is currently using, changing to the following:

bool hasWeaponGotComponent = Function.Call<bool>(Hash.HAS_PED_GOT_WEAPON_COMPONENT, Game.Player.Character, (int) Game.Player.Character.Weapons.Current.Hash, weaponComponentHash);

this way you would not need the first foreach :-)

My man! Thanks a bunch. The specific components were what I was looking for. You just saved me a bunch of time. I appreciate it.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.