Skip to content

Instantly share code, notes, and snippets.

@phl0w
Created September 23, 2012 15:01
Show Gist options
  • Select an option

  • Save phl0w/3771915 to your computer and use it in GitHub Desktop.

Select an option

Save phl0w/3771915 to your computer and use it in GitHub Desktop.
import org.powerbot.core.event.events.MessageEvent;
import org.powerbot.core.event.listeners.MessageListener;
import org.powerbot.core.script.ActiveScript;
import org.powerbot.core.script.job.Task;
import org.powerbot.core.script.job.state.Node;
import org.powerbot.core.script.job.state.Tree;
import org.powerbot.game.api.Manifest;
import org.powerbot.game.api.methods.Walking;
import org.powerbot.game.api.methods.interactive.Players;
import org.powerbot.game.api.methods.node.SceneEntities;
import org.powerbot.game.api.methods.tab.Inventory;
import org.powerbot.game.api.methods.tab.Skills;
import org.powerbot.game.api.methods.widget.Camera;
import org.powerbot.game.api.util.Filter;
import org.powerbot.game.api.util.Random;
import org.powerbot.game.api.util.Time;
import org.powerbot.game.api.wrappers.node.Item;
import org.powerbot.game.api.wrappers.node.SceneObject;
@Manifest(authors = {"_phl0w"}, name = "Powerchopper", description = "Chop 'n drop", version = 1.0d)
public class Powerchopper extends ActiveScript implements MessageListener {
/**
* Constants
*/
private static final int[] TREE_ID = {61191, 61192, 61193};
private static final int LOG_ID = 1511;
/**
* Variables
*/
private int chopped = 0;
private int startXp = 0;
private int startLevel = 0;
private long startTime;
/**
* jobs (strategies)
*/
private Tree jobs = null;
@Override
public int loop() {
if (jobs == null) {
jobs = new Tree(new Node[]{new Chop(), new Drop()});
}
final Node job = jobs.state();
if (job != null) {
jobs.set(job);
getContainer().submit(job);
job.join();
return 0;
}
return Random.nextInt(200, 300);
}
@Override
public void onStart() {
startTime = System.currentTimeMillis();
startXp = Skills.getExperience(Skills.WOODCUTTING);
startLevel = Skills.getLevel(Skills.WOODCUTTING);
}
@Override
public void onStop() {
log.info("Time run: " + Time.format(System.currentTimeMillis() - startTime));
log.info("XP gain: " + (Skills.getExperience(Skills.WOODCUTTING) - startXp));
log.info("Lvl gain: " + (Skills.getLevel(Skills.WOODCUTTING) - startLevel));
log.info("Chopped: " + chopped);
}
@Override
public void messageReceived(MessageEvent me) {
String msg = me.getMessage();
if (msg.contains("get some")) {
chopped++;
}
}
private class Chop extends Node {
private SceneObject tree;
@Override
public boolean activate() {
tree = SceneEntities.getNearest(TREE_ID);
return !Inventory.isFull() && Players.getLocal().getAnimation() == -1 && !Players.getLocal().isMoving() && tree != null;
}
@Override
public void execute() {
if (tree.isOnScreen()) {
tree.interact("Chop");
Task.sleep(400, 500); //I recommend you use dynamic sleep timers, this is just for the sake of showing you it's task.sleep and not time.sleep!
} else {
Camera.turnTo(tree);
if (!tree.isOnScreen()) {
Walking.walk(tree);
}
}
}
}
private class Drop extends Node {
@Override
public boolean activate() {
return Inventory.isFull();
}
@Override
public void execute() {
for (Item i : Inventory.getItems(new Filter<Item>() {
@Override
public boolean accept(Item i) {
return i.getId() == LOG_ID;
}
})) {
i.getWidgetChild().interact("Drop");
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment