What it works with
Everything below is detected on its own. There is no “which framework am I” setting, and no list of resource names to fill in: the phone looks at what is running and asks that.
A kind of resource that is not running is not a broken phone — the app that needed it says so, or is not there. The marketplace works without a garage; the Wallet works without a billing resource.
Frameworks
Section titled “Frameworks”| ESX | Legacy and 1.x. The number is a phone_number column this phone adds to users |
| QBCore | The number is the one QBCore gives every character: charinfo.phone in players |
| QBox | The same charinfo.phone. Qbox’s own table called users is its accounts table and is never touched |
| fmLib | For anything else, or your own |
Money, names, jobs and identifiers all come through one bridge, so a framework this list does not name needs one file rather than a fork.
Inventories
Section titled “Inventories”11 of them, and RequireItem = false covers the rest:
ox_inventory · qb-inventory · qs-inventory · core_inventory · ps-inventory · tgiann-inventory · jpr-inventory · codem-inventory · origen_inventory · jaksam_inventory · the one ESX ships with
Per-item metadata — what makes a phone that phone in item mode — works on ox, qs, qb, core, jaksam and origen. chezza, ps and tgiann have no place to keep it, and ESX’s own has no such thing at all, so item mode falls back to one phone per character there.
pma-voice · mumble-voip · saltychat · tokovoip_script
Calls and radio put people in a channel and let your voice resource do the talking. With none of them running, calls connect and nobody hears anything.
The rest
Section titled “The rest”| What | Detected |
|---|---|
| Billing | esx_billing, okokBilling, or the phone’s own |
| Housing | esx_property, ps-housing, qb-houses, loaf_housing |
| Garages | esx_garage, qb-garages, cd_garage, okokGarage, jg-advancedgarages |
| Societies | esx_society, qb-management, qb-banking |
| Licences | esx_license, qb-core, qbx_core |
| Weather | cd_easytime, qb-weathersync, vSync, or the game itself |
| Screenshots | screenshot-basic |
| Uploads | Fivemanage, or a Discord webhook |
Death and being downed
Section titled “Death and being downed”The one thing no two servers answer the same way, so the phone asks four ways and takes the first answer: the framework (ESX dead, QB isdead / inlaststand), then state bags, then exports you name in Config.Restrict.Death.Exports, then the game itself.
That already covers ESX, QBCore, QBox and anything writing the usual bags. If your ambulance script does none of it:
Config.Restrict.Death.Exports = { { 'wasabi_ambulance', 'isPlayerDead' },}It is only called if that resource is running, and a name that answers nothing is skipped rather than breaking the phone — so a wrong guess costs nothing.
What it needs from the server itself
Section titled “What it needs from the server itself”| oxmysql | Everything the phone remembers |
| A FiveM build from the last couple of years | The browser half uses the server’s built-in Node |
No npm, no build step, no second program, and no SQL file to import — the tables build themselves the first time the resource starts.