Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local collectionService = game:GetService("CollectionService")
- game:GetService("RunService").Heartbeat:Connect(function()
- for i, mob in pairs(collectionService:GetTagged("mob")) do
- spawn(function()
- if #collectionService:GetTags(mob) < 1 then return end
- local humanoid = mob:WaitForChild("Humanoid")
- local hrp = mob:WaitForChild("HumanoidRootPart")
- local dmg = mob.Settings.Damage.Value
- local cooldown = mob.Settings.AttackCooldown.Value
- local range = mob.Settings.AttackRange.Value
- local coolingDown = mob.Settings.CoolingDown
- mob.Head.MobHealthGui.BarBackground.Bar.Size = UDim2.new(1 / humanoid.MaxHealth * humanoid.Health, 0, 1, 0)
- mob.Head.MobHealthGui.BarBackground.HealthText.Text = humanoid.Health .. "/" .. humanoid.MaxHealth
- local closestCharacter
- for i, p in pairs(game.Players:GetPlayers()) do
- local char = p.Character
- if char and char:FindFirstChild("HumanoidRootPart") and char.Humanoid.Health > 0 then
- local distance = (char.HumanoidRootPart.Position - hrp.Position).Magnitude
- if not closestCharacter then closestCharacter = char end
- local closestDistance = (closestCharacter.HumanoidRootPart.Position - hrp.Position).Magnitude
- if distance < closestDistance then
- closestCharacter = char
- end
- end
- end
- if closestCharacter then
- humanoid:MoveTo(closestCharacter.HumanoidRootPart.Position)
- if not coolingDown.Value then
- local ray = Ray.new(hrp.Position, hrp.CFrame.LookVector * range)
- local part = workspace:FindPartOnRay(ray, workspace.MobsFolder)
- if part then
- local plr = game.Players:GetPlayerFromCharacter(part.Parent) or game.Players:GetPlayerFromCharacter(part.Parent.Parent)
- if plr then
- coolingDown.Value = true
- humanoid:LoadAnimation(script.AttackAnimation):Play()
- plr.Character.Humanoid:TakeDamage(dmg)
- wait(cooldown)
- coolingDown.Value = false
- end
- end
- end
- end
- end)
- end
- end)
Add Comment
Please, Sign In to add comment