How qs-yacht detects ESX, QBCore and Qbox, ox_target and qb-target, ox_inventory, qs-inventory and more, clothing scripts, xsound, qs-3dsound and mx-surround, weather sync, and how to add your own bridge.
Each layer looks through a list of resource names in config/main.lua and takes the first one that is running. If you run two inventories at once, or yours has been renamed, set the value by hand right after the detection line:
With ox_inventory, a stash is registered on the server the first time it is opened, so no extra setup is needed.
The radio plays from three points of the yacht — the deck, the bridge and the cabin — so it sounds right wherever the player stands. With qs-3dsound or mx-surround, the fall-off of each point is set by Config.Panners; with xsound, one source plays from the deck with a 110 m range.
Messages are shown by Yacht Creator's own interface. To send them through another system, edit the Notification function in custom/client.lua — commented examples for qs-interface and ox_lib are already there:
The same file holds ProgressBar, ToggleHud, ShowTextUI and DrawText3D, so your own HUD or text UI is wired in the same place.
The shop pauses your weather script and freezes a clear sky at Config.ShopTime (23:00, to show the lights) while the player looks at a yacht, then hands control back. The events it sends live in client/custom/weather/weather.lua — add your own script's pause event there if it is not on the list.
Frameworks extend the same way: custom/esx/ and custom/qb/ each hold a client and a server file with the money, identifier, character name and yacht_inside functions the script calls.
Forty-one 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 and zh. Pick one with Config.Locale, or copy en.json to a new file to add your own. Price formatting follows Config.Intl.