--========================================================================-- -- UNIVERSAL MOBILE CONTROLS CUSTOMIZER -- --========================================================================-- local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local Player = Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") -- Safe cleanup for old instances if PlayerGui:FindFirstChild("MobileResizerUI") then PlayerGui.MobileResizerUI:Destroy() end -- Create Main ScreenGui Container local screenGui = Instance.new("ScreenGui") screenGui.Name = "MobileResizerUI" screenGui.ResetOnSpawn = false screenGui.Parent = PlayerGui --------------------------------------------------------- -- WATERMARK NOTIFICATION ENGINE (MATCHING GREEN TEXT) --------------------------------------------------------- local function spawnWatermark() local notifyFrame = Instance.new("Frame") notifyFrame.Name = "WatermarkNotification" notifyFrame.Size = UDim2.new(0, 260, 0, 40) notifyFrame.Position = UDim2.new(1, 30, 0.2, 0) notifyFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20) notifyFrame.BackgroundTransparency = 0.1 notifyFrame.BorderSizePixel = 0 notifyFrame.Parent = screenGui local nCorner = Instance.new("UICorner") nCorner.CornerRadius = UDim.new(0, 6) nCorner.Parent = notifyFrame local nStroke = Instance.new("UIStroke") nStroke.Color = Color3.fromRGB(0, 255, 150) nStroke.Thickness = 1 nStroke.Parent = notifyFrame local nText = Instance.new("TextLabel") nText.Size = UDim2.new(1, 0, 1, 0) nText.BackgroundTransparency = 1 nText.Text = "Made By Ninja63/ByMyBuyBye" nText.TextColor3 = Color3.fromRGB(0, 255, 150) nText.TextSize = 12 nText.Font = Enum.Font.Code nText.Parent = notifyFrame local slideInInfo = TweenInfo.new(0.6, Enum.EasingStyle.Quart, Enum.EasingDirection.Out) local slideInTween = TweenService:Create(notifyFrame, slideInInfo, { Position = UDim2.new(1, -280, 0.2, 0) }) local slideOutInfo = TweenInfo.new(0.6, Enum.EasingStyle.Quart, Enum.EasingDirection.In) local slideOutTween = TweenService:Create(notifyFrame, slideOutInfo, { Position = UDim2.new(1, 30, 0.2, 0) }) slideInTween:Play() task.delay(5, function() slideOutTween:Play() slideOutTween.Completed:Connect(function() notifyFrame:Destroy() end) end) end task.spawn(spawnWatermark) --------------------------------------------------------- -- CONFIGURATION METRICS (STARTS AT 100% DEFAULT SIZE) --------------------------------------------------------- local targetScale = 1.0 local isMenuLocked = false -- Lock state for the customizer bar local isButtonUnlocked = false -- Lock state for the Roblox jump button local customJumpPosition = nil --------------------------------------------------------- -- THE UNBREAKABLE RENDERING CORE (UISCALE METHOD) --------------------------------------------------------- task.spawn(function() while true do local touchGui = PlayerGui:FindFirstChild("TouchGui") local touchControlFrame = touchGui and touchGui:FindFirstChild("TouchControlFrame") if touchControlFrame then -- 1. TRACK & RESIZE THE JUMP BUTTON local jumpButton = touchControlFrame:FindFirstChild("JumpButton") if jumpButton and jumpButton:IsA("GuiObject") then local buttonScale = jumpButton:FindFirstChild("ResizerScale") if not buttonScale then buttonScale = Instance.new("UIScale") buttonScale.Name = "ResizerScale" buttonScale.Parent = jumpButton end buttonScale.Scale = targetScale if customJumpPosition then jumpButton.Position = customJumpPosition end end -- 2. PERFECT JOYSTICK SCALE OVERRIDE local joystick = touchControlFrame:FindFirstChild("JoystickFrame") or touchControlFrame:FindFirstChild("DynamicThumbstickFrame") if joystick and joystick:IsA("GuiObject") then local joystickScale = joystick:FindFirstChild("ResizerScale") if not joystickScale then joystickScale = Instance.new("UIScale") joystickScale.Name = "ResizerScale" joystickScale.Parent = joystick end joystickScale.Scale = targetScale if not joystick:GetAttribute("Pinned") then joystick.Position = UDim2.new(0, 50, 1, -150) joystick:SetAttribute("Pinned", true) end end end RunService.Heartbeat:Wait() end end) --------------------------------------------------------- -- DRAGGABLE RESIZER BAR INTERFACE --------------------------------------------------------- local mainFrame = Instance.new("Frame") mainFrame.Name = "CustomizerMain" mainFrame.Size = UDim2.new(0, 380, 0, 35) mainFrame.Position = UDim2.new(0.5, -190, 0, 15) mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20) mainFrame.BackgroundTransparency = 0.2 mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Parent = screenGui local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = mainFrame local uiStroke = Instance.new("UIStroke") uiStroke.Color = Color3.fromRGB(0, 255, 150) uiStroke.Thickness = 1 uiStroke.Parent = mainFrame -- Smooth Menu Dragging Engine (Now respects its own standalone lock) local menuDragging = false local menuDragInput, menuDragStart, menuStartPos mainFrame.InputBegan:Connect(function(input) if not isMenuLocked then -- Only allow dragging if the menu itself is unlocked if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then menuDragging = true menuDragInput = input menuDragStart = input.Position menuStartPos = mainFrame.Position end end end) UserInputService.InputChanged:Connect(function(input) if menuDragging and input == menuDragInput and not isMenuLocked then local delta = input.Position - menuDragStart mainFrame.Position = UDim2.new( menuStartPos.X.Scale, menuStartPos.X.Offset + delta.X, menuStartPos.Y.Scale, menuStartPos.Y.Offset + delta.Y ) end end) UserInputService.InputEnded:Connect(function(input) if input == menuDragInput then menuDragging = false end end) -- Sizing Text Label local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(0, 70, 1, 0) titleLabel.Position = UDim2.new(0, 10, 0, 0) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "UI SCALE:" titleLabel.TextColor3 = Color3.fromRGB(0, 255, 150) titleLabel.TextSize = 11 titleLabel.Font = Enum.Font.Code titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.ZIndex = 2 titleLabel.Parent = mainFrame -- Slider Track Setup local track = Instance.new("Frame") track.Name = "Track" track.Size = UDim2.new(0, 110, 0, 4) track.Position = UDim2.new(0, 75, 0.5, -2) track.BackgroundColor3 = Color3.fromRGB(50, 50, 60) track.BorderSizePixel = 0 track.ZIndex = 2 track.Parent = mainFrame --------------------------------------------------------- -- CYBER-GREEN 75% SNAP LINE INDICATOR --------------------------------------------------------- local targetSnapPct = (0.75 - 0.40) / (1.30 - 0.40) local snapLine = Instance.new("Frame") snapLine.Name = "SnapLine" snapLine.Size = UDim2.new(0, 2, 0, 10) snapLine.Position = UDim2.new(targetSnapPct, -1, 0.5, -5) snapLine.BackgroundColor3 = Color3.fromRGB(0, 255, 150) snapLine.BorderSizePixel = 0 snapLine.ZIndex = 3 snapLine.Parent = track -- Interactive Slider Knob local initialStartPct = (1.0 - 0.40) / (1.30 - 0.40) local knob = Instance.new("TextButton") knob.Size = UDim2.new(0, 14, 0, 14) knob.Position = UDim2.new(initialStartPct, -7, 0.5, -7) knob.BackgroundColor3 = Color3.fromRGB(0, 255, 150) knob.Text = "" knob.BorderSizePixel = 0 knob.ZIndex = 4 knob.Parent = track local knobCorner = Instance.new("UICorner") knobCorner.CornerRadius = UDim.new(1, 0) knobCorner.Parent = knob -- Visual Sizing Percent Output local valueLabel = Instance.new("TextLabel") valueLabel.Size = UDim2.new(0, 35, 1, 0) valueLabel.Position = UDim2.new(0, 190, 0, 0) valueLabel.BackgroundTransparency = 1 valueLabel.Text = "100%" valueLabel.TextColor3 = Color3.fromRGB(0, 255, 150) valueLabel.TextSize = 11 valueLabel.Font = Enum.Font.Code valueLabel.TextXAlignment = Enum.TextXAlignment.Left valueLabel.ZIndex = 2 valueLabel.Parent = mainFrame --------------------------------------------------------- -- STANDALONE MAIN MENU LOCK BUTTON (EMOJI TOGLE) --------------------------------------------------------- local menuLockButton = Instance.new("TextButton") menuLockButton.Name = "MenuLockButton" menuLockButton.Size = UDim2.new(0, 24, 0, 24) menuLockButton.Position = UDim2.new(0, 218, 0.5, -12) menuLockButton.BackgroundTransparency = 1 menuLockButton.Text = "🔓" -- Starts completely unlocked so you can position the bar menuLockButton.TextSize = 15 menuLockButton.Font = Enum.Font.Code menuLockButton.ZIndex = 3 menuLockButton.Parent = mainFrame -- Custom Position Locking Button (Strictly for the jump button now) local lockButton = Instance.new("TextButton") lockButton.Name = "LockButton" lockButton.Size = UDim2.new(0, 130, 0, 23) lockButton.Position = UDim2.new(1, -140, 0.5, -11) lockButton.BackgroundColor3 = Color3.fromRGB(15, 35, 20) lockButton.Text = "[ LOCKED ]" lockButton.TextColor3 = Color3.fromRGB(0, 255, 120) lockButton.Font = Enum.Font.Code lockButton.TextSize = 11 lockButton.BorderSizePixel = 0 lockButton.ZIndex = 3 lockButton.Parent = mainFrame local lockCorner = Instance.new("UICorner") lockCorner.CornerRadius = UDim.new(0, 4) lockCorner.Parent = lockButton local lockStroke = Instance.new("UIStroke") lockStroke.Color = Color3.fromRGB(0, 255, 120) lockStroke.Thickness = 1 lockStroke.Parent = lockButton --------------------------------------------------------- -- JUMP BUTTON DRAGGING UTILITY --------------------------------------------------------- task.spawn(function() while true do local touchGui = PlayerGui:WaitForChild("TouchGui", 60) local touchControlFrame = touchGui:WaitForChild("TouchControlFrame", 60) local jumpButton = touchControlFrame:WaitForChild("JumpButton", 60) if jumpButton then local dragging = false local dragInput, dragStart, startPos local inputBeganConn inputBeganConn = jumpButton.InputBegan:Connect(function(input) if isButtonUnlocked and (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) then dragging = true dragInput = input dragStart = input.Position startPos = jumpButton.Position menuDragging = false end end) local inputChangedConn inputChangedConn = UserInputService.InputChanged:Connect(function(input) if dragging and input == dragInput then local delta = input.Position - dragStart local newPos = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) jumpButton.Position = newPos customJumpPosition = newPos end end) local inputEndedConn inputEndedConn = UserInputService.InputEnded:Connect(function(input) if input == dragInput then dragging = false end end) touchGui.AncestryChanged:Connect(function() inputBeganConn:Disconnect() inputChangedConn:Disconnect() inputEndedConn:Disconnect() end) end touchGui.AncestryChanged:Wait() end end) -- 1. Main Menu Bar Lock Toggle Engine menuLockButton.Activated:Connect(function() isMenuLocked = not isMenuLocked if isMenuLocked then menuLockButton.Text = "🔒" -- Menu frame dragging is now entirely blocked else menuLockButton.Text = "🔓" -- Menu frame can be moved around freely again end end) -- 2. Jump Button Lock Toggle Engine lockButton.Activated:Connect(function() isButtonUnlocked = not isButtonUnlocked if isButtonUnlocked then lockButton.Text = "[ MOVE JUMP BUTTON ]" lockButton.TextColor3 = Color3.fromRGB(255, 60, 60) lockButton.BackgroundColor3 = Color3.fromRGB(40, 15, 15) lockStroke.Color = Color3.fromRGB(255, 60, 60) else lockButton.Text = "[ LOCKED ]" lockButton.TextColor3 = Color3.fromRGB(0, 255, 120) lockButton.BackgroundColor3 = Color3.fromRGB(15, 35, 20) lockStroke.Color = Color3.fromRGB(0, 255, 120) end end) --------------------------------------------------------- -- SLIDER DRAG OPERATIONS WITH 75% SNAP ENGINE --------------------------------------------------------- local sliderDragging = false local function updateSlider(input) local trackWidth = track.AbsoluteSize.X local trackLeft = track.AbsolutePosition.X local mouseX = input.Position.X local pct = math.clamp((mouseX - trackLeft) / trackWidth, 0, 1) -- MAGNETIC SNAP CONFIGURATION (Locks securely onto 75% scale mark) local snapThreshold = 0.035 if math.abs(pct - targetSnapPct) < snapThreshold then pct = targetSnapPct end knob.Position = UDim2.new(pct, -7, 0.5, -7) local minScale = 0.40 local maxScale = 1.30 targetScale = minScale + (pct * (maxScale - minScale)) valueLabel.Text = math.floor((targetScale / 1.0) * 100) .. "%" end knob.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliderDragging = true menuDragging = false end end) UserInputService.InputChanged:Connect(function(input) if sliderDragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateSlider(input) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliderDragging = false end end) lockButton.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then menuDragging = false end end) menuLockButton.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then menuDragging = false end end)