awoken_bridge. Nothing here decides whether something may happen, only who carries it out.
Check the contract first
api is the contract and only changes when an existing function changes shape or disappears. resource is the build number, which is what belongs in the error: “needs api 2, found 1” is only actionable once you know which bridge is installed.
Backends() returns what was actually picked for each job, which is worth printing at boot in any script that genuinely cannot work without, say, an inventory.
Server
Accounts are named in your words,
cash, bank and black_money, and translated inside each backend. ESX calls cash money and keeps the other two as accounts; qb keeps all three in one table. Neither spelling leaks out.Client
Events
Each backend normalises its framework’s own lifecycle events into these, so you listen once rather than carrying three spellings.moneyChanged carries no amount. The frameworks disagree about what they hand over, and a balance worth showing has to be read back from the server anyway, so it only says to go and look again.Behaviour worth knowing
Activity is two calls, not one
Activity is two calls, not one
Ask before letting somebody start, claim once they have. Claiming during the check leaks a slot on every later refusal.The ceiling is off by default, so installing the bridge does not quietly change how much crime your server allows.
SkillLevel returns 0 with no skill resource
SkillLevel returns 0 with no skill resource
Treat a minimum of 0 as “no gate” rather than comparing blindly, or a server without one refuses everybody over experience they have no way to earn.
Logs fill in the calling resource themselves
Logs fill in the calling resource themselves
Do not pass
resource. A script should not have to name itself correctly to get its own channel.Adding a backend
Every file undermodules/ ships readable, one per resource the bridge talks to. That is deliberate: they are glue against somebody else’s public API, and a server on a fork or a newer build needs to be able to fix one rather than wait for us.
1
Write the file
modules/dispatch/your_resource.lua. Copy the nearest existing adapter and change what it sends. Every one starts the same way:main.lua.2
List it in fxmanifest.lua
An unlisted backend never loads and
auto simply never picks it, with nothing in the console to say so.3
Name it in config
config/core.lua