What's new
Heapleak - Scripthub

Get the most out of HeapLeak by creating a free account! Once signed in, you’ll gain full access to restricted content, be able to share your own scripts, and participate in our member-only discussions.

Keyless: Freeze and teleport everyone script (WORKS A LOT)

Version / Update: v1.0.0
Download / Script Link
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer

-- Config
local FRICTION, GRAVITY, JUMP_IMPULSE, CLIMB_SPEED = 8, 120, 55, 0.7
local RESET_INTERVAL = 10

-- State
local isToggled = false
local targets = {}
local excludedPlayers = {}
local ghostFolder = nil
local modes = {"BLOB", "TIGHT CLUSTER", "GRID"}
local currentModeIdx = 1
local teamFilter, friendFilter, chamsEnabled = "OTHERS", true, true
local minimized = false
local lastResetTime = tick()
local lockedBaseCFrame = nil -- This will store the permanent spot for the session

-- UI Helpers
local function createButton(name, text, pos, size, color)
local btn = Instance.new("TextButton")
btn.Name, btn.Position, btn.Size = name, pos, size
btn.BackgroundColor3 = color or Color3.fromRGB(30, 30, 35)
btn.BackgroundTransparency = 0.1
btn.Text, btn.TextColor3 = text, Color3.new(1, 1, 1)
btn.Font, btn.TextSize = Enum.Font.GothamBold, 10
btn.TextScaled = true
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
local stroke = Instance.new("UIStroke", btn)
stroke.ApplyStrokeMode, stroke.Transparency = Enum.ApplyStrokeMode.Border, 0.8
return btn
end

