Lua Scripting for FiveM 2025 - Complete Programming Guide - QBCore Guide for FiveM
Introduction
This tutorial turns Lua Scripting for FiveM 2025 - Complete Programming Guide into a clean, developer-friendly guide for QBCore/FiveM. You will follow a step-by-step flow, copy the relevant code patterns, and learn the “why” behind the setup.
Requirements
- QBCore installed and running on a dev server
- Basic Lua knowledge and comfort reading FiveM patterns
- A test workflow for iterating safely (dev server, not production)
- Optional: a code editor with Lua/FiveM helpers (VS Code recommended)
Step-by-Step Guide
Step 1: Why Lua for FiveM Development?
In this step, you will apply the why lua for fivem development? concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Step 2: Advantages of Lua in FiveM
In this step, you will apply the advantages of lua in fivem concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Step 3: FiveM’s Lua Environment
In this step, you will apply the fivem’s lua environment concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Step 4: Lua Fundamentals for FiveM
In this step, you will apply the lua fundamentals for fivem concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Step 5: 1. Basic Syntax and Variables
In this step, you will apply the 1. basic syntax and variables concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Step 6: 2. Tables (Arrays and Objects)
In this step, you will apply the 2. tables (arrays and objects) concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Step 7: 3. Functions
In this step, you will apply the 3. functions concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Step 8: 4. Control Structures
In this step, you will apply the 4. control structures concept as a practical change: define the pieces, wire them together, then verify the behavior in your dev server.
Code Example
-- Comments in Lua start with double dashes
-- This is a single line comment
--[[
This is a multi-line comment
Very useful for documentation
--]]
-- Variables (no need to declare type)
local playerName = "John Doe" -- String
local playerMoney = 5000 -- Number
local isAdmin = true -- Boolean
local playerData = nil -- Nil (empty value)
-- Numbers can be integers or floats
local playerId = 1 -- Integer
local playerHealth = 100.0 -- Float
local temperature = -5.5 -- Negative float
-- Strings
local message = "Hello World"
local longMessage = [[
This is a multi-line string
Very useful for HTML or SQL
]]
local formattedMessage = string.format("Player %s has $%d", playerName, playerMoney)
print(formattedMessage) -- Output: Player John Doe has $5000Tips & Best Practices
- Keep authority on the server: validate inputs before money/database operations.
- Start with one resource/module at a time, then refactor after you verify it works.
- Use callbacks for request/response flows and events for push/UX updates.
- When you run loops, avoid freezes: always yield with Wait() (client/server) and cache hot values.