Spin Wheel For Rewards
Key Required

Spin Wheel For Rewards

[W4] Ride a Box Obby 📦Yosef_1220Yosef_1220 426 views 69 executesUpdated Apr 11, 2026
3.3/ 5(3 votes)
2167% Positive
Lua Script•438 lines (15841 chars)
local ScreenGui = Instance.new("ScreenGui")
local MainFrame = Instance.new("Frame")
local WheelContainer = Instance.new("Frame")
local SpinButton = Instance.new("TextButton")
local AutoSpinButton = Instance.new("TextButton")
local CloseButton = Instance.new("TextButton")
local Pointer = Instance.new("Frame")
local UIStroke = Instance.new("UIStroke")
local Watermark = Instance.new("TextLabel")

local HUD_Coins = Instance.new("TextLabel")
local HUD_Wins = Instance.new("TextLabel")
local HUD_Skips = Instance.new("TextLabel")
local HUD_Spins = Instance.new("TextLabel")
local HUD_Session = Instance.new("TextLabel")

ScreenGui.Name = "GodModeSpinGUI_" .. math.random(1000, 9999)
ScreenGui.Parent = game:GetService("CoreGui")

local savedPos = UDim2.new(0.5, -135, 0.5, -190)
pcall(function()
	if isfile and readfile and isfile("spin_gui_pos.txt") then
		local data = readfile("spin_gui_pos.txt")
		local parts = string.split(data, ",")
		savedPos = UDim2.new(tonumber(parts[1]), tonumber(parts[2]), tonumber(parts[3]), tonumber(parts[4]))
	end
end)

MainFrame.Name = "MainFrame"
MainFrame.Parent = ScreenGui
MainFrame.BackgroundColor3 = Color3.fromRGB(8, 8, 12)
MainFrame.Position = savedPos
MainFrame.Size = UDim2.new(0, 270, 0, 400)
MainFrame.Active = true
MainFrame.ClipsDescendants = true

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 25)
MainCorner.Parent = MainFrame

UIStroke.Parent = MainFrame
UIStroke.Thickness = 4
UIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border

Watermark.Parent = MainFrame
Watermark.BackgroundTransparency = 1
Watermark.Position = UDim2.new(0, 0, 1, -15)
Watermark.Size = UDim2.new(1, 0, 0, 15)
Watermark.Font = Enum.Font.Gotham
Watermark.Text = "⚡ GOD MODE EDITION v2.0 ⚡"
Watermark.TextColor3 = Color3.fromRGB(100, 100, 100)
Watermark.TextSize = 9

Pointer.Name = "Pointer"
Pointer.Parent = MainFrame
Pointer.BackgroundColor3 = Color3.fromRGB(255, 30, 70)
Pointer.BorderSizePixel = 0
Pointer.Position = UDim2.new(0.5, -6, 0, 43)
Pointer.Size = UDim2.new(0, 12, 0, 25)
Pointer.ZIndex = 5

local PointerCorner = Instance.new("UICorner")
PointerCorner.CornerRadius = UDim.new(0, 4)
PointerCorner.Parent = Pointer

HUD_Coins.Parent = MainFrame
HUD_Coins.BackgroundTransparency = 1
HUD_Coins.Position = UDim2.new(0, 15, 0, 8)
HUD_Coins.Size = UDim2.new(0, 100, 0, 15)
HUD_Coins.ZIndex = 4
HUD_Coins.Font = Enum.Font.GothamBlack
HUD_Coins.Text = "💰 Coins: 0"
HUD_Coins.TextColor3 = Color3.fromRGB(255, 215, 0)
HUD_Coins.TextSize = 10
HUD_Coins.TextXAlignment = Enum.TextXAlignment.Left

HUD_Wins.Parent = MainFrame
HUD_Wins.BackgroundTransparency = 1
HUD_Wins.Position = UDim2.new(0, 15, 0, 23)
HUD_Wins.Size = UDim2.new(0, 100, 0, 15)
HUD_Wins.ZIndex = 4
HUD_Wins.Font = Enum.Font.GothamBlack
HUD_Wins.Text = "🏆 Wins: 0"
HUD_Wins.TextColor3 = Color3.fromRGB(0, 170, 255)
HUD_Wins.TextSize = 10
HUD_Wins.TextXAlignment = Enum.TextXAlignment.Left

