Troubleshooting
At startup
"riding with the Standalone flavour" on a framework server
The framework wasn't running when the resource started. Fix the ensure order — framework before rm_phonograph.
The bridge does switch over automatically if the framework appears later, but the ensure order is the reliable path.
"X record(s) in config/records.lua have no url yet"
Exactly what it says. Those entries are skipped and won't appear on the shelf until you fill in their url.
"X deck row(s) name a cabinet that no longer exists"
A cabinet key was renamed in config/cabinets.lua after decks were placed with it.
The rows are kept, not deleted. Either restore the old key, or migrate the rows' variant column by hand.
Items
Using the phonograph item does nothing
The item must be registered as usable in your framework. On VORP the install.sql INSERT sets usable = 1; on RSG, add it as a useable item.
On frameworks whose usable-item hook can't be reached, the console prints "item use is handled by /phonograph here" — placement then starts via that command instead.
Items show without images
Copy inventory_icons/*.png into your inventory's item-image folder (VORP: vorp_inventory/html/img/items/) and restart the inventory resource.
Audio
A record plays for one player but not another
Distance first — the default audible range is 15 metres.
If the second player is close and still hears nothing, they most likely have RedM's browser audio muted ("mute audio of unfocused game" and similar) or their game volume down.
A YouTube link refuses to play
Age-restricted, region-locked and embed-disabled videos cannot play in an embedded player. That is a YouTube-side restriction.
The deck reports the failure and advances to the next queued track automatically.
"That link won't play." before anything even starts
The server rejected the URL. One of: not http(s), too long (audio.maxUrl), contains whitespace, or its host isn't on your limits.domains allowlist.
No vinyl crackle
Settings.audio.crackle.enabled must be true and level above 0.
The crackle mutes automatically while a deck is paused — that is intentional.
Panel
The Recording box is missing
By design, in three cases:
Settings.panel.urlBox = false— off for everyonerecords.urlAccess = 'owners'and the player doesn't own the deck — public spots are records-onlyurlAccess = 'staff'and the player isn't staff
The record shelf is missing
Settings.panel.shelf = false, or the player simply carries no records with configured URLs.
The panel opened then instantly closed with "Not now."
The server refused the browse — too far by the time it landed, deck gone, or no answer within 10 seconds.
Almost always a symptom of heavy server hitch, or the player sprinting away as they pressed the key.
General
Do placed phonographs survive restarts?
Yes — positions persist in the database.
What was playing does not resume; the needle lifts with the restart. Mutes also reset.
Can I run this with no framework at all?
Yes. Identity falls back to the license identifier, /phonograph places, and the whole record catalogue is open to everyone — there are no bags to hold sleeves in.
Where do I change the texts?
locales/<code>.lua. Set Settings.language to the file you want.
Adding a new language is copying en.lua and translating the values.
Reporting something
Include:
- The startup lines from the server console, including the framework flavour line
- Your framework and inventory resource
- What you changed in
config/ - Whether it reproduces with
Settings.debug.enabled = true
Then open a ticket in Discord. Redact any webhook URLs first.