Metabridge API Reference
Server API (MetaBridge)
Core
init() -> string|nilgetFramework() -> string|nilisReady() -> booleanregister(methodName:string, handler:function) -> nilcall(methodName:string, ...) -> any
Player / Framework
getPlayer(source:number) -> any|nilgetPlayerData(source:number) -> table|nilgetIdentifier(source:number) -> string|nilgetJob(source:number) -> table|nilgetMoney(source:number, moneyType:string|nil) -> number|nil
Inventory
hasItem(source:number, itemName:string, amount:number|nil) -> booleangetItemData(source:number, itemName:string, meta:table|nil) -> table|nilgetItemDefinition(source:number, itemName:string) -> table|nilgetItemCount(source:number, itemName:string, meta:table|nil) -> numbergetItemFromSlot(source:number, slot:number) -> table|niladdItem(source:number, itemName:string, amount:number, meta:table|nil) -> booleanremoveItem(source:number, itemName:string, amount:number, meta:table|nil) -> booleanremoveItemExact(source:number, itemName:string, amount:number, meta:table|nil, slot:number|nil) -> booleancanCarryWeight(source:number, weight:number) -> booleangetEmptySlot(source:number) -> number|boolean|nilgetSlotsWithItem(source:number, itemName:string, meta:table|nil) -> tablesetItemMetadata(source:number, slot:number, metadata:table) -> booleanregisterCreateItemHook(handler:function, options:table|nil) -> boolean
Notify / Callback
notify(source:number, data:table|string) -> booleanregisterCallback(name:string, handler:function) -> boolean
Vehicle
setFuel(vehicle:number, fuel:number) -> boolean|nilgiveVehicleKeys(source:number, plate:string) -> boolean|nil
Advanced Vehicle Ownership APIs
createOwnedVehicle(request:table) -> table|nilgetOwnedVehicle(lookup:table) -> table|nilspawnOwnedVehicle(request:table) -> any|nil
Client API (MetaBridgeClient)
Core / Player
getFramework() -> string|nilisReady() -> booleangetPlayerData() -> table|nilgetIdentifier() -> string|nilgetJob() -> table|nilonPlayerLoaded(handler:function) -> boolean
Vehicle / Entity
setFuel(vehicle:number, fuel:number) -> boolean|nilgiveVehicleKeys(plate:string) -> boolean|nilspawnPed(model:string|number, coords:table, heading:number|nil, networked:boolean|nil) -> number|nilspawnVehicle(model:string|number, coords:table, heading:number|nil, networked:boolean|nil) -> number|nilsetEntityAsNoLongerNeeded(entity:number) -> boolean
Inventory / UI
getItemLabel(itemName:string) -> string|nilgetItemImage(itemName:string) -> string|nilgetItemCount(itemName:string, meta:table|nil) -> numberhasItem(itemName:string, amount:number|nil, meta:table|nil) -> booleandisplayMetadata(metadataMap:table) -> nilnotify(data:table|string) -> booleanprogressBar(data:table) -> boolean|nilregisterContext(data:table) -> booleanshowContext(contextId:string) -> booleaninputDialog(title:string, rows:table) -> table|nil
Callbacks
requestCallback(name:string, cb:function, ...) -> anyrequestCallbackAwait(name:string, ...) -> any
Target / Text UI
addTargetModel(models:any, options:table) -> booleanaddTargetBoxZone(data:table) -> anyaddTargetSphereZone(data:table) -> anyremoveTargetZone(zoneId:string|number) -> booleanremoveTargetModel(models:any) -> booleanaddTargetLocalEntity(entity:number, options:table) -> booleanremoveTargetLocalEntity(entity:number) -> booleanshowTextUI(text:string) -> booleanhideTextUI() -> booleanisTextUIOpen() -> boolean
Dialogs / Zones / Points
alertDialog(data:table) -> string|nil— confirm/cancel dialog; returns'confirm'ornil.addZoneSphere(data:table) -> any|nil— proximity sphere zone; returns the zone object.addPoint(data:table) -> any|nil— proximity tracking point; returns the point object.requestModel(model:string|number, timeoutMs:number|nil) -> boolean
All four methods honour BridgeConfig overrides so server operators can swap ox_lib for another implementation without touching consumer resources.
Advanced Dispatch API
sendDispatch(data:table) -> any|nil
Usage Examples
Server (exports)
lua
local Bridge = exports['metabridge']
RegisterCommand('paybonus', function(source)
if Bridge:hasItem(source, 'id_card', 1) then
Bridge:notify(source, {
type = 'success',
description = 'Bonus paid.'
})
else
Bridge:notify(source, {
type = 'error',
description = 'You need an ID card.'
})
end
end)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Client (globals via @metabridge/init.lua)
lua
CreateThread(function()
MetaBridgeClient.onPlayerLoaded(function(payload)
MetaBridgeClient.showTextUI(('Welcome %s'):format(payload.framework or 'player'))
Wait(2500)
MetaBridgeClient.hideTextUI()
end)
end)1
2
3
4
5
6
7
2
3
4
5
6
7
Advanced server owned vehicle flow
lua
local Bridge = exports['metabridge']
local created = Bridge:createOwnedVehicle({
source = source,
model = 'sultan',
plate = 'META123'
})
local owned = Bridge:getOwnedVehicle({ plate = 'META123' })
if owned then
Bridge:spawnOwnedVehicle({
source = source,
plate = 'META123',
coords = vec4(215.0, -810.0, 30.0, 70.0)
})
end1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Advanced client dispatch flow
lua
local Bridge = exports['metabridge']
Bridge:sendDispatch({
code = '10-31',
message = 'Store robbery in progress',
description = 'Silent alarm triggered',
jobs = { 'police' },
coords = GetEntityCoords(PlayerPedId()),
blip = {
sprite = 161,
color = 1,
scale = 1.0,
flash = true,
text = 'Robbery Alert',
duration = 120000
}
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Notes
- Server exports are auto-published from the
MetaBridgetable. - Client exports are wrapped from
MetaBridgeClientafter dispatch is loaded, sosendDispatchis export-available. - If using globals via
@metabridge/init.lua, expect debug mode to be forced on.
