Each bridge is one file per side in custom/esx/, custom/qb/ and custom/standalone/. The server file answers five questions, and that is all the script ever asks of a framework:
To support another framework, copy the folder closest to it — custom/standalone/ is the smallest — to custom/<name>/, fill in the five functions, and set Config.Framework = '<name>'.
Item rewards are handed out by GivePrizeReward in custom/server.lua. It checks for these inventories in order and uses the first one running: ox_inventory, qs-inventory, codem-inventory, core_inventory, qb-inventory — and falls back to the ESX or QBCore item functions. If detection picks the wrong one, name it:
The same file reads your inventory's full item list, with images, for the reward picker in /clawcreator — tgiann-inventory is read too, and ESX or QBCore shared items are the fallback. For an inventory that is not on the list, add a branch to giveItem and rawItemList in that file, and an image path to IMAGE_PATHS.
With Config.UseTarget = true, every cabinet model gets a Play option in ox_target instead of the floating prompt. The registration is in client/custom/target.lua — swap exports.ox_target:addModel for your own target's export to use qb-target or another one.
For another HUD, add its hide/show export to SetCustomHud. The GTA HUD and radar are always hidden during a run, and everything is restored if the resource stops mid-game.
41 translations ship in locales/: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi, zh. Pick one with:
To edit a translation or add your own, copy locales/en.json, translate the values (keep the keys and the {{placeholders}}), and name the file after your locale code. Locale files are read at runtime, so a resource restart is all it takes.