This is a simple physical equal-segment daily spin reward wheel template to customize and add to your game.
Place:
Features:
-
Fully customizable settings (spin duration, cooldown, chances, etc.)
-
Reward configuration via modules
-
Server-sided reward handling
-
StreamingEnabled support
The template uses @Rileybytes great setup of ProfileStore to handle saving of player’s last spin time and developer product purchasing.
Setup:
Number the wheel segments in increasing order, moving clockwise. Make sure segment #1 is aligned directly center with the pointer to properly align the system. Weld all moving parts to “Motor”.
The script will automatically unanchor all non-welded parts during initialization.
Templates for 4, 6, 8, and 10-slice wheels are included in the workspace. The black slice represents slice #1.
In ServerScriptService, you’ll find DailyWheelController with 2 modules; WheelRewards & WheelSettings
Edit the settings in WheelSettings module according to the provided comments.
WheelRewards stores the data and the reward execution function for each segment. The index corresponds to the segment number—for example, if the system selects segment 1 as the winner, it will retrieve the data from [1]
Execute functions should be customized to grant the player the appropriate reward for each segment.
After the wheel spins, a notification event will send all the segment data—excluding the Execute function—to the client. You can use this data to create a popup or similar element.
The ServerScriptService.Data folder contains the ProfileStore setup. For a more detailed explanation of how it works, you can watch RileyBytes’ video here. The included Products and Template modules are preconfigured to work with the example system. You should either modify them to fit your own game or integrate them into your existing Marketplace/Datastore handling setup.
The DailyWheelClient script handles the system locally. It primarily manages the wheel spinning, activation prompts, notifications, and StreamingEnabled support.
In the example setup, the NotifyClient event triggers a popup handled by this script, along with a tick sound played as each segment passes. You can find these by searching for “EXAMPLE” in the script.
Events can be found in ReplicatedStorage.Events.DailyWheel
Thanks for checking it out!