
Key RequiredUniversal

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local remotes = ReplicatedStorage:WaitForChild("Remotes")
local changeChar = remotes:WaitForChild("ChangeCharacter")
local characters = {
"Luffy",
"Jonathan",
"Sakuya",
}
local sg = Instance.new("ScreenGui")
sg.Name = "CharChangerRGB"
sg.ResetOnSpawn = false
sg.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 240, 0, 340)
frame.Position = UDim2.new(0.5, -120, 0.5, -170)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 30) -- will be overridden by rainbow
frame.BorderSizePixel = 0
frame.Parent = sg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -40, 0, 45)
title.Position = UDim2.new(0, 40, 0, 0)
title.BackgroundTransparency = 1
title.Text = "Character Switch"
title.TextSize = 22
title.Font = Enum.Font.GothamBold
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = frame
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 32, 0, 32)
closeBtn.Position = UDim2.new(0, 6, 0, 6)
closeBtn.BackgroundColor3 = Color3.fromRGB(210, 50, 50)
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.new(1,1,1)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 18
closeBtn.Parent = frame
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(1, 0)
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0, 48, 0, 48)
toggleBtn.Position = UDim2.new(0.1, 0, 0.15, 0)
toggleBtn.BackgroundColor3 = Color3.fromRGB(50, 120, 220)
toggleBtn.Text = "C"
toggleBtn.TextColor3 = Color3.new(1,1,1)
toggleBtn.Font = Enum.Font.GothamBlack
toggleBtn.TextSize = 24
toggleBtn.Parent = sg
local toggleCorner = Instance.new("UICorner", toggleBtn)
toggleCorner.CornerRadius = UDim.new(1, 0)
local toggleStroke = Instance.new("UIStroke", toggleBtn)
toggleStroke.Thickness = 2.5
toggleStroke.Transparency = 0.2
local function makeDraggable(obj)
local UIS = game:GetService("UserInputService")
local dragging, dragStart, startPos
obj.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = obj.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
obj.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
obj.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end
makeDraggable(frame)
makeDraggable(toggleBtn)
local function toggleGUI()
frame.Visible = not frame.Visible
toggleBtn.Text = frame.Visible and "C" or "O"
end
closeBtn.Activated:Connect(toggleGUI)
toggleBtn.Activated:Connect(toggleGUI)
local credit = Instance.new("TextLabel")
credit.Size = UDim2.new(1, -20, 0, 30)
credit.Position = UDim2.new(0, 10, 1, -40)
credit.BackgroundTransparency = 1
credit.Text = "Made by Scripterblabla — Enjoy it"
credit.TextSize = 14
credit.Font = Enum.Font.GothamSemibold
credit.TextXAlignment = Enum.TextXAlignment.Center
credit.Parent = frame
local rainbowObjects = {
{frame, true},
{title, false},
{credit, false},
{toggleBtn, true},
{toggleStroke, true},
}
local hue = 0
RunService.RenderStepped:Connect(function(delta)
hue = (hue + delta * 90) % 360 -- 90 = quite fast LED pulsing, lower = slower
local function getColor(saturation, value)
return Color3.fromHSV(hue/360, saturation, value)
end
frame.BackgroundColor3 = getColor(0.25, 0.18) --
title.TextColor3 = getColor(0.95, 1) --
credit.TextColor3 = getColor(0.95, 1)
toggleBtn.BackgroundColor3 = getColor(0.8, 0.9)
toggleStroke.Color = getColor(0.95, 1)
-- closeBtn.BackgroundColor3 = getColor(0.95, 0.9)
end)
local list = Instance.new("ScrollingFrame")
list.Size = UDim2.new(1, -20, 1, -85)
list.Position = UDim2.new(0, 10, 0, 50)
list.BackgroundTransparency = 1
list.ScrollBarThickness = 5
list.CanvasSize = UDim2.new(0, 0, 0, 0)
list.Parent = frame
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 9)
layout.Parent = list
for _, name in ipairs(characters) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 46)
btn.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
btn.Text = name
btn.TextColor3 = Color3.fromRGB(210, 210, 255)
btn.Font = Enum.Font.GothamSemibold
btn.TextSize = 17
btn.Parent = list
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", btn)
stroke.Thickness = 1.8
stroke.Transparency = 0.4
table.insert(rainbowObjects, {btn, true}) --
table.insert(rainbowObjects, {btn, false, true}) --
table.insert(rainbowObjects, {stroke, true}) --
btn.MouseEnter:Connect(function()
-- Optional: boost brightness on hover
end)
btn.MouseLeave:Connect(function()
--
end)
btn.Activated:Connect(function()
changeChar:FireServer(name)
local old = btn.BackgroundColor3
btn.BackgroundColor3 = Color3.fromRGB(70, 180, 110)
task.delay(0.25, function()
btn.BackgroundColor3 = old
end)
end)
end
RunService.RenderStepped:Connect(function(delta)
hue = (hue + delta * 90) % 360
local function getColor(s, v)
return Color3.fromHSV(hue/360, s, v)
end
for _, entry in ipairs(rainbowObjects) do
local obj = entry[1]
local isBg = entry[2]
local isText = entry[3]
if isText then
obj.TextColor3 = getColor(0.95, 1)
elseif isBg then
if obj:IsA("Frame") or obj:IsA("TextButton") then
obj.BackgroundColor3 = getColor(0.35, 0.22)
elseif obj:IsA("UIStroke") then
obj.Color = getColor(0.9, 1)
end
else
obj.TextColor3 = getColor(0.9, 1)
end
end
end)
layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
list.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 15)
end)
print("?You think I will stop hacking you game?")


@Scripterblabla welp atp I know this ain't gotta go well there's probably going to be a spy in the discord server
We rly still doing this lol
Luffy is going to be free character in the future
make one for jump showdown pls
@Scripterblabla um what is this in the script "print("?You think I will stop hacking you game?")"