HUD_Skips.Parent = MainFrame
HUD_Skips.BackgroundTransparency = 1
HUD_Skips.Position = UDim2.new(0.45, 0, 0, 8)
HUD_Skips.Size = UDim2.new(0, 100, 0, 15)
HUD_Skips.ZIndex = 4
HUD_Skips.Font = Enum.Font.GothamBlack
HUD_Skips.Text = "⏩ Skips: 0"
HUD_Skips.TextColor3 = Color3.fromRGB(0, 255, 170)
HUD_Skips.TextSize = 10
HUD_Skips.TextXAlignment = Enum.TextXAlignment.Left

HUD_Spins.Parent = MainFrame
HUD_Spins.BackgroundTransparency = 1
HUD_Spins.Position = UDim2.new(0.45, 0, 0, 23)
HUD_Spins.Size = UDim2.new(0, 100, 0, 15)
HUD_Spins.ZIndex = 4
HUD_Spins.Font = Enum.Font.GothamBlack
HUD_Spins.Text = "🌀 Spins: 0"
HUD_Spins.TextColor3 = Color3.fromRGB(255, 45, 85)
HUD_Spins.TextSize = 10
HUD_Spins.TextXAlignment = Enum.TextXAlignment.Left

HUD_Session.Parent = MainFrame
HUD_Session.BackgroundTransparency = 1
HUD_Session.Position = UDim2.new(0, 15, 0, 38)
HUD_Session.Size = UDim2.new(1, 0, 0, 15)
HUD_Session.Font = Enum.Font.GothamBold
HUD_Session.Text = "Spent this session: 0 💸"
HUD_Session.TextColor3 = Color3.fromRGB(150, 150, 150)
HUD_Session.TextSize = 9
HUD_Session.TextXAlignment = Enum.TextXAlignment.Left

CloseButton.Name = "CloseButton"
CloseButton.Parent = MainFrame
CloseButton.BackgroundColor3 = Color3.fromRGB(25, 15, 15)
CloseButton.BorderSizePixel = 0
CloseButton.Position = UDim2.new(1, -25, 0, 8)
CloseButton.Size = UDim2.new(0, 18, 0, 18)
CloseButton.ZIndex = 5
CloseButton.Font = Enum.Font.GothamBlack
CloseButton.Text = "X"
CloseButton.TextColor3 = Color3.fromRGB(255, 50, 70)
CloseButton.TextSize = 11

local CloseCorner = Instance.new("UICorner")
CloseCorner.CornerRadius = UDim.new(0, 4)
CloseCorner.Parent = CloseButton

WheelContainer.Name = "WheelContainer"
WheelContainer.Parent = MainFrame
WheelContainer.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
WheelContainer.Position = UDim2.new(0.5, -90, 0, 65)
WheelContainer.Size = UDim2.new(0, 180, 0, 180)
WheelContainer.ZIndex = 2

local WheelCorner = Instance.new("UICorner")
WheelCorner.CornerRadius = UDim.new(1, 0)
WheelCorner.Parent = WheelContainer

local WheelStroke = Instance.new("UIStroke")
WheelStroke.Parent = WheelContainer
WheelStroke.Thickness = 3
WheelStroke.Color = Color3.fromRGB(255, 255, 255)
WheelStroke.Transparency = 0.8

