1. if shared.settings then return end
  2. shared.settings = {
  3. killaura = true,
  4. maxdistance = 30,
  5. debugging = true
  6. }
  7. local Players = game:GetService("Players")
  8. local lp = Players.LocalPlayer or Players:GetPropertyChangedSignal("LocalPlayer"):Wait() or Players.LocalPlayer
  9. local function getchar(plr,yield)
  10. local plr = plr or lp
  11. return plr.Character or yield and plr.CharacterAdded:Wait()
  12. end
  13. local function gethumanoid(plr,yield)
  14. local plr = plr or lp
  15. local char = getchar(plr,yield)
  16. return yield and char:WaitForChild("Humanoid") or char:FindFirstChildWhichIsA("Humanoid")
  17. end
  18. local function getDamageRemote()
  19. local char = getchar(nil,true)
  20. local Tool = char:FindFirstChildWhichIsA("Tool")
  21. local Remote = Tool and Tool:FindFirstChild("DamageRemote")
  22. return Remote
  23. end
  24. local function GetClosestPlayer()
  25. local dist = shared.settings.maxdistance or 1/0
  26. local closest_player
  27. for i,v in next, Players:GetPlayers() do
  28. if v ~= lp then
  29. local char = getchar(v)
  30. if char and not char:FindFirstChildWhichIsA("ForceField") then
  31. local BasePart = char:FindFirstChildWhichIsA("BasePart")
  32. local Humanoid = gethumanoid(v)
  33. local DistanceFromTarget = BasePart and lp:DistanceFromCharacter(BasePart.CFrame.Position)
  34. if DistanceFromTarget and DistanceFromTarget <= dist and Humanoid and Humanoid.Health > 0 then
  35. dist = DistanceFromTarget
  36. closest_player = v
  37. end
  38. end
  39. end
  40. end
  41. return closest_player,dist
  42. end
  43. repeat
  44. local DamageRemote = getDamageRemote()
  45. if DamageRemote then
  46. local Target,Distance = GetClosestPlayer()
  47. if Target then
  48. DamageRemote:FireServer(gethumanoid(Target))
  49. if shared.settings.debugging then
  50. warn("Attacked",Target,"from",Distance,"studs away")
  51. end
  52. end
  53. end
  54. task.wait()
  55. until not shared.settings.killaura