Skip to content

Server exports

Note

Internal exports are not meant to called by external parties. But we can't control what you do with it so instead of you guessing we explain what these internal exports do.

GetGarageByDatabaseId

Get the garage object based on database id.

Returns: ExportedIndoorGarageModel | OutdoorGarageModel

Example

local garageId = 1
local garage = exports["rn-garages"]:GetGarageByDatabaseId(garageId)
if not garage then
    error("Garage by id "..tostring(garageId).." not found.")
    return
end

print(json.encode(garage))
const garageId = 1
const garage = await exports["rn-garages"].GetGarageByDatabaseId(garageId)
if (! garage) {
    console.error(`Garage by id ${garageId} not found.`)
    return
}

console.dir({garage})
import type { RnGarageExports } from "@rn/lib_server";

const garageId = 1
const garage = await (exports["rn-garages"] as RnGarageExports).GetGarageByDatabaseId(garageId)
if (! garage) {
    console.error(`Garage by id ${garageId} not found.`)
    return
}

console.dir({garage})

GetGarageByDisplayName

Get the garage object based on display name.

Returns: ExportedIndoorGarageModel | OutdoorGarageModel

Example

local displayName = "Legion Square Garage"
local garage = exports["rn-garages"]:GetGarageByDisplayName(displayName)
if not garage then
    error("Garage by display name "..tostring(displayName).." not found.")
    return
end

print(json.encode(garage))
const displayName = "Legion Square Garage"
const garage = await exports["rn-garages"].GetGarageByDisplayName(displayName)
if (! garage) {
    console.error(`Garage by display name ${displayName} not found.`)
    return
}

console.dir({garage})
import type { RnGarageExports } from "@rn/lib_server";

const displayName = "Legion Square Garage"
const garage = await (exports["rn-garages"] as RnGarageExports).GetGarageByDisplayName(displayName)
if (! garage) {
    console.error(`Garage by display name ${displayName} not found.`)
    return
}

console.dir({garage})

GetGarageByExportIdentifier

Get the garage object based on export row identifier.

Returns: ExportedIndoorGarageModel | OutdoorGarageModel

Example

local exportId = "garage_123"
local garage = exports["rn-garages"]:GetGarageByExportIdentifier(exportId)
if not garage then
    error("Garage by export identifier "..tostring(exportId).." not found.")
    return
end

print(json.encode(garage))
const exportId = "garage_123"
const garage = await exports["rn-garages"].GetGarageByExportIdentifier(exportId)
if (! garage) {
    console.error(`Garage by export identifier ${exportId} not found.`)
    return
}

console.dir({garage})
import type { RnGarageExports } from "@rn/lib_server";

const exportId = "garage_123"
const garage = await (exports["rn-garages"] as RnGarageExports).GetGarageByExportIdentifier(exportId)
if (! garage) {
    console.error(`Garage by export identifier ${exportId} not found.`)
    return
}

console.dir({garage})

CreateGarage

Create a garage through an export. This will also automatically sync the changes to all clients.

Returns: ExportedIndoorGarageModel | OutdoorGarageModel | false

Example

local data = {
    displayName = "New Garage",
    garageType = "outdoor",
    vehicleType = "road",
    parkingType = "public",
    parkingCost = 0,
    parkingCostInterval = 0,
    maxParkingDuration = nil,
    blipPos = vector3(0.0, 0.0, 0.0),
    polyzone = {},
    maxParkingSpots = 10
}
local garage = exports["rn-garages"]:CreateGarage(data)
if not garage then
    error("Failed to create garage.")
    return
end
print(json.encode(garage))
const data = {
    displayName: "New Garage",
    garageType: "outdoor",
    vehicleType: "road",
    parkingType: "public",
    parkingCost: 0,
    parkingCostInterval: 0,
    maxParkingDuration: null,
    blipPos: [0, 0, 0],
    polyzone: {},
    maxParkingSpots: 10
}
const garage = await exports["rn-garages"].CreateGarage(data)
if (! garage) {
    console.error("Failed to create garage.")
    return
}
console.dir({garage})
import type { RnGarageExports } from "@rn/lib_server";

const data = {
    displayName: "New Garage",
    garageType: "outdoor",
    vehicleType: "road",
    parkingType: "public",
    parkingCost: 0,
    parkingCostInterval: 0,
    maxParkingDuration: null,
    blipPos: [0, 0, 0],
    polyzone: {},
    maxParkingSpots: 10
}
const garage = await (exports["rn-garages"] as RnGarageExports).CreateGarage(data)
if (! garage) {
    console.error("Failed to create garage.")
    return
}
console.dir({garage})