local rewards = {
	Coins   = {Name = "500 COINS", WheelName = "💰 500", Color = Color3.fromRGB(255, 215, 0), Rotation = 0, Args = {{Folder = "leaderstats", Name = "Coins", Amount = 500}}},
	Spins   = {Name = "1 SPIN", WheelName = "🌀 x1", Color = Color3.fromRGB(255, 45, 85), Rotation = 45, Args = {{Folder = "otherValues", Name = "Spins", Amount = 1}}},
	Skips   = {Name = "3 SKIPS", WheelName = "⏩ x3", Color = Color3.fromRGB(0, 255, 170), Rotation = 90, Args = {{Folder = "otherValues", Name = "Skips", Amount = 3}}},
	Reward5 = {Name = "1000 COINS", WheelName = "💰 1K", Color = Color3.fromRGB(255, 100, 255), Rotation = 135, Args = {{Folder = "leaderstats", Name = "Coins", Amount = 1000}}},
	Wins    = {Name = "1 WIN", WheelName = "🏆 x1", Color = Color3.fromRGB(0, 170, 255), Rotation = 180, Args = {{Folder = "leaderstats", Name = "Wins", Amount = 1}}},
	Reward6 = {Name = "5 SPINS", WheelName = "🌀 x5", Color = Color3.fromRGB(255, 128, 0), Rotation = 225, Args = {{Folder = "otherValues", Name = "Spins", Amount = 5}}},
	Reward7 = {Name = "10 SKIPS", WheelName = "⏩ x10", Color = Color3.fromRGB(150, 100, 255), Rotation = 270, Args = {{Folder = "otherValues", Name = "Skips", Amount = 10}}},
	Reward8 = {Name = "20K COINS", WheelName = "💰 20K", Color = Color3.fromRGB(255, 255, 255), Rotation = 315, Args = {{Folder = "leaderstats", Name = "Coins", Amount = 20000}}},
	Secret  = {Name = "1000 WINS", WheelName = "⭐", Color = Color3.fromRGB(255, 0, 50), Rotation = 337.5, Args = {{Folder = "leaderstats", Name = "Wins", Amount = 1000}}}
}

for _, reward in pairs(rewards) do
	local Pivot = Instance.new("Frame")
	Pivot.Parent = WheelContainer
	Pivot.BackgroundTransparency = 1
	Pivot.Size = UDim2.new(1, 0, 1, 0)
	Pivot.Rotation = reward.Rotation
	Pivot.ZIndex = 2
	
	local Sector = Instance.new("TextLabel")
	Sector.Parent = Pivot
	Sector.BackgroundColor3 = reward.Color
	Sector.BackgroundTransparency = 0.15
	Sector.BorderSizePixel = 0
	
	local isSecret = (reward.WheelName == "⭐")
	Sector.Size = UDim2.new(isSecret and 0.1 or 0.24, 0, isSecret and 0.2 or 0.16, 0)
	Sector.Position = UDim2.new(0.5 - ((isSecret and 0.1 or 0.24) / 2), 0, isSecret and 0.02 or 0.04, 0)
	Sector.ZIndex = 3
	Sector.Font = Enum.Font.GothamBlack
	Sector.Text = reward.WheelName
	Sector.TextColor3 = Color3.fromRGB(10, 10, 15)
	Sector.TextSize = 9
	
	local SectorCorner = Instance.new("UICorner")
	SectorCorner.CornerRadius = UDim.new(0, 5)
	SectorCorner.Parent = Sector
end

local CenterHub = Instance.new("Frame")
CenterHub.Parent = WheelContainer
CenterHub.BackgroundColor3 = Color3.fromRGB(10, 10, 15)
CenterHub.Size = UDim2.new(0, 36, 0, 36)
CenterHub.Position = UDim2.new(0.5, -18, 0.5, -18)
CenterHub.ZIndex = 4

local CenterCorner = Instance.new("UICorner")
CenterCorner.CornerRadius = UDim.new(1, 0)
CenterCorner.Parent = CenterHub

local eggClicks = 0
CenterHub.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		eggClicks = eggClicks + 1
		if eggClicks >= 5 then
			MainFrame.BackgroundColor3 = Color3.fromRGB(40, 5, 5)
			eggClicks = 0
		end
	end
end)

SpinButton.Name = "SpinButton"
SpinButton.Parent = MainFrame
SpinButton.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
SpinButton.BorderSizePixel = 0
SpinButton.Position = UDim2.new(0.1, 0, 0.73, 0)
SpinButton.Size = UDim2.new(0.8, 0, 0, 35)
SpinButton.ZIndex = 4
SpinButton.Font = Enum.Font.GothamBlack
SpinButton.Text = "SPIN (1000 COINS)"
SpinButton.TextColor3 = Color3.fromRGB(255, 255, 255)
SpinButton.TextSize = 11

local ButtonCorner = Instance.new("UICorner")
ButtonCorner.CornerRadius = UDim.new(0, 8)
ButtonCorner.Parent = SpinButton

