
Keyless

local player = game:GetService("Players").LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local winSound = Instance.new("Sound")
winSound.SoundId = "rbxassetid://132919665409307"
winSound.Volume = 0.8
winSound.Parent = game:GetService("SoundService")
local loseSound = Instance.new("Sound")
loseSound.SoundId = "rbxassetid://125623877509633"
loseSound.Volume = 0.8
loseSound.Parent = game:GetService("SoundService")
local function saveSettings(index, bet, buffEndTime, isMuted)
if writefile then
pcall(function()
writefile("DoubleOrNothing_AdvSettings.txt", tostring(index) .. "," .. tostring(bet) .. "," .. tostring(buffEndTime) .. "," .. tostring(isMuted))
end)
end
end
local baseWinChance = 50
local winChance = 50
local activeBuffPercent = 0
local function loadSettings()
if readfile then
local success, result = pcall(function()
return readfile("DoubleOrNothing_AdvSettings.txt")
end)
if success and result then
local data = string.split(result, ",")
local index = tonumber(data[1])
local bet = data[2] or ""
local buffEndTime = tonumber(data[3]) or 0
local isMuted = data[4] == "true"
local currentTime = os.time()
if currentTime < buffEndTime then
local timeLeft = buffEndTime - currentTime
if timeLeft > (35 * 60) then
winChance = 98
activeBuffPercent = 98
else
winChance = 80
activeBuffPercent = 80
end
end
if index and index >= 1 and index <= 4 then
return index, bet, buffEndTime, isMuted
end
end
end
return 1, "", 0, false
end
local currentCurrencyIndex, savedBet, savedBuffEndTime, isMuted = loadSettings()
winSound.Volume = isMuted and 0 or 0.8
loseSound.Volume = isMuted and 0 or 0.8
if playerGui:FindFirstChild("DoubleOrNothingGui") then
playerGui.DoubleOrNothingGui:Destroy()
end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "DoubleOrNothingGui"
ScreenGui.Parent = playerGui
ScreenGui.ResetOnSpawn = false
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Parent = ScreenGui
MainFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
MainFrame.Position = UDim2.new(0.5, -125, 0.5, -220)
MainFrame.Size = UDim2.new(0, 250, 0, 440)
MainFrame.BorderSizePixel = 2
MainFrame.BorderColor3 = Color3.fromRGB(255, 255, 255)
MainFrame.Active = true
MainFrame.Draggable = true
local Title = Instance.new("TextLabel")
Title.Name = "Title"
Title.Parent = MainFrame
Title.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
Title.BorderSizePixel = 0
Title.Size = UDim2.new(1, 0, 0, 35)
Title.Font = Enum.Font.SourceSansBold
Title.Text = "Double or Nothing"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 18
local TimerLabel = Instance.new("TextLabel")
TimerLabel.Name = "TimerLabel"
TimerLabel.Parent = MainFrame
TimerLabel.BackgroundTransparency = 1
TimerLabel.Position = UDim2.new(0.05, 0, 0.09, 0)
TimerLabel.Size = UDim2.new(0.9, 0, 0, 20)
TimerLabel.Font = Enum.Font.SourceSansBold
TimerLabel.Text = "Loading timer..."
TimerLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
TimerLabel.TextSize = 14
local BuffLabel = Instance.new("TextLabel")
BuffLabel.Name = "BuffLabel"
BuffLabel.Parent = MainFrame
BuffLabel.BackgroundTransparency = 1
BuffLabel.Position = UDim2.new(0.05, 0, 0.14, 0)
BuffLabel.Size = UDim2.new(0.9, 0, 0, 20)
BuffLabel.Font = Enum.Font.SourceSansBold
BuffLabel.Text = "Buff: Inactive"
BuffLabel.TextColor3 = Color3.fromRGB(170, 170, 170)
BuffLabel.TextSize = 14
local CurrencyButton = Instance.new("TextButton")
CurrencyButton.Name = "CurrencyButton"
CurrencyButton.Parent = MainFrame
CurrencyButton.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
CurrencyButton.Position = UDim2.new(0.1, 0, 0.20, 0)
CurrencyButton.Size = UDim2.new(0.8, 0, 0, 25)
CurrencyButton.Font = Enum.Font.SourceSansBold
CurrencyButton.Text = "MODE: Coins"
CurrencyButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CurrencyButton.TextSize = 15
CurrencyButton.BorderSizePixel = 1
local InputField = Instance.new("TextBox")
InputField.Name = "InputField"
InputField.Parent = MainFrame
InputField.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
InputField.Position = UDim2.new(0.1, 0, 0.28, 0)
InputField.Size = UDim2.new(0.8, 0, 0, 25)
InputField.Font = Enum.Font.SourceSans
InputField.PlaceholderText = "Type your bet here..."
InputField.Text = savedBet
InputField.TextColor3 = Color3.fromRGB(0, 0, 0)
InputField.PlaceholderColor3 = Color3.fromRGB(120, 120, 120)
InputField.TextSize = 15
InputField.ClearTextOnFocus = false
local GambleButton = Instance.new("TextButton")
GambleButton.Name = "GambleButton"
GambleButton.Parent = MainFrame
GambleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
GambleButton.Position = UDim2.new(0.1, 0, 0.36, 0)
GambleButton.Size = UDim2.new(0.8, 0, 0, 25)
GambleButton.Font = Enum.Font.SourceSansBold
GambleButton.Text = "PLAY"
GambleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
GambleButton.TextSize = 16
GambleButton.BorderSizePixel = 1
local AutoButton = Instance.new("TextButton")
AutoButton.Name = "AutoButton"
AutoButton.Parent = MainFrame
AutoButton.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
AutoButton.Position = UDim2.new(0.1, 0, 0.44, 0)
AutoButton.Size = UDim2.new(0.8, 0, 0, 25)
AutoButton.Font = Enum.Font.SourceSansBold
AutoButton.Text = "AUTO PLAY: OFF"
AutoButton.TextColor3 = Color3.fromRGB(255, 255, 255)
AutoButton.TextSize = 16
AutoButton.BorderSizePixel = 1
local Buy80BuffButton = Instance.new("TextButton")
Buy80BuffButton.Name = "Buy80BuffButton"
Buy80BuffButton.Parent = MainFrame
Buy80BuffButton.BackgroundColor3 = Color3.fromRGB(140, 0, 210)
Buy80BuffButton.Position = UDim2.new(0.1, 0, 0.52, 0)
Buy80BuffButton.Size = UDim2.new(0.8, 0, 0, 25)
Buy80BuffButton.Font = Enum.Font.SourceSansBold
Buy80BuffButton.Text = "Buy 80% Luck For 30 Mins (100k Coins)"
Buy80BuffButton.TextColor3 = Color3.fromRGB(255, 255, 255)
Buy80BuffButton.TextSize = 14
Buy80BuffButton.BorderSizePixel = 1
local Buy98BuffButton = Instance.new("TextButton")
Buy98BuffButton.Name = "Buy98BuffButton"
Buy98BuffButton.Parent = MainFrame
Buy98BuffButton.BackgroundColor3 = Color3.fromRGB(210, 140, 0)
Buy98BuffButton.Position = UDim2.new(0.1, 0, 0.60, 0)
Buy98BuffButton.Size = UDim2.new(0.8, 0, 0, 25)
Buy98BuffButton.Font = Enum.Font.SourceSansBold
Buy98BuffButton.Text = "Buy 98% Luck For 1 Day (50M Coins)"
Buy98BuffButton.TextColor3 = Color3.fromRGB(255, 255, 255)
Buy98BuffButton.TextSize = 14
Buy98BuffButton.BorderSizePixel = 1
local MuteButton = Instance.new("TextButton")
MuteButton.Name = "MuteButton"
MuteButton.Parent = MainFrame
MuteButton.BackgroundColor3 = isMuted and Color3.fromRGB(150, 50, 50) or Color3.fromRGB(50, 150, 50)
MuteButton.Position = UDim2.new(0.1, 0, 0.68, 0)
MuteButton.Size = UDim2.new(0.8, 0, 0, 25)
MuteButton.Font = Enum.Font.SourceSansBold
MuteButton.Text = isMuted and "Sound: OFF" or "Sound: ON"
MuteButton.TextColor3 = Color3.fromRGB(255, 255, 255)
MuteButton.TextSize = 14
MuteButton.BorderSizePixel = 1
local StatusLabel = Instance.new("TextLabel")
StatusLabel.Name = "StatusLabel"
StatusLabel.Parent = MainFrame
StatusLabel.BackgroundTransparency = 1
StatusLabel.Position = UDim2.new(0.1, 0, 0.76, 0)
StatusLabel.Size = UDim2.new(0.8, 0, 0, 40)
StatusLabel.Font = Enum.Font.SourceSansBold
StatusLabel.Text = "Enter amount and press Play"
StatusLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
StatusLabel.TextSize = 14
StatusLabel.TextWrapped = true
local currencies = {
{name = "Coins", folder = "leaderstats"},
{name = "Wins", folder = "leaderstats"},
{name = "Skips", folder = "otherValues"},
{name = "Spins", folder = "otherValues"}
}
CurrencyButton.Text = "MODE: " .. currencies[currentCurrencyIndex].name
local isAutoPlaying = false
local onCooldown = false
local buffEndTime = savedBuffEndTime
local function getPlayerBalance(currencyOverride)
local activeCurrency = currencyOverride or currencies[currentCurrencyIndex]
local folder = player:FindFirstChild(activeCurrency.folder)
if folder then
local valueObj = folder:FindFirstChild(activeCurrency.name)
if valueObj and (valueObj:IsA("IntValue") or valueObj:IsA("NumberValue")) then
return valueObj.Value
end
end
return nil
end
local function sendReward(amount, currencyOverride)
local activeCurrency = currencyOverride or currencies[currentCurrencyIndex]
local args = {
{
Folder = activeCurrency.folder,
Name = activeCurrency.name,
Amount = amount
}
}
local remote = game:GetService("ReplicatedStorage"):WaitForChild("Remotes"):WaitForChild("PromptReward")
remote:FireServer(unpack(args))
end
task.spawn(function()
while true do
baseWinChance = 50
TimerLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
local normalTime = 5 * 60
while normalTime > 0 do
local mins = math.floor(normalTime / 60)
local secs = normalTime % 60
TimerLabel.Text = string.format("Normal Mode (50/50): %02d:%02d", mins, secs)
task.wait(1)
normalTime = normalTime - 1
end
baseWinChance = 65
TimerLabel.TextColor3 = Color3.fromRGB(255, 215, 0)
local luckyTime = 2 * 60
while luckyTime > 0 do
local mins = math.floor(luckyTime / 60)
local secs = luckyTime % 60
TimerLabel.Text = string.format("✨ LUCKY MODE (65/35): %02d:%02d ✨", mins, secs)
task.wait(1)
luckyTime = luckyTime - 1
end
end
end)
task.spawn(function()
while true do
local currentTime = os.time()
if currentTime < buffEndTime then
local timeLeft = buffEndTime - currentTime
local hours = math.floor(timeLeft / 3600)
local mins = math.floor((timeLeft % 3600) / 60)
local secs = timeLeft % 60
if hours > 0 then
BuffLabel.Text = string.format("💎 LUCK %d%%: %02d:%02d:%02d 💎", activeBuffPercent, hours, mins, secs)
else
BuffLabel.Text = string.format("💎 LUCK %d%%: %02d:%02d 💎", activeBuffPercent, mins, secs)
end
BuffLabel.TextColor3 = Color3.fromRGB(0, 255, 170)
else
winChance = baseWinChance
activeBuffPercent = 0
BuffLabel.Text = "Buff: Inactive"
BuffLabel.TextColor3 = Color3.fromRGB(170, 170, 170)
end
task.wait(1)
end
end)
local function playGamble()
local amount = tonumber(InputField.Text)
local activeCurrency = currencies[currentCurrencyIndex]
if not amount or amount <= 0 then
StatusLabel.Text = "Enter a valid number!"
StatusLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
return false
end
local currentBalance = getPlayerBalance()
if currentBalance and amount > currentBalance then
StatusLabel.Text = "❌ Not enough " .. activeCurrency.name .. "!"
StatusLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
isAutoPlaying = false
AutoButton.Text = "AUTO PLAY: OFF"
AutoButton.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
return false
end
saveSettings(currentCurrencyIndex, InputField.Text, buffEndTime, isMuted)
local roll = math.random(1, 100)
local win = roll <= winChance
if win then
local reward = math.floor(amount * 2)
sendReward(reward)
StatusLabel.Text = "WIN! You got " .. reward .. " " .. activeCurrency.name .. "!"
StatusLabel.TextColor3 = Color3.fromRGB(50, 255, 50)
winSound:Play()
else
local loss = -math.floor(amount * 2)
sendReward(loss)
StatusLabel.Text = "LOSE! You lost " .. (amount * 2) .. " " .. activeCurrency.name .. " (x2)."
StatusLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
loseSound:Play()
end
return true
end
CurrencyButton.MouseButton1Click:Connect(function()
currentCurrencyIndex = currentCurrencyIndex + 1
if currentCurrencyIndex > #currencies then currentCurrencyIndex = 1 end
CurrencyButton.Text = "MODE: " .. currencies[currentCurrencyIndex].name
saveSettings(currentCurrencyIndex, InputField.Text, buffEndTime, isMuted)
end)
GambleButton.MouseButton1Click:Connect(function()
if isAutoPlaying or onCooldown then return end
local success = playGamble()
if success then
onCooldown = true
GambleButton.BackgroundColor3 = Color3.fromRGB(0, 100, 0)
task.wait(0.2)
GambleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
onCooldown = false
end
end)
AutoButton.MouseButton1Click:Connect(function()
isAutoPlaying = not isAutoPlaying
if isAutoPlaying then
AutoButton.Text = "AUTO PLAY: ON"
AutoButton.BackgroundColor3 = Color3.fromRGB(0, 120, 200)
task.spawn(function()
while isAutoPlaying do
local success = playGamble()
if not success then break end
task.wait(0.2)
end
end)
else
AutoButton.Text = "AUTO PLAY: OFF"
AutoButton.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
end
end)
Buy80BuffButton.MouseButton1Click:Connect(function()
local coinsInfo = currencies[1]
local currentCoins = getPlayerBalance(coinsInfo)
if os.time() < buffEndTime then
StatusLabel.Text = "❌ A buff is already active!"
StatusLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
return
end
if not currentCoins or currentCoins < 100000 then
StatusLabel.Text = "❌ Need 100k Coins!"
StatusLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
return
end
sendReward(-100000, coinsInfo)
buffEndTime = os.time() + (30 * 60)
winChance = 80
activeBuffPercent = 80
saveSettings(currentCurrencyIndex, InputField.Text, buffEndTime, isMuted)
StatusLabel.Text = "🎉 Bought 80% Luck for 30m!"
StatusLabel.TextColor3 = Color3.fromRGB(0, 255, 170)
end)
Buy98BuffButton.MouseButton1Click:Connect(function()
local coinsInfo = currencies[1]
local currentCoins = getPlayerBalance(coinsInfo)
if os.time() < buffEndTime then
StatusLabel.Text = "❌ A buff is already active!"
StatusLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
return
end
if not currentCoins or currentCoins < 50000000 then
StatusLabel.Text = "❌ Need 50,000,000 Coins!"
StatusLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
return
end
sendReward(-50000000, coinsInfo)
buffEndTime = os.time() + (24 * 60 * 60)
winChance = 98
activeBuffPercent = 98
saveSettings(currentCurrencyIndex, InputField.Text, buffEndTime, isMuted)
StatusLabel.Text = "🎉 Bought 98% Luck for 1 day!"
StatusLabel.TextColor3 = Color3.fromRGB(0, 255, 170)
end)
MuteButton.MouseButton1Click:Connect(function()
isMuted = not isMuted
if isMuted then
winSound.Volume = 0
loseSound.Volume = 0
MuteButton.Text = "Sound: OFF"
MuteButton.BackgroundColor3 = Color3.fromRGB(150, 50, 50)
else
winSound.Volume = 0.8
loseSound.Volume = 0.8
MuteButton.Text = "Sound: ON"
MuteButton.BackgroundColor3 = Color3.fromRGB(50, 150, 50)
end
saveSettings(currentCurrencyIndex, InputField.Text, buffEndTime, isMuted)
end)No comments yet for this script.