Using The Item Does Nothing#
Cause: the item is not registered as usable, or its name doesn't match the config.
Solution: register the item as useable in your inventory and make sure the name matches Config.BookDefaults.item (book by default). On ox_inventory the item must declare:
lua
server = { export = 'qs-book-creator.useBook' }It Always Opens A Blank Creator#
Cause: the item is stackable, or your inventory does not support metadata.
Solution: the item must be unique (unique = true / stack = false) so it can carry its own bookUid. If your inventory is running in standalone mode, books cannot be linked to an item at all — switch to a metadata-capable inventory.
This Book Has No Data#
Cause: the book has no title or no pages, so the viewer refuses to open it.
Solution: open it in edit mode, add a title and at least one page, and save.
The Menu Never Appears#
Cause: ox_lib is missing or starts after the resource.
Solution: make sure it is started before qs-book-creator:
ensure ox_lib
ensure qs-book-creatorSQL Errors On Startup#
Cause: the database file was not imported, or oxmysql is not running.
Solution: execute [sql]/database.sql in your database manager and make sure oxmysql starts before the resource.
:warning: Remember the script begins with
DROP TABLE IF EXISTS qs_books— back up first if you already have books created.
Texts Stay In English After Changing Config.Locale#
Cause: this is a known limitation. All texts are loaded from locales/en.json, and Config.Locale only sets the language code passed to the UI.
Solution: copy the contents of your desired language file over locales/en.json.
The Custom Item Or Access Panel Doesn't Save#
Cause: this is a known limitation, not a bug. On save the resource forces the item back to Config.BookDefaults.item and clears the job fields.
Solution: control creator access through Config.CreatorJobs, and set the book item through Config.BookDefaults.item.
ps-inventory Is Detected But Nothing Works#
Cause: ps-inventory appears in the detection list but has no adapter.
Solution: duplicate the qb adapter in server/custom/inventory/adapters/ and change its guard clause:
lua
if Config.Inventory ~= 'ps-inventory' then return endCover Or Page Images Don't Load#
Cause: images are loaded from a URL, so the address must be publicly reachable.
Solution: host the image somewhere public and use a direct link to the image file. Links behind a login, or page links rather than image links, will not render in game.
Enabling Debug Mode#
If none of the above solves your issue, enable debug mode in config/main.lua:
Config.Debug = trueThe console will then report the detected inventory adapter and the usable items it registered. Leave it off in production.



