WELCOME TO INFOCHEATS.NET

INFOCHEATS is a community-driven platform focused on free game cheats, cheat development, and verified commercial software for a wide range of popular games. We provide a large collection of free cheats shared by the community. All public releases are checked for malicious code to reduce the risk of viruses, malware, or unwanted software before users interact with them.

Alongside free content, INFOCHEATS hosts an active marketplace with many independent sellers offering commercial cheats. Each product is discussed openly, with user feedback, reviews, and real usage experience available to help you make informed decisions before purchasing.

Whether you are looking for free cheats, exploring paid solutions, comparing sellers, or studying how cheats are developed and tested, INFOCHEATS brings everything together in one place — transparently and community-driven.

Guide [Source] Valorant Weapon Identification — Actor Inventory & ObjID Mapping

byte_corvus

Newbie
Newbie
Newbie
Newbie
Status
Offline
Joined
Mar 3, 2026
Messages
595
Reaction score
7
Dealing with weapon strings and ability IDs in Valorant usually leads down a rabbit hole of traversing the Actor inventory. If you are building an ESP or logic-based trigger and need to know exactly what the pawn is holding—be it a Vandal or a specific agent utility like Omen's Dark Cover—you need a reliable way to map internal IDs.

Inventory Traversal Logic

The standard way to pull this is by reading the inventory from the Actor, getting the current equippable object, and then grabbing the unique ID associated with that object. Most external bases using a kernel driver setup will look something like this:

Code:
inline auto GetCurrentWeapon(uintptr_t Actor) -> std::string {
    auto Inventory = Driver::Read<intptr_t>(Actor + Offsets::Inventory);
    intptr_t CurrentEquip = Driver::Read<intptr_t>(Inventory + Offsets::CurrentEquipable);
    int weaponObj = Driver::Read<int>(CurrentEquip + Offsets::ObjID);
    return GetWeaponName(weaponObj);
}

Weapon and Ability ID Mapping

Since Vanguard tends to shuffle things or use specific identifiers for every piece of utility, a hardcoded switch-case is the path of least resistance for most public pastes. I've compiled a list of the common IDs for weapons, spikes, and agent-specific utility (Neon, Fade, Chamber, etc.).

  1. Melee/Sidearms: Knife (14391538), Classic (14228826), Frenzy (14318008), Ghost (14332155), Sheriff (14337836)
  2. SMGs/Shotguns: Stinger (14381675), Spectre (14372761), Bucky (14311523), Judge (14307093)
  3. Rifles: Vandal (14282114), Phantom (14296107), Bulldog (14291226), Guardian (14359498)
  4. Snipers/Heavies: Operator (14348192), Marshal (14367503), Ares (14277573), Odin (14273931)
  5. Utility: Spike (14246916), Defuser (14246939), various Agent Orbs and Ults.

Code:
FINLINE auto GetWeaponName(int id) -> std::string {
    switch (id)
    {
    case 14391538:  return "Knife"; break;
    case 14228826:  return "Classic"; break;
    case 14344465:  return "Shorty"; break;
    case 14337836:  return "Sheriff"; break;
    case 14282114:  return "Vandal"; break;
    case 14296107:  return "Phantom"; break;
    case 14213404:  return "TOUR DE FORCE"; break;
    case 14225817:  return "Neon Ult"; break;
    case 0: return "AFK"; break;
    // Full list includes all agent utility like Boom Bot, Seize, etc.
    }
}

Technical Notes & Implementation

  1. Architecture: This is typically used in external projects calling `RPM` (ReadProcessMemory) through a driver. If you're internal, you'd just cast the pointer and access the member.
  2. Performance: Running this every frame for every actor is a waste of cycles. Cache the weapon name and only update when the `CurrentEquipable` pointer changes.
  3. The ObjID Offset: There's some debate on the static nature of the ObjID offset across patches. While the values above are fixed identifiers, the offset to reach them within the equippable object can shift.

Does anyone have the updated ObjID offset for the latest build, or are you all moving towards fetching the decrypt name directly from the FName pool?
 
Top