Shop With Coins
Key Required

Shop With Coins

[W4] Ride a Box Obby 📦Yosef_1220Yosef_1220 1.1K views 135 executesUpdated Apr 11, 2026
4.0/ 5(5 votes)
4180% Positive
Lua Script•344 lines (13346 chars)
local admins = {["Username"] = true, ["Username"] = true}

local player = game.Players.LocalPlayer
local isAdmin = admins[player.Name]

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "CustomPurchaseGUI"
screenGui.ResetOnSpawn = false

local success, targetParent = pcall(function() return gethui() end)
if not success or not targetParent then targetParent = game:GetService("CoreGui") end
screenGui.Parent = targetParent

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 300, 0, 280)
frame.Position = UDim2.new(0.5, -150, 0.3, 0)
frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
frame.Active = true
frame.Draggable = true
frame.Parent = screenGui

local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0, 10)
frameCorner.Parent = frame

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -40, 0, 40)
title.Position = UDim2.new(0, 10, 0, 0)
title.BackgroundTransparency = 1
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.SourceSansBold
title.TextSize = 18
title.Text = "Coins Shop"
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = frame

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -35, 0, 5)
closeBtn.BackgroundTransparency = 1
closeBtn.TextColor3 = Color3.fromRGB(200, 50, 50)
closeBtn.Font = Enum.Font.SourceSansBold
closeBtn.TextSize = 22
closeBtn.Text = "X"
closeBtn.Parent = frame

local textBox = Instance.new("TextBox")
textBox.Size = UDim2.new(0, 260, 0, 40)
textBox.Position = UDim2.new(0.5, -130, 0, 45)
textBox.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
textBox.TextColor3 = Color3.fromRGB(255, 255, 255)
textBox.Font = Enum.Font.SourceSans
textBox.TextSize = 16
textBox.Text = ""
textBox.PlaceholderText = "Type amount here..."
textBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150)
textBox.ClearTextOnFocus = false
textBox.Parent = frame
local boxCorner = Instance.new("UICorner")
boxCorner.CornerRadius = UDim.new(0, 6)
boxCorner.Parent = textBox

local modeBtn = Instance.new("TextButton")
modeBtn.Size = UDim2.new(0, 260, 0, 35)
modeBtn.Position = UDim2.new(0.5, -130, 0, 95)
modeBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
modeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
modeBtn.Font = Enum.Font.SourceSansBold
modeBtn.TextSize = 14
modeBtn.Text = "Buy: Skips"
modeBtn.Parent = frame
local modeCorner = Instance.new("UICorner")
modeCorner.CornerRadius = UDim.new(0, 6)
modeCorner.Parent = modeBtn

local costLabel = Instance.new("TextLabel")
costLabel.Size = UDim2.new(0, 260, 0, 25)
costLabel.Position = UDim2.new(0.5, -130, 0, 135)
costLabel.BackgroundTransparency = 1
costLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
costLabel.Font = Enum.Font.SourceSansBold
costLabel.TextSize = 15
costLabel.Text = "This will cost: 0 Coins"
costLabel.Parent = frame

local btnBuy = Instance.new("TextButton")
btnBuy.Size = UDim2.new(0, 260, 0, 45)
btnBuy.Position = UDim2.new(0.5, -130, 0, 165)
btnBuy.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
btnBuy.TextColor3 = Color3.fromRGB(255, 255, 255)
btnBuy.Font = Enum.Font.SourceSansBold
btnBuy.TextSize = 14
btnBuy.Text = "Buy"
btnBuy.Parent = frame
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = btnBuy

local timerLabel = Instance.new("TextLabel")
timerLabel.Size = UDim2.new(0, 260, 0, 40)
timerLabel.Position = UDim2.new(0.5, -130, 0, 220)
timerLabel.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
timerLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
timerLabel.Font = Enum.Font.SourceSansBold
timerLabel.TextSize = 14
timerLabel.Text = "Timer loading..."
timerLabel.Parent = frame
local timerCorner = Instance.new("UICorner")
timerCorner.CornerRadius = UDim.new(0, 6)
timerCorner.Parent = timerLabel

local buyMode = "Skips"
local isDoubleReward = false
local timeLeft = 20 * 60
local isBoostPhase = false

