-- LocalScript (StarterPlayerScripts) local RunService = game:GetService("RunService") local Players = game:GetService("Players") local player = Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local hrp = char:WaitForChild("HumanoidRootPart") local taunts = {"Is that your best?", "Learn to aim bro..", "Too slow!", "Missed me!"} local DODGE_FORCE = 80 -- magnitud de la impulsión (ajusta) local DODGE_TIME = 0.12 -- tiempo que aplicamos la fuerza (segundos) local COOLDOWN = 0.8 local last = 0 local function applyImpulse(direction) if tick() - last < COOLDOWN then return end last = tick() -- asegurar que direction es unit vector direction = direction.Unit -- Crear BodyVelocity para empujar (se quita después) local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(1e5, 1e5, 1e5) bv.Velocity = direction * DODGE_FORCE bv.P = 1250 bv.Parent = hrp -- Opcional: reproducir animación de roll aquí -- quitar BodyVelocity después de DODGE_TIME task.delay(DODGE_TIME, function() if bv and bv.Parent then bv:Destroy() end end) -- mensaje local (si tienes RemoteEvent para server, pide que lo muestre ahí) local msg = taunts[math.random(1,#taunts)] -- si existe un RemoteEvent "RequestDodge" en ReplicatedStorage, lo disparamos para que el server lo muestre local rs = game:GetService("ReplicatedStorage") local remote = rs:FindFirstChild("RequestDodge") if remote and remote:IsA("RemoteEvent") then -- enviamos solo el texto, servidor decide si muestra y cómo remote:FireServer(msg) else -- fallback: mensaje local en consola o en pantalla para test pcall(function() game.StarterGui:SetCore("ChatMakeSystemMessage", { Text = msg; Color = Color3.fromRGB(255,100,100); Font = Enum.Font.SourceSansBold; TextSize = 20; }) end) end end -- Ejemplo simple de detector (tú puedes reemplazar por tu predictor) RunService.Heartbeat:Connect(function() -- ejemplo mínimo: si una parte llamada "HitboxTest" está cerca, dodge local hb = workspace:FindFirstChild("HitboxTest") if hb and (hb.Position - hrp.Position).Magnitude < 4 then -- elegir aleatorio: izquierda/derecha/atrás relativo a HRP local choices = { -hrp.CFrame.RightVector, hrp.CFrame.RightVector, -hrp.CFrame.LookVector } local dir = choices[math.random(1,#choices)] applyImpulse(dir) end end)