local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local screenGui = Instance.new("ScreenGui") screenGui.Name = "ScatterFreezeGui" screenGui.ResetOnSpawn = false screenGui.Parent = PlayerGui local button = Instance.new("TextButton") button.Size = UDim2.new(0, 200, 0, 50) button.Position = UDim2.new(0.5, -100, 0, 50) button.BackgroundColor3 = Color3.fromRGB(30, 30, 30) button.Text = "SCATTER [T]: READY" button.TextColor3 = Color3.new(1, 1, 1) button.Font = Enum.Font.GothamBold button.TextSize = 16 button.Parent = screenGui local isToggled = false local playerPositions = {} local function toggleFreeze() isToggled = not isToggled if isToggled then local char = LocalPlayer.Character if char and char:FindFirstChild("HumanoidRootPart") then button.Text = "SCATTER [T]: LOCKED" button.BackgroundColor3 = Color3.fromRGB(0, 120, 215) -- Capture the base point in front of you local baseCFrame = char.HumanoidRootPart.CFrame * CFrame.new(0, 1.5, -12) playerPositions = {} -- Reset the map local count = 0 for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and not player:IsFriendsWith(LocalPlayer.UserId) then -- Calculate a simple grid (3 players per row) local row = math.floor(count / 3) local col = count % 3 local offset = Vector3.new(col * 5 - 5, 0, row * -5) -- 5 studs apart playerPositions[player.UserId] = baseCFrame * CFrame.new(offset) count = count + 1 end end else isToggled = false end else button.Text = "SCATTER [T]: READY" button.BackgroundColor3 = Color3.fromRGB(30, 30, 30) playerPositions = {} for _, player in ipairs(Players:GetPlayers()) do if player.Character then for _, part in ipairs(player.Character:GetDescendants()) do if part:IsA("BasePart") then part.Anchored = false end end end end end end button.MouseButton1Click:Connect(toggleFreeze) UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Enum.KeyCode.T then toggleFreeze() end end) RunService.Heartbeat:Connect(function() if not isToggled then return end for userId, targetCFrame in pairs(playerPositions) do local player = Players:GetPlayerByUserId(userId) if player and player.Character then local root = player.Character:FindFirstChild("HumanoidRootPart") if root then root.CFrame = targetCFrame -- Freeze and kill momentum for _, part in ipairs(player.Character:GetDescendants()) do if part:IsA("BasePart") then part.Anchored = true part.AssemblyLinearVelocity = Vector3.zero part.AssemblyAngularVelocity = Vector3.zero end end end end end end)