public boolean WalkAlongPath(int[][] path, boolean AscendThroughPath, int distanceFromEnd) {
if (distanceToPoint(AscendThroughPath ? path[path.length - 1][0] : path[0][0],
AscendThroughPath ? path[path.length - 1][1] : path[0][1]) <= distanceFromEnd)
return true;
else {
WalkAlongPath(path, AscendThroughPath);
return false;
}
}
public void WalkAlongPath(int[][] path, boolean AscendThroughPath) {
int destination = 0;
for (int i = 0; i < path.length; i++)
if (distanceToPoint(path[i][0], path[i][1]) < distanceToPoint(path[destination][0], path[destination][1]))
destination = i;
if (script.client.getMyPlayer().isMoving() && distanceToPoint(path[destination][0], path[destination][1]) > (script.isRunning() ? 3 : 2))
return;
if (AscendThroughPath && destination != path.length - 1 || !AscendThroughPath && destination != 0)
destination += (AscendThroughPath ? 1 : -1);
try {
log("Walking to node:" + destination);
script.walk(new Position(path[destination][0], path[destination][1], 0));
Thread.sleep(700 + MethodProvider.random(600));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private int distanceToPoint(int pointX, int pointY) {
return (int) Math.sqrt(Math.pow(script.client.getMyPlayer().getX() - pointX, 2)
+ Math.pow(script.client.getMyPlayer().getY() - pointY, 2));
}
This allows you to have your character walk along a path, starting at any point along the path. It will walk like a human, not like a bot.
This is how you'd use it:
private int[][] path1 = new int[][] { { 3206, 3209 }, { 3215, 3211 }, { 3217, 3218 }, { 3225, 3218 },
{ 3235, 3220 }, { 3242, 3226 }, { 3252, 3226 }, { 3251, 3235 }, };
public void walkToGoblins() {
WalkAlongPath(path1, true);
}
public void walkToBankFromGoblins() {
WalkAlongPath(path1, false);
}
public void walkToGoblinsThenAttack() {
if(WalkAlongPath(path1, true, 1)) //The 1 is the distance away from destination
state = State.AttackGoblins;
}
Enjoy.