
Key RequiredUniversal
![Fe JOHN DOE BROOKHAVEN WITH PROP [FLING , KILL]](https://cdn.kocakz.me/images/a4a9dc53d5071a447621497e6649bc08d7868008c85e0c21ce3e70efcff4ed40.webp)
--[[
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
JOHN DOE ABILITY PROP β MR.XENO (FINAL)
Abilities : LASER / SWING / GRAB / BLEACH
State : idle β summon β ability β retract β hidden
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
]]
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local TweenService = game:GetService("TweenService")
local LP = Players.LocalPlayer
local OWNER_NAME = LP.Name
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- CONFIG
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local CONFIG = {
PROP_PARENT_FOLDER = "WorkspaceCom",
PROP_LIST_FOLDER = "001_TrafficCones",
PROP_PREFIX = "Prop",
MAX_PROPS = 30,
HIDDEN_FAR = 200,
IDLE_ORBIT_RADIUS = 4.2,
IDLE_ORBIT_HEIGHT = 2.2,
LASER_RANGE = 45,
LASER_HEIGHT = 2.2,
SWING_RADIUS = 9,
GRAB_RANGE = 60,
BLEACH_RANGE = 70,
CYCLE_SPEED = 0.55,
TICK_RATE = 0.06,
}
local ABILITY_DEFS = {
LASER = { cooldown = 4.0 },
SWING = { cooldown = 3.5 },
GRAB = { cooldown = 5.0 },
BLEACH = { cooldown = 8.0 },
}
local ABILITY_ORDER = { "LASER", "SWING", "GRAB", "BLEACH" }
local COLOR_PRESETS = {
{ name = "CORRUPTED", palette = {
Color3.fromRGB(255, 60, 60),
Color3.fromRGB(180, 20, 30),
Color3.fromRGB(255, 140, 140),
Color3.fromRGB( 60, 5, 10),
}},
{ name = "BLOOD", palette = {
Color3.fromRGB(180, 10, 15),
Color3.fromRGB(120, 5, 10),
Color3.fromRGB(220, 30, 40),
Color3.fromRGB( 40, 0, 0),
}},
{ name = "PHOENIX", palette = {
Color3.fromRGB(255, 100, 30),
Color3.fromRGB(255, 40, 10),
Color3.fromRGB(255, 200, 100),
Color3.fromRGB( 80, 10, 0),
}},
}
local THEME = {
bg = Color3.fromRGB(12, 8, 10),
panel = Color3.fromRGB(18, 10, 12),
button = Color3.fromRGB(26, 14, 16),
buttonHov = Color3.fromRGB(40, 18, 20),
red = Color3.fromRGB(220, 40, 50),
redBright = Color3.fromRGB(255, 70, 80),
redGlow = Color3.fromRGB(255, 140, 145),
redDark = Color3.fromRGB(90, 15, 20),
text = Color3.fromRGB(240, 225, 225),
textDim = Color3.fromRGB(170, 120, 125),
stroke = Color3.fromRGB(70, 18, 22),
}
local state = {
enabled=false, showIdle=false, adjusting=false, minimized=false,
colorIndex=1, color=Color3.fromRGB(220,40,50), colorPhase=0,
currentAbility=nil,
abilityState = { LASER="idle", SWING="idle", GRAB="idle", BLEACH="idle" },
lastUsed = { LASER=-math.huge, SWING=-math.huge, GRAB=-math.huge, BLEACH=-math.huge },
props={}, currentCFrames={}, originalColors={}, tickAccum=0,
}
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- PROP HELPERS
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function getRoot()
local char = LP.Character
return char and char:FindFirstChild("HumanoidRootPart")
end
local function getPropFolder()
local parent = workspace:FindFirstChild(CONFIG.PROP_PARENT_FOLDER)
return parent and parent:FindFirstChild(CONFIG.PROP_LIST_FOLDER)
end
local function rememberProp(prop)
if not prop then return end
if prop:IsA("BasePart") and not state.originalColors[prop] then
state.originalColors[prop] = prop.Color
end
for _, d in ipairs(prop:GetDescendants()) do
if d:IsA("BasePart") and not state.originalColors[d] then
state.originalColors[d] = d.Color
end
end
end
local function scanProps()
local folder = getPropFolder()
if not folder then return {} end
local target = CONFIG.PROP_PREFIX .. OWNER_NAME
local found = {}
for _, obj in ipairs(folder:GetChildren()) do
if obj.Name == target then table.insert(found, obj) end
end
table.sort(found, function(a,b) return a:GetDebugId() < b:GetDebugId() end)
while #found > CONFIG.MAX_PROPS do table.remove(found) end
for _, p in ipairs(found) do rememberProp(p) end
return found
end
local function invokeProp(prop, cf)
if not prop or not prop.Parent then return end
local r = prop:FindFirstChild("SetCurrentCFrame")
if r and r:IsA("RemoteFunction") then
pcall(function() r:InvokeServer(cf) end)
elseif prop:IsA("BasePart") then
prop.CFrame = cf
end
end
local function pushColor(prop, color)
if not prop or not prop.Parent then return end
local r = prop:FindFirstChild("ChangePropColor")
if r and r:IsA("RemoteFunction") then
local ok = pcall(function() r:InvokeServer(color) end)
if ok then return end
end
if prop:IsA("BasePart") then prop.Color = color end
for _, d in ipairs(prop:GetDescendants()) do
if d:IsA("BasePart") then d.Color = color end
end
end
local function restoreColors()
for part, col in pairs(state.originalColors) do
if part and part.Parent then part.Color = col end
end
table.clear(state.originalColors)
end
local function getHiddenCF(root)
return root.CFrame * CFrame.new(0, -CONFIG.HIDDEN_FAR, 0)
end
local function getIdleOrbit(i, N, root)
local ang = ((i-1)/math.max(N,1))*math.pi*2
local x = math.cos(ang)*CONFIG.IDLE_ORBIT_RADIUS
local z = math.sin(ang)*CONFIG.IDLE_ORBIT_RADIUS
local y = CONFIG.IDLE_ORBIT_HEIGHT + math.sin(ang*2)*0.4
return root.CFrame * CFrame.new(x, y, z)
end
local function currentPalette() return COLOR_PRESETS[state.colorIndex].palette end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- EASING
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function easeOutCubic(t) return 1-(1-t)^3 end
local function easeInOutCubic(t)
if t<0.5 then return 4*t*t*t end
return 1-((-2*t+2)^3)/2
end
local function easeOutQuint(t) return 1-(1-t)^5 end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- TWEEN ALL PROPS
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function tweenPropsTo(targetFn, duration, easeFn)
easeFn = easeFn or easeOutCubic
local root = getRoot(); if not root then return end
local N = #state.props; if N == 0 then return end
local startCFs = table.create(N)
for i = 1, N do
startCFs[i] = state.currentCFrames[i] or getHiddenCF(root)
end
local t0 = os.clock()
while true do
local a = duration <= 0 and 1 or math.clamp((os.clock()-t0)/duration, 0, 1)
local e = easeFn(a)
for i = 1, N do
local prop = state.props[i]
if prop and prop.Parent then
local target = targetFn(i, a, e, root)
if target then
local cf = startCFs[i]:Lerp(target, e)
state.currentCFrames[i] = cf
task.spawn(invokeProp, prop, cf)
end
end
end
if a >= 1 then break end
RunService.Heartbeat:Wait()
end
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- LASER (fix: pakai -Z = forward)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function doLaser()
local N = #state.props; if N == 0 then return end
-- SUMMON: cluster kecil di depan
tweenPropsTo(function(i, a, e, root)
local u = (i-1)/math.max(N-1,1)
local ang = u*math.pi*2
local r = (1-u*0.6)*1.4
local x = math.cos(ang)*r
local y = 1.8 + math.sin(ang)*0.4 + u*0.6
local z = -2.5 - u*0.4 -- FORWARD
return root.CFrame * CFrame.new(x, y, z)
* CFrame.Angles(math.rad(-90), 0, 0)
end, 0.30, easeOutQuint)
-- EXTEND: beam ke DEPAN
tweenPropsTo(function(i, a, e, root)
local u = (i-1)/math.max(N-1,1)
local z = -(3 + u*CONFIG.LASER_RANGE) -- FORWARD (-Z)
return root.CFrame * CFrame.new(0, CONFIG.LASER_HEIGHT, z)
* CFrame.Angles(math.rad(-90), 0, 0)
end, 0.28, easeOutCubic)
-- HOLD + wobble
local tEnd = os.clock() + 0.65
while os.clock() < tEnd do
local root = getRoot()
if root then
for i = 1, N do
local prop = state.props[i]
if prop and prop.Parent then
local u = (i-1)/math.max(N-1,1)
local z = -(3 + u*CONFIG.LASER_RANGE)
local wob = math.sin(os.clock()*34 + i)*0.16*u
local cf = root.CFrame
* CFrame.new(wob, CONFIG.LASER_HEIGHT, z)
* CFrame.Angles(math.rad(-90), 0, 0)
state.currentCFrames[i] = cf
task.spawn(invokeProp, prop, cf)
end
end
end
RunService.Heartbeat:Wait()
end
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- SWING (fix: ada TRAIL di belakang blade)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function doSwing()
local N = #state.props; if N == 0 then return end
local A0, A1 = math.rad(-105), math.rad(105)
-- SUMMON di sisi kanan (posisi awal)
tweenPropsTo(function(i, a, e, root)
local u = (i-1)/math.max(N-1,1)
local ang = A0 - u*math.rad(20)
local r = CONFIG.SWING_RADIUS + u*0.6
return root.CFrame
* CFrame.Angles(0, ang, 0)
* CFrame.new(0, 2.4 + u*0.7, -r)
end, 0.24, easeOutCubic)
-- WINDUP pull lebih ke belakang kanan
tweenPropsTo(function(i, a, e, root)
local u = (i-1)/math.max(N-1,1)
local ang = A0 - u*math.rad(28)
local r = CONFIG.SWING_RADIUS + u*0.6
return root.CFrame
* CFrame.Angles(0, ang, 0)
* CFrame.new(0, 2.1 + u*0.7, -r)
end, 0.22, easeInOutCubic)
task.wait(0.05)
-- SWEEP dengan TRAIL (lag grow dengan progress)
tweenPropsTo(function(i, a, e, root)
local u = (i-1)/math.max(N-1,1)
local sweep = A0 + (A1 - A0) * e
-- trailing: makin tinggi u makin ketinggalan
local lag = u * math.rad(45) * e
local ang = sweep - lag
local r = CONFIG.SWING_RADIUS + (1-u)*1.8
local y = 2.4 + math.sin(e*math.pi)*1.2 + u*0.6
local tilt = math.rad(60) + e*math.rad(30)
return root.CFrame
* CFrame.Angles(0, ang, 0)
* CFrame.new(0, y, -r)
* CFrame.Angles(0, math.rad(90), tilt)
end, 0.32, easeOutQuint)
task.wait(0.10)
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- GRAB (fix: bentuk TANGAN TERBUKA β MENUTUP)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function findGrabTarget()
local root = getRoot(); if not root then return nil end
local myPos, look = root.Position, root.CFrame.LookVector
local best, bestScore = nil, -1
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character then
local hrp = plr.Character:FindFirstChild("HumanoidRootPart")
if hrp then
local diff = hrp.Position - myPos
local dist = diff.Magnitude
if dist > 1 and dist < CONFIG.GRAB_RANGE then
local dot = look:Dot(diff.Unit)
if dot > 0.5 then
local s = dot * (1 - dist/CONFIG.GRAB_RANGE)
if s > bestScore then bestScore = s; best = hrp end
end
end
end
end
end
return best
end
-- palm/fingers builder
local function handPoint(i, N, center, forward, radius)
local up = Vector3.new(0,1,0)
local right = forward:Cross(up)
if right.Magnitude < 0.01 then right = Vector3.new(1,0,0) end
right = right.Unit
local trueUp = right:Cross(forward).Unit
local ang = ((i-1)/N) * math.pi * 2
local off = right*math.cos(ang)*radius + trueUp*math.sin(ang)*radius
return center + off, forward
end
local function doGrab()
local N = #state.props; if N == 0 then return end
local root = getRoot(); if not root then return end
local target = findGrabTarget()
local function getTargetPos()
if target and target.Parent then return target.Position end
local r = getRoot()
return r and (r.Position + r.CFrame.LookVector*15 + Vector3.new(0,1,0)) or root.Position
end
-- SUMMON hand terbuka di depan
tweenPropsTo(function(i, a, e, root)
local fwd = root.CFrame.LookVector
local c = root.Position + fwd*2.5 + Vector3.new(0, 2.2, 0)
local pos, d = handPoint(i, N, c, fwd, 2.0*e)
return CFrame.new(pos, pos + d)
end, 0.28, easeOutCubic)
-- EXTEND hand terbuka ke target
tweenPropsTo(function(i, a, e, root)
local fwd = root.CFrame.LookVector
local tPos = getTargetPos()
local c = (root.Position + fwd*3):Lerp(tPos, e) + Vector3.new(0, 2.2, 0)
local pos, d = handPoint(i, N, c, fwd, 2.0)
return CFrame.new(pos, pos + d)
end, 0.38, easeOutQuint)
-- CLOSE hand (fingers converge)
tweenPropsTo(function(i, a, e, root)
local fwd = root.CFrame.LookVector
local c = getTargetPos() + Vector3.new(0, 2.2, 0)
local radius = 2.0 * (1 - e*0.92)
local pos, d = handPoint(i, N, c, fwd, radius)
return CFrame.new(pos, pos + d)
end, 0.22, easeOutCubic)
-- HOLD grip
task.wait(0.28)
-- RETRACT balik ke player
tweenPropsTo(function(i, a, e, root)
local fwd = root.CFrame.LookVector
local tPos = getTargetPos()
local c = tPos:Lerp(root.Position + fwd*2.5 + Vector3.new(0,2.2,0), e)
local radius = 0.16 + e*1.4
local pos, d = handPoint(i, N, c, fwd, radius)
return CFrame.new(pos, pos + d)
end, 0.32, easeInOutCubic)
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- BLEACH (BARU: muncul dari tanah bawah player sekitar,
-- naik β turun β retarget, 1 prop / orang)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function doBleach()
local N = #state.props; if N == 0 then return end
local root = getRoot(); if not root then return end
-- kumpulin target player + self
local myPos = root.Position
local targets = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character then
local hrp = plr.Character:FindFirstChild("HumanoidRootPart")
if hrp and (hrp.Position - myPos).Magnitude < CONFIG.BLEACH_RANGE then
table.insert(targets, hrp)
end
end
end
table.insert(targets, root) -- self juga kena
local function targetPos(idx)
local t = targets[idx]
if t and t.Parent then return t.Position end
local r = getRoot()
return r and r.Position or myPos
end
local waves = 3
for w = 1, waves do
-- RISE dari tanah
tweenPropsTo(function(i, a, e, root)
local ti = ((i - 1 + w - 1) % #targets) + 1
local tp = targetPos(ti)
local y = -4 + e * 7.5
return CFrame.new(tp + Vector3.new(0, y, 0))
* CFrame.Angles(0, os.clock()*3 + i*0.5, 0)
end, 0.32, easeOutCubic)
task.wait(0.03)
-- SINK balik ke tanah
tweenPropsTo(function(i, a, e, root)
local ti = ((i - 1 + w - 1) % #targets) + 1
local tp = targetPos(ti)
local y = 3.5 - e * 7.5
return CFrame.new(tp + Vector3.new(0, y, 0))
* CFrame.Angles(0, os.clock()*3 + i, 0)
end, 0.22, easeInOutCubic)
end
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- EXECUTOR
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function retractAll()
local root = getRoot(); if not root then return end
tweenPropsTo(function() return getHiddenCF(root) end, 0.42, easeInOutCubic)
end
local function canUse(name)
if not state.enabled then return false end
if state.currentAbility then return false end
if os.clock() - state.lastUsed[name] < ABILITY_DEFS[name].cooldown then return false end
return true
end
local function runAbility(name)
if not canUse(name) then return end
state.currentAbility = name
state.abilityState[name] = "summon"
state.lastUsed[name] = os.clock()
task.spawn(function()
local ok, err = pcall(function()
if name == "LASER" then doLaser()
elseif name == "SWING" then doSwing()
elseif name == "GRAB" then doGrab()
elseif name == "BLEACH" then doBleach() end
end)
if not ok then warn("[MR.XENO] "..name.." err: "..tostring(err)) end
state.abilityState[name] = "retract"
retractAll()
state.abilityState[name] = "idle"
state.currentAbility = nil
if not state.enabled then restoreColors() end
end)
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- UI
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local gui = Instance.new("ScreenGui")
gui.Name = "JohnDoeAbility_MRXENO"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = CoreGui
-- MAIN PANEL
local main = Instance.new("Frame")
main.Name = "Main"
main.Size = UDim2.fromOffset(230, 250)
main.Position = UDim2.new(0, 20, 0, 90)
main.BackgroundColor3 = THEME.bg
main.BackgroundTransparency = 0.08
main.BorderSizePixel = 0
main.Parent = gui
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 12)
local mainStroke = Instance.new("UIStroke")
mainStroke.Color = THEME.stroke
mainStroke.Thickness = 1.2
mainStroke.Transparency = 0.15
mainStroke.Parent = main
-- HEADER
local header = Instance.new("Frame")
header.Name = "Header"
header.Size = UDim2.new(1, 0, 0, 44)
header.BackgroundColor3 = Color3.fromRGB(16, 8, 10)
header.BackgroundTransparency = 0.15
header.BorderSizePixel = 0
header.ZIndex = 2
header.Parent = main
Instance.new("UICorner", header).CornerRadius = UDim.new(0, 12)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -70, 0, 20)
title.Position = UDim2.fromOffset(12, 6)
title.BackgroundTransparency = 1
title.Text = "MR.XENO"
title.TextColor3 = THEME.redBright
title.Font = Enum.Font.GothamBlack
title.TextSize = 16
title.TextXAlignment = Enum.TextXAlignment.Left
title.ZIndex = 3
title.Parent = header
local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(1, -70, 0, 14)
subtitle.Position = UDim2.fromOffset(13, 24)
subtitle.BackgroundTransparency = 1
subtitle.Text = "JOHN DOE β’ ABILITY PROP"
subtitle.TextColor3 = THEME.textDim
subtitle.Font = Enum.Font.GothamMedium
subtitle.TextSize = 9
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.ZIndex = 3
subtitle.Parent = header
local headerLine = Instance.new("Frame")
headerLine.Size = UDim2.new(1, -24, 0, 1)
headerLine.Position = UDim2.new(0, 12, 1, -1)
headerLine.BackgroundColor3 = THEME.red
headerLine.BackgroundTransparency = 0.55
headerLine.BorderSizePixel = 0
headerLine.ZIndex = 3
headerLine.Parent = header
-- MINIMIZE BUTTON (parent = main, ZIndex tinggi)
local minBtn = Instance.new("TextButton")
minBtn.Size = UDim2.fromOffset(24, 24)
minBtn.Position = UDim2.new(1, -32, 0, 10)
minBtn.BackgroundColor3 = THEME.button
minBtn.BackgroundTransparency = 0.05
minBtn.BorderSizePixel = 0
minBtn.Text = "β"
minBtn.TextColor3 = THEME.text
minBtn.Font = Enum.Font.GothamBold
minBtn.TextSize = 16
minBtn.AutoButtonColor = false
minBtn.ZIndex = 20
minBtn.Parent = main
Instance.new("UICorner", minBtn).CornerRadius = UDim.new(0, 6)
local mbS = Instance.new("UIStroke")
mbS.Color = THEME.stroke; mbS.Thickness = 1; mbS.Transparency = 0.35; mbS.Parent = minBtn
minBtn.MouseEnter:Connect(function()
TweenService:Create(minBtn, TweenInfo.new(0.15), {BackgroundColor3 = THEME.buttonHov}):Play()
end)
minBtn.MouseLeave:Connect(function()
TweenService:Create(minBtn, TweenInfo.new(0.15), {BackgroundColor3 = THEME.button}):Play()
end)
-- DRAG MAIN via HEADER
do
local dragging, dragStart, startPos
header.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
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch) then
local d = input.Position - dragStart
main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X,
startPos.Y.Scale, startPos.Y.Offset + d.Y)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
end
-- PANEL BUTTON FACTORY
local function makePanelButton(text, y)
local b = Instance.new("TextButton")
b.Size = UDim2.new(1, -20, 0, 30)
b.Position = UDim2.fromOffset(10, y)
b.BackgroundColor3 = THEME.button
b.BackgroundTransparency = 0.05
b.BorderSizePixel = 0
b.Text = ""
b.AutoButtonColor = false
b.ZIndex = 3
b.Parent = main
Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8)
local s = Instance.new("UIStroke")
s.Color = THEME.stroke; s.Thickness = 1; s.Transparency = 0.35; s.Parent = b
local accent = Instance.new("Frame")
accent.Size = UDim2.new(0, 3, 1, -14)
accent.Position = UDim2.new(0, 6, 0, 7)
accent.BackgroundColor3 = THEME.red
accent.BorderSizePixel = 0
accent.Parent = b
Instance.new("UICorner", accent).CornerRadius = UDim.new(1, 0)
local val = Instance.new("TextLabel")
val.Size = UDim2.new(0, 100, 1, 0)
val.Position = UDim2.new(1, -106, 0, 0)
val.BackgroundTransparency = 1
val.Text = ""
val.TextColor3 = THEME.redGlow
val.Font = Enum.Font.GothamBold
val.TextSize = 11
val.TextXAlignment = Enum.TextXAlignment.Right
val.Parent = b
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -120, 1, 0)
label.Position = UDim2.fromOffset(18, 0)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = THEME.text
label.Font = Enum.Font.GothamMedium
label.TextSize = 12
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = b
b.MouseEnter:Connect(function()
TweenService:Create(b, TweenInfo.new(0.15), {BackgroundColor3 = THEME.buttonHov}):Play()
end)
b.MouseLeave:Connect(function()
TweenService:Create(b, TweenInfo.new(0.15), {BackgroundColor3 = THEME.button}):Play()
end)
return b, val
end
local colorBtn, colorVal = makePanelButton("COLOR", 58)
local scanBtn, scanVal = makePanelButton("SCAN PROP", 92)
local toggleBtn, toggleVal = makePanelButton("TOGGLE PROP", 126)
local showBtn, showVal = makePanelButton("SHOW ABILITY",160)
local adjustBtn, adjustVal = makePanelButton("ADJUST MOVE", 194)
colorVal.Text = "CORRUPTED"
scanVal.Text = "0 / 30"
toggleVal.Text = "OFF"
showVal.Text = "OFF"
adjustVal.Text = "OFF"
local statusLine = Instance.new("TextLabel")
statusLine.Size = UDim2.new(1, -20, 0, 14)
statusLine.Position = UDim2.new(0, 12, 1, -18)
statusLine.BackgroundTransparency = 1
statusLine.Text = "β SYSTEM OFFLINE"
statusLine.TextColor3 = THEME.textDim
statusLine.Font = Enum.Font.GothamMedium
statusLine.TextSize = 10
statusLine.TextXAlignment = Enum.TextXAlignment.Left
statusLine.ZIndex = 3
statusLine.Parent = main
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- ABILITY BAR
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local abilityBar = Instance.new("Frame")
abilityBar.Name = "AbilityBar"
abilityBar.Size = UDim2.fromOffset(348, 62)
abilityBar.Position = UDim2.new(0.5, -174, 1, -90)
abilityBar.BackgroundTransparency = 1
abilityBar.Parent = gui
local abilityButtons = {}
for i, name in ipairs(ABILITY_ORDER) do
local btn = Instance.new("TextButton")
btn.Name = name
btn.Size = UDim2.fromOffset(80, 56)
btn.Position = UDim2.fromOffset((i-1)*88 + 2, 3)
btn.BackgroundColor3 = THEME.button
btn.BackgroundTransparency = 0.05
btn.BorderSizePixel = 0
btn.Text = ""
btn.AutoButtonColor = false
btn.Parent = abilityBar
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10)
local s = Instance.new("UIStroke")
s.Color = THEME.redDark; s.Thickness = 1.4; s.Transparency = 0.15; s.Parent = btn
local icon = Instance.new("Frame")
icon.Size = UDim2.fromOffset(26, 26)
icon.Position = UDim2.new(0.5, -13, 0, 6)
icon.BackgroundColor3 = THEME.redDark
icon.BorderSizePixel = 0
icon.Parent = btn
Instance.new("UICorner", icon).CornerRadius = UDim.new(1, 0)
local dot = Instance.new("Frame")
dot.Size = UDim2.fromOffset(8, 8)
dot.Position = UDim2.new(0.5, -4, 0.5, -4)
dot.BackgroundColor3 = THEME.redBright
dot.BorderSizePixel = 0
dot.Parent = icon
Instance.new("UICorner", dot).CornerRadius = UDim.new(1, 0)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 0, 16)
lbl.Position = UDim2.new(0, 0, 1, -20)
lbl.BackgroundTransparency = 1
lbl.Text = name
lbl.TextColor3 = THEME.text
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 11
lbl.Parent = btn
local cd = Instance.new("Frame")
cd.Size = UDim2.fromScale(1, 1)
cd.BackgroundColor3 = Color3.fromRGB(0,0,0)
cd.BackgroundTransparency = 0.45
cd.BorderSizePixel = 0
cd.Visible = false
cd.ZIndex = 2
cd.Parent = btn
Instance.new("UICorner", cd).CornerRadius = UDim.new(0, 10)
local cdt = Instance.new("TextLabel")
cdt.Size = UDim2.fromScale(1, 1)
cdt.BackgroundTransparency = 1
cdt.Text = ""
cdt.TextColor3 = THEME.redBright
cdt.Font = Enum.Font.GothamBlack
cdt.TextSize = 16
cdt.ZIndex = 3
cdt.Parent = cd
abilityButtons[name] = { button=btn, cooldown=cd, cooldownText=cdt, stroke=s }
btn.MouseButton1Down:Connect(function()
if state.adjusting then return end
TweenService:Create(btn, TweenInfo.new(0.08), {Size = UDim2.fromOffset(74,52)}):Play()
TweenService:Create(s, TweenInfo.new(0.08), {Color=THEME.redBright, Transparency=0}):Play()
end)
btn.MouseButton1Up:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.12), {Size = UDim2.fromOffset(80,56)}):Play()
TweenService:Create(s, TweenInfo.new(0.15), {Color=THEME.redDark, Transparency=0.15}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.12), {Size = UDim2.fromOffset(80,56)}):Play()
TweenService:Create(s, TweenInfo.new(0.15), {Color=THEME.redDark, Transparency=0.15}):Play()
end)
btn.MouseButton1Click:Connect(function()
if state.adjusting then return end
runAbility(name)
end)
btn.MouseEnter:Connect(function()
if state.adjusting then return end
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3=THEME.buttonHov}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3=THEME.button}):Play()
end)
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- ADJUST OVERLAY (mode pindah β nangkep semua input)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local adjustOverlay = Instance.new("TextButton")
adjustOverlay.Size = UDim2.fromScale(1, 1)
adjustOverlay.BackgroundTransparency = 1
adjustOverlay.Text = ""
adjustOverlay.AutoButtonColor = false
adjustOverlay.Visible = false
adjustOverlay.ZIndex = 100
adjustOverlay.Parent = abilityBar
do
local dragging, dragStart, startPos
adjustOverlay.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true; dragStart = input.Position; startPos = abilityBar.Position
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch) then
local d = input.Position - dragStart
abilityBar.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + d.X,
startPos.Y.Scale, startPos.Y.Offset + d.Y)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
end
-- outline indicator
local adjustOutline = Instance.new("Frame")
adjustOutline.Size = UDim2.new(1, 6, 1, 6)
adjustOutline.Position = UDim2.fromOffset(-3, -3)
adjustOutline.BackgroundTransparency = 1
adjustOutline.Visible = false
adjustOutline.ZIndex = 99
adjustOutline.Parent = abilityBar
local aoStroke = Instance.new("UIStroke")
aoStroke.Color = THEME.redBright
aoStroke.Thickness = 1.5
aoStroke.Transparency = 0.2
aoStroke.Parent = adjustOutline
Instance.new("UICorner", adjustOutline).CornerRadius = UDim.new(0, 12)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- FLOATING MINIMIZE ICON
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local floatIcon = Instance.new("TextButton")
floatIcon.Size = UDim2.fromOffset(46, 46)
floatIcon.Position = UDim2.new(0, 20, 0, 90)
floatIcon.BackgroundColor3 = THEME.bg
floatIcon.BackgroundTransparency = 0.05
floatIcon.BorderSizePixel = 0
floatIcon.Text = "X"
floatIcon.TextColor3 = THEME.redBright
floatIcon.Font = Enum.Font.GothamBlack
floatIcon.TextSize = 20
floatIcon.AutoButtonColor = false
floatIcon.Visible = false
floatIcon.ZIndex = 30
floatIcon.Parent = gui
Instance.new("UICorner", floatIcon).CornerRadius = UDim.new(0, 12)
local fiS = Instance.new("UIStroke")
fiS.Color = THEME.red; fiS.Thickness = 1.4; fiS.Transparency = 0.15; fiS.Parent = floatIcon
do
local dragging, dragStart, startPos
floatIcon.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true; dragStart = input.Position; startPos = floatIcon.Position
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch) then
local d = input.Position - dragStart
floatIcon.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + d.X,
startPos.Y.Scale, startPos.Y.Offset + d.Y)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
end
local function setMinimized(v)
if v then
floatIcon.Position = UDim2.new(main.Position.X.Scale, main.Position.X.Offset,
main.Position.Y.Scale, main.Position.Y.Offset)
else
main.Position = UDim2.new(floatIcon.Position.X.Scale, floatIcon.Position.X.Offset,
floatIcon.Position.Y.Scale, floatIcon.Position.Y.Offset)
end
state.minimized = v
main.Visible = not v
floatIcon.Visible = v
end
minBtn.MouseButton1Click:Connect(function() setMinimized(true) end)
floatIcon.MouseButton1Click:Connect(function() setMinimized(false) end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- STATUS / REFRESH
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function refreshStatus()
colorVal.Text = COLOR_PRESETS[state.colorIndex].name
scanVal.Text = string.format("%d / %d", #state.props, CONFIG.MAX_PROPS)
toggleVal.Text = state.enabled and "ON" or "OFF"
showVal.Text = state.showIdle and "ON" or "OFF"
adjustVal.Text = state.adjusting and "ON" or "OFF"
toggleVal.TextColor3 = state.enabled and THEME.redGlow or THEME.textDim
showVal.TextColor3 = state.showIdle and THEME.redGlow or THEME.textDim
adjustVal.TextColor3 = state.adjusting and THEME.redGlow or THEME.textDim
if state.enabled then
statusLine.Text = string.format("β ONLINE β’ %d PROPS", #state.props)
statusLine.TextColor3 = THEME.redGlow
else
statusLine.Text = "β SYSTEM OFFLINE"
statusLine.TextColor3 = THEME.textDim
end
end
local function refreshProps()
state.props = scanProps()
table.clear(state.currentCFrames)
if state.enabled then
local root = getRoot()
if root then
for i, prop in ipairs(state.props) do
local hidden = getHiddenCF(root)
state.currentCFrames[i] = hidden
task.spawn(invokeProp, prop, hidden)
task.spawn(pushColor, prop, state.color)
end
end
end
refreshStatus()
end
local function setEnabled(v)
state.enabled = v
if v then
if #state.props == 0 then refreshProps() end
local root = getRoot()
if root then
for i, prop in ipairs(state.props) do
local pos = state.showIdle and getIdleOrbit(i, #state.props, root) or getHiddenCF(root)
state.currentCFrames[i] = pos
task.spawn(invokeProp, prop, pos)
task.spawn(pushColor, prop, state.color)
end
end
else
restoreColors()
end
refreshStatus()
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- WIRE PANEL BUTTONS
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
colorBtn.MouseButton1Click:Connect(function()
state.colorIndex = (state.colorIndex % #COLOR_PRESETS) + 1
state.colorPhase = 0
refreshStatus()
end)
scanBtn.MouseButton1Click:Connect(function() refreshProps() end)
toggleBtn.MouseButton1Click:Connect(function() setEnabled(not state.enabled) end)
showBtn.MouseButton1Click:Connect(function()
state.showIdle = not state.showIdle
refreshStatus()
end)
adjustBtn.MouseButton1Click:Connect(function()
state.adjusting = not state.adjusting
adjustOverlay.Visible = state.adjusting
adjustOutline.Visible = state.adjusting
refreshStatus()
for _, info in pairs(abilityButtons) do
TweenService:Create(info.stroke, TweenInfo.new(0.2), {
Color = state.adjusting and THEME.redBright or THEME.redDark,
Transparency = state.adjusting and 0 or 0.15,
}):Play()
end
end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- MAIN LOOP
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RunService.Heartbeat:Connect(function(dt)
if not state.enabled then return end
state.tickAccum += dt
if state.tickAccum < CONFIG.TICK_RATE then return end
local step = state.tickAccum
state.tickAccum = 0
local root = getRoot(); if not root then return end
state.colorPhase += step * CONFIG.CYCLE_SPEED
local pal = currentPalette()
local n = #pal
local c = state.colorPhase % n
local i1 = math.floor(c) + 1
local i2 = (i1 % n) + 1
local frac = c - math.floor(c)
state.color = pal[i1]:Lerp(pal[i2], frac)
if not state.currentAbility then
local N = #state.props
for i, prop in ipairs(state.props) do
if prop and prop.Parent then
local pos = state.showIdle and getIdleOrbit(i, N, root) or getHiddenCF(root)
state.currentCFrames[i] = pos
task.spawn(invokeProp, prop, pos)
task.spawn(pushColor, prop, state.color)
end
end
else
for _, prop in ipairs(state.props) do
if prop and prop.Parent then task.spawn(pushColor, prop, state.color) end
end
end
end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- COOLDOWN UI
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
task.spawn(function()
while true do
task.wait(0.1)
local now = os.clock()
for name, def in pairs(ABILITY_DEFS) do
local info = abilityButtons[name]
if info then
local remain = def.cooldown - (now - state.lastUsed[name])
if remain > 0 and state.enabled then
info.cooldown.Visible = true
info.cooldownText.Text = string.format("%.1f", remain)
else
info.cooldown.Visible = false
end
end
end
end
end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- BOOT
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
refreshProps()
refreshStatus()
LP.CharacterAdded:Connect(function()
task.wait(1)
if state.enabled then refreshProps() end
end)
_G.MRXENO = {
State = state,
Run = runAbility,
Scan = refreshProps,
Toggle = setEnabled,
Config = CONFIG,
}


![Item Spawner - Bypass Gamepass [OPEN-SOURCE]](https://scriptblox.com/images/sb/rbx-2736e5de37c3d8bc17e5e9bd07d73e38-cc0a9732451c.png)
cool idea. works for me on solara