In FiveM, you have access to what are called "native functions" or simply "natives". These functions are provided by the game itself, using them will allow you to perform a wide variety of actions within the game environment. This guide will explain what natives are, where you can find them, and how to use them in your scripts.
Native functions in FiveM are predefined functions that enable interaction with the game. They are essential for creating and managing game mechanics, player interactions, and various other functionalities within your server. Natives are used in both client-side and server-side. Some of them are created by Cfx like DropPlayer.
FiveM provides comprehensive documentation for native functions. This documentation is essential for understanding what each native function does, how to use it, and what parameters it requires.
FiveM Natives: All documented natives can be found on our official website.
Community Forums: The Cfx.re Forums are another valuable resource. Here, you can find discussions, tutorials, and examples from other developers who share their experiences and solutions related to using native functions.
Native Docs Repo: Users can contribute to the repository by adding descriptions, names, and new native functions.
Client natives are functions that run on the player's game client. These functions are primarily used to handle tasks related to the player's immediate environment, rendering, input handling, and interactions that need to occur on the client side. Examples include manipulating the player’s view, handling UI elements, and interacting with client-specific data.
Server-side natives, on the other hand, run on the server. These functions manage game logic that needs to be controlled and validated by the server, such as player authentication and ensuring game state consistency. They are crucial for maintaining the integrity and security of the game.
Please note that some natives can be used on client and server. You can refer to API set
setter in the official native documentation.
client: Only runs for client server: Only runs for server shared: Runs for client and server
Using native functions in your FiveM resources involves calling the functions with the appropriate parameters. Let's go through the basic steps of using natives in both client-side and server-side resources.
Client-side scripts are executed on the player's game client and are used to handle tasks such as rendering, player input, and more. Here’s a basic example of how to use a native function in a client-side script:
main_cl.lua
.AddTextEntry
to add a custom text entry that can be displayed on the game UI.-- main_cl.lua
-- Add a custom text entry
AddTextEntry('CUSTOM_ENTRY', 'Hello, FiveM!')
-- Display the custom text entry when a player presses a specific key
Citizen.CreateThread(function()
while true do
Citizen.Wait(0) -- You can learn more about wait on https://docs.fivem.net/docs/scripting-reference/runtimes/lua/functions/Citizen.Wait
if IsControlJustReleased(0, 38) then -- Native that check if control E is released
BeginTextCommandDisplayHelp('CUSTOM_ENTRY') -- Display notification with another native
EndTextCommandDisplayHelp(0, false, true, -1)
end
end
end)
Server-side scripts run on the game server and are responsible for handling game logic, player data, and other backend tasks. Here’s an example of using a native function in a server-side script:
main_sv.lua
.GetPlayerName
to get the name of a player and print it to the server console.-- main_sv.lua
-- Register a command to get the player name
RegisterCommand('getplayername', function(source, args, rawCommand) -- This is also a native to register a player/console command
local playerName = GetPlayerName(source)
print('Player Name: ' .. playerName)
end, false)
To learn how to create your first resource step-by-step, refer to the comprehensive guide in this section. This guide will walk you through the process of setting up a new resource, writing your first script, and integrating it into your FiveM server.
Here are some commonly used native functions and their descriptions:
RegisterCommand: Register a player/console command.
RegisterCommand(commandName, handler, restricted) -- shared
GetPlayerName: Returns the name of a player.
local playerName = GetPlayerName(playerId) -- server
EndTextCommandThefeedPostTicker: Displays a notification on the screen (corner left).
EndTextCommandThefeedPostTicker(false, true) -- client
By following this guide, you should now have a basic understanding of what native functions are, where to find them, and how to use them in your FiveM scripts. Happy coding!