AutoSpinButton.Name = "AutoSpinButton"
AutoSpinButton.Parent = MainFrame
AutoSpinButton.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
AutoSpinButton.BorderSizePixel = 0
AutoSpinButton.Position = UDim2.new(0.1, 0, 0.84, 0)
AutoSpinButton.Size = UDim2.new(0.8, 0, 0, 35)
AutoSpinButton.ZIndex = 4
AutoSpinButton.Font = Enum.Font.GothamBlack
AutoSpinButton.Text = "AUTO-SPIN: OFF"
AutoSpinButton.TextColor3 = Color3.fromRGB(255, 255, 255)
AutoSpinButton.TextSize = 11

local AutoCorner = Instance.new("UICorner")
AutoCorner.CornerRadius = UDim.new(0, 8)
AutoCorner.Parent = AutoSpinButton

local SpinSound = Instance.new("Sound")
SpinSound.SoundId = "rbxassetid://3411394145"
SpinSound.Volume = 0.5
SpinSound.Looped = true
SpinSound.Parent = game:GetService("SoundService")

local TweenService = game:GetService("TweenService")
local player = game:GetService("Players").LocalPlayer
local spentCoins = 0
local isSpinning = false
local autoSpinEnabled = false

task.spawn(function()
	local hue = 0
	while task.wait(0.01) do
		hue = hue + (1/360)
		if hue >= 1 then hue = 0 end
		UIStroke.Color = Color3.fromHSV(hue, 1, 1)
	end
end)

task.spawn(function()
	while task.wait(1) do
		local leaderstats = player:FindFirstChild("leaderstats")
		local otherValues = player:FindFirstChild("otherValues")
		
		local coins = leaderstats and leaderstats:FindFirstChild("Coins") and leaderstats.Coins.Value or 0
		local wins = leaderstats and leaderstats:FindFirstChild("Wins") and leaderstats.Wins.Value or 0
		local skips = otherValues and otherValues:FindFirstChild("Skips") and otherValues.Skips.Value or 0
		local spins = otherValues and otherValues:FindFirstChild("Spins") and otherValues.Spins.Value or 0
		
		HUD_Coins.Text = "💰 Coins: " .. tostring(coins)
		HUD_Wins.Text = "🏆 Wins: " .. tostring(wins)
		HUD_Skips.Text = "⏩ Skips: " .. tostring(skips)
		HUD_Spins.Text = "🌀 Spins: " .. tostring(spins)
		HUD_Session.Text = "Spent this session: " .. tostring(spentCoins) .. " 💸"
	end
end)

pcall(function()
	for i, v in pairs(getconnections(player.Idled)) do
		v:Disable()
	end
end)

local UserInputService = game:GetService("UserInputService")
local dragging, dragInput, dragStart, startPos

local function update(input)
	local delta = input.Position - dragStart
	local targetPos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
	TweenService:Create(MainFrame, TweenInfo.new(0.15, Enum.EasingStyle.Linear), {Position = targetPos}):Play()
end

MainFrame.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
		dragStart = input.Position
		startPos = MainFrame.Position
		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then
				dragging = false
				if writefile then
					local pos = MainFrame.Position
					writefile("spin_gui_pos.txt", string.format("%f,%f,%f,%f", pos.X.Scale, pos.X.Offset, pos.Y.Scale, pos.Y.Offset))
				end
			end
		end)
	end
end)

MainFrame.InputChanged:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseMovement then
		dragInput = input
	end
end)

UserInputService.InputChanged:Connect(function(input)
	if input == dragInput and dragging then
		update(input)
	end
end)

UserInputService.InputBegan:Connect(function(input, processed)
	if not processed and input.KeyCode == Enum.KeyCode.P then
		ScreenGui.Enabled = not ScreenGui.Enabled
	end
end)

