
KeylessUniversal

-- Roblox Lua Script: Draggable UI with Character Freeze Toggle
-- Place this inside a LocalScript (e.g., in StarterPlayerScripts or StarterGui)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
player.CharacterAdded:Connect(function(newChar)
character = newChar
end)
-- ==========================================
-- I. CREATE THE INTERACTIVE UI
-- ==========================================
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "FreezeMenuGui"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
-- Main Frame (The Panel)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 220, 0, 110)
MainFrame.Position = UDim2.new(0.5, -110, 0.4, -55)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Parent = ScreenGui
local MainUICorner = Instance.new("UICorner")
MainUICorner.CornerRadius = UDim.new(0, 8)
MainUICorner.Parent = MainFrame
local MainUIStroke = Instance.new("UIStroke")
MainUIStroke.Color = Color3.fromRGB(55, 55, 60)
MainUIStroke.Thickness = 1.5
MainUIStroke.Parent = MainFrame
-- Title Bar (Drag Area)
local TitleLabel = Instance.new("TextLabel")
TitleLabel.Name = "TitleLabel"
TitleLabel.Size = UDim2.new(1, 0, 0, 35)
TitleLabel.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
TitleLabel.Text = " Freeze Hack Tool"
TitleLabel.TextColor3 = Color3.fromRGB(240, 240, 240)
TitleLabel.TextXAlignment = Enum.TextXAlignment.Left
TitleLabel.Font = Enum.Font.SourceSansBold
TitleLabel.TextSize = 16
TitleLabel.BorderSizePixel = 0
TitleLabel.Parent = MainFrame
local TitleUICorner = Instance.new("UICorner")
TitleUICorner.CornerRadius = UDim.new(0, 8)
TitleUICorner.Parent = TitleLabel
-- Cover bottom corners of title to match design style
local TitleCover = Instance.new("Frame")
TitleCover.Size = UDim2.new(1, 0, 0, 10)
TitleCover.Position = UDim2.new(0, 0, 1, -10)
TitleCover.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
TitleCover.BorderSizePixel = 0
TitleCover.Parent = TitleLabel
-- Toggle Button
local ToggleButton = Instance.new("TextButton")
ToggleButton.Name = "ToggleButton"
ToggleButton.Size = UDim2.new(0, 180, 0, 40)
ToggleButton.Position = UDim2.new(0.5, -90, 0, 55)
ToggleButton.BackgroundColor3 = Color3.fromRGB(220, 50, 50) -- Default Red (OFF)
ToggleButton.Text = "Status: UNFROZEN"
ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ToggleButton.Font = Enum.Font.SourceSansBold
ToggleButton.TextSize = 16
ToggleButton.AutoButtonColor = false
ToggleButton.BorderSizePixel = 0
ToggleButton.Parent = MainFrame
local ButtonUICorner = Instance.new("UICorner")
ButtonUICorner.CornerRadius = UDim.new(0, 6)
ButtonUICorner.Parent = ToggleButton
-- Parent GUI safely to PlayerGui
local success, err = pcall(function()
ScreenGui.Parent = player:WaitForChild("PlayerGui")
end)
if not success then
ScreenGui.Parent = game:GetService("CoreGui") -- Fallback for execution injection
end
-- ==========================================
-- II. SMOOTH DRAGGING FUNCTIONALITY
-- ==========================================
local dragging, dragInput, dragStart, startPos
local function update(input)
local delta = input.Position - dragStart
local targetPos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
TweenService:Create(MainFrame, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = targetPos}):Play()
end
MainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = MainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
MainFrame.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)
-- ==========================================
-- III. FREEZE LOGIC
-- ==========================================
local isFrozen = false
local function setFreezeState(state)
isFrozen = state
if not character then return end
local rootPart = character:FindFirstChild("HumanoidRootPart")
if isFrozen then
-- Action: Freeze Character
ToggleButton.BackgroundColor3 = Color3.fromRGB(50, 180, 50) -- Green
ToggleButton.Text = "Status: FROZEN"
-- Anchor root part to lock position completely mid-air or mid-run
if rootPart then
rootPart.Anchored = true
end
else
-- Action: Unfreeze Character
ToggleButton.BackgroundColor3 = Color3.fromRGB(220, 50, 50) -- Red
ToggleButton.Text = "Status: UNFROZEN"
if rootPart then
rootPart.Anchored = false
end
end
end
-- Toggle click listener
ToggleButton.MouseButton1Click:Connect(function()
setFreezeState(not isFrozen)
end)
-- Auto-re-anchor loop if player updates state or switches items while frozen
RunService.Heartbeat:Connect(function()
if isFrozen and character then
local rootPart = character:FindFirstChild("HumanoidRootPart")
if rootPart and not rootPart.Anchored then
rootPart.Anchored = true
end
end
end)No comments yet for this script.



