This is based of maxi's draynor chopper!
This is my first script.
Start in Catherby bank with a axe equipped as I have not learned that far slowly learning!
Tested for 1 hour got 1 random and 800 oak logs!
2 problems with script is it hasn't got random support other then moving of the camera will add more on a later date!, Banks the axe
@ScriptManifest(name = "PPOaker", author = "PengPhin", version = 1.0D)class PPOaker extends Script { int bankId = 2213 int[] treeIds = [3037, 10083, 13413, 1281] enum State { IDLE, CHOPPING, WALK_TO_BANK, PIN, BANKING, WALK_TO_OakS } def state = State.IDLE def currentTree = null void onStart() { if (client.getInventory().isFull()) state = State.WALK_TO_BANK } int onLoop() { switch (state) { case State.IDLE: return onIdle() case State.CHOPPING: return onChopping() case State.WALK_TO_BANK: return walkToBank() case State.BANKING: return bank() case State.WALK_TO_OakS: return walkToOaks() } return 3000 + random(2000) } int onIdle() { if (client.getInventory().isFull()) { state = State.WALK_TO_BANK //client.moveCameraToEntity(closestObject(bankId)) return 800 + gRandom(800, 400) } currentTree = closestObject(treeIds) if(currentTree != null) { log("Closest Oak tree : (${currentTree.getX()}, ${currentTree.getY()})") selectEntityOption(currentTree, "Chop down", "Oak") if (random(5) == 0) { client.moveCameraToEntity(currentTree) sleep(700 + gRandom(500, 200)) } } return 1500 + gRandom(2000, 500); } int onChopping() { if (client.getInventory().isFull()) { state = State.WALK_TO_BANK //client.moveCameraToEntity(closestObject(bankId)) return 800 + gRandom(800, 400) } if (random(30) == 0 && currentTree != null && currentTree.exists()) client.moveCameraToEntity(currentTree) if (currentTree == null) { state = State.IDLE log("Chopped down Oak!") return 500 + gRandom(1000, 500) } if (!currentTree.exists()) { state = State.IDLE currentTree = null log("Chopped down Oak!") } return 500 + gRandom(1000, 500) } int walkToBank() { selectEntityOption(closestObject(bankId), "Bank", "Bank booth") if (myX() <= 2756 && myX() >= 3429 && myY() >= 2809 && myY() <= 3435) { return 800 + gRandom(500, 200) } sleep(1000 + gRandom(300, 50)) if (client.getBank().isOpen()) state = State.BANKING return 500 + gRandom(1000, 400) } int bank() { client.getBank().depositAllExcept() state = State.WALK_TO_OakS def tree = closestObject(treeIds) //if (tree != null) //client.moveCameraToEntity(tree) return 500 + gRandom(700, 300) } int walkToOaks() { log("Walking to Oak Trees") currentTree = closestObject(treeIds) if (currentTree != null) { log("Closest Oak tree : (${currentTree.getX()}, ${currentTree.getY()})") selectEntityOption(currentTree, "Chop down", "Oak") client.moveCameraToEntity(currentTree) } return 2000 + gRandom(800, 300) } void onMessage(String message) { if (message == "You swing your axe at the tree.") { log("Chopping down Oak tree!") state = State.CHOPPING } else if (message == "You get some logs.") { state = State.IDLE } else if (message == "Your inventory is too full to hold any more logs.") { state = State.WALK_TO_BANK } } }
Please let me know what you think!