NativeHub
All NativesModelsArtifactsCFXVehicle

Not affiliated with Rockstar Games or Take-Two Interactive. FiveM and Cfx.re are trademarks of their respective owners. cfxnatives.dev is an independent community project.

Maintained by uz-scripts

© 2026 cfxnatives.dev

contact@cfxnatives.dev
OBJECTClient
Artifact25963
Data sourced from jgscripts artifact-db

CreateObject

Docs
local retval = CreateObject(modelHash, x, y, z, isNetwork, netMissionEntity, doorFlag)

Description

Creates an object (prop) with the specified model at the specified position, offset on the Z axis by the radius of the object's model.
This object will initially be owned by the creating script as a mission entity, and the model should be loaded already (e.g. using REQUEST_MODEL).

Parameters

NameTypeDescription
modelHashHashThe model to spawn.
xfloatSpawn coordinate X component.
yfloatSpawn coordinate Y component.
zfloatSpawn coordinate Z component, 'ground level'.
isNetworkBOOLWhether to create a network object for the object. If false, the object exists only locally.
netMissionEntityBOOLWhether to register the object as pinned to the script host in the R\* network model.
doorFlagBOOLFalse to create a door archetype (archetype flag bit 26 set) as a door. Required to be set to true to create door models in network mode.
📍Quick Snippet: Get Coordinates
xyz

Add this command to your client script to retrieve precise locations in-game.

-- Add this to your client.lua. Type /pos in-game to copy coords.
RegisterCommand('pos', function()
    local ped = PlayerPedId()
    local coords = GetEntityCoords(ped)
    local heading = GetEntityHeading(ped)
    local output = string.format("vector4(%.2f, %.2f, %.2f, %.2f)", coords.x, coords.y, coords.z, heading)

    print(output)
    TriggerEvent('chat:addMessage', { args = { '^4[COORD]^0', output } })
end)
🏷️Quick Snippet: Load Model Hash
modelHash

Models must be loaded before use. This snippet handles requesting and releasing properly.

-- Properly load a model before spawning/using it
local modelName = "prop_barrel_01a"  -- change to your model
local modelHash = GetHashKey(modelName)

RequestModel(modelHash)
while not HasModelLoaded(modelHash) do
    Wait(0)
end

print("Model loaded: " .. modelName .. " (" .. modelHash .. ")")

-- Release when done:
-- SetModelAsNoLongerNeeded(modelHash)

Returns

Object

Returns an object handle.

Examples

Official
local modelHash = `prop_weed_01` -- The ` return the jenkins hash of a string. see more at: https://cookbook.fivem.net/2019/06/23/lua-support-for-compile-time-jenkins-hashes/

if not HasModelLoaded(modelHash) then
    -- If the model isnt loaded we request the loading of the model and wait that the model is loaded
    RequestModel(modelHash)

    while not HasModelLoaded(modelHash) do
        Citizen.Wait(1)
    end
end

-- At this moment the model its loaded, so now we can create the object
local obj = CreateObject(modelHash, vector3(0.0, 0.0, 0.0), true)

Framework Usage

1 example
Attach Prop to Ped
Clientlua
-- Attach a prop to a ped bone
-- Handles model loading and bone index lookup
local prop = QBCore.Functions.AttachProp(
    PlayerPedId(),     -- ped
    "prop_cs_ciggy",   -- model (string or hash)
    18905,             -- bone ID (e.g. SKEL_R_Finger01)
    0.12, 0.028, 0.001,  -- x, y, z offset
    10.0, 0.0, 0.0,      -- x, y, z rotation
    true               -- vertex (soft pinning)
)

-- Later: cleanup
DeleteObject(prop)

Loads the model (LoadModel), creates the object via CreateObject, then uses AttachEntityToEntity with the specified bone. Returns the prop handle. SetModelAsNoLongerNeeded is called after attachment.

Server Artifacts

Data sourced from jgscripts artifact-db
Recommended25963
Known Issues24
25987-25988Node.js sandboxing seems to be causing issues for people - best to avoid for now
21547Multiple (unconfirmed) reports of server-sided natives throwing errors or causing crashes; best to avoid
17462Failed build, ignore
16276Multiple reports of issues loading JS within resources
14583-14716Crash when using the new onEntityBucketChange
14583-14862Timeouts due to latency units being in nanoseconds
13759-13890Mumble (voice) external connections blocked by default
13380-13458Server crashing due to integer encoding (PR#3235)
13079Failed Linux build (works OK if using Windows!)
12933-13045Still crashes (sometimes) when restarting resources due to Node.js 22
12913-12932Causes a crash when restarting Node.js 22
12767os.date() appends null terminator; can break Lua scripts
12651Failed Linux build, ignore
12509Failed build, ignore
12255Unconfirmed, but several reports of server-side issues that don't persist when downgrading; best to avoid
12160-12165Cannot use entity native calls in entityRemoved
12151Crashing if using newest title update (TU)
12092-12135SetPlayerModel may cause SIGSEGV crashes on some clients due to changes in player handling. 12031 and below works fine.
12078-12083Some clients will fail to connect with 'ReadBulk of header failed' error
10930Failed build, ignore
10268-10309sv_experimentalNetGameEventHandler enabled by default; can cause server crashing and reports of issues downgrading after upgrading
10191GetVehicleNumberPlateText server native broken, will cause issues with scripts involving vehicles
10072Crashing when players join
8509State bags not replicated to clients

CommunitySnippets

No snippets yet. Be the first to contribute!