Lookup RedM game-data asset (ped/weapon/object/door/vehicle)
asset_lookupResolve a RedM/RDR3 game-data asset (ped model, weapon, object, door, vehicle) by exact name, 32-bit hash, or partial-name search. O(1) structured lookup over pre-parsed rdr3_discoveries tables (~22,500 entries, mostly objects). Returns type, name, normalized hash (0x + 8 uppercase hex), source file + line, plus type-specific metadata (peds: variants + relationship, weapons: group, doors: coords + model_hash, objects: category/subcategory).
NOT for:
Script natives (
SET_ENTITY_COORDS, hashes fromCitizen.InvokeNative(0x...)) — uselookup_native. Native hashes are 64-bit (0x06843DA7060A026B); asset hashes are 32-bit (0xBCFD0E7F).Animations, clothing, audio, flags, controls, bones — use
discovery_lookup. Clipsets/scenario keys (MP_Style_Casual,MAGGIE_SEAT_CHAIR_DESK_WRITING) — usegrep_docs.Places ("Valentine sheriff", coords) — use
location_lookup. Behavior queries — usesemantic_search.
Pass exactly ONE of name / hash / search. Optional type narrows ("horse" hits peds and vehicles). type reflects the SOURCE FILE: mp006_p_mshine_int_door01x is both type=object (the model) and type=door (lockable in-world doors with coords, one row per instance). Search mode: responseFormat: "concise" returns metadata as {}; default detailed. A miss returns suggestions + a hint naming the right tool.
Examples:
{name: "a_c_bear_01"}→ ped, variants=11, relationship=REL_WILD_ANIMAL_PREDATOR.{hash: "0xBCFD0E7F"}→ peda_c_bear_01(0xoptional).{search: "lemat", type: "weapon"}→weapon_revolver_lemat.{search: "moonshine", type: "door"}→ fuzzy trigram fallback →mp006_p_mshine_int_door01x(matchType: fuzzy).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hash | No | Asset hash (32-bit jenkins) in HEX format, case-insensitive, `0x` prefix optional. Examples: `0xBCFD0E7F`, `bcfd0e7f`. Use when you have a hash from decompiled code or another table and need the canonical name + metadata. Decimal-formatted hashes (e.g. `1946191463`) are NOT accepted — convert to hex first (`(1946191463).toString(16)`). | |
| name | No | Exact asset name, case-insensitive. Examples: `a_c_bear_01`, `weapon_pistol_volcanic`, `p_safe01`, `armysupplywagon`. Use when you know the precise name. | |
| type | No | Filter results to one category. Useful when a name fragment matches multiple types (e.g. `horse` hits peds + vehicles). | |
| limit | No | Max matches to return. Default 5, max 50. Only applies to `search` — exact `name`/`hash` always return 0 or 1. | |
| search | No | Substring fragment within asset name, case-insensitive. Examples: `lemat`, `norfolk`, `volcanic`. Use when you remember part of the name. Algorithm: exact substring (ILIKE) first; if zero hits, falls back to pg_trgm `strict_word_similarity` ≥0.4 — catches abbreviation gaps like `moonshine`↔`_mshine_` when narrowed by `type` (without `type`, common terms find substring matches first and fuzzy never fires). `matchType` in the response tells you which path hit: `search` = exact substring, `fuzzy` = trigram. | |
| responseFormat | No | Search mode only. `detailed` (default): full records. `concise`: type/name/hash/source per hit with `metadata: {}` — cheap scan of many matches; then `asset_lookup({ name })` for the one you want. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hint | Yes | ||
| assets | Yes | ||
| status | Yes | ||
| hashFormat | Yes | ||
| suggestions | Yes |