-- Draggable Logic
local function makeDraggable(frame)
local dragging, dragInput, dragStart, startPos
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 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 then dragInput = input end end)
RunService.RenderStepped:Connect(function()
if dragging and dragInput then
local delta = dragInput.Position - dragStart
frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end

local screenGui, mainFrame, mainBtn, modeBtn, teamBtn, friendBtn, ghostBtn, excludeBtn, listContainer, searchBar, contentFrame

local function updateUIStrings()
if not mainBtn then return end
mainBtn.Text = isToggled and "SYSTEM ACTIVE [U]" or "FREEZER V1: READY [U]"
mainBtn.BackgroundColor3 = isToggled and Color3.fromRGB(150, 0, 0) or Color3.fromRGB(30, 30, 35)
modeBtn.Text = "MODE: " .. modes[currentModeIdx]
teamBtn.Text = "TEAM: " .. teamFilter
friendBtn.Text = friendFilter and "SKIP FRIENDS" or "ALL FRIENDS"
ghostBtn.Text = chamsEnabled and "CHAMS: ON" or "CHAMS: OFF"
end

local function refreshExclusionList()
if not listContainer or not listContainer:FindFirstChild("Scroll") then return end
local scroll = listContainer.Scroll
scroll:ClearAllChildren()
Instance.new("UIListLayout", scroll).Padding = UDim.new(0, 4)
local searchText = searchBar.Text:lower()
for _, p in ipairs(Players:GetPlayers()) do
if p == LocalPlayer then continue end
if searchText ~= "" and not p.Name:lower():find(searchText) then continue end
local isExcluded = excludedPlayers[p.UserId]
local pBtn = createButton("ExP", p.Name, UDim2.new(0,0,0,0), UDim2.new(1, -10, 0, 25), isExcluded and Color3.fromRGB(100, 30, 30) or Color3.fromRGB(30, 100, 30))
pBtn.Parent = scroll
pBtn.MouseButton1Click:Connect(function() excludedPlayers[p.UserId] = not excludedPlayers[p.UserId] refreshExclusionList() end)
end
scroll.CanvasSize = UDim2.new(0, 0, 0, #scroll:GetChildren() * 30)
end

local function setupUI()
local pGui = LocalPlayer:WaitForChild("PlayerGui")
if pGui:FindFirstChild("FreezerV1") then pGui.FreezerV1:Destroy() end
screenGui = Instance.new("ScreenGui", pGui) screenGui.Name = "FreezerV1" screenGui.ResetOnSpawn = false

mainFrame = Instance.new("Frame", screenGui)
mainFrame.Size, mainFrame.Position, mainFrame.BackgroundColor3 = UDim2.new(0, 520, 0, 150), UDim2.new(0.5, -260, 0, 60), Color3.fromRGB(20, 20, 20)
mainFrame.BackgroundTransparency = 0.1
Instance.new("UICorner", mainFrame)
makeDraggable(mainFrame)

local title = Instance.new("TextLabel", mainFrame)
title.Text, title.Size, title.Position = " FREEZER V1", UDim2.new(0, 100, 0, 25), UDim2.new(0, 0, 0, 0)
title.BackgroundTransparency, title.TextColor3, title.Font, title.TextSize, title.TextXAlignment = 1, Color3.new(1,1,1), Enum.Font.GothamBold, 10, Enum.TextXAlignment.Left

local minBtn = createButton("Min", "-", UDim2.new(1, -25, 0, 5), UDim2.new(0, 20, 0, 20), Color3.fromRGB(50, 50, 50))
minBtn.Parent = mainFrame

contentFrame = Instance.new("Frame", mainFrame)
contentFrame.Size, contentFrame.Position, contentFrame.BackgroundTransparency = UDim2.new(1, -10, 1, -35), UDim2.new(0, 5, 0, 30), 1

mainBtn = createButton("MainBtn", "", UDim2.new(0, 0, 0, 0), UDim2.new(1, 0, 0, 45))
mainBtn.Parent = contentFrame

local btnW = 0.19
modeBtn = createButton("ModeBtn", "", UDim2.new(0, 0, 0, 50), UDim2.new(btnW, 0, 0, 35))
teamBtn = createButton("TeamBtn", "", UDim2.new(0.2, 2, 0, 50), UDim2.new(btnW, 0, 0, 35))
friendBtn = createButton("FriendBtn", "", UDim2.new(0.4, 4, 0, 50), UDim2.new(btnW, 0, 0, 35))
ghostBtn = createButton("GhostBtn", "", UDim2.new(0.6, 6, 0, 50), UDim2.new(btnW, 0, 0, 35))
excludeBtn = createButton("ExcludeBtn", "EXCLUDE", UDim2.new(0.8, 8, 0, 50), UDim2.new(0.18, 0, 0, 35))
for _, b in ipairs({modeBtn, teamBtn, friendBtn, ghostBtn, excludeBtn}) do b.Parent = contentFrame end

local disclaimer = Instance.new("TextLabel", contentFrame)
disclaimer.Text = "Physics-simulated Chams; offsets may occur."
disclaimer.Size, disclaimer.Position = UDim2.new(1, 0, 0, 15), UDim2.new(0, 0, 1, -10)
disclaimer.BackgroundTransparency, disclaimer.TextColor3, disclaimer.Font, disclaimer.TextSize = 1, Color3.fromRGB(200, 80, 80), Enum.Font.Gotham, 9

listContainer = Instance.new("Frame", mainFrame)
listContainer.Size, listContainer.Position = UDim2.new(0, 180, 0, 250), UDim2.new(1, 10, 0, 0)
listContainer.BackgroundColor3, listContainer.Visible = Color3.fromRGB(25, 25, 25), false
Instance.new("UICorner", listContainer)

searchBar = Instance.new("TextBox", listContainer)
searchBar.Size, searchBar.Position, searchBar.PlaceholderText = UDim2.new(1, -10, 0, 25), UDim2.new(0, 5, 0, 5), "Search..."
searchBar.BackgroundColor3, searchBar.TextColor3, searchBar.Font, searchBar.Text = Color3.fromRGB(40, 40, 45), Color3.new(1,1,1), Enum.Font.Gotham, ""
Instance.new("UICorner", searchBar)
searchBar:GetPropertyChangedSignal("Text"):Connect(refreshExclusionList)

local bulk = Instance.new("Frame", listContainer)
bulk.Size, bulk.Position, bulk.BackgroundTransparency = UDim2.new(1, 0, 0, 25), UDim2.new(0, 0, 0, 35), 1
local cA = createButton("C", "NONE", UDim2.new(0, 5, 0, 0), UDim2.new(0.45, 0, 1, 0))
local aA = createButton("A", "ALL", UDim2.new(0.52, 0, 0, 0), UDim2.new(0.45, 0, 1, 0))
cA.Parent, aA.Parent = bulk, bulk

local scroll = Instance.new("ScrollingFrame", listContainer)
scroll.Name, scroll.Size, scroll.Position = "Scroll", UDim2.new(1, -10, 1, -70), UDim2.new(0, 5, 0, 65)
scroll.BackgroundTransparency, scroll.ScrollBarThickness = 1, 2

minBtn.MouseButton1Click:Connect(function()
minimized = not minimized
contentFrame.Visible, mainFrame.Size = not minimized, minimized and UDim2.new(0, 120, 0, 30) or UDim2.new(0, 520, 0, 150)
minBtn.Text, listContainer.Visible = minimized and "+" or "-", false
end)

mainBtn.MouseButton1Click:Connect(function() toggleLogic() end)
modeBtn.MouseButton1Click:Connect(function() currentModeIdx = (currentModeIdx % #modes) + 1 updateUIStrings() end)
teamBtn.MouseButton1Click:Connect(function() teamFilter = (teamFilter == "OTHERS") and "ALL" or "OTHERS" updateUIStrings() end)
friendBtn.MouseButton1Click:Connect(function() friendFilter = not friendFilter updateUIStrings() end)
ghostBtn.MouseButton1Click:Connect(function() chamsEnabled = not chamsEnabled updateUIStrings() end)
excludeBtn.MouseButton1Click:Connect(function() listContainer.Visible = not listContainer.Visible refreshExclusionList() end)
cA.MouseButton1Click:Connect(function() excludedPlayers = {} refreshExclusionList() end)
aA.MouseButton1Click:Connect(function() for _,p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer then excludedPlayers[p.UserId] = true end end refreshExclusionList() end)
updateUIStrings()
end

local function cleanup()
for id, data in pairs(targets) do
local p = Players:GetPlayerByUserId(id)
local root = p and p.Character and p.Character:FindFirstChild("HumanoidRootPart")
if root then root.CFrame = data.trueCFrame for _, v in ipairs(p.Character:GetDescendants()) do if v:IsA("BasePart") then v.Anchored = false end end end
end
if ghostFolder then ghostFolder:Destroy() end
targets = {}
lockedBaseCFrame = nil -- Clear the position lock when toggled off
end

function toggleLogic(isReset)
if not isReset then
isToggled = not isToggled
end

if isToggled then
local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if not root then
if not isReset then isToggled = false end
return
end

-- FIX: Lock the position only once per toggle
if not lockedBaseCFrame then
lockedBaseCFrame = root.CFrame * CFrame.new(0, 1.5, -12)
end

if isReset then cleanup_soft() end -- Using a soft cleanup to avoid flashing ghosts

ghostFolder = ghostFolder or Instance.new("Folder", workspace)
ghostFolder.Name = "FreezerGhosts"

local count = 0
for _, p in ipairs(Players:GetPlayers()) do
if p == LocalPlayer or excludedPlayers[p.UserId] then continue end
if (teamFilter == "OTHERS" and p.Team == LocalPlayer.Team) or (friendFilter and p:IsFriendsWith(LocalPlayer.UserId)) then continue end
local pRoot, pHum = p.Character and p.Character:FindFirstChild("HumanoidRootPart"), p.Character and p.Character:FindFirstChild("Humanoid")
if pRoot and pHum then
-- Re-use or Create Ghost logic
if not targets[p.UserId] then
local ghostPart = Instance.new("Part", ghostFolder)
ghostPart.Size, ghostPart.Transparency, ghostPart.CanCollide, ghostPart.Anchored = Vector3.new(2, 5, 1), 1, false, true
ghostPart.CFrame = pRoot.CFrame
local cham = Instance.new("BoxHandleAdornment", ghostPart)
cham.Size, cham.AlwaysOnTop, cham.ZIndex, cham.Adornee = Vector3.new(2.2, 5.2, 1.2), true, 5, ghostPart
cham.Color3, cham.Transparency = Color3.fromRGB(0, 255, 150), 0.5
local b = Instance.new("BillboardGui", ghostPart)
b.Size, b.AlwaysOnTop, b.ExtentsOffset = UDim2.new(0,80,0,40), true, Vector3.new(0,3,0)
local l = Instance.new("TextLabel", b)
l.Size, l.BackgroundTransparency, l.TextColor3, l.Font, l.TextSize = UDim2.new(1,0,1,0), 1, Color3.new(1,1,1), Enum.Font.GothamBold, 9

targets[p.UserId] = {trueCFrame = pRoot.CFrame, lastVel = Vector3.zero, verticalVel = 0, floorLevel = pRoot.CFrame.Y, ghostPart = ghostPart, label = l, humanoid = pHum, cham = cham}
end

local offset = Vector3.zero
if modes[currentModeIdx] == "GRID" then
local r, c = math.floor(count / 3), count % 3
offset = Vector3.new(c * 5 - 5, 0, r * -5)
elseif modes[currentModeIdx] == "BLOB" then
offset = Vector3.zero
else
offset = Vector3.new(math.random(-15,15)/10, 0, math.random(-15,15)/10)
end

targets[p.UserId].target = lockedBaseCFrame * CFrame.new(offset)
count = count + 1
end
end
else
cleanup()
end
updateUIStrings()
lastResetTime = tick()
end

-- Soft cleanup removes only target data, not the chams/folders to prevent flicker
function cleanup_soft()
for id, data in pairs(targets) do
local p = Players:GetPlayerByUserId(id)
if not p or not p.Character then
if data.ghostPart then data.ghostPart:Destroy() end
targets[id] = nil
end
end
end

UserInputService.InputBegan:Connect(function(i, g) if not g and i.KeyCode == Enum.KeyCode.U then toggleLogic() end end)

RunService.Heartbeat:Connect(function(dt)
if not screenGui or not screenGui.Parent then setupUI() end

if isToggled and (tick() - lastResetTime >= RESET_INTERVAL) then
toggleLogic(true)
end

if not isToggled then return end
local myPos = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")) and LocalPlayer.Character.HumanoidRootPart.Position or Vector3.zero

for id, data in pairs(targets) do
local p = Players:GetPlayerByUserId(id)
local root = p and p.Character and p.Character:FindFirstChild("HumanoidRootPart")
if root and data.humanoid then
local moveDir = data.humanoid.MoveDirection
if data.humanoid:GetState() == Enum.HumanoidStateType.Climbing then
data.verticalVel = data.ghostPart.CFrame.LookVector:Dot(moveDir) * (data.humanoid.WalkSpeed * CLIMB_SPEED)
data.lastVel, data.floorLevel = Vector3.zero, data.trueCFrame.Y
else
local targetVel = moveDir * data.humanoid.WalkSpeed
if targetVel.Magnitude > 0 then data.lastVel = targetVel else data.lastVel = data.lastVel * (1 - (FRICTION * dt)) end
if data.humanoid.Jump and math.abs(data.trueCFrame.Y - data.floorLevel) < 0.1 then data.verticalVel = JUMP_IMPULSE end
data.verticalVel = data.verticalVel - (GRAVITY * dt)
end
local nextPos = data.trueCFrame.Position + (data.lastVel * dt) + Vector3.new(0, data.verticalVel * dt, 0)
if nextPos.Y < data.floorLevel then nextPos = Vector3.new(nextPos.X, data.floorLevel, nextPos.Z) data.verticalVel = 0 end
data.trueCFrame = (moveDir.Magnitude > 0.1) and CFrame.lookAt(nextPos, nextPos + moveDir) or CFrame.new(nextPos) * data.trueCFrame.Rotation
data.ghostPart.CFrame, data.cham.Visible = data.trueCFrame, chamsEnabled
data.label.Text = string.format("%s\n%d Studs", p.Name, math.floor((data.trueCFrame.Position - myPos).Magnitude))

-- Keep them locked at the Original Position (lockedBaseCFrame)
root.CFrame = data.target
for _, v in ipairs(p.Character:GetDescendants()) do if v:IsA("BasePart") then v.Anchored = true end end
end
end
end)

setupUI()
[ View More ]
e0b8dc80-b65d-4f73-acfe-66a58419456d.webp


FREEZERLocks players into a formation in front of you while tracking their "true" movement with simulated ghosts.Works in a lot of games (put some in the comments).FeaturesFreeze Modes: Toggle between Blob (default), Tight Cluster, and Grid.Live Chams: Green ghost boxes track player walking, jumping, and climbing in real-time.Exclusion List: Searchable dropdown to select or ignore specific players.Smart Filters: One-tap buttons to ignore Friends or Teammates.Pro UI: Draggable, minimizable, and persists after you respawn.⌨️ Controls Key: Toggle Freeze/Release.Click &amp; Drag: Move the UI anywhere on your screen.Note: Chams are simulated; slight offsets may occur.Works in following games (WIP):Criminal Vs SWATOne TapTrench WarTetragon Fortress 2 (beware of votekick)[💝] Red VS Blue Tycoon2 Player Battle Tycoon
 
Back
Top