Advertisement
Freshbloodb

Untitled

Dec 12th, 2024 (edited)
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.10 KB | None | 0 0
  1. -- Variables globales fuera del loadstring
  2. _G.FOLLOW_DISTANCE = _G.FOLLOW_DISTANCE or 6 -- Distancia mínima para perseguir
  3. _G.PREDICTION_TIME = _G.PREDICTION_TIME or 0.3 -- Tiempo de predicción para calcular la posición futura
  4. _G.enablePerseguirIgnorando = _G.enablePerseguirIgnorando ~= nil and _G.enablePerseguirIgnorando or true -- Habilitar/deshabilitar la persecución
  5.  
  6. -- Código del loadstring
  7. local Players = game:GetService("Players")
  8. local RunService = game:GetService("RunService")
  9. local LocalPlayer = Players.LocalPlayer
  10.  
  11. -- Caché de referencias
  12. local localCharacter, localHumanoidRootPart, localHumanoid
  13.  
  14. -- Actualizar referencias del personaje
  15. local function UpdateLocalCharacter()
  16. localCharacter = LocalPlayer.Character
  17. if localCharacter then
  18. localHumanoidRootPart = localCharacter:FindFirstChild("HumanoidRootPart")
  19. localHumanoid = localCharacter:FindFirstChild("Humanoid")
  20. else
  21. localHumanoidRootPart, localHumanoid = nil, nil
  22. end
  23. end
  24.  
  25. -- Verificar si un personaje tiene ítems
  26. local function DoesCharacterHaveItem(character)
  27. if not character then return false end
  28. for _, tool in ipairs(character:GetChildren()) do
  29. if tool:IsA("Tool") then
  30. return true
  31. end
  32. end
  33. return false
  34. end
  35.  
  36. -- Obtener el jugador más cercano válido
  37. local function GetClosestValidPlayer()
  38. local closestPlayer, closestDistance = nil, math.huge
  39. for _, player in ipairs(Players:GetPlayers()) do
  40. if player ~= LocalPlayer then
  41. local character = player.Character
  42. if character and character:FindFirstChild("Humanoid") and character:FindFirstChild("HumanoidRootPart") then
  43. local humanoid = character.Humanoid
  44. local humanoidRootPart = character.HumanoidRootPart
  45.  
  46. if humanoid.Health > 0 and not DoesCharacterHaveItem(character) then
  47. local distance = (humanoidRootPart.Position - localHumanoidRootPart.Position).Magnitude
  48. if distance < closestDistance then
  49. closestPlayer, closestDistance = player, distance
  50. end
  51. end
  52. end
  53. end
  54. end
  55. return closestPlayer
  56. end
  57.  
  58. -- Predecir posición futura
  59. local function PredictPosition(player)
  60. local character = player.Character
  61. if not character then return nil end
  62.  
  63. local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
  64. if not humanoidRootPart then return nil end
  65.  
  66. local velocity = humanoidRootPart.Velocity
  67. return humanoidRootPart.Position + velocity * _G.PREDICTION_TIME
  68. end
  69.  
  70. -- Función principal de persecución
  71. local function PursueTarget()
  72. if not _G.enablePerseguirIgnorando or not localHumanoidRootPart or not DoesCharacterHaveItem(localCharacter) then
  73. return
  74. end
  75.  
  76. local targetPlayer = GetClosestValidPlayer()
  77. if targetPlayer then
  78. local predictedPosition = PredictPosition(targetPlayer)
  79. if predictedPosition then
  80. local distance = (predictedPosition - localHumanoidRootPart.Position).Magnitude
  81. if distance > _G.FOLLOW_DISTANCE then
  82. localHumanoid:MoveTo(predictedPosition)
  83. end
  84. end
  85. end
  86. end
  87.  
  88. -- Monitorear cambios de estado (muerte/reaparición)
  89. local function MonitorCharacter()
  90. while true do
  91. -- Esperar que el personaje reaparezca
  92. if not localCharacter or not localHumanoid or localHumanoid.Health <= 0 then
  93. LocalPlayer.CharacterAdded:Wait() -- Esperar a que el personaje reaparezca
  94. UpdateLocalCharacter() -- Actualizar las referencias
  95. end
  96. wait(0.1) -- Reducir frecuencia de comprobación
  97. end
  98. end
  99.  
  100. -- Conexión al evento Heartbeat
  101. RunService.Heartbeat:Connect(function()
  102. if not localCharacter then
  103. UpdateLocalCharacter() -- Si el personaje no está disponible, actualizarlo
  104. end
  105. PursueTarget() -- Ejecutar la persecución
  106. end)
  107.  
  108. -- Inicializar el personaje
  109. UpdateLocalCharacter()
  110.  
  111. -- Iniciar monitoreo en segundo plano
  112. task.spawn(MonitorCharacter)
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement