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?")