Developer tools

Game Data Browser – Must have tool for every FiveM developer – search & live-preview 453,528 assets

v1.1.0

€19.90
  • Download from your account right after payment
  • Payment through Stripe
  • Full source code. No escrow, no license checks.
  • Free updates while the script is maintained

Read it before you buy

These are the same files that come in the download, updated with every release.

lastresort_gamedata

The GTA V game data browser, in game. Search any asset, see it in the world a second later, and copy a working code example with the exact names already filled in.

LastResort Development · intelnpc.com


What it is

You need a toolbox prop. Today that means a wiki list, a guessed name, an alt-tab, a spawn that produces nothing, and another guess.

With this installed you type toolbox, arrow down, press Enter, and it is standing in front of you. Press Alt+C and a working snippet is on your clipboard.

  • Instant search — every keystroke scans the whole index in a few milliseconds
  • One-click preview in the world, with rotate and zoom
  • 33,912 dumped world positions — every ATM, gas pump, bus stop and jukebox — each one a place you can stand in front of, sorted nearest first
  • A copy-ready Lua example for 42 of the 46 categories, verified before release
  • Session picks, per-admin favourites, and a live activity timeline
  • One panic action that ends every preview, effect and filter server-wide
  • Standalone. ESX, QBCore and QBox are detected automatically, never required
  • Open source. No escrow, no obfuscation, no fxap

What is in it

Group Categories Entries
Spawn — props, vehicles, peds, weapons, components, pickups 6 24,429
Motion — animations, scenarios, clipsets, damage packs, waypoints 5 21,906
Effects — particles, timecycles, screen effects, explosions, camera shakes 5 4,279
Looks — clothing, ped props, tattoos, mod kits, liveries, colours 6 39,841
World — IPLs, interiors, zones, garages, world locations 5 1,443
Audio — sounds, speech, radio, music, scenes, banks, alarms, reports 12 7,932
Reference — shaders, handling, flags, restriction tags 7 3,112
Total 46 102,942

Plus 269,414 animation clips, 81,206 speech lines and 33,912 world placements, sharded and loaded on demand so they cost nothing until you open the dictionary, voice or location group that holds them.

41 of the 46 categories preview in the world. Four of the rest are reference data with no native that accepts them. The fifth, scenario groups, has a native but previewing one re-populates the world around you, so it ships as search-only. Either way the browser says so on the entry rather than failing when you press Enter.

World locations

Pick World Locations, choose a group, and the entry lists the placements nearest you first with the map zone each one sits in. Press Enter and you are standing at it. The coordinates come from Rockstar's own placement dumps — 121 ATMs, 157 gas pumps, 345 vending machines, 48 bus stops, 6 jukeboxes, 8,065 seats — not from anybody's guess. Each one is labelled with the map zone its coordinate falls inside, so you pick "the one in Vespucci Beach" from the list rather than counting metres.

IPLs, MLO interiors, garages and static emitters carry the same zone label now, so their detail pane says where they are instead of only what they are called. Search still matches the name; the zone is a label you read, not a term you type.

Built from GTA V v3717.0 (Online 1.72), DLC mp2025_02_g9ec.


Requirements

  • A FiveM server with OneSync enabled
  • No database, no dependencies, no framework

Install

  1. Drop lastresort_gamedata into your resources folder.

  2. Add to server.cfg:

    ensure lastresort_gamedata
  3. Give yourself permission:

    add_ace group.admin lastresort_gamedata.browse allow
    add_ace group.admin lastresort_gamedata.elevated allow
  4. Restart, then press F10 or type /gdb.

Full detail, including how to grant access without ACE, in INSTALLATION.md.


Permissions

Permission Grants
lastresort_gamedata.browse open the browser, search, preview, copy snippets
lastresort_gamedata.elevated weapons, explosions, IPLs, interiors, cutscenes, world toggles, own-ped playback, the visible-preview flag, and the server-wide panic stop

Without browse the command does nothing. Categories needing elevated show a padlock and cannot be previewed.

Permissions are decided server-side and pushed to the client, which is told what it may do rather than asked. The actions that leave your machine — the panic broadcast, favourites and reports — are re-checked on the server when they arrive.


Commands

Prefix is configurable — Config.Command, default gdb.

Command Does
/gdb open the browser
/gdb find <term> open it already searching
/gdb take send the current entry's name to chat, console and the pick list
/gdb waypoint travel to the waypoint set on your map
/gdb back return to where the first preview moved you from
/gdb stopall panic: end every preview, effect and filter, everywhere
/gdb debug toggle the live state overlay
/gdbdebug the same overlay, as its own command and optional keybind
/gdb demo [tour\|<category>] scripted showcase, built for recording
/gdb report write a diagnostic file and print its path
/gdb notifyreset retry notification providers previously marked broken

Keyboard

