Skip to content

RedM Fireworks Installation

Steps 1, 2, 6 and 7 read the same on both frameworks. Steps 3 and 4 are the genuinely framework-specific ones — do the VORP half or the RSG half, never both.

1. Folder placement

Put the folder in resources. It must be named exactly:

rm_fireworks

Lowercase, with the underscore. The client export is registered under the resource name, so a renamed folder breaks every integration snippet in these docs.

A bracketed parent folder is fine — resources/[custom]/rm_fireworks/fxmanifest.lua does not change the resource name. Confirm fxmanifest.lua sits directly inside rm_fireworks/; if your unzip produced rm_fireworks/rm_fireworks/, move the inner folder up.

2. server.cfg

One line, after your framework resources:

cfg
# VORP
ensure vorp_core
ensure vorp_inventory
ensure rm_fireworks
cfg
# RSG
ensure rsg-core
ensure rsg-inventory
ensure rm_fireworks

Both bridges poll every 500 ms and never give up, so starting early is not permanently broken — but usable items are only registered after detection succeeds, and during that window using an item does nothing. Keep it after the framework and the window is zero.

3. Create the items

Four items ship with the default config, wired to entries 1–4.

ItemLabelIndexDefault show
firework_1Firework - Burst1Burst / long / short
firework_2Firework - Ribbon2Mostly ribbon
firework_3Firework - Points3Mostly points
firework_4Firework - Mixed4One of each

All four ship the same show size

number = 100 and randomWait = {300, 800} are identical across all four — only the effects lists differ. Out of the box the four items are the same show in different colours. Both are per-entry keys you can tune; they are simply not pre-tuned for you. If you advertise them as different show sizes, change them first.

VORP — run the SQL

sql
INSERT INTO `items` (`item`, `label`, `limit`, `can_remove`, `type`, `usable`, `desc`, `weight`) VALUES
('firework_1', 'Firework - Burst', 10, 1, 'item_standard', 1, 'A crate of burst fireworks.', 0.25),
('firework_2', 'Firework - Ribbon', 10, 1, 'item_standard', 1, 'A crate of ribbon fireworks.', 0.25),
('firework_3', 'Firework - Points', 10, 1, 'item_standard', 1, 'A crate of point fireworks.', 0.25),
('firework_4', 'Firework - Mixed', 10, 1, 'item_standard', 1, 'A crate of mixed fireworks.', 0.25);

usable must be 10 means the use button never fires.

Then do a full server restart

vorp_inventory reads the whole items table into memory once when it starts. Rows inserted while it is running are invisible until it starts again. restart rm_fireworks does nothing for this — it does not touch the items table — and this is the single most common "the item does not exist" report.

Run the SQL once. To re-run it safely, delete the old rows first:

sql
DELETE FROM `items` WHERE `item` IN ('firework_1','firework_2','firework_3','firework_4');

Schema variations. Newer VORP inventory builds add columns such as groupId, rarityId, durability and metadata. If your database rejects the INSERT with a "field doesn't have a default value" error, add that column and a sensible value to the list — for example metadata set to '{}'. Do not remove columns from the list above.

RSG — add the item entries

Paste inside the items table in rsg-core/shared/items.lua:

lua
['firework_1'] = { name = 'firework_1', label = 'Firework - Burst',  weight = 250, type = 'item', image = 'firework_1.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A crate of burst fireworks.' },
['firework_2'] = { name = 'firework_2', label = 'Firework - Ribbon', weight = 250, type = 'item', image = 'firework_2.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A crate of ribbon fireworks.' },
['firework_3'] = { name = 'firework_3', label = 'Firework - Points', weight = 250, type = 'item', image = 'firework_3.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A crate of point fireworks.' },
['firework_4'] = { name = 'firework_4', label = 'Firework - Mixed',  weight = 250, type = 'item', image = 'firework_4.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A crate of mixed fireworks.' },

Note the RSG spelling: useable, with the e. Watch the trailing comma on the line above your paste point, and paste inside the table — a missing comma breaks every item in the file, not only yours. Restart rsg-core.

4. Icons

install/images/ contains firework_1.png through firework_4.png. These are placeholders — replace them with your own art, keeping the filenames.

FrameworkDestination
VORP, current buildsvorp_inventory/html/img/items/
VORP, older builds with no items subfoldervorp_inventory/html/img/
RSGrsg-inventory/html/images/

If you are unsure which VORP build you have, copy to both — the extra copies are harmless. On VORP the filename must match the item value; on RSG it must match the image field. Restart the inventory resource afterwards.

Icons are cosmetic. A missing icon never blocks the sequence.

5. Configure

config/config.lua. The defaults work — nothing here is mandatory for a first boot. Full reference: Configuration.

Four things about that file will otherwise cost you a support ticket:

  1. KeyLabels is display text only. Changing the key does not change the letter on the plaque, and vice versa. Rebinding means editing both.
  2. Language[1] and Language[4] are never read. Editing them does nothing.
  3. Language[2] is the title in both modes — the plaque reads "Detonator" while you are still walking the fuse out.
  4. Effects.sound plays no sound. It is a particle effect.

6. Verify

Both consoles must print the green line

A green rm_fireworks started in the server console and in the client F8 console. Both, with no red errors around them. Server-only means the client scripts did not reach you.

Give yourself an item and use it

StageWhat you should see
PlantKneeling animation, then three crate hauls — about 13.9 s
PlacedA crate on the ground in front of you
TurnYour ped turns 180° in place — 2 s, no prompt
Fuse walkA spool in your left hand, a rope to the crate, the plaque bottom-centre with a live distance
GateThe use prompt is dimmed until you are 15 m away outdoors, 5 m in an interior
WiringPress use: wiring animation, spool away, rope handed to the detonator — about 10.6 s
ShowPress use again: first burst about 2.6 s later, then 100 rockets

The item leaves the inventory at the moment of use, not at detonation.

Cancel and refund

Use a second item, then press cancel during the fuse walk. The sequence tears down and the item returns. Check the count before and after.

Multiplayer

With a second player nearby: they see the crate, spool and detonator regardless of any setting — those are networked objects. What SyncFireworks controls is whether they also see the rocket show.

7. If something went wrong

SymptomSection
No green line in the server consoleTroubleshooting → console errors
Green lines on both, using the item does nothingTroubleshooting → the item does nothing
Item missing, or has no "use" optionTroubleshooting → the item does nothing
Sequence starts, no plaqueTroubleshooting → the prompt never appears
Plaque appears, use prompt never lights upTroubleshooting → Place never lights up
Other players see nothingTroubleshooting → other players

Check framework state read-only

Do not type ensure vorp_core to find out whether it is running. ensure is not a status query — it starts a stopped resource and restarts a running one, and restarting a core on a live server breaks every resource that depends on it. Read the boot log, or the txAdmin resource list.

Uninstall

  1. Remove the ensure line, then stop rm_fireworks — a clean stop refunds every in-flight item.
  2. Delete the folder.
  3. Remove the item definitions — the SQL DELETE above for VORP, or the four lines from items.lua for RSG. Restart afterwards.
  4. Delete the four PNGs from your inventory image folder.
  5. Remove any command or integration you added to your own resources.

Nothing else is persisted. The resource writes no tables of its own.

Documentation for RedMorrow. Scripts are licensed per server — redistribution is not permitted.