local adminFrame
if isAdmin then
    adminFrame = Instance.new("Frame")
    adminFrame.Size = UDim2.new(0, 250, 0, 280)
    adminFrame.Position = UDim2.new(0.5, 160, 0.3, 0)
    adminFrame.BackgroundColor3 = Color3.fromRGB(45, 15, 15)
    adminFrame.Active = true
    adminFrame.Draggable = true
    adminFrame.Parent = screenGui

    local adminCorner = Instance.new("UICorner")
    adminCorner.CornerRadius = UDim.new(0, 10)
    adminCorner.Parent = adminFrame

    local adminTitle = Instance.new("TextLabel")
    adminTitle.Size = UDim2.new(1, 0, 0, 40)
    adminTitle.BackgroundTransparency = 1
    adminTitle.TextColor3 = Color3.fromRGB(255, 50, 50)
    adminTitle.Font = Enum.Font.SourceSansBold
    adminTitle.TextSize = 18
    adminTitle.Text = "🚨 ADMIN PANEL 🚨"
    adminTitle.Parent = adminFrame

    local adminBox = Instance.new("TextBox")
    adminBox.Size = UDim2.new(0, 210, 0, 35)
    adminBox.Position = UDim2.new(0.5, -105, 0, 45)
    adminBox.BackgroundColor3 = Color3.fromRGB(60, 20, 20)
    adminBox.TextColor3 = Color3.fromRGB(255, 255, 255)
    adminBox.Font = Enum.Font.SourceSans
    adminBox.TextSize = 14
    adminBox.PlaceholderText = "Enter amount/seconds..."
    adminBox.PlaceholderColor3 = Color3.fromRGB(150, 100, 100)
    adminBox.ClearTextOnFocus = false
    adminBox.Parent = adminFrame
    local adminBoxCorner = Instance.new("UICorner")
    adminBoxCorner.CornerRadius = UDim.new(0, 6)
    adminBoxCorner.Parent = adminBox

    local btnSetTimer = Instance.new("TextButton")
    btnSetTimer.Size = UDim2.new(0, 210, 0, 35)
    btnSetTimer.Position = UDim2.new(0.5, -105, 0, 90)
    btnSetTimer.BackgroundColor3 = Color3.fromRGB(100, 30, 30)
    btnSetTimer.TextColor3 = Color3.fromRGB(255, 255, 255)
    btnSetTimer.Font = Enum.Font.SourceSansBold
    btnSetTimer.TextSize = 14
    btnSetTimer.Text = "Set Timer (In Seconds)"
    btnSetTimer.Parent = adminFrame
    local btnSetTimerCorner = Instance.new("UICorner")
    btnSetTimerCorner.CornerRadius = UDim.new(0, 6)
    btnSetTimerCorner.Parent = btnSetTimer

    btnSetTimer.MouseButton1Click:Connect(function()
        local num = tonumber(adminBox.Text)
        if num and num >= 0 then timeLeft = math.floor(num) end
    end)

    local btnAddCoins = Instance.new("TextButton")
    btnAddCoins.Size = UDim2.new(0, 210, 0, 35)
    btnAddCoins.Position = UDim2.new(0.5, -105, 0, 135)
    btnAddCoins.BackgroundColor3 = Color3.fromRGB(100, 30, 30)
    btnAddCoins.TextColor3 = Color3.fromRGB(255, 255, 255)
    btnAddCoins.Font = Enum.Font.SourceSansBold
    btnAddCoins.TextSize = 14
    btnAddCoins.Text = "Add Coins"
    btnAddCoins.Parent = adminFrame
    local btnAddCoinsCorner = Instance.new("UICorner")
    btnAddCoinsCorner.CornerRadius = UDim.new(0, 6)
    btnAddCoinsCorner.Parent = btnAddCoins

    btnAddCoins.MouseButton1Click:Connect(function()
        local num = tonumber(adminBox.Text)
        if not num or num <= 0 then return end
        local promptReward = game.ReplicatedStorage:FindFirstChild("Remotes") and game.ReplicatedStorage.Remotes:FindFirstChild("PromptReward")
        
        if promptReward then
            local args = {{Folder = "leaderstats", Name = "Coins", Amount = math.floor(num)}}
            promptReward:FireServer(unpack(args))
            
            btnAddCoins.Text = "Success!"
            task.wait(1)
            btnAddCoins.Text = "Add Coins"
        end
    end)

    local btnCheatBuy = Instance.new("TextButton")
    btnCheatBuy.Size = UDim2.new(0, 210, 0, 45)
    btnCheatBuy.Position = UDim2.new(0.5, -105, 0, 185)
    btnCheatBuy.BackgroundColor3 = Color3.fromRGB(150, 30, 30)
    btnCheatBuy.TextColor3 = Color3.fromRGB(255, 255, 255)
    btnCheatBuy.Font = Enum.Font.SourceSansBold
    btnCheatBuy.TextSize = 14
    btnCheatBuy.Text = "Cheap Buy (Costs x1 Coin)"
    btnCheatBuy.Parent = adminFrame
    local btnCheatBuyCorner = Instance.new("UICorner")
    btnCheatBuyCorner.CornerRadius = UDim.new(0, 6)
    btnCheatBuyCorner.Parent = btnCheatBuy

    btnCheatBuy.MouseButton1Click:Connect(function()
        local num = tonumber(adminBox.Text)
        if not num or num <= 0 then return end
        local buyAmount = math.floor(num)
        local promptReward = game.ReplicatedStorage:FindFirstChild("Remotes") and game.ReplicatedStorage.Remotes:FindFirstChild("PromptReward")
        
        if promptReward then
            local spendArgs = {{Folder = "leaderstats", Name = "Coins", Amount = -buyAmount}}
            promptReward:FireServer(unpack(spendArgs))
            
            local giveArgs
            if buyMode == "Skips" then
                giveArgs = {{Folder = "otherValues", Name = "Skips", Amount = buyAmount}}
            elseif buyMode == "Wins" then
                giveArgs = {{Folder = "leaderstats", Name = "Wins", Amount = buyAmount}}
            elseif buyMode == "Spins" then
                giveArgs = {{Folder = "otherValues", Name = "Spins", Amount = buyAmount}}
            end
            promptReward:FireServer(unpack(giveArgs))
        end
    end)