DeleteGarage

Deletes a garage based on database id. This will also automatically sync the changes to all clients.

Returns: Boolean

Example

local garageId = 1
local success = exports["rn-garages"]:DeleteGarage(garageId)
print("Deleted:", success)
const garageId = 1
const success = await exports["rn-garages"].DeleteGarage(garageId)
console.log("Deleted:", success)
import type { RnGarageExports } from "@rn/lib_server";

const garageId = 1
const success = await (exports["rn-garages"] as RnGarageExports).DeleteGarage(garageId)
console.log("Deleted:", success)

GetScrapyardByDatabaseId

Get the scrapyard object based on database id.

Returns: ScrapyardModel

Example

local scrapyardId = 1
local scrapyard = exports["rn-garages"]:GetScrapyardByDatabaseId(scrapyardId)
if not scrapyard then
    error("Scrapyard by id "..tostring(scrapyardId).." not found.")
    return
end

print(json.encode(scrapyard))
const scrapyardId = 1
const scrapyard = await exports["rn-garages"].GetScrapyardByDatabaseId(scrapyardId)
if (! scrapyard) {
    console.error(`Scrapyard by id ${scrapyardId} not found.`)
    return
}

console.dir({scrapyard})
import type { RnGarageExports } from "@rn/lib_server";

const scrapyardId = 1
const scrapyard = await (exports["rn-garages"] as RnGarageExports).GetScrapyardByDatabaseId(scrapyardId)
if (! scrapyard) {
    console.error(`Scrapyard by id ${scrapyardId} not found.`)
    return
}

console.dir({scrapyard})

GetScrapyardByDisplayName

Get the scrapyard object based on display name.

Returns: ScrapyardModel

Example

local displayName = "South LS Scrapyard"
local scrapyard = exports["rn-garages"]:GetScrapyardByDisplayName(displayName)
if not scrapyard then
    error("Scrapyard by display name "..tostring(displayName).." not found.")
    return
end

print(json.encode(scrapyard))
const displayName = "South LS Scrapyard"
const scrapyard = await exports["rn-garages"].GetScrapyardByDisplayName(displayName)
if (! scrapyard) {
    console.error(`Scrapyard by display name ${displayName} not found.`)
    return
}

console.dir({scrapyard})
import type { RnGarageExports } from "@rn/lib_server";

const displayName = "South LS Scrapyard"
const scrapyard = await (exports["rn-garages"] as RnGarageExports).GetScrapyardByDisplayName(displayName)
if (! scrapyard) {
    console.error(`Scrapyard by display name ${displayName} not found.`)
    return
}

console.dir({scrapyard})

GetScrapyardByExportIdentifier

Get the scrapyard object based on export row identifier.

Returns: ScrapyardModel

Example

local exportId = "scrapyard_123"
local scrapyard = exports["rn-garages"]:GetScrapyardByExportIdentifier(exportId)
if not scrapyard then
    error("Scrapyard by export identifier "..tostring(exportId).." not found.")
    return
end

print(json.encode(scrapyard))
const exportId = "scrapyard_123"
const scrapyard = await exports["rn-garages"].GetScrapyardByExportIdentifier(exportId)
if (! scrapyard) {
    console.error(`Scrapyard by export identifier ${exportId} not found.`)
    return
}

console.dir({scrapyard})
import type { RnGarageExports } from "@rn/lib_server";

const exportId = "scrapyard_123"
const scrapyard = await (exports["rn-garages"] as RnGarageExports).GetScrapyardByExportIdentifier(exportId)
if (! scrapyard) {
    console.error(`Scrapyard by export identifier ${exportId} not found.`)
    return
}

console.dir({scrapyard})

CreateScrapyard

Create a scrapyard through an export. This will also automatically sync the changes to all clients.

Returns: ScrapyardModel | false

Example

local scrapyardData = {
    displayName = "New Scrapyard",
    scrapPos = vector3(0.0, 0.0, 0.0),
    npcSpawnPoint = vector4(0.0, 0.0, 0.0, 0.0),
    npcModel = "s_m_m_garbage"
}
local scrapyard = exports["rn-garages"]:CreateScrapyard(scrapyardData)
if not scrapyard then
    error("Failed to create scrapyard.")
    return
