Features:
- Auto Click – Automatically clicks for maximum efficiency.
- Auto Rebirth – Instantly performs rebirths when requirements are met.
- Auto Buy Zone – Automatically purchases new zones as soon as you can afford them.
- Free Codes – Use “sorry4shutdown2“, “bettertrading“, “firstupdate“, “thanksfor1kactive“
Tip – Always use a high UNC and sUNC executor and consider testing scripts on an alt account first. If you’re ready to go, just copy the code below and paste it into your executor to get started safely.
Phonk Clicker! Script:
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
-- Root GUI
local gui = Instance.new("ScreenGui")
gui.Name = "iOS_CustomMenu"
gui.ResetOnSpawn = false
gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
-- Utility: create BindableEvent + wrapper
local function makeEvent()
local b = Instance.new("BindableEvent")
return {
Fire = function(_, ...) b:Fire(...)
end,
Connect = function(_, fn) return b.Event:Connect(fn) end
}
end
-- Storage for controls by label
local Controls = {
toggles = {},
sliders = {},
checkboxes = {},
colorpickers = {}
}
-- Public API for user scripts
_G.MenuAPI = {
OnToggle = function(label, fn)
local c = Controls.toggles[label]
if c then c.Changed:Connect(fn) end
end,
OnSlider = function(label, fn)
local c = Controls.sliders[label]
if c then c.Changed:Connect(fn) end
end,
OnCheckbox = function(label, fn)
local c = Controls.checkboxes[label]
if c then c.Changed:Connect(fn) end
end,
OnColor = function(label, fn)
local c = Controls.colorpickers[label]
if c then c.Changed:Connect(fn) end
end,
-- direct access
GetControl = function(typeName, label)
if typeName == "toggle" then return Controls.toggles[label] end
if typeName == "slider" then return Controls.sliders[label] end
if typeName == "checkbox" then return Controls.checkboxes[label] end
if typeName == "color" then return Controls.colorpickers[label] end
return nil
end
}
-- Basic sizes/colors (easy to tweak)
local UI = {
windowW = 380, windowH = 520,
bg = Color3.fromRGB(245,245,247),
card = Color3.fromRGB(255,255,255),
textPrimary = Color3.fromRGB(20,20,20),
accent = Color3.fromRGB(0,122,255),
toggleOn = Color3.fromRGB(48,209,88),
toggleOff = Color3.fromRGB(229,229,234)
}
-- ---------- Visual root & reopen button ----------
local reopenBtn = Instance.new("ImageButton")
reopenBtn.Name = "Reopen"
reopenBtn.Size = UDim2.new(0, 56, 0, 56)
reopenBtn.AnchorPoint = Vector2.new(1,1)
reopenBtn.Position = UDim2.new(1, -28, 1, -28)
reopenBtn.BackgroundColor3 = Color3.fromRGB(255,255,255)
reopenBtn.BackgroundTransparency = 0.06
reopenBtn.Image = "rbxassetid://3926305904" -- user icon (kept)
reopenBtn.ScaleType = Enum.ScaleType.Fit
reopenBtn.AutoButtonColor = true
reopenBtn.Visible = false
reopenBtn.Parent = gui
Instance.new("UICorner", reopenBtn).CornerRadius = UDim.new(1,0)
local reopenShadow = Instance.new("ImageLabel", reopenBtn)
reopenShadow.Size = UDim2.new(1,20,1,20); reopenShadow.Position = UDim2.new(0,-10,0,-10)
reopenShadow.BackgroundTransparency = 1; reopenShadow.Image = "rbxassetid://5028857084"
reopenShadow.ImageTransparency = 0.5; reopenShadow.ScaleType = Enum.ScaleType.Slice
reopenShadow.SliceCenter = Rect.new(24,24,276,276)
-- Main window
local main = Instance.new("Frame")
main.Name = "Window"
main.Size = UDim2.new(0, UI.windowW, 0, UI.windowH)
main.Position = UDim2.new(0.5, -UI.windowW/2, 0.5, -UI.windowH/2)
main.BackgroundColor3 = UI.bg
main.BorderSizePixel = 0
main.Parent = gui
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 16)
local mainShadow = Instance.new("ImageLabel", main)
mainShadow.Size = UDim2.new(1,48,1,48); mainShadow.Position = UDim2.new(0,-24,0,-24)
mainShadow.BackgroundTransparency = 1; mainShadow.Image = "rbxassetid://5028857084"
mainShadow.ImageTransparency = 0.45; mainShadow.ScaleType = Enum.ScaleType.Slice
mainShadow.SliceCenter = Rect.new(24,24,276,276)
-- Title bar
local titleBar = Instance.new("Frame", main)
titleBar.Size = UDim2.new(1,0,0,56); titleBar.BackgroundTransparency = 1
local titleTxt = Instance.new("TextLabel", titleBar)
titleTxt.Size = UDim2.new(1,-120,1,0); titleTxt.Position = UDim2.new(0,16,0,0)
titleTxt.BackgroundTransparency = 1; titleTxt.Font = Enum.Font.GothamBold; titleTxt.TextSize = 20
titleTxt.TextXAlignment = Enum.TextXAlignment.Left; titleTxt.TextColor3 = UI.textPrimary; titleTxt.Text = "DinasHub"
local btnClose = Instance.new("ImageButton", titleBar)
btnClose.Size = UDim2.new(0,44,0,44); btnClose.Position = UDim2.new(1,-72,0.5,-22)
btnClose.BackgroundColor3 = Color3.fromRGB(255,59,48); btnClose.Image = ""
btnClose.AutoButtonColor = false
local btnCloseLbl = Instance.new("TextLabel", btnClose); btnCloseLbl.Size = UDim2.new(1,0,1,0); btnCloseLbl.BackgroundTransparency = 1
btnCloseLbl.Text = "✕"; btnCloseLbl.Font = Enum.Font.GothamBold; btnCloseLbl.TextSize = 20; btnCloseLbl.TextColor3 = Color3.fromRGB(255,255,255)
Instance.new("UICorner", btnClose).CornerRadius = UDim.new(1,0)
-- Scroll area
local scroll = Instance.new("ScrollingFrame", main)
scroll.Name = "Scroll"; scroll.Size = UDim2.new(1, -32, 1, -96); scroll.Position = UDim2.new(0,16,0,72)
scroll.BackgroundTransparency = 1; scroll.BorderSizePixel = 0; scroll.ScrollBarThickness = 8
scroll.CanvasSize = UDim2.new(0,0,0,0)
local list = Instance.new("UIListLayout", scroll); list.Padding = UDim.new(0,12)
list.SortOrder = Enum.SortOrder.LayoutOrder
list:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
scroll.CanvasSize = UDim2.new(0,0,0, list.AbsoluteContentSize.Y + 12)
end)
-- Dragging logic
local dragging, dragInput, dragStart, startPos = false, nil, nil, nil
local function updateDrag(input)
local delta = input.Position - dragStart
main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = main.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
titleBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end)
UserInputService.InputChanged:Connect(function(input) if dragging and input == dragInput then updateDrag(input) end end)
-- Close/reopen animations
btnClose.MouseButton1Click:Connect(function()
TweenService:Create(main, TweenInfo.new(0.36, Enum.EasingStyle.Back, Enum.EasingDirection.In), {Size = UDim2.new(0,0,0,0)}):Play()
delay(0.36, function()
main.Visible = false
reopenBtn.Visible = true
reopenBtn.Size = UDim2.new(0,0,0,0)
TweenService:Create(reopenBtn, TweenInfo.new(0.18, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0,56,0,56)}):Play()
end)
end)
reopenBtn.MouseButton1Click:Connect(function()
reopenBtn.Visible = false
main.Size = UDim2.new(0,0,0,0); main.Visible = true
TweenService:Create(main, TweenInfo.new(0.48, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, UI.windowW, 0, UI.windowH)}):Play()
end)
-- initial appear
main.Size = UDim2.new(0,0,0,0)
TweenService:Create(main, TweenInfo.new(0.48, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, UI.windowW, 0, UI.windowH)}):Play()
-- Helper: rounded card
local function mkCard(parent, h)
local f = Instance.new("Frame", parent)
f.Size = UDim2.new(1, -12, 0, h or 56)
f.BackgroundColor3 = UI.card
f.BorderSizePixel = 0
local c = Instance.new("UICorner", f); c.CornerRadius = UDim.new(0,10)
return f
end
-- Helper: thin divider
local function mkDivider(parent)
local l = Instance.new("Frame", parent)
l.Size = UDim2.new(1, -32, 0, 1); l.Position = UDim2.new(0,16,1,-1)
l.AnchorPoint = Vector2.new(0,1); l.BackgroundColor3 = Color3.fromRGB(230,230,235); l.BorderSizePixel = 0
return l
end
-- ============================
-- Controls factories (return control object with .Get/.Set and .Changed:Connect(callback))
-- ============================
-- CHECKBOX
local function createCheckbox(parent, label, initial)
initial = initial or false
local card = mkCard(parent, 56)
card.LayoutOrder = 0
local lbl = Instance.new("TextLabel", card)
lbl.Size = UDim2.new(1, -120, 1, 0); lbl.Position = UDim2.new(0,16,0,0)
lbl.BackgroundTransparency = 1; lbl.Font = Enum.Font.Gotham; lbl.TextSize = 16
lbl.Text = label; lbl.TextColor3 = UI.textPrimary; lbl.TextXAlignment = Enum.TextXAlignment.Left
local btn = Instance.new("ImageButton", card)
btn.Size = UDim2.new(0,40,0,40); btn.Position = UDim2.new(1,-64,0.5,-20)
btn.AutoButtonColor = false; btn.Image = ""; btn.BackgroundColor3 = initial and UI.toggleOn or Color3.fromRGB(242,242,246)
local corner = Instance.new("UICorner", btn); corner.CornerRadius = UDim.new(0,8)
local mark = Instance.new("TextLabel", btn)
mark.Size = UDim2.new(1,0,1,0); mark.BackgroundTransparency = 1
mark.Font = Enum.Font.GothamBold; mark.TextSize = 18; mark.TextColor3 = Color3.fromRGB(255,255,255)
mark.Text = initial and "✔" or ""; mark.TextTransparency = initial and 0 or 1
local state = initial
local event = makeEvent()
local function set(v)
state = v
if state then
TweenService:Create(btn, TweenInfo.new(0.16), {BackgroundColor3 = UI.toggleOn}):Play()
TweenService:Create(mark, TweenInfo.new(0.16), {TextTransparency = 0}):Play()
else
TweenService:Create(btn, TweenInfo.new(0.16), {BackgroundColor3 = Color3.fromRGB(242,242,246)}):Play()
TweenService:Create(mark, TweenInfo.new(0.16), {TextTransparency = 1}):Play()
end
event:Fire(state)
end
btn.MouseButton1Click:Connect(function()
set(not state)
btn:TweenSize(btn.Size + UDim2.new(0,4,0,4), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.06, true, function()
btn:TweenSize(btn.Size - UDim2.new(0,4,0,4), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.06, true)
end)
end)
local control = {
Get = function() return state end,
Set = set,
Changed = { Connect = function(_, fn) return event:Connect(fn) end },
Instance = card
}
Controls.checkboxes[label] = control
return control
end
-- TOGGLE
local function createToggle(parent, label, initial)
initial = initial or false
local card = mkCard(parent, 56)
card.LayoutOrder = 0
local lbl = Instance.new("TextLabel", card)
lbl.Size = UDim2.new(1, -120, 1, 0); lbl.Position = UDim2.new(0,16,0,0)
lbl.BackgroundTransparency = 1; lbl.Font = Enum.Font.Gotham; lbl.TextSize = 16
lbl.Text = label; lbl.TextColor3 = UI.textPrimary; lbl.TextXAlignment = Enum.TextXAlignment.Left
local track = Instance.new("Frame", card)
track.Size = UDim2.new(0,58,0,30); track.Position = UDim2.new(1,-78,0.5,-15)
track.BackgroundColor3 = initial and UI.toggleOn or UI.toggleOff; track.BorderSizePixel = 0
local trC = Instance.new("UICorner", track); trC.CornerRadius = UDim.new(1,0)
local knob = Instance.new("Frame", track)
knob.Size = UDim2.new(0,26,0,26); knob.Position = initial and UDim2.new(1,-30,0.5,-13) or UDim2.new(0,4,0.5,-13)
knob.BackgroundColor3 = Color3.fromRGB(255,255,255); local knC = Instance.new("UICorner", knob); knC.CornerRadius = UDim.new(1,0)
local state = initial
local event = makeEvent()
local function set(s, instant)
state = s
if instant then
knob.Position = state and UDim2.new(1,-30,0.5,-13) or UDim2.new(0,4,0.5,-13)
track.BackgroundColor3 = state and UI.toggleOn or UI.toggleOff
else
TweenService:Create(knob, TweenInfo.new(0.18), {Position = state and UDim2.new(1,-30,0.5,-13) or UDim2.new(0,4,0.5,-13)}):Play()
TweenService:Create(track, TweenInfo.new(0.18), {BackgroundColor3 = state and UI.toggleOn or UI.toggleOff}):Play()
end
-- small pop
knob:TweenSize(UDim2.new(0,28,0,28), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.06, true, function()
knob:TweenSize(UDim2.new(0,26,0,26), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.06, true)
end)
event:Fire(state)
end
track.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
set(not state)
end
end)
local control = {
Get = function() return state end,
Set = set,
Changed = { Connect = function(_, fn) return event:Connect(fn) end },
Instance = card
}
Controls.toggles[label] = control
return control
end
-- SLIDER (with numeric display)
local function createSlider(parent, label, minVal, maxVal, defaultVal)
minVal = minVal or 0; maxVal = maxVal or 100; defaultVal = defaultVal or minVal
local c = Instance.new("Frame", parent)
c.Size = UDim2.new(1, -12, 0, 72); c.BackgroundTransparency = 1
c.LayoutOrder = 0
local lbl = Instance.new("TextLabel", c)
lbl.Size = UDim2.new(1, -96, 0, 20); lbl.Position = UDim2.new(0,16,0,6)
lbl.BackgroundTransparency = 1; lbl.Font = Enum.Font.Gotham; lbl.TextSize = 15
lbl.TextXAlignment = Enum.TextXAlignment.Left; lbl.TextColor3 = UI.textPrimary
lbl.Text = label .. ": " .. tostring(defaultVal)
local valLabel = Instance.new("TextLabel", c)
valLabel.Size = UDim2.new(0,64,0,20); valLabel.Position = UDim2.new(1, -80, 0, 6)
valLabel.BackgroundTransparency = 1; valLabel.Font = Enum.Font.GothamBold; valLabel.TextSize = 14
valLabel.TextColor3 = Color3.fromRGB(80,80,90); valLabel.Text = tostring(defaultVal)
local bar = Instance.new("Frame", c)
bar.Size = UDim2.new(1, -96, 0, 8); bar.Position = UDim2.new(0,16,0,36)
bar.BackgroundColor3 = Color3.fromRGB(220,220,220); bar.BorderSizePixel = 0
Instance.new("UICorner", bar).CornerRadius = UDim.new(0,4)
local t = (defaultVal - minVal) / (maxVal - minVal)
local fill = Instance.new("Frame", bar); fill.Size = UDim2.new(t,0,1,0); fill.BackgroundColor3 = UI.accent
Instance.new("UICorner", fill).CornerRadius = UDim.new(0,4)
local knob = Instance.new("Frame", bar)
knob.Size = UDim2.new(0,18,0,18); knob.Position = UDim2.new(t, -9, 0.5, -9)
knob.BackgroundColor3 = Color3.fromRGB(255,255,255); knob.BorderSizePixel = 0
Instance.new("UICorner", knob).CornerRadius = UDim.new(1,0)
local knobShadow = Instance.new("ImageLabel", knob)
knobShadow.Size = UDim2.new(1,6,1,6); knobShadow.Position = UDim2.new(0,-3,0,-3)
knobShadow.BackgroundTransparency = 1; knobShadow.Image = "rbxassetid://5028857084"; knobShadow.ImageTransparency = 0.3
knobShadow.ScaleType = Enum.ScaleType.Slice; knobShadow.SliceCenter = Rect.new(24,24,276,276)
local dragging = false
local value = defaultVal
local event = makeEvent()
local function updateFromX(x)
local bx = bar.AbsolutePosition.X; local bw = bar.AbsoluteSize.X
local p = math.clamp((x - bx) / bw, 0, 1)
fill.Size = UDim2.new(p,0,1,0); knob.Position = UDim2.new(p, -9, 0.5, -9)
value = math.floor(minVal + (maxVal - minVal) * p + 0.5)
lbl.Text = label .. ": " .. tostring(value)
valLabel.Text = tostring(value)
event:Fire(value)
end
knob.InputBegan:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then dragging = true end end)
knob.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then dragging = false end end)
bar.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
updateFromX(inp.Position.X); dragging = true
inp.Changed:Connect(function() if inp.UserInputState == Enum.UserInputState.End then dragging = false end end)
end
end)
UserInputService.InputChanged:Connect(function(inp)
if dragging and (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) then
updateFromX(inp.Position.X)
end
end)
local control = {
Get = function() return value end,
Set = function(v)
local p = math.clamp((v - minVal)/(maxVal - minVal), 0, 1)
fill.Size = UDim2.new(p,0,1,0); knob.Position = UDim2.new(p, -9, 0.5, -9)
value = math.floor(v + 0.5); lbl.Text = label .. ": " .. tostring(value); valLabel.Text = tostring(value)
event:Fire(value)
end,
Changed = { Connect = function(_, fn) return event:Connect(fn) end },
Instance = c
}
Controls.sliders[label] = control
return control
end
-- COLOR PICKER (palette + brightness slider + preview + HEX)
local function createColorPicker(parent, label, defaultColor)
defaultColor = defaultColor or Color3.fromRGB(0,122,255)
local card = mkCard(parent, 160)
card.LayoutOrder = 0
local title = Instance.new("TextLabel", card)
title.Size = UDim2.new(1, -16, 0, 20); title.Position = UDim2.new(0,8,0,6)
title.BackgroundTransparency = 1; title.Font = Enum.Font.GothamBold; title.TextSize = 14
title.Text = label; title.TextColor3 = UI.textPrimary; title.TextXAlignment = Enum.TextXAlignment.Left
local preview = Instance.new("Frame", card)
preview.Size = UDim2.new(0,48,0,48); preview.Position = UDim2.new(1, -64, 0, 8)
preview.BackgroundColor3 = defaultColor; Instance.new("UICorner", preview).CornerRadius = UDim.new(0,8)
-- palette image (uses gradient image asset)
local palette = Instance.new("ImageButton", card)
palette.Size = UDim2.new(0, 160, 0, 80); palette.Position = UDim2.new(0,8,0,36)
palette.Image = "rbxassetid://6020299385" -- rainbow gradient image id
palette.AutoButtonColor = false
Instance.new("UICorner", palette).CornerRadius = UDim.new(0,6)
-- brightness bar
local brightBar = Instance.new("Frame", card)
brightBar.Size = UDim2.new(0, 160, 0, 10); brightBar.Position = UDim2.new(0,8,0,126)
brightBar.BackgroundColor3 = Color3.fromRGB(200,200,200); Instance.new("UICorner", brightBar).CornerRadius = UDim.new(0,5)
local brightFill = Instance.new("Frame", brightBar); brightFill.Size = UDim2.new(1,0,1,0); brightFill.BackgroundColor3 = Color3.fromRGB(255,255,255)
Instance.new("UICorner", brightFill).CornerRadius = UDim.new(0,5)
local hue = defaultColor
local brightness = 1
local draggingHue, draggingBright = false, false
local event = makeEvent()
local function updatePreview()
preview.BackgroundColor3 = Color3.fromRGB(
math.clamp(math.floor(hue.R * 255 * brightness + 0.5),0,255),
math.clamp(math.floor(hue.G * 255 * brightness + 0.5),0,255),
math.clamp(math.floor(hue.B * 255 * brightness + 0.5),0,255)
)
event:Fire(preview.BackgroundColor3)
end
palette.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
draggingHue = true
local relX = math.clamp((inp.Position.X - palette.AbsolutePosition.X) / palette.AbsoluteSize.X, 0, 1)
local relY = math.clamp((inp.Position.Y - palette.AbsolutePosition.Y) / palette.AbsoluteSize.Y, 0, 1)
hue = Color3.fromHSV(relX, 1, 1 - relY)
updatePreview()
end
end)
palette.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then draggingHue = false end end)
brightBar.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
draggingBright = true
local relX = math.clamp((inp.Position.X - brightBar.AbsolutePosition.X) / brightBar.AbsoluteSize.X, 0, 1)
brightness = relX
brightFill.Size = UDim2.new(relX,0,1,0)
updatePreview()
end
end)
brightBar.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then draggingBright = false end end)
UserInputService.InputChanged:Connect(function(inp)
if draggingHue and (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) then
local relX = math.clamp((inp.Position.X - palette.AbsolutePosition.X) / palette.AbsoluteSize.X, 0, 1)
local relY = math.clamp((inp.Position.Y - palette.AbsolutePosition.Y) / palette.AbsoluteSize.Y, 0, 1)
hue = Color3.fromHSV(relX, 1, 1 - relY)
updatePreview()
elseif draggingBright and (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) then
local relX = math.clamp((inp.Position.X - brightBar.AbsolutePosition.X) / brightBar.AbsoluteSize.X, 0, 1)
brightness = relX
brightFill.Size = UDim2.new(relX,0,1,0)
updatePreview()
end
end)
local control = {
Get = function() return preview.BackgroundColor3 end,
Set = function(c)
hue = c; brightness = 1; brightFill.Size = UDim2.new(1,0,1,0); updatePreview()
end,
Changed = { Connect = function(_, fn) return event:Connect(fn) end },
Instance = card
}
Controls.colorpickers[label] = control
return control
end
-- ACCORDION (header + collapsible content)
local function makeAccordion(parent, title, expandedH)
expandedH = expandedH or 140
local headerCard = mkCard(parent, 52); headerCard.LayoutOrder = 0
local hdr = Instance.new("TextButton", headerCard)
hdr.Size = UDim2.new(1,0,1,0)
hdr.BackgroundTransparency = 1
hdr.Font = Enum.Font.GothamBold
hdr.TextSize = 16
hdr.TextColor3 = UI.textPrimary
hdr.Text = title
local arrow = Instance.new("TextLabel", headerCard)
arrow.Size = UDim2.new(0,20,1,0)
arrow.Position = UDim2.new(1,-36,0,0)
arrow.BackgroundTransparency = 1
arrow.Text = "▼"
arrow.Font = Enum.Font.Gotham
arrow.TextColor3 = Color3.fromRGB(140,140,150)
local content = Instance.new("ScrollingFrame", parent)
content.Size = UDim2.new(1,0,0,0)
content.BackgroundTransparency = 1
content.ClipsDescendants = true
content.LayoutOrder = 0
content.ScrollBarThickness = 4
content.CanvasSize = UDim2.new(0,0,0,0)
local listLocal = Instance.new("UIListLayout", content)
listLocal.Padding = UDim.new(0,8)
listLocal.SortOrder = Enum.SortOrder.LayoutOrder
local expanded = false
hdr.MouseButton1Click:Connect(function()
expanded = not expanded
if expanded then
TweenService:Create(content, TweenInfo.new(0.36, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
{Size = UDim2.new(1,0,0, expandedH)}):Play()
arrow.Text = "▲"
else
TweenService:Create(content, TweenInfo.new(0.24, Enum.EasingStyle.Quad, Enum.EasingDirection.In),
{Size = UDim2.new(1,0,0, 0)}):Play()
arrow.Text = "▼"
end
end)
listLocal:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
content.CanvasSize = UDim2.new(0,0,0,listLocal.AbsoluteContentSize.Y + 8)
if expanded then
local targetHeight = math.min(listLocal.AbsoluteContentSize.Y + 8, expandedH)
content.Size = UDim2.new(1,0,0, targetHeight)
end
end)
return headerCard, content
end
-- ============================
-- Build a sample menu (you can edit/extend)
-- ============================
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local gHdr, gContent = makeAccordion(scroll, "General", 160)
local function attachCallback(control, callback)
if not control then return end
if type(control) == "table" and control.Changed and type(control.Changed.Connect) == "function" then
control.Changed:Connect(callback)
return true
end
if type(control) == "table" and type(control.Get) == "function" then
local prev = control.Get()
task.spawn(function()
while true do
task.wait(0.12)
local ok, cur = pcall(control.Get)
if ok and cur ~= prev then
prev = cur
callback(cur)
end
end
end)
return true
end
local inst = nil
if typeof(control) == "Instance" then inst = control end
if type(control) == "table" and control.Instance and typeof(control.Instance) == "Instance" then inst = control.Instance end
if inst then
local function findButton(root)
for _,d in ipairs(root:GetDescendants()) do
if d:IsA("TextButton") or d:IsA("ImageButton") then
return d
end
end
return nil
end
local btn = findButton(inst)
if btn then
btn.MouseButton1Click:Connect(function()
task.defer(function()
if type(control) == "table" and type(control.Get) == "function" then
local ok, v = pcall(control.Get)
if ok then callback(v); return end
end
for _,d in ipairs(inst:GetDescendants()) do
if d:IsA("TextLabel") and (d.Text == "✔" or d.Text == "✓") then
callback(d.Text ~= "")
return
end
end
callback(nil)
end)
end)
return true
end
end
return false
end
-- === Shadows (GlobalShadows) ===
local cbSh = createCheckbox(gContent, "Enable Shadows", true)
local function onSh(state)
local ok, err = pcall(function()
local lighting = game:GetService("Lighting")
lighting.GlobalShadows = state and true or false
end)
if not ok then warn("Enable Shadows handler error:", err) end
end
attachCallback(cbSh, onSh)
-- === FPS counter ===
local cbFPS = createCheckbox(gContent, "Show FPS", false)
local fpsGui, fpsLabel, fpsConn
local function createFPSGui()
if fpsGui and fpsGui.Parent then return end
fpsGui = Instance.new("ScreenGui")
fpsGui.Name = "FPSGui"
fpsGui.ResetOnSpawn = false
fpsGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
fpsLabel = Instance.new("TextLabel", fpsGui)
fpsLabel.Name = "FPSLabel"
fpsLabel.Size = UDim2.new(0, 100, 0, 28)
fpsLabel.Position = UDim2.new(0, 12, 0, 12)
fpsLabel.BackgroundTransparency = 0.4
fpsLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
fpsLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
fpsLabel.Font = Enum.Font.GothamBold
fpsLabel.TextSize = 14
fpsLabel.Text = "FPS: 0"
end
local function destroyFPSGui()
if fpsConn then fpsConn:Disconnect(); fpsConn = nil end
if fpsGui then fpsGui:Destroy(); fpsGui = nil end
end
local function onFPS(state)
if state then
createFPSGui()
if fpsConn then fpsConn:Disconnect(); fpsConn = nil end
local frames = 0
local last = tick()
fpsConn = RunService.RenderStepped:Connect(function()
frames = frames + 1
local now = tick()
if now - last >= 1 then
if fpsLabel and fpsLabel.Parent then
fpsLabel.Text = "FPS: " .. tostring(frames)
end
frames = 0
last = now
end
end)
else
destroyFPSGui()
end
end
attachCallback(cbFPS, onFPS)
-- === Compact UI (через UIScale, безопасно) ===
local tCompact = createToggle(gContent, "Compact UI", true)
local function ensureUIScale(rootGui)
local us = rootGui:FindFirstChildWhichIsA("UIScale")
if not us then
us = Instance.new("UIScale")
us.Name = "MenuUIScale"
us.Parent = rootGui
end
return us
end
local rootGui = gui
local us = ensureUIScale(rootGui)
local function onCompact(state)
local target = state and 0.88 or 1
local ok, err = pcall(function()
local tween = TweenService:Create(us, TweenInfo.new(0.28, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Scale = target})
tween:Play()
end)
if not ok then warn("Compact UI tween error:", err) end
end
attachCallback(tCompact, onCompact)
pcall(function()
if type(cbSh) == "table" and cbSh.Get and type(cbSh.Get) == "function" then onSh(cbSh.Get()) end
if type(cbFPS) == "table" and cbFPS.Get and type(cbFPS.Get) == "function" then onFPS(cbFPS.Get()) end
if type(tCompact) == "table" and tCompact.Get and type(tCompact.Get) == "function" then onCompact(tCompact.Get()) end
end)
-- Gameplay
local pHdr, pContent = makeAccordion(scroll, "Gameplay", 140)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local Clicker = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("Clicker")
local Rebirth = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("Rebirth")
local Area = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("Area")
local autoClickConn, autoRebirthConn
-- ===== AutoClick =====
local cbAutoClick = createCheckbox(pContent, "AutoClick", false)
cbAutoClick.Changed:Connect(function(state)
if state then
if autoClickConn then return end
autoClickConn = RunService.Heartbeat:Connect(function()
pcall(function()
Clicker:FireServer()
end)
end)
else
if autoClickConn then
autoClickConn:Disconnect()
autoClickConn = nil
end
end
end)
-- ===== AutoRebirth =====
local cbAutoRebirth = createCheckbox(pContent, "AutoRebirth", false)
cbAutoRebirth.Changed:Connect(function(state)
if state then
if autoRebirthConn then return end
autoRebirthConn = RunService.Heartbeat:Connect(function()
pcall(function()
Rebirth:FireServer(1)
end)
end)
else
if autoRebirthConn then
autoRebirthConn:Disconnect()
autoRebirthConn = nil
end
end
end)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local function findRemoteByName(name, timeout)
timeout = timeout or 5
local start = tick()
local remotesFolder = ReplicatedStorage:FindFirstChild("Remotes")
while tick() - start < timeout do
if remotesFolder then
local r = remotesFolder:FindFirstChild(name)
if r then return r end
end
local r2 = ReplicatedStorage:FindFirstChild(name)
if r2 then return r2 end
task.wait(0.1)
end
return nil
end
local AreaRemote = findRemoteByName("Area", 5)
if not AreaRemote then
warn("Unlock Arena: remote 'Area' not found in ReplicatedStorage.Remotes or ReplicatedStorage.")
local cbUnlock = createCheckbox(pContent, "Unlock Arena (Remote not found)", false)
cbUnlock.Set(false)
return
end
local cbUnlock = createCheckbox(pContent, "Unlock Arena", false)
local unlockLoopConn = nil
local unlocking = false
local function doUnlockOnce()
local success, err = pcall(function()
AreaRemote:FireServer()
end)
if not success then
end
end
local function startUnlockLoop(interval)
if unlockLoopConn then return end
local last = 0
unlockLoopConn = RunService.Heartbeat:Connect(function(dt)
local now = tick()
if now - last < (interval or 0.5) then return end
last = now
pcall(function() AreaRemote:FireServer() end)
end)
end
local function stopUnlockLoop()
if unlockLoopConn then
unlockLoopConn:Disconnect()
unlockLoopConn = nil
end
end
cbUnlock.Changed:Connect(function(state)
if state then
doUnlockOnce()
else
stopUnlockLoop()
end
end)
local function cleanup()
if autoClickConnection then
autoClickConnection:Disconnect()
autoClickConnection = nil
end
end
local Players = game:GetService("Players")
local plr = Players.LocalPlayer
plr.AncestryChanged:Connect(function()
if not plr:IsDescendantOf(game) then cleanup() end
end)
-- Audio/Visual
--local avHdr, avContent = makeAccordion(scroll, "Audio & Visual", 180)
-- Advanced
--local aHdr, aContent = makeAccordion(scroll, "Advanced", 120)
-- finalize layout
RunService.Heartbeat:Wait()
scroll.CanvasSize = UDim2.new(0,0,0, list.AbsoluteContentSize.Y + 12)
-- Color picker example: apply accent color to title
if colPick and colPick.Changed then
colPick.Changed:Connect(function(c)
titleTxt.TextColor3 = c
end)
end
-- safety cleanup
LocalPlayer.AncestryChanged:Connect(function()
if not LocalPlayer:IsDescendantOf(game) then
pcall(function() gui:Destroy() end)
end
end)
return _G.MenuAPI
How to use these scripts?
Follow these quick steps to get the script running in Phonk Clicker! game.
- Download a Script Executor – I only recommend Hydrogen, AWP.GG, Delta, Fluxus, or Codex.
- Attach the Executor – Open the executor and connect it to your Roblox game process.
- Paste the Script – Copy the code above and paste it into the executor.
- Activate Features – Click the Execute button so the script injects and features will activate automatically.
Game Details:
- Name: Phonk Clicker!
- Developer: Definitely Not Brainrot Games
- Maturity: Minimal
- Genre: Simulation
- Subgenre: Incremental Simulator
Check out our roblox scripts hub for more.