Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local player = Players.LocalPlayer
- -- Ajustes
- local VELOCIDADE_MAX = 60 -- studs/s legítimos (dash, queda etc.)
- local FOLGA = 12 -- tolerância para lag
- local MOSTRAR_HITBOX = true
- local TAMANHO = Vector3.new(4, 6, 2)
- local OFFSET = CFrame.new(0, 0, 0)
- -- Opcional: RemoteEvent "Denuncia" em ReplicatedStorage
- local denuncia = ReplicatedStorage:FindFirstChild("Denuncia")
- -- Hitbox visual
- local visual = Instance.new("Part")
- visual.Name = "HitboxDebug"
- visual.Size = TAMANHO
- visual.Color = Color3.fromRGB(255, 0, 0)
- visual.Transparency = MOSTRAR_HITBOX and 0.6 or 1
- visual.Anchored = true
- visual.CanCollide = false
- visual.CanQuery = false
- visual.CanTouch = false
- visual.Parent = workspace
- local ultimoCFrame = nil
- local ultimoAviso = 0
- local function proteger(character)
- ultimoCFrame = nil
- local root = character:WaitForChild("HumanoidRootPart")
- local humanoid = character:WaitForChild("Humanoid")
- -- Se algo ancorar seu personagem, desancora
- root:GetPropertyChangedSignal("Anchored"):Connect(function()
- if root.Anchored and not character:GetAttribute("TeleportLiberado") then
- root.Anchored = false
- end
- end)
- -- Segurança extra: impede ser sentado à força
- humanoid.Seated:Connect(function(ativo)
- if ativo and not character:GetAttribute("SentarLiberado") then
- humanoid.Sit = false
- humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
- end
- end)
- end
- RunService.Heartbeat:Connect(function(dt)
- local char = player.Character
- local root = char and char:FindFirstChild("HumanoidRootPart")
- local hum = char and char:FindFirstChildOfClass("Humanoid")
- if not root or not hum or hum.Health <= 0 then
- ultimoCFrame = nil
- return
- end
- -- Teleporte legítimo do seu jogo: char:SetAttribute("TeleportLiberado", true) e depois false
- if char:GetAttribute("TeleportLiberado") then
- ultimoCFrame = root.CFrame
- return
- end
- if ultimoCFrame then
- local dist = (root.Position - ultimoCFrame.Position).Magnitude
- if dist > VELOCIDADE_MAX * dt + FOLGA then
- -- Foi puxado: volta e zera a velocidade
- root.AssemblyLinearVelocity = Vector3.zero
- root.AssemblyAngularVelocity = Vector3.zero
- root.CFrame = ultimoCFrame
- if denuncia and os.clock() - ultimoAviso > 2 then
- ultimoAviso = os.clock()
- denuncia:FireServer(dist)
- end
- return
- end
- end
- ultimoCFrame = root.CFrame
- end)
- RunService.RenderStepped:Connect(function()
- local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
- if root then
- visual.CFrame = root.CFrame * OFFSET
- end
- end)
- if player.Character then proteger(player.Character) end
- player.CharacterAdded:Connect(proteger)
Advertisement
Add Comment
Please, Sign In to add comment