Overview
FiveM knowledge is scattered across official docs, framework sites, forum threads and a lot of outdated video tutorials. Knowing which sources to trust — and in which order to use them — saves beginners weeks of copying code that no longer works.
Official Cfx.re sources
| Resource | Use it for |
|---|---|
| docs.fivem.net/docs | Scripting and server manuals, runtimes, resource manifest |
| docs.fivem.net/natives | Every native with parameters and notes |
| forum.cfx.re | Releases, help threads, announcements |
Lua itself
FiveM uses a modified Lua 5.4. The official Lua 5.4 reference manual (lua.org/manual/5.4) and the book Programming in Lua (lua.org/pil) teach the language properly; our Lua basics and Lua tables guides cover the FiveM-specific parts.
Framework documentation
| Framework / library | Docs |
|---|---|
| ESX Legacy | docs.esx-framework.org |
| QBCore | docs.qbcore.org |
| Qbox | docs.qbox.re |
| ox_lib, ox_inventory, ox_target, oxmysql, ox_core | overextended.dev |
Framework comparisons: ESX vs QBCore vs Qbox.
Reading real code
The fastest way to learn patterns is reading code that many servers run: ox_lib, ox_inventory, qbx_core and the framework repositories on GitHub. Look at how they validate events, structure configs and clean up — then compare with our code review checklist.
Learning efficiently
- 1Build tiny resources that do one thing — see your first script.
- 2Read the native’s documentation before copying code that uses it.
- 3Check the date on tutorials; prefer current framework versions.
- 4Follow a staged plan — see the developer roadmap.
Frequently asked questions
Where is the official FiveM documentation?
At docs.fivem.net, with the natives reference at docs.fivem.net/natives.
Where can I learn Lua for FiveM?
The Lua 5.4 manual and Programming in Lua for the language, plus FiveM-specific guides for natives, events and resources.
Where are the ox_lib docs?
At overextended.dev, together with ox_inventory, ox_target, oxmysql and ox_core.
Are YouTube tutorials reliable?
Some are, but many are outdated. Check the date and compare with official and framework docs.
Need this built, not just explained?
Premium ESX, QBCore & Qbox scripts with instant delivery — or a custom resource, React NUI and the web stack around your server, built to spec.
Related guides
- Getting startedA roadmap for becoming a FiveM developerStage 1: Lua basics and your first resource. Stage 2: client vs server, events, natives and threads. Stage 3: a framework (ESX, QBCore or Qbox), ox_lib and the database with oxmysql. Stage 4: NUI interfaces. Stage 5: performance (resmon, profiler) and security (validated events, SQL placeholders). Stage 6: tooling (VS Code, Git, local server). Stage 7: documentation, selling on Tebex, freelancing and a portfolio.
- Getting startedWrite your first FiveM script, step by stepCreate a folder resources/my_first, add an fxmanifest.lua with fx_version 'cerulean', game 'gta5', a client_script and a server_script, then write a client command that loads a model with RequestModel, waits for HasModelLoaded, spawns it with CreateVehicle and seats the player with SetPedIntoVehicle. Add ensure my_first to server.cfg, restart, and type /car adder in game.
- Getting startedThe Lua you need for FiveM, from zeroAlways declare variables with local. Lua has nil, booleans, numbers, strings, tables and functions; only nil and false are falsy (0 and empty strings are true). Use if/elseif/else, numeric for i = 1, 10, for k, v in pairs(t) and while. Concatenate strings with .. and format with string.format. CfxLua adds vector3, backtick hashes, CreateThread and Wait.
- EngineeringNatives: the game functions behind every FiveM scriptNatives are the game’s built-in functions. The Cfx native reference lists them by namespace (PLAYER, ENTITY, VEHICLE…) with parameters and notes. In Lua and JS you call them in PascalCase — GET_ENTITY_COORDS becomes GetEntityCoords. Some are client-only, some server-only (the CFX namespace), and out-parameters come back as extra return values.