fivemx.com

Learn FiveM Scripting (LUA): Your entry into the world of modding

Hello aspiring developer!

Have you ever dreamed of creating your own game modifications in Grand Theft Auto V Do you want to create unique gaming experiences and share your ideas with the world? Then you have come to the right place! In this guide I will show you how to FiveM Scripting in Lua Don't worry, I'll walk you through everything you need to know, step by step.

What is FiveM?

FiveM is a modification for GTA V, which allows players to play on custom multiplayer servers. With FiveM, you can create your own servers that are designed exactly how you want them. The best part? You can use Lua scripts customize the gameplay, add new features and completely change the gaming experience.


Why Lua?

Lua is a lightweight, easy-to-learn scripting language. It's perfect for beginners and is often used in games to create modifications and extensions. With Lua, you can see results quickly and don't have to deal with complex syntax.

requirements

Before we begin, make sure you have the following:

  • Basic programming knowledge: If you have programmed before, you will find it easier to get started.
  • GTA V installed on your PC.
  • FiveM Client installed.
  • A simple text editor (e.g. Notepad++, Visual Studio Code).

Your first script: “Hello World”

Let's start with something simple. We'll create a script that displays a message in the game.

Step 1: Create directory structure

  1. Go to your FiveM server directory.
  2. Create a new folder called hello-world.
  3. In this folder, create a file called __resource.lua or fxmanifest.lua (depending on the FiveM version).

Step 2: Create fxmanifest.lua

For newer versions of FiveM we use fxmanifest.lua.

-- fxmanifest.lua
fx_version 'cerulean'
game 'gta5'

client_scripts {
'client.lua'
}

Step 3: Create client.lua

Create a file called client.lua and add the following code:

-- client.lua
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
DrawTextOnScreen("Hello, FiveM world!", 0.5, 0.5)
end
end)

function DrawTextOnScreen(text, x, y)
SetTextFont(4)
SetTextScale(0.0, 0.5)
SetTextColour(255, 255, 255, 255)
SetTextCentre(true)
SetTextEntry("STRING")
AddTextComponentString(text)
DrawText(x, y)
end

Step 4: Activate script

  1. Open the server.cfg your FiveM server.
  2. joint start hello-world added.

Step 5: Start and test the server

Start your FiveM server and connect. You should now see the message "Hello, FiveM world!" in the middle of the screen.

explanation of the code

The code may seem a bit intimidating at first, but don't worry, I'll explain it to you.

  • Citizen.CreateThread: Creates a new thread that runs in parallel.
  • while true do: An endless loop that runs continuously.
  • Citizen.Wait(0): Wait 0 milliseconds to not block the loop.
  • DrawTextOnScreen: A function we defined to display text on the screen.

Client vs. Server Scripts

There are two types of scripts in FiveM:

  • client scripts: Running on the player's computer.
  • server scripts: Running on the server.

Depending on what you want to achieve, you need to place your script accordingly.

Example: Send a message to all players (server script)

Create a file called server.lua and add them in your fxmanifest.lua added:

fx_version 'cerulean'
game 'gta5'

client_scripts {
'client.lua'
}

server_scripts {
'server.lua'
}
-- server.lua
AddEventHandler('playerConnecting', function(name, setKickReason, deferrals)
print(name .. " connects to the server.")
TriggerClientEvent('chat:addMessage', -1, {
args = { "SERVER", name .. " has entered the server." }
})
end)

Now every time a player joins the server, a message will be sent to all players.

Events and Natives

What are events?

Events are actions or occurrences that occur in the game, such as when a player joins, presses a button, or enters a vehicle. You can react to these events and have your script act accordingly.

What are Natives?

Natives are functions provided by FiveM to interact with the game. They allow you to manipulate things like player positions, vehicle data, and more.

Example: Teleporting players

-- client.lua
RegisterCommand('teleport', function(source, args)
local x = tonumber(args[1])
local y = tonumber(args[2])
local z = tonumber(args[3])
if x and y and z then
SetEntityCoords(PlayerPedId(), x, y, z)
else
print("Please enter valid coordinates.")
end
end)

With this command /teleport xyz you can teleport your player to any coordinates.

Create resources

In FiveM, Scripts as resources A resource can consist of multiple scripts, files and assets.

Example: Vehicle Spawner

Let's create a simple script to spawn a vehicle.

-- client.lua
RegisterCommand('spawncar', function(source, args)
local vehicleName = args[1] or 'adder'

RequestModel(vehicleName)

while not HasModelLoaded(vehicleName) do
Citizen.Wait(0)
end

local playerPed = PlayerPedId()
local pos = GetEntityCoords(playerPed)

local vehicle = CreateVehicle(vehicleName, pos.x, pos.y, pos.z, GetEntityHeading(playerPed), true, false)
SetPedIntoVehicle(playerPed, vehicle, -1)
end)

Now you can /spawncar [vehicle name] spawn a vehicle.

Tips for moving forward

  • Experiment: Change values, add functions and see what happens.
  • Use documentation: The FiveM documentation and the Native Reference are your best friends.
  • Join Community: Join FiveM forums and Discord servers for help and inspiration.

Final word

Congratulations! You have taken your first step into the world of FiveM scripting. Remember that every expert was once a beginner. With patience and practice, you will soon be able to create complex Scripts that enrich the gaming experience for you and others.

So what are you waiting for? Dive in, experiment and have fun coding!

Leave a Comment

Your email address will not be published. Required fields are marked *


Shopping Cart
en_USEnglish