local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer -- SETTINGS local infiniteJumpEnabled = false local noClipEnabled = false -- CREATE GUI local screenGui = Instance.new("ScreenGui") screenGui.Name = "MobileMovementControls" screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.Parent = player:WaitForChild("PlayerGui") -- MAIN FRAME local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 200, 0, 135) mainFrame.Position = UDim2.new(1, -215, 0.5, -70) mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Parent = screenGui local frameCorner = Instance.new("UICorner") frameCorner.CornerRadius = UDim.new(0, 14) frameCorner.Parent = mainFrame -- TITLE / DRAG BAR local title = Instance.new("TextLabel") title.Name = "DragBar" title.Size = UDim2.new(1, 0, 0, 35) title.BackgroundColor3 = Color3.fromRGB(20, 20, 20) title.Text = "MOBILE CONTROLS" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextScaled = true title.Font = Enum.Font.GothamBold title.BorderSizePixel = 0 title.Active = true title.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 14) titleCorner.Parent = title -- BUTTON CREATOR local function createButton(name, text, position) local button = Instance.new("TextButton") button.Name = name button.Size = UDim2.new(1, -20, 0, 42) button.Position = position button.BackgroundColor3 = Color3.fromRGB(55, 55, 55) button.TextColor3 = Color3.fromRGB(255, 255, 255) button.Text = text .. " [OFF]" button.TextScaled = true button.Font = Enum.Font.GothamBold button.BorderSizePixel = 0 button.AutoButtonColor = true button.Active = true button.Parent = mainFrame local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = button return button end local infiniteJumpButton = createButton( "InfiniteJumpButton", "INFINITE JUMP", UDim2.new(0, 10, 0, 42) ) local noClipButton = createButton( "NoClipButton", "NO CLIP", UDim2.new(0, 10, 0, 88) ) -- DRAGGING local dragging = false local dragStart = nil local startingPosition = nil title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startingPosition = mainFrame.Position end end) UserInputService.InputChanged:Connect(function(input) if not dragging then return end if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement then local difference = input.Position - dragStart mainFrame.Position = UDim2.new( startingPosition.X.Scale, startingPosition.X.Offset + difference.X, startingPosition.Y.Scale, startingPosition.Y.Offset + difference.Y ) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) -- INFINITE JUMP infiniteJumpButton.Activated:Connect(function() infiniteJumpEnabled = not infiniteJumpEnabled if infiniteJumpEnabled then infiniteJumpButton.Text = "INFINITE JUMP [ON]" infiniteJumpButton.BackgroundColor3 = Color3.fromRGB(40, 170, 70) else infiniteJumpButton.Text = "INFINITE JUMP [OFF]" infiniteJumpButton.BackgroundColor3 = Color3.fromRGB(55, 55, 55) end end) UserInputService.JumpRequest:Connect(function() if not infiniteJumpEnabled then return end local character = player.Character if not character then return end local humanoid = character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end) -- NO CLIP local savedCollisionStates = {} local function saveCollisionStates(character) savedCollisionStates = {} for _, object in ipairs(character:GetDescendants()) do if object:IsA("BasePart") then savedCollisionStates[object] = object.CanCollide end end end local function restoreCollisionStates() for object, collisionState in pairs(savedCollisionStates) do if object and object.Parent then object.CanCollide = collisionState end end savedCollisionStates = {} end noClipButton.Activated:Connect(function() noClipEnabled = not noClipEnabled local character = player.Character if noClipEnabled then noClipButton.Text = "NO CLIP [ON]" noClipButton.BackgroundColor3 = Color3.fromRGB(40, 170, 70) if character then saveCollisionStates(character) end else noClipButton.Text = "NO CLIP [OFF]" noClipButton.BackgroundColor3 = Color3.fromRGB(55, 55, 55) restoreCollisionStates() end end) -- NO CLIP LOOP RunService.Stepped:Connect(function() if not noClipEnabled then return end local character = player.Character if not character then return end for _, object in ipairs(character:GetDescendants()) do if object:IsA("BasePart") then object.CanCollide = false end end end) -- RESPAWN SUPPORT player.CharacterAdded:Connect(function(character) savedCollisionStates = {} if noClipEnabled then task.wait(0.5) saveCollisionStates(character) end end)