Key Action
F10 open the browser (rebindable in FiveM's key settings)
/ jump to the search field
move through results
PgUp PgDn move a page at a time
Enter preview the selected entry
Alt+T take — name to chat, console and pick list
Alt+F toggle favourite
Alt+C copy the snippet
Delete stop everything
Esc close, leaving the preview standing

RegisterKeyMapping supplies a default, not a binding: FiveM writes the mapping into the player's own fivem.cfg the first time it sees it, and the stored line wins from then on. A key mapping registered against a fixed command name is therefore frozen at whatever default shipped first — every later change to Config.Keybind.Open is ignored.

The key is part of the mapped command name here (gdb_open_f10), so changing Config.Keybind.Open produces a mapping FiveM has never seen and the new default applies immediately, on every client.

One thing the resource cannot undo: a bind written by an earlier version still sits in that client's fivem.cfg as a plain console line, pointing at gdb. It will keep working alongside the new key until the player removes it, from the F8 console:

unbind keyboard f7

The search field holds focus from the moment the browser opens, which is why take, favourite and copy are on Alt — a bare T belongs to whatever you are typing. T, F and C on their own still work once the search field does not have focus.

While the browser is open the game does not receive your keystrokes, so typing a search term never moves your character.

Closing with Esc deliberately leaves the preview in the world, so you can look at it without the panels in the way. Stop all, Delete or /gdb stopall clears it.


Config

Everything is in config/config.lua. The defaults are release defaults: safe on a live server, and the demo works with no edits.

Key Default Does
Config.Enabled true master switch
Config.Debug false console logging; turn on when reporting a problem
Config.Command 'gdb' command prefix
Config.Keybind.Open 'F10' opening key; Enabled = false removes it
Config.Dev.Enabled false with BypassPermissions, grants every player full access — test servers only
Config.Permissions.Identifiers {} identifiers granted browse access without ACE
Config.Permissions.ElevatedIdentifiers {} identifiers granted full access without ACE
Config.Categories.* true per-category switch; a disabled category vanishes from the GUI
Config.Ui.Scale 0 0 scales the GUI to screen height; any other value forces that zoom
Config.Ui.Theme all empty recolour the GUI without touching CSS — see below
Config.Preview.Distance 2.5 how far in front the preview sits
Config.Preview.KeepOnClose true the preview survives closing the GUI
Config.Preview.Visible false make previews visible to other players (needs elevated)
Config.Preview.LoadTimeout 10000 ms before a streaming request is abandoned
Config.Preview.MannequinModel mp_m_freemode_01 ped used for animation, clothing and weapon previews
Config.Preview.PedsOnSelf true previewing a ped model turns you into it; false spawns it in front of you instead
Config.Search.IncludeClipsInGlobalSearch false fold all 269,414 clips into cross-category search — see the cost below
Config.Search.MaxPlaces 300 how many of a location group's placements the nearest list holds; the panel always shows the true total beside it
Config.Effects.ExplosionDamageScale 1.0 explosion size and damage radius; still audible and visible at 0.0
Config.Notify.Provider 'auto' 'auto', 'lastresort_notify', 'ox_lib' or 'builtin'
Config.Picks.MaxFavorites 500 per-admin favourite cap
Config.RateLimit 20 / 10s per-source net event limit

A config you have edited is never overwritten by an update: shared/defaults.lua fills in only the keys a new version added.

Recolouring the GUI

Config.Ui.Theme maps design tokens to CSS colours. An empty string keeps the shipped value, so you only fill in what you want to change:

Config.Ui = {
    Scale = 0,
    Theme = {
        ['accent'] = '#00FF88',
        ['bg-base'] = '#0B0F14',
    },
}
Token Colours
accent, accent-hover buttons, active states, the search caret
cyan keyboard focus rings and secondary highlights
bg-base, bg-surface, bg-raised the three panel depths
text-primary body text
dusk-pink, dusk-violet, dusk-orange the gradient along the top edge

Any value CSS accepts works. Contrast is your responsibility once you override these; the shipped palette is checked against WCAG AA.

Config.Search.IncludeClipsInGlobalSearch = true makes all 269,414 clip names searchable alongside everything else, so you can find idle_intro without knowing which of the 20,179 dictionaries holds it. A clip result carries its dictionary, and previewing one plays that exact clip.

It is off by default because it is not free. Measured in Chromium at 1080p:

Index load Worst keystroke
Off (the core index alone) 266 ms 47 ms
On (core index plus every clip) 456 ms 149 ms

Both are one-off costs inside the browser — neither touches server tick or resmon. Turn it on if you work with animations often and can live with a slower single-character search.


For other resources

The index is queryable by any script. This product needs nothing from anyone; anyone may use it. Exports exist on client and server.

local matches = exports.lastresort_gamedata:Search('toolbox', { limit = 10 })
for _, record in ipairs(matches) do
    print(record.category, record.name)
end

local adder = exports.lastresort_gamedata:Lookup('vehicles', 'adder')
print(adder.label, adder.class, adder.seats)

local snippet = exports.lastresort_gamedata:GetSnippet(adder)

for _, category in ipairs(exports.lastresort_gamedata:GetCategories()) do
    print(category.key, category.count)
end

local clips = exports.lastresort_gamedata:GetClips('missmic4')
local pumps = exports.lastresort_gamedata:GetPlaces('gaspumps')
print(#pumps, pumps[1].model, pumps[1].x, pumps[1].zone)
print(exports.lastresort_gamedata:GetDumpVersion())
Export Returns
Search(term, options) records matching a substring; options.category, options.limit
Lookup(category, name) one record, or nil
GetCategories() every enabled category with its count and fields
GetClips(dictionary) clip names in an animation dictionary
GetPlaces(group) every placement in a location group, with its model, coordinate, rotation and map zone
GetSnippet(record) the copy-ready example for a record
GetDumpVersion() the GTA V build the shipped data came from

Client-side only, for scripts that want to drive the GUI:

Export Does
OpenBrowser(term) open the browser, optionally pre-searched
CloseBrowser() close it
IsBrowserOpen() whether it is open
PreviewStop() end the current preview

Categories load lazily, so a script that only queries vehicles never parses the other 45 files, and GetPlaces reads only the one group's shard.


Cross-product behaviour

Sibling LastResort resources are detected at runtime and only ever add value:

  • Notifications: config override → lastresort_notifyox_lib → built-in feed
  • Chat output: the standard chat:addMessage event, which lastresort_chat provides

Installed alone, everything works and nothing is missing.

If a provider is broken on your server — a common case is ox_lib forwarding to a UI resource that lacks the expected export — this product degrades instead of failing: the provider is marked broken, the message still reaches you through the built-in feed, and the failure is remembered so it is logged at most once. Pin it with Config.Notify.Provider = 'builtin'; /gdb notifyreset clears the memory once the underlying resource is fixed.


FAQ

Does it need a database? No. Favourites are stored in a JSON file inside the resource, per license identifier.

Do other players see the previews? No. Preview entities are created locally and hidden from the network. Set Config.Preview.Visible = true for collaborative scene work; it requires elevated.

Previewing a ped is the exception, because it changes your own character rather than spawning one, and a model change is always networked — everyone sees you as that ped until you stop. Config.Preview.PedsOnSelf = false goes back to a separate, local figure standing in front of you.

Does it cost performance when idle? No, and not in a hand-waving way: with the browser closed and no preview active, this resource has no thread scheduled at all.

State Threads running Expected resmon
Browser closed, no preview none 0.00 ms
Browser open none — the GUI runs in the NUI process 0.00 ms
Preview active none, except a waypoint route being drawn 0.00 ms
/gdb debug overlay on one, per frame, while visible ~0.02 ms
/gdb demo tour running one, at 100 ms negligible

Every thread in the resource is created on demand and exits when its work ends; the framework bridge runs once at start and stops. The index is never parsed Lua-side unless a script calls an export.

Can it leave the world dirty? Every preview journals what it touched — entities, streamed models, animation dictionaries, particle handles, weapon assets, IPLs, pinned interiors, waypoint recordings, audio banks, screen effects, world toggles, and your own character down to its clothing, head blend and face features — and reverts all of it when you switch entries, hit Stop all, disconnect, or stop the resource. /gdb debug shows the journal live, so you can watch it return to zero.

Closing the GUI deliberately does not clean up, so you can inspect a preview without the panels covering it. Config.Preview.KeepOnClose = false restores cleanup on close.

Why do some interiors say they are not streamed in? 160 of the 385 interiors belong to DLC. When one of those is not loaded on your client the browser names the DLC rather than pretending the interior does not exist.

Are the code examples actually correct? They are verified as a build step, not by hand. Every native call in every template is checked against 6,089 signatures taken from the CitizenFX documentation, then each filled snippet is compiled with Lua 5.4 and executed against a stub runtime. Five deliberately broken snippets are kept to prove the check still fails when it should.

Can I rebuild the data for a newer GTA V build? Yes, and the tooling ships with the resource. See section 6 of INSTALLATION.md.


Documentation

File Contents
INSTALLATION.md install, permissions, first run, rebuilding the data
CHANGELOG.md features, changes and removals per version
docs/RESEARCH.md data provenance, measurements, assumptions
docs/coverage-matrix.md every upstream file and its verdict
docs/TESTING.md build and in-game verification checklist
docs/STORE.md store listing copy

Credits

Open source, no escrow, no obfuscation. Read every line before you run it.

What you get

  • The full source code. Every Lua, config and UI file, readable and editable. Rename it, restyle it or hook your own systems into it.
  • No escrow, no license checks. No key and nothing that phones home. It keeps running as long as your server does.
  • Free updates. New versions land in your account for as long as we maintain the script. Download the latest one whenever you like.
  • One community per purchase. Use it on that community's live, development and test servers. Reselling or re-uploading the code is not allowed.

Get Game Data Browser – Must have tool for every FiveM developer – search & live-preview 453,528 assets

€19.90, paid once through Stripe. The download is in your account right after payment.

Game Data Browser – Must have tool for every FiveM developer – search & live-preview 453,528 assets

€19.90