Created
September 23, 2012 15:01
-
-
Save phl0w/3771915 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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