-- LocalScript (StarterPlayerScripts) local Players = game:GetService("Players") local ContextActionService = game:GetService("ContextActionService") local player = Players.LocalPlayer -- configurações de "descongelamento" padrão (ajuste se quiser) local DEFAULT_WALKSPEED = 16 local DEFAULT_JUMPPOWER = 50 local function blockControls() -- impede inputs de movimento e pulo ContextActionService:BindAction("FreezeControls", function() return Enum.ContextActionResult.Sink end, false, Enum.PlayerActions.CharacterForward, Enum.PlayerActions.CharacterBackward, Enum.PlayerActions.CharacterLeft, Enum.PlayerActions.CharacterRight, Enum.PlayerActions.Jump) end local function unblockControls() pcall(function() ContextActionService:UnbindAction("FreezeControls") end) end local function freezeCharacter(char) local humanoid = char and char:FindFirstChildOfClass("Humanoid") local hrp = char and char:FindFirstChild("HumanoidRootPart") if humanoid then humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.PlatformStand = true -- evita animações físicas de movimento end if hrp then hrp.Velocity = Vector3.new(0,0,0) hrp.RotVelocity = Vector3.new(0,0,0) end blockControls() end local function unfreezeCharacter(char) local humanoid = char and char:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.WalkSpeed = DEFAULT_WALKSPEED humanoid.JumpPower = DEFAULT_JUMPPOWER humanoid.PlatformStand = false end unblockControls() end player.CharacterAdded:Connect(function(char) -- espera humanoid para configurar local humanoid = char:WaitForChild("Humanoid", 5) if humanoid then freezeCharacter(char) -- se quiser descongelar automaticamente depois de X segundos, usa um delay aqui -- delay(5, function() unfreezeCharacter(char) end) end end) -- se já tiver personagem ao executar if player.Character then freezeCharacter(player.Character) end