Core Features
Version 2.1.0: Update DataStore, Easy Pet System and Roulette together. Back up customized pack folders first. Restart old servers after updating; keep StoreVersion and existing player data unchanged.
Setup
Developer API
RouletteSystem: spins from your own code
local roulette = ctx.require("RouletteSystem")
-- Hand out spins from a quest, a code, anything.
-- Capped by MaxSpins; false if the amount is not positive.
roulette.addSpins(player, 5)
-- 0 until the player's save has loaded.
print(roulette.getSpins(player))
-- Second return says why not, never a sentence to show.
local ok, why = roulette.canSpin(player)
Spins live in the player's save alongside everything else, so a spin bought on Monday is still there on Friday.
Custom rewards: hand out anything
-- A ModuleScript in the pack's CustomRewards folder.
local GrantGems = {}
-- `d` is the live save: changes persist and replicate.
function GrantGems.Grant(player, d)
d.Stats = d.Stats or {}
d.Stats.Gems = (d.Stats.Gems or 0) + 1
end
return GrantGems
Drop it in and the slot's Module dropdown lists it by name. RandomPet ships on slot 6: it hatches a pet from an Easy Pet System egg using that egg's own odds, and falls back to Diamonds when that pack is not installed.
Customisation
Slot names and icons
Type a name or paste an icon and the wheel in Studio redraws as you type. What you configure is what you see.
Works with General UI Kit
Install both and General UI Kit's Spin menu is the one that runs, styled with the rest of your interface.
Works great with
Only Datastore & Purchase System is required, because it is what keeps a player's spins between sessions. The other four are optional and the pack works without any of them.
Documentation
Every field, the plugin panels and the version history live at rblxessentials.com/docs.
Updates
📋 Version history and changelogs for all packs are available at rblxessentials.com/docs#changelog.




