It is stuttering, because you are not waiting to get to a waypoint b4 aiming for the next, almost imediately.
Just go to the page and modify the script to your liking…
Bot.FindPath = function(finish, PointM, MaxPoint, MaxDist)
local MaxPoint = MaxPoint or 1
local PointM = PointM or 1
local MaxDist = MaxDist or 100
local Am = 1
local path = ReturnPath(Tor.Position, finish, MaxDist)
– local path = pathfinding:ComputeRawPathAsync(Tor.Position, finish, MaxDist)
local points = path:GetPointCoordinates()
local Impeded = nil
local LastDist = -1 -- Initialize old Distance
local skip = false
local ListEnd = #points
for i, point in pairs(points) do
if Am == PointM then
local j = 24 -- deadman's clutch
if not skip or i == ListEnd then-- hack for diagonal - Reduces resolution/accuracy by half though...
Hum:MoveTo(point + (point - Tor.Position).unit)
–skip = true
if Tor.Position.y < point.y - 4 then -- If next point is more than 5 studs above us
Hum.Jump = true
end
repeat
j = j - 1
wait(.07) -- better place for wait; before measuring distance: Old way had old informatin for "Until" check.
TorP = Tor.Position
distance = (Vector3.new(point.x, TorP.y, point.z) - TorP).magnitude -- are-we-there-yet
Impeded = math.abs(distance - LastDist)
LastDist = distance
until distance < 2.3 or Impeded < .002 or j < 1 -- Impeded: a way-out of logic for Bot,who is at an impass.
else
skip = false
end -- Diagonal?
if j < 1 then
print (“Too Long in get-there loop”)
Hum.Jump = true
end
if Impeded < .001 then -- 'Impeded' accuarcy.
Hum.Jump = true -- Jump to get-up high stairs (risers).
end -- Impeded?
end -- Am
if Am == MaxPoint then
Am = 1
else
Am = Am + 1
end
end -- for
end – func
Bot.FindDynamicPath = function(finish)
local path = pathfinding:ComputeRawPathAsync(Tor.Position, finish, 500)
local points = path:GetPointCoordinates()
local point = points[1]
if point then
Hum:MoveTo(point)
repeat
distance = (point - Tor.Position).magnitude
wait()
until distance < 3
Bot.FindDynamicPath(finish)
end
end
Bot.ShowPath = function(start, finish)
local path = pathfinding:ComputeRawPathAsync(start, finish, 500)
local points = path:GetPointCoordinates()
for _, point in pairs(points) do
local part = Instance.new(“Part”, Workspace)
part.FormFactor = Enum.FormFactor.Custom
part.Size = Vector3.new(2,2,2)
part.CFrame = CFrame.new(point)
part.Anchored = true
part.CanCollide = false
part.BrickColor = BrickColor.Blue()
table.insert(Showed, part)
end
end
Bot.ClearPaths = function()
for i,v in pairs(Showed) do
v:Destroy()
Showed[i] = nil
end
end
Bot.GetBackwardsCoordinates = function(Path)
local BackPath = {}
local points = Path:GetPointCoordinates()
for i = NumTab(points), 1, -1 do
table.insert(BackPath, points[1])
end
return BackPath
end
Bot.GetBackwardsPath = function(Path)
local points = Path:GetPointCoordinates()
local finish = points[1]
local start = points[#points]
return pathfinding:ComputeRawPathAsync(start, finish, 500)
end
Bot.MovePlayer = function(Player, finish)
local Char = Player.Character
local Tor = Char.Torso
local Hum = Char.Humanoid
local path = pathfinding:ComputeRawPathAsync(Tor.Position, finish, 500)
local points = path:GetPointCoordinates()
local point = points[1]
if point then
Hum:MoveTo(point)
repeat
distance = (point - Tor.Position).magnitude
wait()
until distance < 3
Bot.MovePlayer(Player, finish)
end
end
return Bot