Back to Blog
Tutorial
8 min read

Getting Started with FiveM Development

Gravity Development Team

March 15, 2024

Getting Started with FiveM Development

FiveM is a modification framework for Grand Theft Auto V that allows you to play on custom multiplayer servers. If you're interested in creating custom scripts and resources for FiveM servers, this guide will walk you through the fundamentals.

What is FiveM?

FiveM is a modification framework that enables you to create custom multiplayer experiences in GTA V. Unlike the standard GTA Online, FiveM servers can have completely custom scripts, resources, and gameplay mechanics. This flexibility has made it incredibly popular for roleplay servers and custom game modes.

Prerequisites

Before you start developing for FiveM, you'll need:

  • GTA V: The base game is required
  • FiveM Client: Download from fivem.net
  • Code Editor: Visual Studio Code is recommended
  • Basic Programming Knowledge: Familiarity with Lua or JavaScript helps
  • Server Access: Either your own server or a development environment

Understanding FiveM Resources

In FiveM, everything is organized into "resources." A resource is a folder containing scripts, configuration files, and assets. Resources can be:

  • Client-side scripts: Run on the player's computer
  • Server-side scripts: Run on the server
  • Shared scripts: Used by both client and server

Your First Resource

Let's create a simple "Hello World" resource to get you started:

1. Create the Resource Folder

Create a new folder in your server's resources directory. Name it something like my-first-resource.

2. Create fxmanifest.lua

Every resource needs a fxmanifest.lua file that tells FiveM how to load it:

fx_version 'cerulean'
game 'gta5'

author 'Your Name'
description 'My First FiveM Resource'
version '1.0.0'

client_script 'client.lua'
server_script 'server.lua'

3. Create client.lua

This script runs on the client (player's computer):

-- client.lua
Citizen.CreateThread(function()
    while true do
        Citizen.Wait(0)
        -- Your client-side code here
    end
end)

-- Example: Display a message when player spawns
AddEventHandler('playerSpawned', function()
    TriggerEvent('chat:addMessage', {
        color = {255, 0, 0},
        multiline = true,
        args = {"Server", "Welcome to the server!"}
    })
end)

3. Create server.lua

This script runs on the server:

-- server.lua
print("My First Resource has started!")

-- Example: Log when a player connects
AddEventHandler('playerConnecting', function(name, setKickReason, deferrals)
    print("Player connecting: " .. name)
end)

Testing Your Resource

  1. Start your FiveM server
  2. In the server console, type: ensure my-first-resource
  3. Connect to your server and test it out!

Common Development Patterns

Events

Events are the primary way to communicate between client and server:

-- Server triggers event
TriggerClientEvent('myEvent', source, data)

-- Client listens for event
RegisterNetEvent('myEvent')
AddEventHandler('myEvent', function(data)
    -- Handle the event
end)

NUI (User Interface)

FiveM supports HTML/CSS/JavaScript for creating custom UIs:

-- Open NUI
SetNuiFocus(true, true)
SendNUIMessage({
    type = "openUI",
    data = {}
})

-- Close NUI
SetNuiFocus(false, false)

Best Practices

  1. Always test on a development server first
  2. Use proper error handling
  3. Optimize your code - avoid infinite loops and heavy operations
  4. Follow naming conventions - use clear, descriptive names
  5. Document your code - add comments explaining complex logic

Next Steps

Now that you understand the basics, you can:

  • Explore existing resources to learn from
  • Join the FiveM development community
  • Start building more complex features
  • Consider using frameworks like ESX or QBCore

Conclusion

FiveM development opens up endless possibilities for creating custom multiplayer experiences. Start small, learn the fundamentals, and gradually build more complex features. The FiveM community is welcoming and helpful, so don't hesitate to ask questions!

Happy coding!

Ready to Get Started?

Explore our products and services to enhance your FiveM server.