local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local ReplicatedStorage = game:GetService("ReplicatedStorage") local player = Players.LocalPlayer -- GUI Creation local gui = Instance.new("ScreenGui") gui.Name = "RainbowMovableGui" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 300, 0, 250) frame.Position = UDim2.new(0.5, -150, 0.5, -125) frame.BackgroundColor3 = Color3.fromRGB(255, 0, 0) frame.BorderSizePixel = 2 frame.Active = true frame.Draggable = true frame.Parent = gui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 30) title.BackgroundTransparency = 1 title.Text = "Rainbow GUI" title.Font = Enum.Font.GothamBold title.TextSize = 22 title.TextColor3 = Color3.new(1,1,1) title.Parent = frame local buttonNames = {"Fly", "Fling", "Kill", "RGB Map", "TP Forwards", "TP Random"} local buttons = {} for i = 1, #buttonNames do     local btn = Instance.new("TextButton")     btn.Size = UDim2.new(0.9, 0, 0, 30)     btn.Position = UDim2.new(0.05, 0, 0, 40 + (i-1)*35)     btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)     btn.TextColor3 = Color3.new(1,1,1)     btn.Font = Enum.Font.Gotham     btn.TextSize = 18     btn.Text = buttonNames[i]     btn.Parent = frame     buttons[buttonNames[i]] = btn end -- Rainbow background loop spawn(function()     local t = 0     while true do         t = t + 0.01         local r = math.sin(t)*0.5+0.5         local g = math.sin(t+2)*0.5+0.5         local b = math.sin(t+4)*0.5+0.5         frame.BackgroundColor3 = Color3.new(r, g, b)         task.wait(0.03)     end end) -- Dragging (for compatibility with all devices) do     local dragging, dragInput, dragStart, startPos     local function update(input)         local delta = input.Position - dragStart         frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)     end     frame.InputBegan:Connect(function(input)         if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then             dragging = true             dragStart = input.Position             startPos = frame.Position             input.Changed:Connect(function()                 if input.UserInputState == Enum.UserInputState.End then                     dragging = false                 end             end)         end     end)     frame.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 input == dragInput and dragging then             update(input)         end     end) end -- Button Functions -- Fly local flying = false local flyConn local function flyFunc()     flying = not flying     if flying then         local char = player.Character         if not char or not char:FindFirstChild("HumanoidRootPart") then return end         local hrp = char.HumanoidRootPart         local bv = Instance.new("BodyVelocity")         bv.MaxForce = Vector3.new(1e5,1e5,1e5)         bv.Velocity = Vector3.new(0,0,0)         bv.Parent = hrp         flyConn = UserInputService.InputBegan:Connect(function(input, gp)             if gp then return end             if input.KeyCode == Enum.KeyCode.W then                 bv.Velocity = hrp.CFrame.LookVector * 60             elseif input.KeyCode == Enum.KeyCode.S then                 bv.Velocity = -hrp.CFrame.LookVector * 60             elseif input.KeyCode == Enum.KeyCode.A then                 bv.Velocity = -hrp.CFrame.RightVector * 60             elseif input.KeyCode == Enum.KeyCode.D then                 bv.Velocity = hrp.CFrame.RightVector * 60             elseif input.KeyCode == Enum.KeyCode.Space then                 bv.Velocity = Vector3.new(0,60,0)             end         end)         UserInputService.InputEnded:Connect(function(input, gp)             if gp then return end             bv.Velocity = Vector3.new(0,0,0)         end)         buttons["Fly"].Text = "Unfly"     else         local char = player.Character         if char and char:FindFirstChild("HumanoidRootPart") then             for _, v in char.HumanoidRootPart:GetChildren() do                 if v:IsA("BodyVelocity") then                     v:Destroy()                 end             end         end         if flyConn then             flyConn:Disconnect()             flyConn = nil         end         buttons["Fly"].Text = "Fly"     end end buttons["Fly"].MouseButton1Click:Connect(flyFunc) -- Fling buttons["Fling"].MouseButton1Click:Connect(function()     local char = player.Character     if not char or not char:FindFirstChild("HumanoidRootPart") then return end     local hrp = char.HumanoidRootPart     local bv = Instance.new("BodyAngularVelocity")     bv.MaxTorque = Vector3.new(1e9,1e9,1e9)     bv.AngularVelocity = Vector3.new(0, 100, 0)     bv.Parent = hrp     task.wait(0.5)     bv:Destroy() end) -- Kill buttons["Kill"].MouseButton1Click:Connect(function()     local char = player.Character     if char and char:FindFirstChild("Humanoid") then         char.Humanoid.Health = 0     end end) -- RGB Map buttons["RGB Map"].MouseButton1Click:Connect(function()     local baseplate = Workspace:FindFirstChild("Baseplate")     if not baseplate then return end     spawn(function()         for i = 1, 100 do             local t = tick() + i             local r = math.sin(t)*0.5+0.5             local g = math.sin(t+2)*0.5+0.5             local b = math.sin(t+4)*0.5+0.5             baseplate.Color = Color3.new(r, g, b)             task.wait(0.05)         end     end) end) -- TP Forwards buttons["TP Forwards"].MouseButton1Click:Connect(function()     local char = player.Character     if not char or not char:FindFirstChild("HumanoidRootPart") then return end     local hrp = char.HumanoidRootPart     local newCFrame = hrp.CFrame + hrp.CFrame.LookVector * 20     char:PivotTo(newCFrame) end) -- TP Random buttons["TP Random"].MouseButton1Click:Connect(function()     local char = player.Character     if not char or not char:FindFirstChild("HumanoidRootPart") then return end     local hrp = char.HumanoidRootPart     local x = math.random(-100,100)     local z = math.random(-100,100)     local y = Workspace:FindFirstChild("Baseplate") and Workspace.Baseplate.Position.Y + 10 or hrp.Position.Y     local newCFrame = CFrame.new(x, y, z)     char:PivotTo(newCFrame) end)