local Players = game:GetService("Players")
local TeleportService = game:GetService("TeleportService")
local HttpService = game:GetService("HttpService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local CocoXLoadingGui = nil
local function makeFallbackLoader(parent)
local bg = Instance.new("Frame")
bg.Name = "FallbackBackground"
bg.Size = UDim2.fromScale(1, 1)
bg.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
bg.BorderSizePixel = 0
bg.ZIndex = 1
bg.Parent = parent
local c = Instance.new("TextLabel")
c.Name = "BigC"
c.Size = UDim2.fromScale(0.7, 0.7)
c.Position = UDim2.fromScale(0.15, 0.12)
c.BackgroundTransparency = 1
c.Text = "C"
c.Font = Enum.Font.GothamBlack
c.TextScaled = true
c.TextColor3 = Color3.fromRGB(255, 140, 0)
c.TextStrokeTransparency = 0.3
c.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
c.ZIndex = 2
c.Parent = bg
local label = Instance.new("TextLabel")
label.Name = "Status"
label.Size = UDim2.new(1, -40, 0, 34)
label.Position = UDim2.new(0, 20, 1, -70)
label.BackgroundTransparency = 1
label.Text = "Loading CocoX Authentication"
label.Font = Enum.Font.GothamBold
label.TextSize = 18
label.TextColor3 = Color3.fromRGB(255, 140, 0)
label.TextXAlignment = Enum.TextXAlignment.Center
label.ZIndex = 2
label.Parent = bg
end
local function startCocoXLoadingScreen()
CocoXLoadingGui = Instance.new("ScreenGui")
CocoXLoadingGui.Name = "CocoXLoadingScreen"
CocoXLoadingGui.ResetOnSpawn = false
CocoXLoadingGui.IgnoreGuiInset = true
CocoXLoadingGui.DisplayOrder = 100000
CocoXLoadingGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
if not pcall(function() CocoXLoadingGui.Parent = CoreGui end) then
CocoXLoadingGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end
makeFallbackLoader(CocoXLoadingGui)
end
local function stopCocoXLoadingScreen()
pcall(function()
if CocoXLoadingGui then
CocoXLoadingGui:Destroy()
end
end)
CocoXLoadingGui = nil
end
local CocoXWarningGui = nil
local function showCocoXWarning()
local TweenService = game:GetService("TweenService")
CocoXWarningGui = Instance.new("ScreenGui")
CocoXWarningGui.Name = "CocoXWarningScreen"
CocoXWarningGui.ResetOnSpawn = false
CocoXWarningGui.IgnoreGuiInset = true
CocoXWarningGui.DisplayOrder = 100001
CocoXWarningGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local guiParented = pcall(function()
CocoXWarningGui.Parent = CoreGui
end)
if not guiParented then
CocoXWarningGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end
-- Dark overlay leaves the underlying CocoX loading text just visible.
local shade = Instance.new("Frame")
shade.Name = "Overlay"
shade.Size = UDim2.fromScale(1, 1)
shade.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
shade.BackgroundTransparency = 0.08
shade.BorderSizePixel = 0
shade.Active = true
shade.Parent = CocoXWarningGui
-- Solid-black warning card with a bright orange outline.
local card = Instance.new("Frame")
card.Name = "WarningCard"
card.AnchorPoint = Vector2.new(0.5, 0.5)
card.Position = UDim2.fromScale(0.5, 0.5)
card.Size = UDim2.fromOffset(560, 320)
card.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
card.BackgroundTransparency = 0
card.BorderSizePixel = 0
card.Parent = shade
local cardScale = Instance.new("UIScale")
cardScale.Scale = 1
cardScale.Parent = card
local function updateCardScale()
local camera = workspace.CurrentCamera
local viewport = camera and camera.ViewportSize or Vector2.new(560, 320)
cardScale.Scale = math.min(1, math.max(0.5, (viewport.X - 24) / 560), math.max(0.5, (viewport.Y - 24) / 320))
end
updateCardScale()
local viewportConnection
if workspace.CurrentCamera then
viewportConnection = workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize"):Connect(updateCardScale)
end
local cardCorner = Instance.new("UICorner")
cardCorner.CornerRadius = UDim.new(0, 20)
cardCorner.Parent = card
local border = Instance.new("UIStroke")
border.Color = Color3.fromRGB(255, 145, 0)
border.Transparency = 0
border.Thickness = 2
border.Parent = card
local logo = Instance.new("TextLabel")
logo.Name = "Logo"
logo.Size = UDim2.fromOffset(58, 58)
logo.Position = UDim2.new(0.5, -29, 0, 18)
logo.BackgroundTransparency = 1
logo.Text = "C"
logo.Font = Enum.Font.GothamBlack
logo.TextSize = 54
logo.TextColor3 = Color3.fromRGB(255, 140, 0)
logo.TextStrokeColor3 = Color3.fromRGB(95, 43, 0)
logo.TextStrokeTransparency = 0.35
logo.ZIndex = 3
logo.Parent = card
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, -32, 0, 34)
title.Position = UDim2.new(0, 16, 0, 78)
title.BackgroundTransparency = 1
title.Text = "Warning"
title.Font = Enum.Font.GothamBold
title.TextSize = 22
title.TextColor3 = Color3.fromRGB(255, 174, 72)
title.TextXAlignment = Enum.TextXAlignment.Center
title.ZIndex = 3
title.Parent = card
local warning = Instance.new("TextLabel")
warning.Name = "Warning"
warning.Size = UDim2.new(1, -48, 0, 126)
warning.Position = UDim2.new(0, 24, 0, 102)
warning.BackgroundTransparency = 1
warning.Text = "Deobfuscating this script could lead to you getting permanently banned from CocoX and could also lead to your Roblox account being banned."
warning.Font = Enum.Font.GothamBold
warning.TextSize = 17
warning.TextColor3 = Color3.fromRGB(255, 105, 72)
warning.TextWrapped = true
warning.TextXAlignment = Enum.TextXAlignment.Center
warning.TextYAlignment = Enum.TextYAlignment.Center
warning.ZIndex = 3
warning.Parent = card
local continueButton = Instance.new("TextButton")
continueButton.Name = "ContinueButton"
continueButton.Size = UDim2.new(1, -48, 0, 48)
continueButton.Position = UDim2.new(0, 24, 1, -72)
continueButton.BackgroundColor3 = Color3.fromRGB(255, 140, 0)
continueButton.BorderSizePixel = 0
continueButton.AutoButtonColor = false
continueButton.Text = "CONTINUE"
continueButton.Font = Enum.Font.GothamBold
continueButton.TextSize = 14
continueButton.TextColor3 = Color3.fromRGB(0, 0, 0)
continueButton.ZIndex = 4
continueButton.Parent = card
local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 11)
buttonCorner.Parent = continueButton
local continued = false
continueButton.MouseEnter:Connect(function()
TweenService:Create(continueButton, TweenInfo.new(0.15), {
BackgroundColor3 = Color3.fromRGB(255, 166, 40)
}):Play()
end)
continueButton.MouseLeave:Connect(function()
TweenService:Create(continueButton, TweenInfo.new(0.15), {
BackgroundColor3 = Color3.fromRGB(255, 140, 0)
}):Play()
end)
continueButton.Activated:Connect(function()
if continued then return end
continued = true
continueButton.Active = false
continueButton.Text = "CONTINUING..."
continueButton.BackgroundColor3 = Color3.fromRGB(75, 215, 120)
TweenService:Create(card, TweenInfo.new(0.22), {
BackgroundTransparency = 1
}):Play()
TweenService:Create(shade, TweenInfo.new(0.22), {
BackgroundTransparency = 1
}):Play()
TweenService:Create(border, TweenInfo.new(0.22), {
Transparency = 1
}):Play()
task.wait(0.25)
if viewportConnection then viewportConnection:Disconnect() end
if CocoXWarningGui then CocoXWarningGui:Destroy() end
CocoXWarningGui = nil
end)
while not continued and CocoXWarningGui and CocoXWarningGui.Parent do
task.wait()
end
end
local function showCocoXAIIntro()
local gui = Instance.new("ScreenGui")
gui.Name = "CocoXAIIntro"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.DisplayOrder = 100002
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
if not pcall(function() gui.Parent = CoreGui end) then
gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end
local Images = {
"rbxassetid://90082193310359", "rbxassetid://140111217806195", "rbxassetid://113259892662011",
"rbxassetid://131132202280501", "rbxassetid://119205939792116", "rbxassetid://88418000250691",
"rbxassetid://120238785712873", "rbxassetid://83808651896724", "rbxassetid://105345289833569",
"rbxassetid://94330536346405", "rbxassetid://136006381271922", "rbxassetid://87906794545741",
"rbxassetid://112714840439381", "rbxassetid://135185412807788", "rbxassetid://137259627256626",
"rbxassetid://120220914912790", "rbxassetid://93523282075094", "rbxassetid://136732688200255",
"rbxassetid://138525844130589", "rbxassetid://140334678801360", "rbxassetid://134105611692204",
"rbxassetid://89336885265398", "rbxassetid://101990250036387", "rbxassetid://75637145908292",
"rbxassetid://116874353510206", "rbxassetid://109499593730240", "rbxassetid://93246503182802",
"rbxassetid://72860360932966", "rbxassetid://99337238315017", "rbxassetid://97845911184347",
"rbxassetid://131590118496375", "rbxassetid://94049526088192", "rbxassetid://129600097997101",
"rbxassetid://93840405668970", "rbxassetid://102532764909158", "rbxassetid://124718361223677",
"rbxassetid://140151979212906", "rbxassetid://77069622782367", "rbxassetid://94639382197235",
"rbxassetid://98828480242667", "rbxassetid://135083086902172", "rbxassetid://109318742417115",
"rbxassetid://117259790998663", "rbxassetid://124917742187190", "rbxassetid://111964888652172",
"rbxassetid://117782207065349", "rbxassetid://72406282546539", "rbxassetid://124069160042945",
"rbxassetid://137758638233258", "rbxassetid://98296136420850"
}
local ContentProvider = game:GetService("ContentProvider")
local background = Instance.new("Frame")
background.Size = UDim2.fromScale(1, 1)
background.BackgroundColor3 = Color3.new(0, 0, 0)
background.BorderSizePixel = 0
background.Parent = gui
local image = Instance.new("ImageLabel")
image.Size = UDim2.fromScale(1, 1)
image.Position = UDim2.fromScale(0.5, 0.5)
image.AnchorPoint = Vector2.new(0.5, 0.5)
image.BackgroundTransparency = 1
image.ScaleType = Enum.ScaleType.Fit
image.Image = Images[1]
image.Parent = background
-- Preload real image instances. PreloadAsync does not accept raw strings.
local preload = {}
for _, id in ipairs(Images) do
local temp = Instance.new("ImageLabel")
temp.Size = UDim2.fromOffset(1, 1)
temp.BackgroundTransparency = 1
temp.Image = id
temp.Parent = gui
preload[#preload + 1] = temp
end
pcall(function() ContentProvider:PreloadAsync(preload) end)
for _, temp in ipairs(preload) do
temp:Destroy()
end
-- Show the animation once for exactly 3 seconds.
local started = os.clock()
local frame = 1
while os.clock() - started < 2 do
image.Image = Images[frame]
frame += 1
if frame > #Images then
frame = 1
end
task.wait(1 / 30)
end
gui:Destroy()
end
local function startRedeemer()
local player = LocalPlayer
local pg = player:WaitForChild("PlayerGui")
task.wait(0.15)
for i = 1, 10 do
task.wait(0.05)
end
showCocoXWarning()
showCocoXAIIntro()
stopCocoXLoadingScreen()
local cloneref = cloneref or function(object) return object end
local Players = cloneref(game:GetService("Players"))
local ReplicatedStorage = cloneref(game:GetService("ReplicatedStorage"))
local RunService = cloneref(game:GetService("RunService"))
local UserInputService = cloneref(game:GetService("UserInputService"))
local HttpService = cloneref(game:GetService("HttpService"))
if getgenv and getgenv().StopAura then pcall(getgenv().StopAura) end
local CONFIG_FILE = "cocox_redeemer_config.json"
local savedConfig = {
codeSniper = true,
autoSubmit = true,
submitAfter = 1,
submitDelay = 0.0,
submitDelayEnabled = false,
retypeInvalid = false,
showBrainrotSpawned = false,
brainrotManualOff = false,
autoBuy = false,
riddleSolver = false,
riddleAutoSubmit = true,
}
pcall(function()
if type(isfile) == "function" and type(readfile) == "function" and isfile(CONFIG_FILE) then
local decoded = HttpService:JSONDecode(readfile(CONFIG_FILE))
if type(decoded) == "table" then
if type(decoded.codeSniper) == "boolean" then savedConfig.codeSniper = decoded.codeSniper end
if type(decoded.autoSubmit) == "boolean" then savedConfig.autoSubmit = decoded.autoSubmit end
savedConfig.submitAfter = 1
if type(decoded.submitDelay) == "number" then savedConfig.submitDelay = math.clamp(decoded.submitDelay, 0.0, 5.0) end
if type(decoded.submitDelayEnabled) == "boolean" then savedConfig.submitDelayEnabled = decoded.submitDelayEnabled end
if type(decoded.retypeInvalid) == "boolean" then savedConfig.retypeInvalid = decoded.retypeInvalid end
if type(decoded.showBrainrotSpawned) == "boolean" then savedConfig.showBrainrotSpawned = decoded.showBrainrotSpawned end
if type(decoded.brainrotManualOff) == "boolean" then savedConfig.brainrotManualOff = decoded.brainrotManualOff end
if type(decoded.autoBuy) == "boolean" then savedConfig.autoBuy = decoded.autoBuy end
-- Riddle Solver intentionally starts OFF on every execution.
if type(decoded.riddleAutoSubmit) == "boolean" then savedConfig.riddleAutoSubmit = decoded.riddleAutoSubmit end
end
end
end)
local function saveConfig()
if type(writefile) ~= "function" then return end
pcall(function()
writefile(CONFIG_FILE, HttpService:JSONEncode({
codeSniper = savedConfig.codeSniper,
autoSubmit = savedConfig.autoSubmit,
submitAfter = savedConfig.submitAfter,
submitDelay = savedConfig.submitDelay,
submitDelayEnabled = savedConfig.submitDelayEnabled,
retypeInvalid = savedConfig.retypeInvalid,
showBrainrotSpawned = savedConfig.showBrainrotSpawned,
brainrotManualOff = savedConfig.brainrotManualOff,
autoBuy = savedConfig.autoBuy,
riddleSolver = savedConfig.riddleSolver,
riddleAutoSubmit = savedConfig.riddleAutoSubmit,
}))
end)
end
local _enabled = savedConfig.codeSniper
local _seen = {}
local _focused = nil
local _lastBox = nil
local _autoAccept = savedConfig.autoSubmit
local _submitAfter = math.clamp(savedConfig.submitAfter, 0, 5)
local _submitDelay = math.clamp(tonumber(savedConfig.submitDelay) or 0.0, 0.0, 5.0)
local _submitDelayEnabled = savedConfig.submitDelayEnabled == true
local _capturedParts = {}
local _lastWatchedBox = nil
local _boxTextConn = nil
local _boxAncestryConn = nil
local _boxVisibilityConns = {}
local _retypeInvalid = savedConfig.retypeInvalid
local _showBrainrotSpawned = savedConfig.showBrainrotSpawned
local _brainrotManualOff = savedConfig.brainrotManualOff
local _autoBuy = savedConfig.autoBuy == true
savedConfig.riddleSolver = false
local _riddleEnabled = false
local _riddleAutoSubmit = savedConfig.riddleAutoSubmit == true
local _lastRiddleQuestion = ""
local _lastRiddleAnswer = ""
local _lastRiddleAt = 0
local RiddleQuestionLabel
local RiddleAnswerLabel
local autoBuyToken = 0
local _lastNonBlankBoxText = ""
local _pendingRejectedText = nil
local _pendingRejectedBox = nil
local _pendingRejectedUntil = 0
local _pendingRejectedToken = 0
local ACE_CASE_MODE = "EXACT"
local ACE_WORD_COUNT = 1
local startBrainrotSpawnWatcher
local stopBrainrotSpawnWatcher
local function isCodeActivationMessage(text)
if type(text) ~= "string" then return false end
local clean = text:lower():gsub("<[^>]->", " "):gsub("[%c]", " "):gsub("%s+", " ")
return clean:find("%f[%a]code+%s+is%f[%A]") ~= nil
or clean:find("%f[%a]the%s+code+%f[%A]") ~= nil
or clean:find("%f[%a]use%s+code+%f[%A]") ~= nil
end
local autoEnableRedeemer = function()
if _enabled then return end
_enabled = true
savedConfig.codeSniper = true
saveConfig()
end
local debugAny: any = debug
local getupvalues = (debugAny and debugAny.getupvalues) or getupvalues
local getconns = getconnections or (debugAny and debugAny.getconnections)
local setupv = (debugAny and debugAny.setupvalue) or setupvalue
local function isOurGui(instance)
local p = instance
for _ = 1, 10 do
if not p then break end
if p.Name == "CocoXRedeemerUI" or p.Name == "SourcesHubRedeemerGui" then return true end
p = p.Parent
end
return false
end
local function isVisibleChain(inst)
local current = inst
while current do
if current:IsA("GuiObject") and not current.Visible then return false end
if current:IsA("ScreenGui") then return current.Enabled end
current = current.Parent
end
return true
end
local function findAllTextBoxes(pgui)
local boxes = {}
for _, gui in ipairs(pgui:GetChildren()) do
if gui:IsA("ScreenGui") and gui.Enabled and not isOurGui(gui) then
for _, d in ipairs(gui:GetDescendants()) do
if d:IsA("TextBox") and not isOurGui(d) then
boxes[#boxes+1] = d
end
end
end
end
return boxes
end
local function findCodeButtons(pgui)
local btns = {}
for _, gui in ipairs(pgui:GetChildren()) do
if gui:IsA("ScreenGui") and gui.Enabled and not isOurGui(gui) then
for _, d in ipairs(gui:GetDescendants()) do
if (d:IsA("TextButton") or d:IsA("ImageButton")) and not isOurGui(d) then
local n = d.Name:lower()
local pn = (d.Parent and d.Parent.Name or ""):lower()
if (n:find("code") or n:find("redeem") or pn:find("code") or pn:find("redeem")) and isVisibleChain(d) then
btns[#btns+1] = d
end
end
end
end
end
return btns
end
local function clickButton(btn)
if not btn then return false end
if typeof(firesignal) == "function" then
local ok = pcall(function() firesignal(btn.Activated) end)
if ok then return true end
end
if typeof(getconns) == "function" then
local ok, connections = pcall(getconns, btn.Activated)
if ok and type(connections) == "table" then
for _, connection in ipairs(connections) do
local fired = pcall(function() connection:Fire() end)
if fired then return true end
end
end
end
if typeof(fireclick) == "function" then
return pcall(function() fireclick(btn) end)
end
return false
end
local function fireBoxFocusLost(box)
if not box then return false end
local anyFired = false
if typeof(firesignal) == "function" then
local ok = pcall(firesignal, box.FocusLost, true)
anyFired = anyFired or ok
end
if typeof(getconns) == "function" then
local ok, cs = pcall(getconns, box.FocusLost)
if ok and type(cs) == "table" then
for _, c in ipairs(cs) do
local fn
pcall(function() fn = c.Function end)
if fn and typeof(getupvalues) == "function" and typeof(setupv) == "function" then
local uOk, ups = pcall(getupvalues, fn)
if uOk and type(ups) == "table" then
for i, v in pairs(ups) do
if type(v) == "boolean" and v == true then
pcall(setupv, fn, i, false)
end
end
end
end
local fOk = pcall(function()
if c.Enabled ~= false then c:Fire(true) end
end)
anyFired = anyFired or fOk
end
end
end
return anyFired
end
local _fastCodesGui, _fastCodesBox, _fastCodesButton
local function getFastCodeControls(pgui)
if _fastCodesGui and _fastCodesGui.Parent
and _fastCodesBox and _fastCodesBox.Parent then
return _fastCodesGui, _fastCodesBox, _fastCodesButton
end
_fastCodesGui, _fastCodesBox, _fastCodesButton = nil, nil, nil
local codesGui = pgui and pgui:FindFirstChild("Codes")
if not codesGui then return nil, nil, nil end
local codesFrame = codesGui:FindFirstChild("Codes") or codesGui
for _, d in ipairs(codesFrame:GetDescendants()) do
if not _fastCodesBox and d:IsA("TextBox") and not isOurGui(d) then
_fastCodesBox = d
elseif not _fastCodesButton and (d:IsA("TextButton") or d:IsA("ImageButton")) and not isOurGui(d) then
local n = d.Name:lower()
local txt = ""
pcall(function() txt = d.Text:lower() end)
if n:find("submit") or txt:find("submit")
or n:find("redeem") or txt:find("redeem")
or n:find("claim") or txt:find("claim")
or n:find("confirm") or txt:find("confirm")
or n:find("enter") or txt:find("enter") then
_fastCodesButton = d
end
end
end
_fastCodesGui = codesGui
return codesGui, _fastCodesBox, _fastCodesButton
end
local function waitForSubmitDelay()
if _submitDelayEnabled then
task.wait(_submitDelay)
end
end
local function typeAndSubmitCode(code)
local pgui = pg or player:FindFirstChildOfClass("PlayerGui")
if not pgui then return false, "no PlayerGui" end
local fastGui, fastBox, fastButton = getFastCodeControls(pgui)
if fastGui and fastBox then
if fastGui:IsA("ScreenGui") then fastGui.Enabled = true end
pcall(function() fastBox.Text = code end)
waitForSubmitDelay()
if fastButton and fastButton.Parent then
clickButton(fastButton)
else
fireBoxFocusLost(fastBox)
end
return true, "submitted via cached fast path"
end
local codesGui = pgui:FindFirstChild("Codes")
if codesGui then
if codesGui:IsA("ScreenGui") then codesGui.Enabled = true end
local codesFrame = codesGui:FindFirstChild("Codes") or codesGui
if codesFrame then
if codesFrame:IsA("GuiObject") then codesFrame.Visible = true end
local cur = codesFrame
while cur and cur ~= codesGui do
if cur:IsA("GuiObject") then cur.Visible = true end
cur = cur.Parent
end
local box = nil
for _, d in ipairs(codesFrame:GetDescendants()) do
if d:IsA("TextBox") and not isOurGui(d) then
box = d
break
end
end
local submitBtn = nil
for _, d in ipairs(codesFrame:GetDescendants()) do
if (d:IsA("TextButton") or d:IsA("ImageButton")) and not isOurGui(d) then
local n = d.Name:lower()
local txt = ""
pcall(function() txt = d.Text:lower() end)
if n:find("submit") or txt:find("submit") or n:find("redeem") or txt:find("redeem") or n:find("claim") or txt:find("confirm") or n:find("enter") then
submitBtn = d
break
end
end
end
if not submitBtn then
for _, d in ipairs(codesFrame:GetDescendants()) do
if (d:IsA("TextButton") or d:IsA("ImageButton")) and not isOurGui(d) then
local n = d.Name:lower()
if not n:find("close") and not n:find("x") and not n:find("toggle") then
submitBtn = d
break
end
end
end
end
if box then
pcall(function() box.Text = code end)
waitForSubmitDelay()
if submitBtn then
clickButton(submitBtn)
else
fireBoxFocusLost(box)
end
return true, "submitted via PlayerGui.Codes"
end
end
end
local btns = findCodeButtons(pgui)
for _, btn in ipairs(btns) do
clickButton(btn)
end
local box = nil
local deadline = tick() + 0.03
while tick() < deadline do
local allBoxes = findAllTextBoxes(pgui)
for _, d in ipairs(allBoxes) do
if isVisibleChain(d) then
local n = d.Name:lower()
local pn = (d.Parent and d.Parent.Name or ""):lower()
if n:find("code") or pn:find("code") or n:find("redeem") or pn:find("redeem") or n:find("input") or pn:find("textbox") or n:find("enter") then
box = d
break
end
end
end
if not box then
for _, d in ipairs(allBoxes) do
if isVisibleChain(d) then box = d; break end
end
end
if box then break end
task.wait()
end
if not box then return false, "no codebox visible" end
pcall(function() box.Text = code end)
local redeemBtn = nil
local searchNames = {"submit","redeem","claim","confirm","enter","send","apply","ok","use","go","check"}
local p = box.Parent
for _ = 1, 8 do
if not p then break end
for _, d in ipairs(p:GetDescendants()) do
if (d:IsA("TextButton") or d:IsA("ImageButton")) and not isOurGui(d) and d ~= box then
local n = d.Name:lower()
local txt = ""
pcall(function() txt = d.Text:lower() end)
for _, sn in ipairs(searchNames) do
if n:find(sn) or txt:find(sn) then
if isVisibleChain(d) then
redeemBtn = d
break
end
end
end
if redeemBtn then break end
end
end
if redeemBtn then break end
p = p.Parent
end
waitForSubmitDelay()
if redeemBtn then
clickButton(redeemBtn)
else
fireBoxFocusLost(box)
end
return true, "submitted via dynamic search"
end
local function aceCodeBox()
local pgui = pg
local allBoxes = findAllTextBoxes(pgui)
for _, box in ipairs(allBoxes) do
if isVisibleChain(box) then return box end
end
return nil
end
local function resolveNotifyRemote()
if _G.PhiNotifyRemote then return _G.PhiNotifyRemote end
if not ReplicatedStorage then return nil end
local packages = ReplicatedStorage:FindFirstChild("Packages")
if not packages then return nil end
local net = packages:FindFirstChild("Net")
if not net then return nil end
local getinfo = debugAny and (debugAny.getinfo or debugAny.info)
if not (getgc and getinfo and getconnections) then return nil end
for _, d in ipairs(net:GetDescendants()) do
if d:IsA("RemoteEvent") then
local ok, cs = pcall(getconnections, d.OnClientEvent)
if ok then
for _, c in ipairs(cs) do
local f, fn = pcall(function() return c.Function end)
if f and type(fn) == "function" then
local i, info = pcall(getinfo, fn)
if i and tostring(info.short_src or info.source or ""):find("NotificationController", 1, true) then
return d
end
end
end
end
end
end
return nil
end
local function aceStripRich(text)
if type(text) ~= "string" then return tostring(text) end
return (text:gsub("<[^>]->", ""))
end
local function aceExtractText(...)
local args = table.pack(...)
local keys = {"Text", "text", "Message", "message", "Content", "content", "Title", "title"}
for index = 1, args.n do
local value = args[index]
if type(value) == "string" and value:match("%S") then
return aceStripRich(value):match("^%s*(.-)%s*$") or ""
end
if type(value) == "table" then
for _, key in ipairs(keys) do
local field = value[key]
if type(field) == "string" and field:match("%S") then
return aceStripRich(field):match("^%s*(.-)%s*$") or ""
end
end
end
end
return ""
end
local function aceTokenize(text)
local words = {}
for word in text:gmatch("[%w_]+") do
words[#words + 1] = word
end
return words
end
local aceCollectBuffer = {}
local function onAceAnnouncement(...)
local text = aceExtractText(...)
if text == "" then return end
if isCodeActivationMessage(text) then
autoEnableRedeemer()
return end
if text:find(",") or text:find("%s") then return end
for _, word in ipairs(aceTokenize(text)) do
aceCollectBuffer[#aceCollectBuffer + 1] = word
end
local parts = {}
for index = 1, math.min(#aceCollectBuffer, ACE_WORD_COUNT) do
parts[index] = aceCollectBuffer[index]
end
if #aceCollectBuffer < ACE_WORD_COUNT then return end
aceCollectBuffer = {}
local captured = table.concat(parts)
if captured == "" or _seen[captured] then return end
_seen[captured] = true
task.delay(1.25, function() _seen[captured] = nil end)
appendToBox(captured)
end
local aceNotifyRemote = resolveNotifyRemote()
local aceListenConnection
if aceNotifyRemote then
if getgenv then
local previous = getgenv().ACECodeSniperNotifyConnection
if previous then pcall(function() previous:Disconnect() end) end
end
aceListenConnection = aceNotifyRemote.OnClientEvent:Connect(function(...)
local incomingText = aceExtractText(...)
if isCodeActivationMessage(incomingText) then
autoEnableRedeemer()
end
if _riddleEnabled and incomingText ~= "" and not isCodeActivationMessage(incomingText) then
task.spawn(function()
pcall(solveRiddleQuestion, incomingText)
end)
end
if not _enabled then return end
pcall(onAceAnnouncement, ...)
end)
if getgenv then getgenv().ACECodeSniperNotifyConnection = aceListenConnection end
end
if getgenv then
getgenv().StopAura = function()
if aceListenConnection then
pcall(function() aceListenConnection:Disconnect() end)
aceListenConnection = nil
end
if getgenv().ACECodeSniperNotifyConnection then
pcall(function() getgenv().ACECodeSniperNotifyConnection:Disconnect() end)
getgenv().ACECodeSniperNotifyConnection = nil
end
if GUI then GUI:Destroy() end
end
end
local COLORS = {
Window = Color3.fromRGB(5, 6, 13),
Row = Color3.fromRGB(9, 11, 22),
Control = Color3.fromRGB(26, 18, 10),
Log = Color3.fromRGB(3, 4, 10),
Border = Color3.fromRGB(200, 120, 30),
White = Color3.fromRGB(255, 245, 232),
Text = Color3.fromRGB(255, 165, 0),
Dim = Color3.fromRGB(200, 140, 60),
Accent = Color3.fromRGB(255, 150, 0),
Green = Color3.fromRGB(255, 170, 50),
Red = Color3.fromRGB(255, 70, 70),
}
local function addCorner(parent, radius)
local value = Instance.new("UICorner")
value.CornerRadius = UDim.new(0, radius)
value.Parent = parent
return value
end
local function addStroke(parent, color, thickness, transparency)
local value = Instance.new("UIStroke")
value.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
value.Color = color
value.Thickness = thickness or 1
value.Transparency = transparency or 0
value.Parent = parent
return value
end
local function makeLabel(parent, name, text, size, position, textSize, color, font)
local label = Instance.new("TextLabel")
label.Name = name
label.Size = size
label.Position = position
label.BackgroundTransparency = 1
label.Text = text
label.TextSize = textSize
label.TextColor3 = color
label.Font = font or Enum.Font.GothamMedium
label.TextXAlignment = Enum.TextXAlignment.Left
label.TextYAlignment = Enum.TextYAlignment.Center
label.Parent = parent
return label
end
local NOVA_GEMINI_URL = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-lite:generateContent"
local NOVA_GEMINI_KEY = "AQ.Ab8RN6KfmF2V2_2GRW6wfjWYkioihyaE00GqIUuW1ejqCVU89g"
local function novaWebRiddleAnswer(question)
if type(question) ~= "string" or question == "" then return nil end
local prompt = "You are a data lookup engine, not a conversational assistant. A player asked a question about a Roblox game. Output ONLY the single correct answer (a name, number, date, or short phrase) with no labels, no repeated question text, and no explanation. If you don't know, output exactly: Unknown\n\nQuestion: " .. question .. "\n\nOutput ONLY the answer, nothing else:"
local body = HttpService:JSONEncode({
contents = {
{
role = "user",
parts = {
{ text = prompt }
}
}
},
generationConfig = {
temperature = 0,
maxOutputTokens = 12
}
})
local requestFn = (syn and syn.request) or (http and http.request) or request or http_request
if type(requestFn) ~= "function" then
return nil
end
local ok, response = pcall(requestFn, {
Url = NOVA_GEMINI_URL,
Method = "POST",
Headers = {
["X-goog-api-key"] = NOVA_GEMINI_KEY,
["Content-Type"] = "application/json"
},
Body = body
})
if not ok or type(response) ~= "table" then return nil end
local status = response.StatusCode or response.Status or response.status_code
if status and tonumber(status) ~= 200 then return nil end
local raw = response.Body or response.body
if type(raw) ~= "string" or raw == "" then return nil end
local decodedOk, decoded = pcall(function()
return HttpService:JSONDecode(raw)
end)
if not decodedOk or type(decoded) ~= "table" then return nil end
local candidates = decoded.candidates
local part = candidates and candidates[1] and candidates[1].content and candidates[1].content.parts and candidates[1].content.parts[1]
local answer = part and part.text
if type(answer) ~= "string" then return nil end
answer = answer:gsub("^%s+", ""):gsub("%s+$", ""):gsub("^```[%w_%-]*%s*", ""):gsub("%s*```$", ""):gsub("^%s+", ""):gsub("%s+$", "")
if answer == "" or answer == "Unknown" then return nil end
return answer
end
local riddleAnswers = {
["what is the best strategy for stealing"] = "Speed Boots plus scouting weakly defended, recently unlocked bases",
}
local function normalizeRiddleText(text)
if type(text) ~= "string" then return "" end
return text:lower():gsub("<[^>]+>", " "):gsub("[%p%s]+", " "):gsub("^%s+", ""):gsub("%s+$", "")
end
local function looksLikeRiddleQuestion(text)
if type(text) ~= "string" then return false end
local clean = text:gsub("<[^>]+>", " "):gsub("^%s+", ""):gsub("%s+$", "")
if #clean < 3 or isCodeActivationMessage(clean) then return false end
local lower = clean:lower()
if lower:find("sammy", 1, true) then return true end
if clean:find("?", 1, true) then return true end
local first = normalizeRiddleText(clean):match("^(%S+)")
local starts = {
["what"] = true, ["who"] = true, ["where"] = true, ["when"] = true, ["why"] = true, ["how"] = true,
["which"] = true, ["whose"] = true, ["can"] = true, ["do"] = true, ["does"] = true, ["did"] = true,
["is"] = true, ["are"] = true, ["was"] = true, ["were"] = true, ["will"] = true, ["would"] = true,
["could"] = true, ["should"] = true, ["solve"] = true, ["guess"] = true
}
if starts[first or ""] then return true end
for _, word in ipairs({"favorite","best","worst","rarest","oldest","newest","first","last","brainrot","mutation","trait","secret","machine","developer","studio"}) do
if lower:find(word, 1, true) then return true end
end
return false
end
local function findRiddleAnswer(question)
local normalized = normalizeRiddleText(question)
if normalized == "" then return nil end
local exact = riddleAnswers[normalized]
if exact then return tostring(exact) end
local qwords = {}
for word in normalized:gmatch("%S+") do
if #word > 2 then qwords[word] = true end
end
local bestAnswer = nil
local bestScore = 0
local tied = false
for key, answer in pairs(riddleAnswers) do
if type(key) == "string" then
local keyWords = {}
for word in normalizeRiddleText(key):gmatch("%S+") do
if #word > 2 then keyWords[#keyWords + 1] = word end
end
if #keyWords >= 2 then
local hits = 0
for _, word in ipairs(keyWords) do
if qwords[word] then hits = hits + 1 end
end
local score = hits / #keyWords
if hits >= 2 and score >= 0.9 then
if score > bestScore then
bestScore = score
bestAnswer = tostring(answer)
tied = false
elseif score == bestScore and tostring(answer) ~= bestAnswer then
tied = true
end
end
end
end
end
if tied then return nil end
return bestAnswer
end
local function updateRiddleDisplay(question, answer)
_lastRiddleQuestion = question or ""
_lastRiddleAnswer = answer or ""
if RiddleQuestionLabel then
RiddleQuestionLabel.Text = _lastRiddleQuestion ~= "" and _lastRiddleQuestion or "Waiting for a question..."
end
if RiddleAnswerLabel then
RiddleAnswerLabel.Text = _lastRiddleAnswer ~= "" and _lastRiddleAnswer or "No answer yet"
RiddleAnswerLabel.TextColor3 = _lastRiddleAnswer ~= "" and COLORS.Text or COLORS.Dim
end
end
local function solveRiddleQuestion(question)
if not _riddleEnabled or not looksLikeRiddleQuestion(question) then return false end
local now = os.clock()
local normalized = normalizeRiddleText(question)
if normalized == normalizeRiddleText(_lastRiddleQuestion) and now - _lastRiddleAt < 2 then return false end
local answer = novaWebRiddleAnswer(question)
if not answer or answer == "" or answer == "Unknown" then
answer = findRiddleAnswer(question)
end
if not answer or answer == "" or answer == "Unknown" then return false end
_lastRiddleAt = now
updateRiddleDisplay(question, answer)
if setStatus then setStatus("Riddle answer: " .. answer, COLORS.Green) end
if _riddleAutoSubmit then
task.spawn(function()
local ok, msg = typeAndSubmitCode(string.upper(answer))
if setStatus then
setStatus(ok and ("Riddle redeemed: " .. answer) or ("Riddle redeem failed: " .. tostring(msg)), ok and COLORS.Green or COLORS.Red)
end
end)
end
return true
end
pcall(function()
for _, name in ipairs({"CocoXRedeemerUI", "AutoTypeCodesUI", "ACEPaste", "CocoXStatus"}) do
local previous = game.CoreGui:FindFirstChild(name)
if previous then previous:Destroy() end
end
end)
for _, name in ipairs({"CocoXRedeemerUI", "AutoTypeCodesUI", "ACEPaste", "CocoXStatus"}) do
local previous = pg:FindFirstChild(name)
if previous then previous:Destroy() end
end
local GUI = Instance.new("ScreenGui")
GUI.Name = "CocoXRedeemerUI"
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.DisplayOrder = 999
if not pcall(function() GUI.Parent = game.CoreGui end) then GUI.Parent = pg end
local StatsService = game:GetService("Stats")
local StatusBar = Instance.new("Frame")
StatusBar.Name = "CocoXStatus"
StatusBar.AnchorPoint = Vector2.new(0.5, 0)
StatusBar.Size = UDim2.fromOffset(400, 40)
StatusBar.Position = UDim2.new(0.5, 0, 0, 60)
StatusBar.BackgroundColor3 = Color3.fromRGB(18, 16, 14)
StatusBar.BackgroundTransparency = 0.08
StatusBar.BorderSizePixel = 0
StatusBar.ZIndex = 80
StatusBar.Parent = GUI
addCorner(StatusBar, 10)
addStroke(StatusBar, Color3.fromRGB(230, 140, 40), 1, 0.3)
local StatusGradient = Instance.new("UIGradient")
StatusGradient.Rotation = 0
StatusGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(28, 24, 20)),
ColorSequenceKeypoint.new(0.35, Color3.fromRGB(22, 19, 16)),
ColorSequenceKeypoint.new(0.72, Color3.fromRGB(18, 15, 13)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(24, 20, 17)),
})
StatusGradient.Parent = StatusBar
local StatusScale = Instance.new("UIScale")
StatusScale.Name = "ResponsiveScale"
StatusScale.Parent = StatusBar
local function updateStatusScale()
local camera = workspace.CurrentCamera
local width = camera and camera.ViewportSize.X or 400
StatusScale.Scale = math.clamp((width - 16) / 400, 0.7, 1)
end
workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(updateStatusScale)
if workspace.CurrentCamera then
workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize"):Connect(updateStatusScale)
end
updateStatusScale()
local StatusDot = Instance.new("Frame")
StatusDot.Name = "Dot"
StatusDot.AnchorPoint = Vector2.new(0.5, 0.5)
StatusDot.Position = UDim2.new(0, 16, 0.5, 0)
StatusDot.Size = UDim2.fromOffset(7, 7)
StatusDot.BackgroundColor3 = Color3.fromRGB(230, 140, 40)
StatusDot.BorderSizePixel = 0
StatusDot.ZIndex = 81
StatusDot.Parent = StatusBar
addCorner(StatusDot, 7)
addStroke(StatusDot, Color3.fromRGB(255, 180, 80), 1, 0.35)
local StatusTitle = makeLabel(StatusBar, "Title", "CocoX", UDim2.fromOffset(70, 40), UDim2.fromOffset(28, 0), 11, Color3.fromRGB(255, 200, 140), Enum.Font.GothamBold)
StatusTitle.TextXAlignment = Enum.TextXAlignment.Left
StatusTitle.ZIndex = 81
local StatusInvite = makeLabel(StatusBar, "Invite", "cocox.wtf", UDim2.fromOffset(200, 40), UDim2.new(0.5, -100, 0, 0), 15, Color3.fromRGB(255, 220, 180), Enum.Font.GothamBlack)
StatusInvite.TextXAlignment = Enum.TextXAlignment.Center
StatusInvite.TextStrokeColor3 = Color3.fromRGB(60, 30, 10)
StatusInvite.TextStrokeTransparency = 0.4
StatusInvite.ZIndex = 81
local function makeStatusMetric(name, labelText, xOffset)
local label = makeLabel(StatusBar, name .. "Label", labelText, UDim2.fromOffset(40, 10), UDim2.new(1, xOffset, 0, 3), 8, Color3.fromRGB(200, 120, 40), Enum.Font.GothamBold)
label.TextXAlignment = Enum.TextXAlignment.Left
label.ZIndex = 81
local value = makeLabel(StatusBar, name .. "Value", name == "Ping" and "--ms" or "--", UDim2.fromOffset(52, 16), UDim2.new(1, xOffset, 0, 14), 12, Color3.fromRGB(230, 140, 40), Enum.Font.GothamBold)
value.TextXAlignment = Enum.TextXAlignment.Left
value.ZIndex = 81
return value
end
local StatusFpsValue = makeStatusMetric("FPS", "FPS", -115)
local StatusPingValue = makeStatusMetric("Ping", "PING", -60)
for _, xOffset in ipairs({-124, -68}) do
local line = Instance.new("Frame")
line.Size = UDim2.fromOffset(1, 18)
line.Position = UDim2.new(1, xOffset, 0.5, -9)
line.BackgroundColor3 = Color3.fromRGB(200, 120, 40)
line.BackgroundTransparency = 0.5
line.BorderSizePixel = 0
line.ZIndex = 81
line.Parent = StatusBar
end
local function metricColor(value, good, okay)
if value >= good then return Color3.fromRGB(56, 214, 110) end
if value >= okay then return Color3.fromRGB(255, 165, 0) end
return Color3.fromRGB(230, 80, 30)
end
local function readPingMilliseconds()
local okStats, statsPing = pcall(function()
local network = StatsService:FindFirstChild("Network")
local serverStats = network and network:FindFirstChild("ServerStatsItem")
local pingItem = serverStats and serverStats:FindFirstChild("Data Ping")
if not pingItem then return nil end
local numeric = pingItem:GetValue()
if type(numeric) == "number" and numeric >= 0 then return numeric end
return tonumber((pingItem:GetValueString() or ""):match("[%d%.]+"))
end)
if okStats and type(statsPing) == "number" then return statsPing end
local okPlayer, playerPing = pcall(function()
return LocalPlayer:GetNetworkPing()
end)
if okPlayer and type(playerPing) == "number" then return playerPing * 1000 end
return nil
end
task.spawn(function()
local frames, elapsed, pingElapsed = 0, 0, 1
while StatusBar and StatusBar.Parent do
local dt = RunService.RenderStepped:Wait()
frames = frames + 1
elapsed = elapsed + dt
pingElapsed = pingElapsed + dt
if elapsed >= 0.75 then
local fps = math.max(0, math.floor((frames / elapsed) + 0.5))
StatusFpsValue.Text = tostring(fps)
StatusFpsValue.TextColor3 = metricColor(fps, 55, 30)
frames, elapsed = 0, 0
end
if pingElapsed >= 1 then
pingElapsed = 0
local ping = readPingMilliseconds()
if ping then
ping = math.max(0, math.floor(ping + 0.5))
StatusPingValue.Text = tostring(ping) .. "ms"
if ping < 80 then
StatusPingValue.TextColor3 = Color3.fromRGB(56, 214, 110)
elseif ping < 150 then
StatusPingValue.TextColor3 = Color3.fromRGB(255, 165, 0)
else
StatusPingValue.TextColor3 = Color3.fromRGB(230, 80, 30)
end
else
StatusPingValue.Text = "--ms"
StatusPingValue.TextColor3 = Color3.fromRGB(150, 150, 160)
end
end
end
end)
local Window = Instance.new("Frame")
Window.Name = "Window"
Window.Size = UDim2.fromOffset(430, 228)
Window.AnchorPoint = Vector2.new(1, 0)
Window.Position = UDim2.new(1, -8, 0, 8)
Window.BackgroundColor3 = COLORS.Window
Window.BorderSizePixel = 0
Window.ClipsDescendants = true
Window.Parent = GUI
addCorner(Window, 11)
addStroke(Window, COLORS.Border, 1, 0.12)
local WindowOpenPosition = Window.Position
Window.Position = UDim2.new(1, 460, 0, 8)
local WindowGradient = Instance.new("UIGradient")
WindowGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(22, 12, 4)),
ColorSequenceKeypoint.new(0.42, Color3.fromRGB(7, 8, 15)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(4, 5, 11)),
})
WindowGradient.Rotation = 12
WindowGradient.Parent = Window
local InterfaceScale = Instance.new("UIScale")
InterfaceScale.Name = "InterfaceScale"
InterfaceScale.Scale = 1
InterfaceScale.Parent = Window
local viewportConnection
local function updateInterfaceScale()
local camera = workspace.CurrentCamera
if not camera then InterfaceScale.Scale = 0.92 return end
local viewport = camera.ViewportSize
local fitScale = math.min((viewport.X - 16) / 430, (viewport.Y - 16) / 228)
if UserInputService.TouchEnabled then
local mobileTarget = 0.88
InterfaceScale.Scale = math.max(0.45, math.min(mobileTarget, fitScale))
else
InterfaceScale.Scale = math.min(1, fitScale)
end
end
local function watchViewport()
if viewportConnection then viewportConnection:Disconnect() viewportConnection = nil end
local camera = workspace.CurrentCamera
if camera then viewportConnection = camera:GetPropertyChangedSignal("ViewportSize"):Connect(updateInterfaceScale) end
updateInterfaceScale()
end
workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(watchViewport)
watchViewport()
local Header = Instance.new("Frame")
Header.Name = "Header"
Header.Size = UDim2.new(0, 220, 0, 31)
Header.Position = UDim2.fromOffset(210, 0)
Header.BackgroundTransparency = 1
Header.Active = true
Header.ZIndex = 3
Header.Parent = Window
local Console, ConsoleOutput, updateConsoleCanvas
local featureStates: {[string]: any} = {}
featureStates.__setters = {}
local CONSOLE_COLORS = {
Dim = "rgb(200,140,60)",
Amber = "rgb(255,165,0)",
Green = "rgb(255,170,50)",
Red = "rgb(255,70,70)",
Cyan = "rgb(255,180,50)",
}
local function scrollConsoleToBottom()
task.defer(function()
task.wait()
if not Console then return end
if updateConsoleCanvas then updateConsoleCanvas() end
local bottom = math.max(0, Console.AbsoluteCanvasSize.Y - Console.AbsoluteWindowSize.Y)
Console.CanvasPosition = Vector2.new(0, bottom)
end)
end
local function appendConsoleStatus(name, activated)
if not ConsoleOutput then return end
local state = activated and "ON" or "OFF"
local stateColor = activated and CONSOLE_COLORS.Green or CONSOLE_COLORS.Red
local line = '[setting] '
.. '' .. name .. " "
.. '-> '
.. '' .. state .. ""
if ConsoleOutput.Text == "" then ConsoleOutput.Text = line
else ConsoleOutput.Text = ConsoleOutput.Text .. "\n\n" .. line end
scrollConsoleToBottom()
end
local BrandMark = Instance.new("Frame")
BrandMark.Name = "BrandMark"
BrandMark.Size = UDim2.fromOffset(18, 18)
BrandMark.Position = UDim2.fromOffset(10, 7)
BrandMark.BackgroundColor3 = COLORS.Window
BrandMark.BackgroundTransparency = 1
BrandMark.BorderSizePixel = 0
BrandMark.ClipsDescendants = true
BrandMark.Parent = Header
addCorner(BrandMark, 15)
local BrandImage = Instance.new("ImageLabel")
BrandImage.Name = "Logo"
BrandImage.Size = UDim2.fromScale(1, 1)
BrandImage.BackgroundTransparency = 1
BrandImage.Image = "rbxassetid://81679798464641"
BrandImage.ScaleType = Enum.ScaleType.Fit
BrandImage.Parent = BrandMark
addCorner(BrandImage, 15)
makeLabel(Header, "Title", "CocoX Code Redeemer", UDim2.fromOffset(170, 25), UDim2.fromOffset(34, 3), 11, COLORS.White, Enum.Font.GothamBold)
local AutoWriteButton = Instance.new("TextButton")
AutoWriteButton.Name = "AutoWrite"
AutoWriteButton.Size = UDim2.fromOffset(29, 16)
AutoWriteButton.Position = UDim2.new(1, -38, 0, 8)
AutoWriteButton.BackgroundColor3 = COLORS.Accent
AutoWriteButton.BorderSizePixel = 0
AutoWriteButton.AutoButtonColor = false
AutoWriteButton.Active = true
AutoWriteButton.Text = ""
AutoWriteButton.ZIndex = 5
AutoWriteButton.Parent = Header
addCorner(AutoWriteButton, 8)
local AutoWriteStroke = addStroke(AutoWriteButton, COLORS.White, 1, 0.62)
local AutoWriteKnob = Instance.new("Frame")
AutoWriteKnob.Name = "Knob"
AutoWriteKnob.Size = UDim2.fromOffset(12, 12)
AutoWriteKnob.Position = UDim2.new(1, -14, 0.5, -6)
AutoWriteKnob.BackgroundColor3 = COLORS.Window
AutoWriteKnob.BorderSizePixel = 0
AutoWriteKnob.ZIndex = 6
AutoWriteKnob.Parent = AutoWriteButton
addCorner(AutoWriteKnob, 6)
local autoWriteEnabled = _enabled
_enabled = autoWriteEnabled
if _brainrotManualOff then
_showBrainrotSpawned = false
savedConfig.showBrainrotSpawned = false
elseif autoWriteEnabled then
_showBrainrotSpawned = true
savedConfig.showBrainrotSpawned = true
end
saveConfig()
AutoWriteButton.BackgroundColor3 = autoWriteEnabled and COLORS.Accent or COLORS.Control
AutoWriteStroke.Transparency = autoWriteEnabled and 0.62 or 0.88
AutoWriteKnob.BackgroundColor3 = autoWriteEnabled and COLORS.Window or COLORS.White
AutoWriteKnob.Position = autoWriteEnabled and UDim2.new(1, -14, 0.5, -6) or UDim2.new(0, 2, 0.5, -6)
local lastToggleTime = 0
local function toggleAutoWrite()
if tick() - lastToggleTime < 0.15 then return end
lastToggleTime = tick()
autoWriteEnabled = not autoWriteEnabled
_enabled = autoWriteEnabled
if not autoWriteEnabled and clearAceCapture then clearAceCapture() end
if autoWriteEnabled and not _brainrotManualOff and featureStates.__setSpawnNotifications then
featureStates.__setSpawnNotifications(true)
end
savedConfig.codeSniper = autoWriteEnabled
saveConfig()
_lastStatusMsg = nil
TweenService:Create(AutoWriteButton, TweenInfo.new(0.22, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
BackgroundColor3 = autoWriteEnabled and COLORS.Accent or COLORS.Control,
}):Play()
TweenService:Create(AutoWriteStroke, TweenInfo.new(0.22), {
Transparency = autoWriteEnabled and 0.62 or 0.88,
}):Play()
TweenService:Create(AutoWriteKnob, TweenInfo.new(0.24, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
BackgroundColor3 = autoWriteEnabled and COLORS.Window or COLORS.White,
Position = autoWriteEnabled and UDim2.new(1, -14, 0.5, -6) or UDim2.new(0, 2, 0.5, -6),
}):Play()
if ConsoleOutput then
if autoWriteEnabled then
ConsoleOutput.Text = '> scanning for codes...'
for _, featureName in ipairs({"Auto submit", "Retype invalid"}) do
if featureStates[featureName] then appendConsoleStatus(featureName, true) end
end
else
ConsoleOutput.Text = 'status: OFF\ncode sniper paused'
end
scrollConsoleToBottom()
end
end
autoEnableRedeemer = function()
if _enabled and autoWriteEnabled then return end
_enabled = true
autoWriteEnabled = true
if not _brainrotManualOff and featureStates.__setSpawnNotifications then
featureStates.__setSpawnNotifications(true)
end
savedConfig.codeSniper = true
saveConfig()
_lastStatusMsg = nil
TweenService:Create(AutoWriteButton, TweenInfo.new(0.22), {BackgroundColor3 = COLORS.Accent}):Play()
TweenService:Create(AutoWriteStroke, TweenInfo.new(0.22), {Transparency = 0.62}):Play()
TweenService:Create(AutoWriteKnob, TweenInfo.new(0.24, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
BackgroundColor3 = COLORS.Window,
Position = UDim2.new(1, -14, 0.5, -6),
}):Play()
if ConsoleOutput then
ConsoleOutput.Text = '> code phrase detected - redeemer ON'
scrollConsoleToBottom()
end
end
AutoWriteButton.Activated:Connect(toggleAutoWrite)
AutoWriteButton.MouseButton1Click:Connect(toggleAutoWrite)
AutoWriteButton.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
toggleAutoWrite()
end
end)
local HeaderAccent = Instance.new("Frame")
HeaderAccent.Name = "TitleDivider"
HeaderAccent.Size = UDim2.new(1, 0, 0, 1)
HeaderAccent.Position = UDim2.fromOffset(0, 30)
HeaderAccent.BackgroundColor3 = COLORS.White
HeaderAccent.BackgroundTransparency = 0.72
HeaderAccent.BorderSizePixel = 0
HeaderAccent.Parent = Header
local Settings = Instance.new("Frame")
Settings.Name = "Settings"
Settings.Size = UDim2.fromOffset(220, 197)
Settings.Position = UDim2.fromOffset(210, 31)
Settings.BackgroundTransparency = 1
Settings.ZIndex = 3
Settings.Parent = Window
local function makeCard(name, position, size)
local card = Instance.new("Frame")
card.Name = name
card.Position = position
card.Size = size
card.BackgroundColor3 = COLORS.Row
card.BackgroundTransparency = 1
card.BorderSizePixel = 0
card.Parent = Settings
addCorner(card, 6)
return card
end
local function makeStateButton(parent, enabled, consoleName, onToggle)
parent.Active = true
featureStates[consoleName] = enabled
local button = Instance.new("TextButton")
button.Name = "State"
button.Size = UDim2.fromOffset(29, 16)
button.Position = UDim2.new(1, -36, 0.5, -8)
button.BackgroundColor3 = enabled and COLORS.Accent or COLORS.Control
button.BorderSizePixel = 0
button.AutoButtonColor = false
button.Active = true
button.Text = enabled and "●" or ""
button.TextSize = 10
button.TextColor3 = enabled and COLORS.Window or COLORS.Dim
button.Font = Enum.Font.GothamBold
button.ZIndex = 5
button.Parent = parent
addCorner(button, 8)
local outline = addStroke(button, COLORS.White, 1, enabled and 0.62 or 0.88)
local state = enabled
local lastSubToggle = 0
local function applyState(newState, notify)
newState = newState == true
if state == newState then return end
state = newState
featureStates[consoleName] = state
button.Text = state and "●" or ""
TweenService:Create(button, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
BackgroundColor3 = state and COLORS.Accent or COLORS.Control,
TextColor3 = state and COLORS.Window or COLORS.Dim,
}):Play()
TweenService:Create(outline, TweenInfo.new(0.2), {
Transparency = state and 0.62 or 0.88,
}):Play()
if notify and autoWriteEnabled then appendConsoleStatus(consoleName, state) end
if notify and onToggle then onToggle(state) end
end
featureStates.__setters[consoleName] = function(newState, notify)
applyState(newState, notify ~= false)
end
local function toggleState()
if tick() - lastSubToggle < 0.15 then return end
lastSubToggle = tick()
applyState(not state, true)
end
button.Activated:Connect(toggleState)
button.MouseButton1Click:Connect(toggleState)
button.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
toggleState()
end
end)
return button
end
local AutoCard = makeCard("AutoSubmit", UDim2.fromOffset(0, 25), UDim2.fromOffset(220, 25))
makeLabel(AutoCard, "Title", "Instant Submit", UDim2.new(1, -45, 1, 0), UDim2.fromOffset(10, 0), 10, COLORS.White, Enum.Font.GothamMedium)
makeStateButton(AutoCard, _autoAccept, "Auto submit", function(state)
_autoAccept = state
savedConfig.autoSubmit = state
saveConfig()
end)
local DelayCard = makeCard("SubmitAfter", UDim2.fromOffset(0, 75), UDim2.fromOffset(220, 25))
makeLabel(DelayCard, "Title", "Submit after", UDim2.fromOffset(120, 25), UDim2.fromOffset(10, 0), 10, COLORS.White, Enum.Font.GothamMedium)
local CounterShell = Instance.new("Frame")
CounterShell.Name = "Counter"
CounterShell.Size = UDim2.fromOffset(67, 17)
CounterShell.Position = UDim2.new(1, -75, 0.5, -8)
CounterShell.BackgroundColor3 = COLORS.Window
CounterShell.BackgroundTransparency = 0.05
CounterShell.BorderSizePixel = 0
CounterShell.Parent = DelayCard
addCorner(CounterShell, 7)
addStroke(CounterShell, COLORS.White, 1, 0.86)
local Minus = Instance.new("TextButton")
Minus.Name = "Minus"
Minus.Size = UDim2.fromOffset(25, 25)
Minus.Position = UDim2.fromOffset(3, 3)
Minus.BackgroundColor3 = COLORS.Control
Minus.BorderSizePixel = 0
Minus.AutoButtonColor = false
Minus.Active = true
Minus.Text = "-"
Minus.TextSize = 16
Minus.TextColor3 = COLORS.Text
Minus.Font = Enum.Font.GothamBold
Minus.Parent = CounterShell
addCorner(Minus, 5)
local Count = makeLabel(CounterShell, "Count", _submitAfter == 0 and "Every" or tostring(_submitAfter), UDim2.fromOffset(28, 25), UDim2.fromOffset(34, 3), 17, COLORS.White, Enum.Font.GothamBold)
Count.TextXAlignment = Enum.TextXAlignment.Center
local Plus = Instance.new("TextButton")
Plus.Name = "Plus"
Plus.Size = UDim2.fromOffset(25, 25)
Plus.Position = UDim2.fromOffset(68, 3)
Plus.BackgroundColor3 = COLORS.Control
Plus.BorderSizePixel = 0
Plus.AutoButtonColor = false
Plus.Active = true
Plus.Text = "+"
Plus.TextSize = 16
Plus.TextColor3 = COLORS.Text
Plus.Font = Enum.Font.GothamBold
Plus.Parent = CounterShell
addCorner(Plus, 5)
local function decr()
_submitAfter = math.max(1, _submitAfter - 1)
Count.Text = tostring(_submitAfter)
savedConfig.submitAfter = _submitAfter
clearAceCapture()
saveConfig()
end
local function incr()
_submitAfter = math.min(5, _submitAfter + 1)
Count.Text = tostring(_submitAfter)
savedConfig.submitAfter = _submitAfter
clearAceCapture()
saveConfig()
end
Minus.Activated:Connect(decr)
Minus.MouseButton1Click:Connect(decr)
Plus.Activated:Connect(incr)
Plus.MouseButton1Click:Connect(incr)
Minus.Visible = false
Plus.Visible = false
Count.Size = UDim2.fromScale(1, 1)
Count.Position = UDim2.fromOffset(0, 0)
Count.TextSize = 10
local CountButton = Instance.new("TextButton")
CountButton.Name = "OpenList"
CountButton.Size = UDim2.fromScale(1, 1)
CountButton.BackgroundTransparency = 1
CountButton.Text = ""
CountButton.ZIndex = 12
CountButton.Parent = CounterShell
local SubmitList = Instance.new("ScrollingFrame")
SubmitList.Name = "SubmitAfterList"
SubmitList.Size = UDim2.fromOffset(67, 108)
SubmitList.Position = UDim2.new(1, -75, 0, 25)
SubmitList.BackgroundColor3 = COLORS.Window
SubmitList.BorderSizePixel = 0
SubmitList.CanvasSize = UDim2.fromOffset(0, 108)
SubmitList.ScrollBarThickness = 2
SubmitList.ScrollBarImageColor3 = COLORS.Accent
SubmitList.Visible = false
SubmitList.ZIndex = 20
SubmitList.Parent = Settings
addCorner(SubmitList, 6)
addStroke(SubmitList, COLORS.Border, 1, 0.15)
local submitListOpen = false
local submitListToken = 0
local function setSubmitListOpen(open)
submitListToken = submitListToken + 1
local token = submitListToken
submitListOpen = open
if open then
SubmitList.Visible = true
SubmitList.Size = UDim2.fromOffset(67, 0)
SubmitList.ScrollBarImageTransparency = 1
TweenService:Create(SubmitList, TweenInfo.new(0.24, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Size = UDim2.fromOffset(67, 108),
ScrollBarImageTransparency = 0,
}):Play()
else
TweenService:Create(SubmitList, TweenInfo.new(0.18, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
Size = UDim2.fromOffset(67, 0),
ScrollBarImageTransparency = 1,
}):Play()
task.delay(0.19, function()
if token == submitListToken and not submitListOpen then
SubmitList.Visible = false
SubmitList.Size = UDim2.fromOffset(67, 108)
end
end)
end
end
local SubmitListLayout = Instance.new("UIListLayout")
SubmitListLayout.SortOrder = Enum.SortOrder.LayoutOrder
SubmitListLayout.Parent = SubmitList
for number = 1, 5 do
local option = Instance.new("TextButton")
option.Name = "Option" .. number
option.Size = UDim2.new(1, -2, 0, 18)
option.BackgroundColor3 = COLORS.Row
option.BackgroundTransparency = 0.1
option.BorderSizePixel = 0
option.Text = tostring(number)
option.TextColor3 = COLORS.White
option.TextSize = 9
option.Font = Enum.Font.GothamMedium
option.LayoutOrder = number
option.ZIndex = 21
option.Parent = SubmitList
option.Activated:Connect(function()
_submitAfter = number
Count.Text = tostring(number)
savedConfig.submitAfter = number
clearAceCapture()
saveConfig()
setSubmitListOpen(false)
end)
end
local EveryOption = Instance.new("TextButton")
EveryOption.Name = "OptionEvery"
EveryOption.Size = UDim2.new(1, -2, 0, 18)
EveryOption.BackgroundColor3 = COLORS.Accent
EveryOption.BackgroundTransparency = 0.08
EveryOption.BorderSizePixel = 0
EveryOption.Text = "Every"
EveryOption.TextColor3 = COLORS.White
EveryOption.TextSize = 9
EveryOption.Font = Enum.Font.GothamBold
EveryOption.LayoutOrder = 6
EveryOption.ZIndex = 21
EveryOption.Parent = SubmitList
EveryOption.Activated:Connect(function()
_submitAfter = 0
Count.Text = "Every"
savedConfig.submitAfter = 0
clearAceCapture()
saveConfig()
setSubmitListOpen(false)
end)
CountButton.Activated:Connect(function()
setSubmitListOpen(not submitListOpen)
end)
local RetypeCard = makeCard("RetypeInvalid", UDim2.fromOffset(0, 0), UDim2.fromOffset(220, 25))
makeLabel(RetypeCard, "Title", "Retype Invalid", UDim2.new(1, -45, 1, 0), UDim2.fromOffset(10, 0), 10, COLORS.White, Enum.Font.GothamMedium)
local RetypeState = makeStateButton(RetypeCard, _retypeInvalid, "Retype invalid", function(state)
_retypeInvalid = state
savedConfig.retypeInvalid = state
saveConfig()
end)
RetypeState.Position = UDim2.new(1, -36, 0.5, -8)
local function setAutoBuyEnabled(state)
_autoBuy = state == true
savedConfig.autoBuy = _autoBuy
saveConfig()
autoBuyToken = autoBuyToken + 1
local token = autoBuyToken
if not _autoBuy then return end
task.spawn(function()
while _autoBuy and token == autoBuyToken do
local character = LocalPlayer.Character
local root = character and character:FindFirstChild("HumanoidRootPart")
if root then
local nearestPrompt, nearestDistance
for _, object in ipairs(workspace:GetDescendants()) do
if object:IsA("ProximityPrompt") and object.Enabled then
local text = ((object.ActionText or "") .. " " .. (object.ObjectText or "") .. " " .. object.Name):lower()
if text:find("buy", 1, true) or text:find("purchase", 1, true) then
local parent = object.Parent
local position
if parent and parent:IsA("BasePart") then position = parent.Position
elseif parent and parent:IsA("Attachment") and parent.Parent and parent.Parent:IsA("BasePart") then position = parent.Parent.Position end
if position then
local distance = (root.Position - position).Magnitude
if distance <= (object.MaxActivationDistance or 10) + 2 and (not nearestDistance or distance < nearestDistance) then
nearestPrompt, nearestDistance = object, distance
end
end
end
end
end
if nearestPrompt then
pcall(function()
if type(fireproximityprompt) == "function" then
fireproximityprompt(nearestPrompt)
else
nearestPrompt:InputHoldBegin()
task.wait(math.max(nearestPrompt.HoldDuration, 0.05) + 0.05)
nearestPrompt:InputHoldEnd()
end
end)
end
end
task.wait(0.2)
end
end)
end
local AutoBuyCard = makeCard("AutoBuy", UDim2.fromOffset(0, 100), UDim2.fromOffset(220, 25))
makeLabel(AutoBuyCard, "Title", "Auto Buy", UDim2.new(1, -45, 1, 0), UDim2.fromOffset(10, 0), 10, COLORS.White, Enum.Font.GothamMedium)
makeStateButton(AutoBuyCard, _autoBuy, "Auto Buy", function(state)
setAutoBuyEnabled(state)
end)
if _autoBuy then task.defer(setAutoBuyEnabled, true) end
local SubmitDelayCard = makeCard("SubmitDelay", UDim2.fromOffset(0, 125), UDim2.fromOffset(220, 25))
makeLabel(SubmitDelayCard, "Title", "Submit Delay", UDim2.fromOffset(82, 25), UDim2.fromOffset(10, 0), 10, COLORS.White, Enum.Font.GothamMedium)
local SubmitDelayToggle = Instance.new("TextButton")
SubmitDelayToggle.Name = "DelayToggle"
SubmitDelayToggle.Size = UDim2.fromOffset(38, 19)
SubmitDelayToggle.Position = UDim2.fromOffset(83, 3)
SubmitDelayToggle.BackgroundColor3 = _submitDelayEnabled and COLORS.Accent or COLORS.Control
SubmitDelayToggle.BorderSizePixel = 0
SubmitDelayToggle.AutoButtonColor = false
SubmitDelayToggle.Text = _submitDelayEnabled and "ON" or "OFF"
SubmitDelayToggle.TextSize = 8
SubmitDelayToggle.TextColor3 = COLORS.White
SubmitDelayToggle.Font = Enum.Font.GothamBold
SubmitDelayToggle.Parent = SubmitDelayCard
addCorner(SubmitDelayToggle, 6)
local DelayMinus = Instance.new("TextButton")
DelayMinus.Name = "Minus"
DelayMinus.Size = UDim2.fromOffset(23, 19)
DelayMinus.Position = UDim2.fromOffset(124, 3)
DelayMinus.BackgroundColor3 = COLORS.Control
DelayMinus.BorderSizePixel = 0
DelayMinus.AutoButtonColor = false
DelayMinus.Text = "-"
DelayMinus.TextSize = 13
DelayMinus.TextColor3 = COLORS.White
DelayMinus.Font = Enum.Font.GothamBold
DelayMinus.Parent = SubmitDelayCard
addCorner(DelayMinus, 6)
local DelayValue = Instance.new("TextLabel")
DelayValue.Name = "Value"
DelayValue.Size = UDim2.fromOffset(43, 19)
DelayValue.Position = UDim2.fromOffset(150, 3)
DelayValue.BackgroundColor3 = COLORS.Window
DelayValue.BackgroundTransparency = 0.05
DelayValue.BorderSizePixel = 0
DelayValue.Text = string.format("%.1fs", _submitDelay)
DelayValue.TextSize = 8
DelayValue.TextColor3 = COLORS.White
DelayValue.Font = Enum.Font.GothamBold
DelayValue.Parent = SubmitDelayCard
addCorner(DelayValue, 6)
addStroke(DelayValue, COLORS.White, 1, 0.86)
local DelayPlus = Instance.new("TextButton")
DelayPlus.Name = "Plus"
DelayPlus.Size = UDim2.fromOffset(23, 19)
DelayPlus.Position = UDim2.fromOffset(196, 3)
DelayPlus.BackgroundColor3 = COLORS.Control
DelayPlus.BorderSizePixel = 0
DelayPlus.AutoButtonColor = false
DelayPlus.Text = "+"
DelayPlus.TextSize = 13
DelayPlus.TextColor3 = COLORS.White
DelayPlus.Font = Enum.Font.GothamBold
DelayPlus.Parent = SubmitDelayCard
addCorner(DelayPlus, 6)
local function refreshSubmitDelayUI()
SubmitDelayToggle.Text = _submitDelayEnabled and "ON" or "OFF"
SubmitDelayToggle.BackgroundColor3 = _submitDelayEnabled and COLORS.Accent or COLORS.Control
DelayValue.Text = string.format("%.1fs", _submitDelay)
end
local function toggleSubmitDelay()
_submitDelayEnabled = not _submitDelayEnabled
savedConfig.submitDelayEnabled = _submitDelayEnabled
savedConfig.submitDelay = _submitDelay
refreshSubmitDelayUI()
saveConfig()
end
local function lowerSubmitDelay()
_submitDelay = math.max(0.0, math.floor((_submitDelay - 0.1 + 0.0001) * 10 + 0.5) / 10)
savedConfig.submitDelay = _submitDelay
refreshSubmitDelayUI()
saveConfig()
end
local function raiseSubmitDelay()
_submitDelay = math.min(5.0, math.floor((_submitDelay + 0.1 + 0.0001) * 10 + 0.5) / 10)
savedConfig.submitDelay = _submitDelay
refreshSubmitDelayUI()
saveConfig()
end
SubmitDelayToggle.Activated:Connect(toggleSubmitDelay)
DelayMinus.Activated:Connect(lowerSubmitDelay)
DelayPlus.Activated:Connect(raiseSubmitDelay)
refreshSubmitDelayUI()
local BrainrotSpawnCard = makeCard("ShowBrainrotSpawned", UDim2.fromOffset(0, 50), UDim2.fromOffset(220, 25))
makeLabel(BrainrotSpawnCard, "Title", "Show Brainrot Spawned", UDim2.new(1, -45, 1, 0), UDim2.fromOffset(10, 0), 10, COLORS.White, Enum.Font.GothamMedium)
makeStateButton(BrainrotSpawnCard, _showBrainrotSpawned, "Show brainrot spawned", function(state)
_showBrainrotSpawned = state
_brainrotManualOff = not state
savedConfig.showBrainrotSpawned = state
savedConfig.brainrotManualOff = _brainrotManualOff
saveConfig()
if state then
if startBrainrotSpawnWatcher then startBrainrotSpawnWatcher() end
else
if stopBrainrotSpawnWatcher then stopBrainrotSpawnWatcher() end
end
end)
featureStates.__setSpawnNotifications = function(state)
local setter = featureStates.__setters["Show brainrot spawned"]
if setter then
local previousManualOff = _brainrotManualOff
setter(state == true, true)
_brainrotManualOff = previousManualOff
savedConfig.brainrotManualOff = previousManualOff
saveConfig()
return
end
_showBrainrotSpawned = state == true
savedConfig.showBrainrotSpawned = _showBrainrotSpawned
saveConfig()
if _showBrainrotSpawned then
if startBrainrotSpawnWatcher then startBrainrotSpawnWatcher() end
else
if stopBrainrotSpawnWatcher then stopBrainrotSpawnWatcher() end
end
end
local PageButton = Instance.new("TextButton")
PageButton.Name = "RiddleSolverPageButton"
PageButton.Size = UDim2.fromOffset(104, 20)
PageButton.Position = UDim2.fromOffset(106, 4)
PageButton.BackgroundColor3 = COLORS.Accent
PageButton.BorderSizePixel = 0
PageButton.AutoButtonColor = true
PageButton.Text = "RIDDLE SOLVER >"
PageButton.TextColor3 = COLORS.White
PageButton.TextSize = 10
PageButton.Font = Enum.Font.GothamBold
PageButton.ZIndex = 20
PageButton.Parent = Settings
addCorner(PageButton, 7)
addStroke(PageButton, COLORS.White, 1, 0.65)
local RiddlePage = Instance.new("Frame")
RiddlePage.Name = "RiddlePage"
RiddlePage.Size = UDim2.fromOffset(430, 172)
RiddlePage.Position = UDim2.fromOffset(0, 31)
RiddlePage.BackgroundTransparency = 1
RiddlePage.Visible = false
RiddlePage.ZIndex = 8
RiddlePage.Parent = Window
makeLabel(RiddlePage, "RiddleTitle", "Riddle Solver", UDim2.fromOffset(190, 22), UDim2.fromOffset(12, 4), 13, COLORS.White, Enum.Font.GothamBold)
makeLabel(RiddlePage, "RiddleStatus", "Listening for Sammy questions - Nova Web AI", UDim2.fromOffset(210, 18), UDim2.fromOffset(12, 23), 9, COLORS.Dim, Enum.Font.GothamMedium)
local RiddleQuestionCard = Instance.new("Frame")
RiddleQuestionCard.Name = "QuestionCard"
RiddleQuestionCard.Size = UDim2.fromOffset(406, 46)
RiddleQuestionCard.Position = UDim2.fromOffset(12, 45)
RiddleQuestionCard.BackgroundColor3 = COLORS.Row
RiddleQuestionCard.BackgroundTransparency = 0.08
RiddleQuestionCard.BorderSizePixel = 0
RiddleQuestionCard.Parent = RiddlePage
addCorner(RiddleQuestionCard, 7)
addStroke(RiddleQuestionCard, COLORS.Border, 1, 0.4)
makeLabel(RiddleQuestionCard, "QuestionTitle", "QUESTION", UDim2.fromOffset(70, 14), UDim2.fromOffset(8, 2), 8, COLORS.Dim, Enum.Font.GothamBold)
RiddleQuestionLabel = makeLabel(RiddleQuestionCard, "Question", "Waiting for a question...", UDim2.new(1, -16, 0, 26), UDim2.fromOffset(8, 16), 9, COLORS.White, Enum.Font.GothamMedium)
RiddleQuestionLabel.TextWrapped = true
RiddleQuestionLabel.TextYAlignment = Enum.TextYAlignment.Top
local RiddleAnswerCard = Instance.new("Frame")
RiddleAnswerCard.Name = "AnswerCard"
RiddleAnswerCard.Size = UDim2.fromOffset(406, 38)
RiddleAnswerCard.Position = UDim2.fromOffset(12, 96)
RiddleAnswerCard.BackgroundColor3 = COLORS.Row
RiddleAnswerCard.BackgroundTransparency = 0.08
RiddleAnswerCard.BorderSizePixel = 0
RiddleAnswerCard.Parent = RiddlePage
addCorner(RiddleAnswerCard, 7)
addStroke(RiddleAnswerCard, COLORS.Border, 1, 0.4)
makeLabel(RiddleAnswerCard, "AnswerTitle", "ANSWER", UDim2.fromOffset(70, 14), UDim2.fromOffset(8, 2), 8, COLORS.Dim, Enum.Font.GothamBold)
RiddleAnswerLabel = makeLabel(RiddleAnswerCard, "Answer", "No answer yet", UDim2.new(1, -16, 0, 20), UDim2.fromOffset(8, 15), 10, COLORS.Dim, Enum.Font.GothamBold)
RiddleAnswerLabel.TextWrapped = true
local RiddleToggleCard = Instance.new("Frame")
RiddleToggleCard.Name = "RiddleToggle"
RiddleToggleCard.Size = UDim2.fromOffset(196, 25)
RiddleToggleCard.Position = UDim2.fromOffset(12, 140)
RiddleToggleCard.BackgroundColor3 = COLORS.Row
RiddleToggleCard.BackgroundTransparency = 1
RiddleToggleCard.BorderSizePixel = 0
RiddleToggleCard.Parent = RiddlePage
makeLabel(RiddleToggleCard, "Title", "Riddle Solver", UDim2.new(1, -45, 1, 0), UDim2.fromOffset(8, 0), 9, COLORS.White, Enum.Font.GothamMedium)
local RiddleSolverStateButton = makeStateButton(RiddleToggleCard, _riddleEnabled, "Riddle solver", function(state)
_riddleEnabled = state
savedConfig.riddleSolver = state
saveConfig()
end)
local RiddleSubmitCard = Instance.new("Frame")
RiddleSubmitCard.Name = "RiddleAutoSubmit"
RiddleSubmitCard.Size = UDim2.fromOffset(196, 25)
RiddleSubmitCard.Position = UDim2.fromOffset(222, 140)
RiddleSubmitCard.BackgroundColor3 = COLORS.Row
RiddleSubmitCard.BackgroundTransparency = 1
RiddleSubmitCard.BorderSizePixel = 0
RiddleSubmitCard.Parent = RiddlePage
makeLabel(RiddleSubmitCard, "Title", "Auto Submit Answer", UDim2.new(1, -45, 1, 0), UDim2.fromOffset(8, 0), 9, COLORS.White, Enum.Font.GothamMedium)
local RiddleSubmitStateButton = makeStateButton(RiddleSubmitCard, _riddleAutoSubmit, "Riddle auto submit", function(state)
_riddleAutoSubmit = state
savedConfig.riddleAutoSubmit = state
saveConfig()
end)
local function styleRiddleToggle(button, stateName)
if not button then return end
button.Size = UDim2.fromOffset(52, 19)
button.Position = UDim2.new(1, -60, 0.5, -9)
button.TextSize = 9
local function refresh()
local state = featureStates[stateName] == true
button.Text = state and "ON" or "OFF"
button.TextColor3 = COLORS.White
button.BackgroundColor3 = state and COLORS.Accent or COLORS.Control
end
refresh()
button.Activated:Connect(function()
task.defer(refresh)
end)
end
styleRiddleToggle(RiddleSolverStateButton, "Riddle solver")
styleRiddleToggle(RiddleSubmitStateButton, "Riddle auto submit")
local onRiddlePage = false
local function setRedeemerPage(riddlePage)
onRiddlePage = riddlePage == true
RiddlePage.Visible = onRiddlePage
Settings.Visible = not onRiddlePage
if Console then Console.Visible = not onRiddlePage end
if LogsHeader then LogsHeader.Visible = not onRiddlePage end
if onRiddlePage then
PageButton.Parent = Window
PageButton.Size = UDim2.fromOffset(88, 20)
PageButton.Position = UDim2.fromOffset(8, 6)
PageButton.Text = "< GO BACK"
else
PageButton.Parent = Settings
PageButton.Size = UDim2.fromOffset(104, 20)
PageButton.Position = UDim2.fromOffset(106, 4)
PageButton.Text = "RIDDLE SOLVER >"
end
end
PageButton.Activated:Connect(function()
setRedeemerPage(not onRiddlePage)
end)
Console = Instance.new("ScrollingFrame")
Console.Name = "Console"
Console.Size = UDim2.fromOffset(202, 197)
Console.Position = UDim2.fromOffset(0, 31)
Console.BackgroundColor3 = COLORS.Log
Console.BorderSizePixel = 0
Console.ClipsDescendants = true
Console.Active = true
Console.ScrollingEnabled = true
Console.ScrollingDirection = Enum.ScrollingDirection.Y
Console.ElasticBehavior = Enum.ElasticBehavior.WhenScrollable
Console.VerticalScrollBarInset = Enum.ScrollBarInset.ScrollBar
Console.CanvasSize = UDim2.new(0, 0, 0, 0)
Console.AutomaticCanvasSize = Enum.AutomaticSize.None
Console.ScrollBarThickness = 4
Console.ScrollBarImageColor3 = COLORS.Dim
Console.ZIndex = 3
Console.Parent = Window
addCorner(Console, 9)
addStroke(Console, COLORS.Border, 1, 0.25)
ConsoleOutput = Instance.new("TextLabel")
ConsoleOutput.Name = "ConsoleOutput"
ConsoleOutput.Size = UDim2.new(1, -18, 0, 115)
ConsoleOutput.AutomaticSize = Enum.AutomaticSize.Y
ConsoleOutput.Position = UDim2.fromOffset(9, 6)
ConsoleOutput.BackgroundTransparency = 1
ConsoleOutput.RichText = true
if autoWriteEnabled then
ConsoleOutput.Text = '> scanning for codes...'
else
ConsoleOutput.Text = 'status: OFF\ncode sniper paused'
end
ConsoleOutput.TextSize = 9
ConsoleOutput.Font = Enum.Font.Code
ConsoleOutput.TextColor3 = COLORS.Dim
ConsoleOutput.TextXAlignment = Enum.TextXAlignment.Left
ConsoleOutput.TextYAlignment = Enum.TextYAlignment.Top
ConsoleOutput.TextWrapped = true
ConsoleOutput.ZIndex = 4
ConsoleOutput.Parent = Console
local LogsHeader = Instance.new("Frame")
LogsHeader.Name = "LogsHeader"
LogsHeader.Size = UDim2.fromOffset(202, 31)
LogsHeader.BackgroundColor3 = COLORS.Row
LogsHeader.BorderSizePixel = 0
LogsHeader.ZIndex = 6
LogsHeader.Parent = Window
addCorner(LogsHeader, 9)
addStroke(LogsHeader, COLORS.Border, 1, 0.25)
local StatusDot = Instance.new("Frame")
StatusDot.Size = UDim2.fromOffset(10, 10)
StatusDot.Position = UDim2.fromOffset(5, 10)
StatusDot.BackgroundColor3 = Color3.fromRGB(45, 225, 110)
StatusDot.BorderSizePixel = 0
StatusDot.ZIndex = 7
StatusDot.Parent = LogsHeader
addCorner(StatusDot, 5)
makeLabel(LogsHeader, "Status", "Status: Ready", UDim2.fromOffset(120, 25), UDim2.fromOffset(20, 3), 8, COLORS.White, Enum.Font.GothamMedium).ZIndex = 7
makeLabel(LogsHeader, "Logs", "Logs", UDim2.fromOffset(40, 25), UDim2.fromOffset(145, 3), 8, COLORS.White, Enum.Font.GothamBold).ZIndex = 7
local HideLogs = Instance.new("TextButton")
HideLogs.Name = "HideLogs"
HideLogs.Size = UDim2.fromOffset(200, 19)
HideLogs.Position = UDim2.fromOffset(10, 157)
HideLogs.BackgroundColor3 = COLORS.Accent
HideLogs.BorderSizePixel = 0
HideLogs.Text = "Hide Logs"
HideLogs.TextColor3 = COLORS.White
HideLogs.TextSize = 8
HideLogs.Font = Enum.Font.GothamMedium
HideLogs.Parent = Settings
addCorner(HideLogs, 5)
local logsShown = true
local logsAnimationToken = 0
HideLogs.Activated:Connect(function()
logsShown = not logsShown
HideLogs.Text = logsShown and "Hide Logs" or "Show Logs"
logsAnimationToken = logsAnimationToken + 1
local token = logsAnimationToken
if logsShown then
Console.Visible = true
LogsHeader.Visible = true
Console.Position = UDim2.fromOffset(-210, 31)
LogsHeader.Position = UDim2.fromOffset(-210, 0)
TweenService:Create(Console, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {
Position = UDim2.fromOffset(0, 31),
}):Play()
TweenService:Create(LogsHeader, TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {
Position = UDim2.fromOffset(0, 0),
}):Play()
else
TweenService:Create(Console, TweenInfo.new(0.24, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
Position = UDim2.fromOffset(-210, 31),
}):Play()
TweenService:Create(LogsHeader, TweenInfo.new(0.24, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
Position = UDim2.fromOffset(-210, 0),
}):Play()
task.delay(0.25, function()
if token == logsAnimationToken and not logsShown then
Console.Visible = false
LogsHeader.Visible = false
end
end)
end
end)
local CONSOLE_BOTTOM_PADDING = 30
updateConsoleCanvas = function()
if not Console or not ConsoleOutput then return end
local contentHeight = ConsoleOutput.Position.Y.Offset + ConsoleOutput.AbsoluteSize.Y + CONSOLE_BOTTOM_PADDING
Console.CanvasSize = UDim2.new(0, 0, 0, contentHeight)
end
ConsoleOutput:GetPropertyChangedSignal("AbsoluteSize"):Connect(updateConsoleCanvas)
task.defer(updateConsoleCanvas)
local DiscordFooter = makeLabel(Window, "DiscordFooter", "CocoX.wtf", UDim2.fromOffset(100, 12), UDim2.fromOffset(320, 213), 7, COLORS.Dim, Enum.Font.Gotham)
DiscordFooter.TextXAlignment = Enum.TextXAlignment.Center
DiscordFooter.BackgroundColor3 = COLORS.Window
DiscordFooter.BackgroundTransparency = 1
DiscordFooter.TextStrokeColor3 = COLORS.Window
DiscordFooter.TextStrokeTransparency = 0.45
DiscordFooter.ZIndex = 3
local SpawnNoticeHolder = Instance.new("Frame")
SpawnNoticeHolder.Name = "BrainrotSpawnNotices"
SpawnNoticeHolder.Size = UDim2.fromOffset(370, 220)
SpawnNoticeHolder.AnchorPoint = Vector2.new(0.5, 0)
SpawnNoticeHolder.Position = UDim2.new(0.5, 0, 0, 12)
SpawnNoticeHolder.BackgroundTransparency = 1
SpawnNoticeHolder.ZIndex = 100
SpawnNoticeHolder.Parent = GUI
local SpawnNoticeLayout = Instance.new("UIListLayout")
SpawnNoticeLayout.Padding = UDim.new(0, 6)
SpawnNoticeLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
SpawnNoticeLayout.SortOrder = Enum.SortOrder.LayoutOrder
SpawnNoticeLayout.Parent = SpawnNoticeHolder
local recentSpawnNotices = {}
local DISCORD_RELAY_URL = "https://discord-relay--cococatnice0444.replit.app/api/discord/message"
local DISCORD_CHANNEL_ID = "1550603671274786837"
local function sendSpawnToDiscord(message)
if not _showBrainrotSpawned then return end
if type(message) ~= "string" or message == "" or #message > 2000 then return end
task.spawn(function()
if not _showBrainrotSpawned then return end
local body = HttpService:JSONEncode({
content = message,
channelId = DISCORD_CHANNEL_ID,
channel_id = DISCORD_CHANNEL_ID,
})
local options = {
Url = DISCORD_RELAY_URL,
Method = "POST",
Headers = {["Content-Type"] = "application/json"},
Body = body,
}
local requestFunction = (syn and syn.request)
or (http and http.request)
or http_request
or request
if type(requestFunction) == "function" then
pcall(requestFunction, options)
else
pcall(function()
return HttpService:RequestAsync(options)
end)
end
end)
end
local function extractSpawnedBrainrot(text)
local clean = tostring(text or ""):gsub("<[^>]->", ""):gsub("[%c]", " "):gsub("%s+", " ")
clean = clean:match("^%s*(.-)%s*$") or ""
if clean == "" then return nil end
local lower = clean:lower()
local startAt = lower:find("brainrot spawned:", 1, true)
local name
if startAt then
name = clean:sub(startAt + #"brainrot spawned:")
else
local phraseAt = lower:find(" has spawned", 1, true)
if phraseAt then
name = clean:sub(1, phraseAt - 1)
else
phraseAt = lower:find(" spawned", 1, true)
if phraseAt then name = clean:sub(1, phraseAt - 1) end
end
end
if not name and lower:find("brainrot%s+spawned%s*!?") then
return "Brainrot"
end
if not name then return nil end
name = name:gsub("^[Aa]%s+", ""):gsub("^[Tt]he%s+", ""):gsub("[!%.:%s]+$", "")
local generic = name:lower()
if name == "" then return nil end
if generic == "a brainrot" or generic == "the brainrot" then name = "Brainrot" end
if #name > 60 then return nil end
return name
end
featureStates.__isCodeSoldOutMessage = function(text)
local clean = tostring(text or ""):gsub("<[^>]->", ""):gsub("[%c]", " "):gsub("%s+", " ")
clean = clean:lower():match("^%s*(.-)%s*$") or ""
return clean:find("this code is sold out", 1, true) ~= nil
end
local function showBrainrotSpawnNotice(name, customMessage, customSubtitle, skipDiscord)
if not _showBrainrotSpawned then return end
local displayMessage = customMessage or (name .. " spawned!")
local subtitleText = customSubtitle or "BRAINROT DETECTED"
local key = displayMessage:lower()
local now = os.clock()
if recentSpawnNotices[key] and now - recentSpawnNotices[key] < 4 then return end
recentSpawnNotices[key] = now
if not skipDiscord then sendSpawnToDiscord(name .. " spawned!") end
local Notice = Instance.new("Frame")
Notice.Name = "SpawnNotice"
Notice.Size = UDim2.fromOffset(320, 52)
Notice.BackgroundColor3 = Color3.fromRGB(8, 10, 18)
Notice.BackgroundTransparency = 0.04
Notice.BorderSizePixel = 0
Notice.ZIndex = 101
Notice.Parent = SpawnNoticeHolder
addCorner(Notice, 11)
local NoticeStroke = addStroke(Notice, COLORS.Accent, 2, 1)
local NoticeScale = Instance.new("UIScale")
NoticeScale.Scale = 0.72
NoticeScale.Parent = Notice
local NoticeGradient = Instance.new("UIGradient")
NoticeGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(38, 20, 5)),
ColorSequenceKeypoint.new(0.48, Color3.fromRGB(12, 13, 22)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(5, 6, 13)),
})
NoticeGradient.Rotation = 8
NoticeGradient.Parent = Notice
local Dot = Instance.new("Frame")
Dot.Size = UDim2.fromOffset(11, 11)
Dot.Position = UDim2.fromOffset(14, 20)
Dot.BackgroundColor3 = COLORS.Accent
Dot.BorderSizePixel = 0
Dot.ZIndex = 102
Dot.Parent = Notice
addCorner(Dot, 6)
local DotStroke = addStroke(Dot, Color3.fromRGB(255, 214, 150), 2, 0.25)
local Message = makeLabel(Notice, "Message", displayMessage, UDim2.new(1, -54, 0, 28), UDim2.fromOffset(38, 2), 15, COLORS.White, Enum.Font.GothamBold)
Message.ZIndex = 102
local Subtitle = makeLabel(Notice, "Subtitle", subtitleText, UDim2.new(1, -54, 0, 13), UDim2.fromOffset(38, 30), 8, COLORS.Dim, Enum.Font.GothamBold)
Subtitle.ZIndex = 102
local ProgressTrack = Instance.new("Frame")
ProgressTrack.Name = "ProgressTrack"
ProgressTrack.Size = UDim2.new(1, -20, 0, 2)
ProgressTrack.Position = UDim2.new(0, 10, 1, -4)
ProgressTrack.BackgroundColor3 = Color3.fromRGB(55, 40, 25)
ProgressTrack.BorderSizePixel = 0
ProgressTrack.ZIndex = 102
ProgressTrack.Parent = Notice
addCorner(ProgressTrack, 1)
local Progress = Instance.new("Frame")
Progress.Name = "Progress"
Progress.Size = UDim2.fromScale(1, 1)
Progress.BackgroundColor3 = COLORS.Accent
Progress.BorderSizePixel = 0
Progress.ZIndex = 103
Progress.Parent = ProgressTrack
addCorner(Progress, 1)
Notice.BackgroundTransparency = 1
Message.TextTransparency = 1
Subtitle.TextTransparency = 1
TweenService:Create(NoticeScale, TweenInfo.new(0.42, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Scale = 1}):Play()
TweenService:Create(Notice, TweenInfo.new(0.25, Enum.EasingStyle.Quad), {BackgroundTransparency = 0.04}):Play()
TweenService:Create(NoticeStroke, TweenInfo.new(0.3), {Transparency = 0.08}):Play()
TweenService:Create(Message, TweenInfo.new(0.28), {TextTransparency = 0}):Play()
TweenService:Create(Subtitle, TweenInfo.new(0.35), {TextTransparency = 0}):Play()
TweenService:Create(Progress, TweenInfo.new(4, Enum.EasingStyle.Linear), {Size = UDim2.new(0, 0, 1, 0)}):Play()
local Pulse = TweenService:Create(Dot, TweenInfo.new(0.55, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {
BackgroundColor3 = Color3.fromRGB(255, 215, 145),
Size = UDim2.fromOffset(14, 14),
Position = UDim2.fromOffset(12, 19),
})
Pulse:Play()
local GlowPulse = TweenService:Create(DotStroke, TweenInfo.new(0.55, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {Transparency = 0.8})
GlowPulse:Play()
task.delay(4, function()
if not Notice.Parent then return end
Pulse:Cancel()
GlowPulse:Cancel()
TweenService:Create(NoticeScale, TweenInfo.new(0.28, Enum.EasingStyle.Back, Enum.EasingDirection.In), {Scale = 0.7}):Play()
TweenService:Create(Notice, TweenInfo.new(0.25), {BackgroundTransparency = 1}):Play()
TweenService:Create(NoticeStroke, TweenInfo.new(0.22), {Transparency = 1}):Play()
TweenService:Create(Message, TweenInfo.new(0.2), {TextTransparency = 1}):Play()
TweenService:Create(Subtitle, TweenInfo.new(0.18), {TextTransparency = 1}):Play()
task.wait(0.3)
if Notice then Notice:Destroy() end
end)
end
local lagNoticeVisible = false
local lastLagNoticeAt = 0
local lagNoticeSuppressedUntil = 0
local fpsBoostApplied = false
featureStates.__spawnNotificationPauseToken = 0
local function applyLocalFpsBoost()
if fpsBoostApplied then return end
fpsBoostApplied = true
pcall(function()
UserSettings().GameSettings.SavedQualityLevel = Enum.SavedQualitySetting.QualityLevel1
end)
pcall(function()
local lighting = game:GetService("Lighting")
lighting.GlobalShadows = false
for _, effect in ipairs(lighting:GetChildren()) do
if effect:IsA("PostEffect") then effect.Enabled = false end
end
end)
pcall(function()
for _, object in ipairs(workspace:GetDescendants()) do
if object:IsA("ParticleEmitter") or object:IsA("Trail") or object:IsA("Beam")
or object:IsA("Smoke") or object:IsA("Fire") or object:IsA("Sparkles") then
object.Enabled = false
end
end
end)
end
featureStates.__pauseSpawnNotificationsForTenMinutes = function()
featureStates.__spawnNotificationPauseToken = featureStates.__spawnNotificationPauseToken + 1
local token = featureStates.__spawnNotificationPauseToken
lagNoticeSuppressedUntil = os.clock() + 600
if featureStates.__setSpawnNotifications then
featureStates.__setSpawnNotifications(false)
end
task.delay(600, function()
if token ~= featureStates.__spawnNotificationPauseToken then return end
if not GUI or not GUI.Parent then return end
if not _brainrotManualOff and featureStates.__setSpawnNotifications then
featureStates.__setSpawnNotifications(true)
end
end)
end
local function showLagNotice(fps)
if lagNoticeVisible then return end
lagNoticeVisible = true
local notice = Instance.new("Frame")
notice.Name = "LagNotice"
notice.Size = UDim2.fromOffset(340, 100)
notice.BackgroundColor3 = Color3.fromRGB(8, 10, 18)
notice.BorderSizePixel = 0
notice.ZIndex = 110
notice.Parent = SpawnNoticeHolder
addCorner(notice, 11)
local stroke = addStroke(notice, COLORS.Accent, 2, 0.08)
local title = makeLabel(notice, "Title", "You are lagging", UDim2.new(1, -20, 0, 25), UDim2.fromOffset(10, 8), 15, COLORS.White, Enum.Font.GothamBold)
title.ZIndex = 111
local detail = makeLabel(notice, "Detail", string.format("FPS is around %d", math.max(1, math.floor(fps))), UDim2.new(1, -20, 0, 16), UDim2.fromOffset(10, 32), 9, COLORS.Dim, Enum.Font.GothamMedium)
detail.ZIndex = 111
local stop = Instance.new("TextButton")
stop.Name = "StopLagging"
stop.Size = UDim2.fromOffset(145, 25)
stop.Position = UDim2.fromOffset(14, 64)
stop.BackgroundColor3 = COLORS.Accent
stop.BorderSizePixel = 0
stop.AutoButtonColor = true
stop.Text = "Stop Lagging"
stop.TextColor3 = COLORS.White
stop.TextSize = 10
stop.Font = Enum.Font.GothamBold
stop.ZIndex = 111
stop.Parent = notice
addCorner(stop, 6)
local continueButton = stop:Clone()
continueButton.Name = "ContinueAnyway"
continueButton.Position = UDim2.fromOffset(181, 64)
continueButton.BackgroundColor3 = COLORS.Control
continueButton.Text = "Continue Anyway"
continueButton.Parent = notice
local function closeNotice()
lagNoticeVisible = false
if notice then notice:Destroy() end
end
stop.Activated:Connect(function()
applyLocalFpsBoost()
featureStates.__pauseSpawnNotificationsForTenMinutes()
closeNotice()
end)
continueButton.Activated:Connect(function()
lagNoticeSuppressedUntil = os.clock() + 600
closeNotice()
end)
notice.BackgroundTransparency = 1
title.TextTransparency = 1
detail.TextTransparency = 1
TweenService:Create(notice, TweenInfo.new(0.22), {BackgroundTransparency = 0.04}):Play()
TweenService:Create(stroke, TweenInfo.new(0.22), {Transparency = 0.08}):Play()
TweenService:Create(title, TweenInfo.new(0.22), {TextTransparency = 0}):Play()
TweenService:Create(detail, TweenInfo.new(0.28), {TextTransparency = 0}):Play()
end
task.spawn(function()
local frames, elapsed = 0, 0
while GUI and GUI.Parent do
local dt = RunService.RenderStepped:Wait()
if autoWriteEnabled then
local now = os.clock()
if now >= lagNoticeSuppressedUntil and dt > 0.25 and now - lastLagNoticeAt > 15 then
lastLagNoticeAt = now
showLagNotice(1 / math.max(dt, 0.001))
end
frames = frames + 1
elapsed = elapsed + dt
if elapsed >= 1 then
local fps = frames / elapsed
frames, elapsed = 0, 0
now = os.clock()
if now >= lagNoticeSuppressedUntil and fps < 35 and now - lastLagNoticeAt > 15 then
lastLagNoticeAt = now
showLagNotice(fps)
end
end
else
frames, elapsed = 0, 0
end
end
end)
local COCOX_PRESENCE_URL = "https://coco-x-user--52fgnzd64s.replit.app/api/presence"
local COCOX_TAG_NAME = "CocoXUserTag"
local function removeCocoXTag(player)
local character = player and player.Character
if not character then return end
local head = character:FindFirstChild("Head")
local oldTag = head and head:FindFirstChild(COCOX_TAG_NAME)
if oldTag then oldTag:Destroy() end
end
local function ensureCocoXTag(player)
local character = player and player.Character
local head = character and character:FindFirstChild("Head")
if not head then return end
local tag = head:FindFirstChild(COCOX_TAG_NAME)
if not tag then
tag = Instance.new("BillboardGui")
tag.Name = COCOX_TAG_NAME
tag.Adornee = head
tag.Size = UDim2.fromOffset(190, 27)
tag.StudsOffset = Vector3.new(0, 2.85, 0)
tag.AlwaysOnTop = true
tag.MaxDistance = 120
tag.LightInfluence = 0
tag.Parent = head
end
tag.Size = UDim2.fromOffset(190, 27)
tag.StudsOffset = Vector3.new(0, 2.85, 0)
tag.AlwaysOnTop = true
tag.MaxDistance = 120
tag.LightInfluence = 0
local panel = tag:FindFirstChild("Panel")
if not panel then
panel = Instance.new("Frame")
panel.Name = "Panel"
panel.Size = UDim2.fromScale(1, 1)
panel.BackgroundColor3 = Color3.fromRGB(7, 8, 16)
panel.BackgroundTransparency = 0.04
panel.BorderSizePixel = 0
panel.ZIndex = 1
panel.Parent = tag
addCorner(panel, 14)
addStroke(panel, COLORS.Accent, 1, 0.18)
local dot = Instance.new("Frame")
dot.Name = "Dot"
dot.Size = UDim2.fromOffset(9, 9)
dot.Position = UDim2.fromOffset(8, 9)
dot.BackgroundColor3 = COLORS.Accent
dot.BorderSizePixel = 0
dot.ZIndex = 2
dot.Parent = panel
addCorner(dot, 5)
addStroke(dot, Color3.fromRGB(255, 205, 120), 1, 0.2)
end
local label = panel:FindFirstChild("Label") or tag:FindFirstChild("Label")
if not label then
label = Instance.new("TextLabel")
label.Name = "Label"
label.Size = UDim2.new(1, -28, 1, 0)
label.Position = UDim2.fromOffset(24, 0)
label.BackgroundTransparency = 1
label.Font = Enum.Font.GothamBold
label.TextSize = 12
label.TextColor3 = COLORS.Accent
label.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
label.TextStrokeTransparency = 0.65
label.TextXAlignment = Enum.TextXAlignment.Left
label.TextYAlignment = Enum.TextYAlignment.Center
label.TextScaled = false
label.ZIndex = 2
label.Parent = panel
elseif label.Parent ~= panel then
label.Parent = panel
label.Size = UDim2.new(1, -28, 1, 0)
label.Position = UDim2.fromOffset(24, 0)
label.ZIndex = 2
end
if label then
label.TextColor3 = COLORS.Accent
label.Font = Enum.Font.GothamBold
label.TextSize = 12
label.TextXAlignment = Enum.TextXAlignment.Left
label.TextYAlignment = Enum.TextYAlignment.Center
label.Text = tostring(player.UserId) == "10260353484" and "CocoX [OWNER]" or "CocoX [USER]"
end
end
local function updateCocoXTags(users)
local activeIds = {}
for _, user in ipairs(type(users) == "table" and users or {}) do
if type(user) == "table" and user.userId ~= nil then
activeIds[tostring(user.userId)] = true
end
end
for _, player in ipairs(Players:GetPlayers()) do
if activeIds[tostring(player.UserId)] then
ensureCocoXTag(player)
else
removeCocoXTag(player)
end
end
end
local function sendCocoXPresenceHeartbeat()
local body = HttpService:JSONEncode({
userId = tostring(LocalPlayer.UserId),
username = LocalPlayer.Name,
})
local options = {
Url = COCOX_PRESENCE_URL,
Method = "POST",
Headers = { ["Content-Type"] = "application/json" },
Body = body,
}
local requestFunction = (syn and syn.request)
or (http and http.request)
or http_request
or request
local success, response
if type(requestFunction) == "function" then
success, response = pcall(requestFunction, options)
else
success, response = pcall(function()
return HttpService:RequestAsync(options)
end)
end
if not success or not response then return end
local status = tonumber(response.StatusCode or response.Status or response.status_code)
if response.Success ~= true and not (status and status >= 200 and status < 300) then return end
local responseBody = response.Body or response.body
if type(responseBody) ~= "string" then return end
local decodedOk, decoded = pcall(function()
return HttpService:JSONDecode(responseBody)
end)
if decodedOk and type(decoded) == "table" and decoded.success == true then
updateCocoXTags(decoded.users)
end
end
Players.PlayerRemoving:Connect(removeCocoXTag)
task.spawn(function()
while GUI and GUI.Parent do
pcall(sendCocoXPresenceHeartbeat)
task.wait(6)
end
end)
local brainrotWatcherConnections = {}
local brainrotWatcherRunning = false
local brainrotWatcherToken = 0
local brainrotWatched = setmetatable({}, {__mode = "k"})
local function addBrainrotWatcherConnection(connection)
brainrotWatcherConnections[#brainrotWatcherConnections + 1] = connection
return connection
end
stopBrainrotSpawnWatcher = function()
brainrotWatcherRunning = false
brainrotWatcherToken = brainrotWatcherToken + 1
for _, connection in ipairs(brainrotWatcherConnections) do
pcall(function() connection:Disconnect() end)
end
brainrotWatcherConnections = {}
brainrotWatched = setmetatable({}, {__mode = "k"})
for _, child in ipairs(SpawnNoticeHolder:GetChildren()) do
if child.Name == "SpawnNotice" then
pcall(function() child:Destroy() end)
end
end
end
startBrainrotSpawnWatcher = function()
if brainrotWatcherRunning or not _showBrainrotSpawned then return end
brainrotWatcherRunning = true
brainrotWatcherToken = brainrotWatcherToken + 1
local thisToken = brainrotWatcherToken
brainrotWatched = setmetatable({}, {__mode = "k"})
recentSpawnNotices = {}
local function isRunning()
return _showBrainrotSpawned
and brainrotWatcherRunning
and thisToken == brainrotWatcherToken
and GUI and GUI.Parent
end
local function readObjectText(object)
local text = ""
pcall(function() text = object.ContentText end)
if text == "" then pcall(function() text = object.Text end) end
return tostring(text or "")
end
local function watch(object)
if not isRunning() or not object or not object.Parent then return end
if not (object:IsA("TextLabel") or object:IsA("TextButton") or object:IsA("TextBox")) then return end
if isOurGui(object) or brainrotWatched[object] then return end
brainrotWatched[object] = {lastText = nil, lastNotifiedText = nil}
local function check()
if not isRunning() or not object.Parent then return end
local text = readObjectText(object)
local state = brainrotWatched[object]
if not state or text == state.lastText then return end
state.lastText = text
local soldOut = featureStates.__isCodeSoldOutMessage(text)
local name = extractSpawnedBrainrot(text)
if soldOut and state.lastNotifiedText ~= text then
state.lastNotifiedText = text
showBrainrotSpawnNotice("CodeSoldOut", "Try Again Son 😭", "CODE SOLD OUT", true)
elseif name and state.lastNotifiedText ~= text then
state.lastNotifiedText = text
showBrainrotSpawnNotice(name)
elseif not name and not soldOut then
state.lastNotifiedText = nil
end
end
check()
addBrainrotWatcherConnection(object:GetPropertyChangedSignal("Text"):Connect(check))
local contentOk, contentConnection = pcall(function()
return object:GetPropertyChangedSignal("ContentText"):Connect(check)
end)
if contentOk and contentConnection then addBrainrotWatcherConnection(contentConnection) end
addBrainrotWatcherConnection(object:GetPropertyChangedSignal("Visible"):Connect(check))
end
addBrainrotWatcherConnection(pg.DescendantAdded:Connect(function(object)
if not isRunning() then return end
task.defer(function() watch(object) end)
end))
task.spawn(function()
local initialObjects = pg:GetDescendants()
for index, object in ipairs(initialObjects) do
if not isRunning() then return end
watch(object)
if index % 25 == 0 then task.wait() end
end
end)
task.spawn(function()
while isRunning() do
task.wait(4)
if not isRunning() then break end
for object, state in pairs(brainrotWatched) do
if not isRunning() then break end
if object and object.Parent and state and not isOurGui(object) then
local text = readObjectText(object)
local soldOut = featureStates.__isCodeSoldOutMessage(text)
local name = extractSpawnedBrainrot(text)
if soldOut and state.lastNotifiedText ~= text then
state.lastText = text
state.lastNotifiedText = text
showBrainrotSpawnNotice("CodeSoldOut", "Try Again Son 😭", "CODE SOLD OUT", true)
elseif name and state.lastNotifiedText ~= text then
state.lastText = text
state.lastNotifiedText = text
showBrainrotSpawnNotice(name)
elseif not name and not soldOut then
state.lastText = text
state.lastNotifiedText = nil
end
end
end
end
end)
end
TweenService:Create(Window, TweenInfo.new(0.55, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Position = WindowOpenPosition,
}):Play()
do
local dragging = false
local activeDragInput
local dragStart
local startPosition
local dragMoved = false
local DRAG_THRESHOLD = UserInputService.TouchEnabled and 10 or 3
local function isOverHeaderControl(position)
local btnPos = AutoWriteButton.AbsolutePosition
local btnSize = AutoWriteButton.AbsoluteSize
return position.X >= (btnPos.X - 10)
and position.X <= (btnPos.X + btnSize.X + 10)
and position.Y >= (btnPos.Y - 10)
and position.Y <= (btnPos.Y + btnSize.Y + 10)
end
local function stopDragging(input)
if input ~= activeDragInput then return end
dragging = false
activeDragInput = nil
dragStart = nil
startPosition = nil
local targetScale = InterfaceScale.Scale
TweenService:Create(InterfaceScale, TweenInfo.new(0.08, Enum.EasingStyle.Quad), {
Scale = targetScale * 0.975,
}):Play()
task.delay(0.08, function()
if InterfaceScale and InterfaceScale.Parent then
TweenService:Create(InterfaceScale, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Scale = targetScale,
}):Play()
end
end)
end
Header.InputBegan:Connect(function(input)
if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end
if dragging or isOverHeaderControl(input.Position) then return end
dragging = true
activeDragInput = input
dragStart = Vector2.new(input.Position.X, input.Position.Y)
startPosition = Window.Position
dragMoved = false
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End or input.UserInputState == Enum.UserInputState.Cancel then
stopDragging(input)
end
end)
end)
UserInputService.InputChanged:Connect(function(input)
if not dragging or not activeDragInput then return end
local isTrackedTouch = activeDragInput.UserInputType == Enum.UserInputType.Touch and input == activeDragInput
local isTrackedMouse = activeDragInput.UserInputType == Enum.UserInputType.MouseButton1 and input.UserInputType == Enum.UserInputType.MouseMovement
if not isTrackedTouch and not isTrackedMouse then return end
local current = Vector2.new(input.Position.X, input.Position.Y)
local delta = current - dragStart
if not dragMoved then
if delta.Magnitude < DRAG_THRESHOLD then return end
dragMoved = true
end
Window.Position = UDim2.new(
startPosition.X.Scale,
startPosition.X.Offset + delta.X,
startPosition.Y.Scale,
startPosition.Y.Offset + delta.Y
)
end)
end
local function col3ToRich(col)
if col == COLORS.Green then return CONSOLE_COLORS.Green end
if col == COLORS.Red then return CONSOLE_COLORS.Red end
if col == COLORS.Text then return CONSOLE_COLORS.Amber end
if col == COLORS.White then return CONSOLE_COLORS.Cyan end
if col == COLORS.Dim then return CONSOLE_COLORS.Dim end
return string.format("rgb(%d,%d,%d)", math.floor(col.R * 255 + 0.5), math.floor(col.G * 255 + 0.5), math.floor(col.B * 255 + 0.5))
end
function setStatus(msg, col)
if not ConsoleOutput or not _enabled then return end
if msg == _lastStatusMsg then return end
_lastStatusMsg = msg
col = col or COLORS.Dim
local line = '' .. tostring(msg) .. ""
if ConsoleOutput.Text == "" then ConsoleOutput.Text = line
else ConsoleOutput.Text = ConsoleOutput.Text .. "\n\n" .. line end
scrollConsoleToBottom()
end
function flashCode(code, col)
if not code or code == "" or code == "—" then return end
setStatus("[code] -> " .. tostring(code), col or COLORS.White)
end
local function resetPasteCounter() _capturedParts = {} end
clearAceCapture = function() _capturedParts = {} end
local function clearBoxWatchers()
if _boxTextConn then pcall(function() _boxTextConn:Disconnect() end) end
if _boxAncestryConn then pcall(function() _boxAncestryConn:Disconnect() end) end
for _, connection in ipairs(_boxVisibilityConns) do pcall(function() connection:Disconnect() end) end
_boxTextConn = nil
_boxAncestryConn = nil
_boxVisibilityConns = {}
_lastWatchedBox = nil
end
local function watchBoxForBlankReset(box)
if not box or _lastWatchedBox == box then return end
clearBoxWatchers()
_lastWatchedBox = box
if box.Text ~= "" then _lastNonBlankBoxText = box.Text end
_boxTextConn = box:GetPropertyChangedSignal("Text"):Connect(function()
if box.Text == "" then
if _submitAfter ~= 0 then resetPasteCounter() end
else _lastNonBlankBoxText = box.Text end
end)
_boxAncestryConn = box.AncestryChanged:Connect(function(_, parent)
if not parent and _submitAfter ~= 0 then resetPasteCounter() end
clearBoxWatchers()
end)
end
if UserInputService and UserInputService.TextBoxFocused then
UserInputService.TextBoxFocused:Connect(function(box)
if box:IsDescendantOf(GUI) then return end
if box ~= aceCodeBox() then return end
_focused = box
_lastBox = box
watchBoxForBlankReset(box)
if _enabled then setStatus("Ready", COLORS.Green) end
end)
UserInputService.TextBoxFocusReleased:Connect(function(box)
if box:IsDescendantOf(GUI) then return end
local codeBox = aceCodeBox()
if box ~= codeBox and box ~= _lastBox then return end
if _retypeInvalid and rememberPendingSubmission and (box == codeBox or box == _lastBox) then
local submittedText = box.Text ~= "" and box.Text or _lastNonBlankBoxText
rememberPendingSubmission(box, submittedText, false)
end
if _focused == box then
_focused = nil
if _enabled then
setStatus((_lastBox and _lastBox.Parent) and "Ready" or "Click code box first", (_lastBox and _lastBox.Parent) and COLORS.Green or COLORS.Dim)
end
end
end)
end
clearPendingSubmission = function()
_pendingRejectedToken = _pendingRejectedToken + 1
_pendingRejectedText = nil
_pendingRejectedBox = nil
_pendingRejectedUntil = 0
end
rememberPendingSubmission = function(box, text, replaceExisting)
if not _retypeInvalid or not text or text == "" then return end
if not replaceExisting and _pendingRejectedText and os.clock() <= _pendingRejectedUntil then return end
_pendingRejectedToken = _pendingRejectedToken + 1
local token = _pendingRejectedToken
_pendingRejectedText = text
_pendingRejectedBox = box
_pendingRejectedUntil = os.clock() + 8
task.delay(8, function()
if token == _pendingRejectedToken then clearPendingSubmission() end
end)
end
local function restoreRejectedText(box, previousText)
if not _retypeInvalid or not previousText or previousText == "" then return false end
RunService.Heartbeat:Wait()
local repasteBox = aceCodeBox() or box
if not repasteBox or not isVisibleChain(repasteBox) then return false end
local restored = pcall(function() repasteBox.Text = previousText end)
if restored then
_lastBox = repasteBox
watchBoxForBlankReset(repasteBox)
end
return restored
end
handleRedemptionFeedback = function(text, feedbackObject)
if feedbackObject and feedbackObject:IsDescendantOf(GUI) then return end
local lower = tostring(text or ""):lower()
if _submitAfter == 0 then
local accepted = lower:find("successfully redeemed", 1, true)
or lower:find("code redeemed", 1, true)
or lower:find("redeemed successfully", 1, true)
or lower:find("code accepted", 1, true)
or lower:find("success", 1, true)
if accepted then
resetPasteCounter()
clearPendingSubmission()
setStatus("Valid code - Every chain reset", COLORS.Green)
return
end
end
if not _retypeInvalid or not _pendingRejectedText then return end
if os.clock() > _pendingRejectedUntil then clearPendingSubmission() return end
local rejected = lower:find("invalid code", 1, true)
or lower:find("code is invalid", 1, true)
or lower:find("expired", 1, true)
or lower:find("already redeemed", 1, true)
or lower:find("already used", 1, true)
or lower:find("doesn't exist", 1, true)
or lower:find("does not exist", 1, true)
or lower:find("not found", 1, true)
or lower:find("rejected", 1, true)
if not rejected then return end
local previousText = _pendingRejectedText
local previousBox = _pendingRejectedBox
local restored = restoreRejectedText(previousBox, previousText)
clearPendingSubmission()
if restored then
setStatus("Invalid - repasted: " .. previousText, COLORS.Text)
flashCode(previousText, COLORS.Red)
end
end
function appendToBox(text)
if not text or text == "" then return end
if text == "I don't know" and _capturedParts[#_capturedParts] == "I don't know" then return end
if _lastWatchedBox and not isVisibleChain(_lastWatchedBox) then
resetPasteCounter()
clearBoxWatchers()
end
local box = aceCodeBox()
local cleanText = text:gsub("%s+", "")
_capturedParts[#_capturedParts + 1] = cleanText
local combinedCode = table.concat(_capturedParts)
local capturedCount = #_capturedParts
if box then
_lastBox = box
watchBoxForBlankReset(box)
local boxWasFocused = UserInputService and UserInputService:GetFocusedTextBox() == box or false
box.Text = combinedCode
if boxWasFocused then
pcall(function()
local caretEnd = #combinedCode + 1
box.CursorPosition = caretEnd
box.SelectionStart = caretEnd
end)
end
else
setStatus("Captured; opening & searching UI...", COLORS.Text)
end
local submitTarget = _submitAfter == 0 and "Every" or tostring(_submitAfter)
setStatus("Pasted " .. tostring(capturedCount) .. "/" .. submitTarget, COLORS.Green)
flashCode(combinedCode, COLORS.Green)
if _submitAfter == 0 or capturedCount >= _submitAfter then
if _submitAfter ~= 0 then
_capturedParts = {}
end
if _autoAccept then
rememberPendingSubmission(box, combinedCode, true)
local ok, statusMsg = typeAndSubmitCode(combinedCode)
if ok then
setStatus("Redeemed: " .. combinedCode, COLORS.Green)
else
local restored = restoreRejectedText(box, combinedCode)
clearPendingSubmission()
if restored then
setStatus("Invalid - repasted: " .. combinedCode, COLORS.Text)
flashCode(combinedCode, COLORS.Red)
else
setStatus("Failed: " .. tostring(statusMsg), COLORS.Red)
end
end
end
end
end
local function watchRedemptionFeedbackObject(obj)
if not (obj:IsA("TextLabel") or obj:IsA("TextButton")) then return end
handleRedemptionFeedback(obj.Text or "", obj)
obj:GetPropertyChangedSignal("Text"):Connect(function()
handleRedemptionFeedback(obj.Text or "", obj)
end)
end
for _, obj in ipairs(pg:GetDescendants()) do watchRedemptionFeedbackObject(obj) end
pg.DescendantAdded:Connect(function(obj)
task.wait(0.04)
watchRedemptionFeedbackObject(obj)
end)
-- Riddle Solver uses the same Ace notification/message source as Code Typer.
-- It is handled inside aceNotifyRemote.OnClientEvent above.
-- Riddle Solver also watches visible game question labels because some Sammy
-- questions are rendered directly on-screen and do not pass through the Ace
-- notification remote used by Code Typer.
local riddleVisibleWatched = setmetatable({}, {__mode = "k"})
local function watchVisibleRiddleLabel(obj)
if riddleVisibleWatched[obj] then return end
if not (obj:IsA("TextLabel") or obj:IsA("TextButton")) then return end
if isOurGui(obj) then return end
riddleVisibleWatched[obj] = true
local last = ""
local function check()
if not _riddleEnabled or not obj.Parent or isOurGui(obj) then return end
local value = tostring(obj.Text or ""):gsub("<[^>]->", ""):match("^%s*(.-)%s*$") or ""
if value == "" or value == last then return end
if not isVisibleChain(obj) then return end
last = value
if looksLikeRiddleQuestion(value) then
task.spawn(function()
pcall(solveRiddleQuestion, value)
end)
end
end
check()
obj:GetPropertyChangedSignal("Text"):Connect(check)
obj:GetPropertyChangedSignal("Visible"):Connect(check)
end
for _, obj in ipairs(pg:GetDescendants()) do
pcall(watchVisibleRiddleLabel, obj)
end
pg.DescendantAdded:Connect(function(obj)
task.wait()
pcall(watchVisibleRiddleLabel, obj)
end)
task.wait(0.05)
if _showBrainrotSpawned then
startBrainrotSpawnWatcher()
end
task.wait(0.05)
end
-- Show the Big C loader first, then run the redeemer.
pcall(startCocoXLoadingScreen)
task.wait(0.35) -- let it render before startRedeemer swaps in the warning
startRedeemer()