V1.1 Released!
Hello,
For all my scripts I require a walking class so I made this class that DOESN'T glitch/pause on breaks.
Example (V1.1):
This class/package is able to:
Manage the run energy Open doors (ONLY closed ones) Clicks next Position when it is in range for smooth walking Path randomization which can be turned of for each position
DOESN'T glitch/stop Easy to use! Has a debug paint
Requirements/How to implement:
Import the jar first (You can also open the JAR with 7Zip and go to the walker folder for the source)
States makes this alot easier.
First you need to make a new PathTile, a PathTile is a class that extends Position so you can use it as a Position aswell.
By not specifying the randomize boolean it will be true (so randomized)
PathTile tile = new PathTile(Entity ent);
PathTile tile = new PathTile(Entity ent, boolean randomize);
PathTile tile = new PathTile(int x, int y, int z);
PathTile tile = new PathTile(int x, int y, int z, int randomize);
Then you make a PathTile array
PathTile[] pathTiles = new PathTile[] { new PathTile(3186, 3429, 0),
new PathTile(3191, 3429, 0), new PathTile(3196, 3429, 0),
new PathTile(3196, 3424, 0), new PathTile(3197, 3419, 0, false) };
// By not specifying the randomize boolean it will be true (so randomized)
After that you can make a new Path
Path path = new Path(Script s, PathTile[] pathtiles, int maxRandom);
// For example
Path path = new Path(this, pathTiles, 2);
// This will make a new Path with the Path Tiles we made before and the randomization value is 2. (So the x can vary between -2 and 2)
Then we need to make our walker class
Walker walker = new Walker(Script s, int doorDistance);
// For example
Walker walker = new Walker(this, 2);
So how do we combine these things?
Because it doesn't glitch on breaks you should use states.
if (State.START_WALK) {
path.start();
}
if (State.IS_WALKING) {
walker.walkPath(path);
}
// For the IS_WALKING state you can use path.isWalking();
// For the START_WALK state you could use an area for example.
If you want to draw the debug paint then put this in your onPaint:
//Make walker and your path public/private/protected
public void onPaint(Graphics g) {
this.walker.drawDebug(g, this.path);
}
If you want to draw the path on screen then put this in your onPaint:
public void onPaint(Graphics g) {
this.walker.drawPath(g, this.path, Color.CYAN, Color.RED);
}
If you don't understand it watch this very basic implementation video:
--Updating
Changelog;
---------------V1.2---------------
Added Walker.recover();
It will try to find the closest PathTile of the last path and start walking from there.
Useful to put in your Idle state (where nothing happens so your bot is stuck)
---------------V1.1---------------
Added drawPath(Graphics g, Path p, Color c1, Color c2) - Credits to jelknab
Added doorDistance to the Walker constructor: Walker w = new Walker(Script s, int doorDistance) : if doorDistance is 0 then it won't detect doors!
Changed the randomization, the path will be randomized when you use Path.start() and not when getting new points.
Source is now in the Walker folder.
---------------V1.0---------------
Release
Download V1.2: http://uppit.com/8vp0h4o867xc/AIOWalker.jar
Source (Pastebin) V1.2:
Path.java: http://pastebin.com/hcUjnafE
PathTile.java: http://pastebin.com/4FB7nqYk
Walker.java: http://pastebin.com/37tjiZ4g
Download V1.1: http://uppit.com/vwqn9srba1k1/AIOWalker.jar
Source (Pastebin) V1.1:
Path.java: http://pastebin.com/hcUjnafE
PathTile.java: http://pastebin.com/4FB7nqYk
Walker.java: http://pastebin.com/60M51rcu
Download V1.0: http://uppit.com/tlub9ozv2t3o/AIOWalker.jar
Source (Pastebin) V1.0:
Path.java: http://pastebin.com/y7GdDZLG
PathTile.java: http://pastebin.com/VBK0cTnR
Walker.java: http://pastebin.com/FV013cG9