local function spin()
	if isSpinning then return end
	
	local leaderstats = player:FindFirstChild("leaderstats")
	local coins = leaderstats and leaderstats:FindFirstChild("Coins")
	
	if not coins or coins.Value < 1000 then
		SpinButton.Text = "NOT ENOUGH COINS!"
		if autoSpinEnabled then
			autoSpinEnabled = false
			AutoSpinButton.Text = "AUTO-SPIN: OFF"
			AutoSpinButton.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
		end
		return
	end
	
	isSpinning = true
	spentCoins = spentCoins + 1000
	pcall(function() SpinSound:Play() end)

	local remotes = game:GetService("ReplicatedStorage"):WaitForChild("Remotes", 5)
	local promptReward = remotes and remotes:WaitForChild("PromptReward", 5)
	
	if promptReward then
		promptReward:FireServer(unpack({{Folder = "leaderstats", Name = "Coins", Amount = -1000}}))
	end

	local chance = math.random(1, 10000)
	local selectedReward = rewards.Coins
	if chance == 1 then selectedReward = rewards.Secret
	elseif chance <= 3000 then selectedReward = rewards.Coins
	elseif chance <= 5000 then selectedReward = rewards.Spins
	elseif chance <= 6500 then selectedReward = rewards.Skips
	elseif chance <= 7500 then selectedReward = rewards.Reward5
	elseif chance <= 8500 then selectedReward = rewards.Reward6
	elseif chance <= 9500 then selectedReward = rewards.Reward7
	elseif chance <= 9800 then selectedReward = rewards.Wins
	else selectedReward = rewards.Reward8 end

	local targetRotation = 2160 - selectedReward.Rotation

	local runService = game:GetService("RunService")
	local startTime = tick()
	local conn
	conn = runService.RenderStepped:Connect(function()
		local elapsed = tick() - startTime
		if elapsed >= 3.5 then conn:Disconnect() return end
		
		local scale = 1 + math.sin(elapsed * 10) * 0.02
		MainFrame.Size = UDim2.new(0, 270 * scale, 0, 400 * scale)
		
		local part = Instance.new("Frame")
		part.Size = UDim2.new(0, 4, 0, 4)
		part.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
		part.Position = UDim2.new(0.5, math.random(-10, 10), 0.3, math.random(-10, 10))
		part.Parent = MainFrame
		local c = Instance.new("UICorner") c.CornerRadius = UDim.new(1,0) c.Parent = part
		TweenService:Create(part, TweenInfo.new(0.5), {BackgroundTransparency = 1, Size = UDim2.new(0, 0, 0, 0)}):Play()
		task.delay(0.5, function() part:Destroy() end)
	end)

	local tween = TweenService:Create(WheelContainer, TweenInfo.new(3.5, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Rotation = targetRotation})
	tween:Play()

	tween.Completed:Connect(function()
		pcall(function() SpinSound:Stop() end)
		if promptReward then promptReward:FireServer(unpack(selectedReward.Args)) end
		
		for i = 1, 4 do
			MainFrame.Position = MainFrame.Position + UDim2.new(0, math.random(-5, 5), 0, math.random(-5, 5))
			task.wait(0.02)
		end
		
		SpinButton.Text = "GOT: " .. selectedReward.Name
		
		task.delay(1.5, function()
			SpinButton.Text = "SPIN (1000 COINS)"
			WheelContainer.Rotation = -selectedReward.Rotation
			isSpinning = false
			if autoSpinEnabled then spin() end
		end)
	end)
end

AutoSpinButton.MouseButton1Click:Connect(function()
	autoSpinEnabled = not autoSpinEnabled
	if autoSpinEnabled then
		AutoSpinButton.Text = "AUTO-SPIN: ON"
		AutoSpinButton.BackgroundColor3 = Color3.fromRGB(0, 170, 100)
		if not isSpinning then spin() end
	else
		AutoSpinButton.Text = "AUTO-SPIN: OFF"
		AutoSpinButton.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
	end
end)

CloseButton.MouseButton1Click:Connect(function()
	autoSpinEnabled = false
	pcall(function() SpinSound:Stop() end)
	ScreenGui:Destroy()
end)

SpinButton.MouseButton1Click:Connect(spin)

Features & Information

Spin the wheel for 1,000 coins! Get big reward! This script is keyless! If you want to change something like spin amount you can (If you know how to do that) This script is made for fun with an spinning wheel Check my other script for More Fun!
#Spinning Wheel#RABO#Ride a Box Obby#Keyless#Gui

Community Comments (0)

No comments yet for this script.

More Scripts for [W4] Ride a Box Obby 📦