Advertisement
geethepaster

Minion move

Jun 28th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.02 KB | None | 0 0
  1. local PathFindingService = game:GetService("PathfindingService")
  2. local deaths = workspace.Deaths
  3. local PATROL_DELAY = 0
  4. local enemy = script.Parent.Parent
  5. local humanoid = enemy.Humanoid
  6. local humanoidRootPart = enemy.HumanoidRootPart
  7. local pointA = workspace.Firetowers.FireSentry2.UpperTorso
  8. local pointB = workspace.Firetowers.FireSentry1.UpperTorso
  9. local currentDestination = pointA
  10. local my_target = nil
  11. local p = nil
  12. local points = nil
  13. local plr_value = false
  14. local minion_value = false
  15. local enabled = true
  16. local animation = Instance.new("Animation")
  17. animation.AnimationId = "http://www.roblox.com/asset/?id=1998751758"
  18.  
  19. function distance_to_object(obj)
  20.     local total = nil
  21.     if obj then
  22.         local magn = (obj.UpperTorso.Position - script.Parent.Parent.UpperTorso.Position).magnitude
  23.         total = magn
  24.     end
  25.     return total
  26. end
  27.  
  28. function Find_Nearest(plr, minion, tower)
  29.     local nearest = nil
  30.     if minion ~= nil then
  31.         local plr_magn = (humanoidRootPart.Position - plr:WaitForChild("UpperTorso").Position).magnitude
  32.         local minion_magn = (humanoidRootPart.Position - minion:WaitForChild("UpperTorso").Position).magnitude
  33.         local tower_magn = (humanoidRootPart.Position - tower:WaitForChild("UpperTorso").Position).magnitude
  34.         if plr_magn < minion_magn and plr_magn < tower_magn then
  35.             nearest = plr_magn
  36.             return plr
  37.         elseif minion_magn < plr_magn and minion_magn < tower_magn then
  38.             nearest = minion_magn
  39.             return minion
  40.         elseif tower_magn < plr_magn and tower_magn < minion_magn then
  41.             nearest = tower_magn
  42.             return tower
  43.         end
  44.     end
  45. end
  46.  
  47.  
  48. function Calculate_Path(start, target)
  49.     local startingPosition = start.Position
  50.     local goalPosition = target:WaitForChild("UpperTorso").Position
  51.     local path = PathFindingService:FindPathAsync(startingPosition, goalPosition)
  52.     return path:GetWaypoints()
  53. end
  54.  
  55. while wait() do
  56.     local Moveloop = coroutine.create(function()
  57.         while wait() do
  58.             local currentplayer = nil
  59.             local currentminion = nil
  60.             local current_tower = nil
  61.             local player = workspace.Teams.Red:GetChildren()
  62.             local minion = workspace.FireMinions:GetChildren()
  63.             local tower = workspace.Firetowers:GetChildren()
  64.             for i, object in pairs(player) do
  65.                 currentplayer = object
  66.             end
  67.  
  68.             for i, object in pairs(minion) do
  69.                 currentminion = object
  70.             end
  71.            
  72.             for i, object in pairs(tower) do
  73.  
  74.                 current_tower = object
  75.             end
  76.             my_target = Find_Nearest(currentplayer, currentminion, current_tower)
  77.             if my_target ~= nil then
  78.                 if distance_to_object(my_target) > 4 then
  79.                     humanoid.WalkSpeed = 10
  80.                     p = Calculate_Path(humanoidRootPart, my_target)
  81.                     for waypointIndex,waypoint in pairs(p) do
  82.                         humanoid:MoveTo(waypoint.Position)
  83.                         script.Parent.MoveToFinished:Wait()
  84.                     end
  85.                 else
  86.                     humanoid.WalkSpeed = 0
  87.                     local animTrack = humanoid:LoadAnimation(animation)
  88.                     enabled = false
  89.                     wait(.01)
  90.                     animTrack:Play()
  91.                     wait(1)
  92.                     enabled = true
  93.                     animTrack:Stop()
  94.                 end
  95.             end
  96.         end
  97.     end)
  98.     coroutine.resume(Moveloop)
  99. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement