Server
Vehicles (RCVehicle)

Vehicles — RCVehicle

RCVehicle is the server-side vehicle class backed by the vehicles database table. It represents a stored vehicle record, not a spawned entity.


Lookup functions

RP.GetVehicleById(id)

--- @param id number  Database row ID
--- @return RCVehicle?
local v = RP.GetVehicleById(12)

RP.GetVehicleByPlate(plate)

--- @param plate string
--- @return RCVehicle?
local v = RP.GetVehicleByPlate("RP1234")

RP.GetVehiclesByOwner(owner)

Returns all vehicles owned by a player. Accepts either a pid number or an RCPlayer.

--- @param owner number | RCPlayer
--- @return RCVehicle[]
local vehicles = RP.GetVehiclesByOwner(p)
for _, v in ipairs(vehicles) do
    print(v.plate, v.model)
end

RP.CreateVehicle(owner, model, plate, data?)

Inserts a new vehicle row and returns the populated RCVehicle.

--- @param owner number | RCPlayer
--- @param model string
--- @param plate string
--- @param data? table  Extra JSON data (default `{}`)
--- @return RCVehicle?
local v = RP.CreateVehicle(p, "adder", "RP1234", { color = 5 })

RP.SpawnVehicle(modelName, coords, heading, cb)

Spawns a networked vehicle entity in the world (does not create a DB record).

--- @param modelName string | number
--- @param coords vector3
--- @param heading number
--- @param cb fun(veh: number)
RP.SpawnVehicle("adder", vector3(0, 0, 70), 0.0, function(veh)
    print("entity:", veh)
end)

Properties

PropertyTypeDescription
idnumberDatabase row ID
ownernumberOwner's pid
modelstringVehicle model name
platestringLicense plate text
datatableDecoded JSON data blob (mods, color, etc.)
created_atstringDB creation timestamp
updated_atstringDB last-updated timestamp

Methods

v:save(cb?)

Saves model, plate, and data to the database.

v.data.color = 3
v:save(function() print("saved") end)

v:saveData(cb?)

More efficient variant — only persists data (skips model/plate).

v.data.mods = { engine = 3 }
v:saveData()

v:delete()

Deletes the vehicle record from the database. Returns true on success.

if v:delete() then
    print("Vehicle deleted")
end

v:toTable()

Returns a plain serializable table representation of the vehicle.

local t = v:toTable()
-- { id, owner, model, plate, data, created_at, updated_at }

Challenge leaderboards

RP.UpdateChallengeScore(player, challenge, score, saveGreater)

Upserts a leaderboard entry for a challenge. Pass saveGreater = true to keep the highest score, or false (default) to keep the lowest (best lap time, etc.).

--- @param player number | RCPlayer  Source ID or RCPlayer
--- @param challenge string  Challenge identifier
--- @param score number
--- @param saveGreater boolean
RP.UpdateChallengeScore(p, "sprint_01", 92350, false)