end
print(json.encode(scrapyard))
const scrapyardData = {
    displayName: "New Scrapyard",
    scrapPos: [0, 0, 0],
    npcSpawnPoint: [0, 0, 0, 0],
    npcModel: "s_m_m_garbage"
}
const scrapyard = await exports["rn-garages"].CreateScrapyard(scrapyardData)
if (! scrapyard) {
    console.error("Failed to create scrapyard.")
    return
}
console.dir({scrapyard})
import type { RnGarageExports } from "@rn/lib_server";

const scrapyardData = {
    displayName: "New Scrapyard",
    scrapPos: [0, 0, 0],
    npcSpawnPoint: [0, 0, 0, 0],
    npcModel: "s_m_m_garbage"
}
const scrapyard = await (exports["rn-garages"] as RnGarageExports).CreateScrapyard(scrapyardData)
if (! scrapyard) {
    console.error("Failed to create scrapyard.")
    return
}
console.dir({scrapyard})

DeleteScrapyard

Deletes a scrapyard based on database id. This will also automatically sync the changes to all clients.

Returns: Boolean

Example

local scrapyardId = 1
local success = exports["rn-garages"]:DeleteScrapyard(scrapyardId)
print("Deleted:", success)
const scrapyardId = 1
const success = await exports["rn-garages"].DeleteScrapyard(scrapyardId)
console.log("Deleted:", success)
import type { RnGarageExports } from "@rn/lib_server";

const scrapyardId = 1
const success = await (exports["rn-garages"] as RnGarageExports).DeleteScrapyard(scrapyardId)
console.log("Deleted:", success)

IsVehicleSetToBeScrapped

Is vehicle with given plate set to be scrapped?

Returns: Boolean | null

Example

local plate = "ABC123"
local isScrapped = exports["rn-garages"]:IsVehicleSetToBeScrapped(plate)
print("Is scrapped:", isScrapped)
const plate = "ABC123"
const isScrapped = await exports["rn-garages"].IsVehicleSetToBeScrapped(plate)
console.log("Is scrapped:", isScrapped)
import type { RnGarageExports } from "@rn/lib_server";

const plate = "ABC123"
const isScrapped = await (exports["rn-garages"] as RnGarageExports).IsVehicleSetToBeScrapped(plate)
console.log("Is scrapped:", isScrapped)

SetVehicleToScrap

Set a vehicle to to_scrap or back to available if setScrap is set to false.

Returns: Boolean

Example

local plate = "ABC123"
local success = exports["rn-garages"]:SetVehicleToScrap(plate, true)
print("Updated:", success)
const plate = "ABC123"
const success = await exports["rn-garages"].SetVehicleToScrap(plate, true)
console.log("Updated:", success)
import type { RnGarageExports } from "@rn/lib_server";

const plate = "ABC123"
const success = await (exports["rn-garages"] as RnGarageExports).SetVehicleToScrap(plate, true)
console.log("Updated:", success)

IsVehicleImpounded

Is vehicle with given plate impounded?

Returns: Boolean | null

Example

local plate = "ABC123"
local isImpounded = exports["rn-garages"]:IsVehicleImpounded(plate)
print("Is impounded:", isImpounded)
const plate = "ABC123"
const isImpounded = await exports["rn-garages"].IsVehicleImpounded(plate)
console.log("Is impounded:", isImpounded)
import type { RnGarageExports } from "@rn/lib_server";

const plate = "ABC123"
const isImpounded = await (exports["rn-garages"] as RnGarageExports).IsVehicleImpounded(plate)
console.log("Is impounded:", isImpounded)

SetVehicleImpounded

Set a vehicle impounded or take off the impounded status if impound is set to false.

Returns: Boolean

Example

local plate = "ABC123"
local success = exports["rn-garages"]:SetVehicleImpounded(plate, true)
print("Updated:", success)
const plate = "ABC123"
const success = await exports["rn-garages"].SetVehicleImpounded(plate, true)
console.log("Updated:", success)
import type { RnGarageExports } from "@rn/lib_server";

const plate = "ABC123"
const success = await (exports["rn-garages"] as RnGarageExports).SetVehicleImpounded(plate, true)
console.log("Updated:", success)

isReady (internal)

Checks if the kernel is fully loaded and ready for any events or export calls.

Returns: Boolean

Example

local ready = exports["rn-garages"]:isReady()
const ready = exports["rn-garages"].isReady()
import type { RnGarageExports } from "@rn/lib_server";

const ready = (exports["rn-garages"] as RnGarageExports).isReady()