end

closeBtn.MouseButton1Click:Connect(function() screenGui:Destroy() end)

local function updateCalculator()
    local inputNumber = tonumber(textBox.Text)
    if inputNumber and inputNumber > 0 then
        local buyAmount = math.floor(inputNumber)
        local multiplier = 100
        if buyMode == "Wins" then multiplier = 10000
        elseif buyMode == "Spins" then multiplier = 5000 end
        local cost = buyAmount * multiplier
        costLabel.Text = "This will cost: " .. string.format("%.0f", cost) .. " Coins"
        
        if cost <= 1000 then costLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
        elseif cost <= 10000 then costLabel.TextColor3 = Color3.fromRGB(255, 255, 0)
        elseif cost <= 100000 then costLabel.TextColor3 = Color3.fromRGB(255, 0, 0)
        else costLabel.TextColor3 = Color3.fromRGB(160, 32, 240) end
    else
        costLabel.Text = "This will cost: 0 Coins"
        costLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
    end
end

modeBtn.MouseButton1Click:Connect(function()
    if buyMode == "Skips" then buyMode = "Wins" modeBtn.Text = "Buy: Wins" modeBtn.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
    elseif buyMode == "Wins" then buyMode = "Spins" modeBtn.Text = "Buy: Spins" modeBtn.BackgroundColor3 = Color3.fromRGB(138, 43, 226)
    else buyMode = "Skips" modeBtn.Text = "Buy: Skips" modeBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 255) end
    updateCalculator()
end)

textBox:GetPropertyChangedSignal("Text"):Connect(updateCalculator)

task.spawn(function()
    while true do
        local minutes = math.floor(timeLeft / 60)
        local seconds = timeLeft % 60
        local timeString = string.format("%02d:%02d", minutes, seconds)
        
        if not isBoostPhase then
            timerLabel.Text = "Next x2 Boost in: " .. timeString
            timerLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
        else
            timerLabel.Text = "🔥 x2 BOOST ACTIVE: " .. timeString .. " 🔥"
            timerLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
        end
        
        task.wait(1)
        timeLeft = timeLeft - 1
        
        if timeLeft < 0 then
            if not isBoostPhase then
                isBoostPhase = true
                isDoubleReward = true
                timeLeft = 5 * 60
            else
                isBoostPhase = false
                isDoubleReward = false
                timeLeft = 20 * 60
            end
        end
    end
end)

btnBuy.MouseButton1Click:Connect(function()
    local leaderstats = player:FindFirstChild("leaderstats")
    local coinsValue = leaderstats and leaderstats:FindFirstChild("Coins")
    local promptReward = game.ReplicatedStorage:FindFirstChild("Remotes") and game.ReplicatedStorage.Remotes:FindFirstChild("PromptReward")

    local inputNumber = tonumber(textBox.Text)
    if not inputNumber or inputNumber <= 0 then return end
    local buyAmount = math.floor(inputNumber)
    
    local multiplier = 100
    if buyMode == "Wins" then multiplier = 10000
    elseif buyMode == "Spins" then multiplier = 5000 end
    local coinCost = buyAmount * multiplier
    
    if coinsValue and coinsValue.Value < coinCost then
        btnBuy.Text = "Not enough Coins!"
        btnBuy.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
        task.wait(1.5)
        btnBuy.Text = "Buy"
        btnBuy.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
        return
    end
    
    local finalReward = isDoubleReward and (buyAmount * 2) or buyAmount
    
    if promptReward then
        local spendArgs = {{Folder = "leaderstats", Name = "Coins", Amount = -coinCost}}
        promptReward:FireServer(unpack(spendArgs))
        
        local giveArgs
        if buyMode == "Skips" then
            giveArgs = {{Folder = "otherValues", Name = "Skips", Amount = finalReward}}
        elseif buyMode == "Wins" then
            giveArgs = {{Folder = "leaderstats", Name = "Wins", Amount = finalReward}}
        elseif buyMode == "Spins" then
            giveArgs = {{Folder = "otherValues", Name = "Spins", Amount = finalReward}}
        end
        promptReward:FireServer(unpack(giveArgs))
        
        btnBuy.Text = "Success! +"..finalReward
        btnBuy.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
        task.wait(1.5)
        btnBuy.Text = "Buy"
        btnBuy.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    end
end)

Features & Information

You can buy Wins, Spins and Skips With Coins! This script made for peoples that dosent want to get free things.. You can change your username to get admin panel! If you want to get amount of coins, wins, spins and skips you want for free, go to my profile and check my "Custom Amount Giver". Enjoy! I think..
#RABO#Keyless#Shop#For Fun

Community Comments (0)

No comments yet for this script.

More Scripts for [W4] Ride a Box Obby 📦