Imthabawse Posted April 6, 2019 Share Posted April 6, 2019 (edited) Feedback appreciated Thing's to add: Better walking method to bank and to ruins ( always walks the same path using webwalking ) it's a shame this don't randomize it self better Better control over when bot toggles run ( toggles run when it only has 15% for example ) I plan on adding energy pot support since this is a F2P based script which might counter act this a bit if energy pots are being used. Completely stop the loop cycle and have mouse move off screen for a bit at random intervals or after so many random loops ( if possible ) as some sort of "anti-ban" feature or "human-like" feature if you will. Might not matter much but seems logical. Code: public class Firecrafter extends Script { private Area PortalArea = new Area(2578, 4844, 2569, 4854); private Area RuinsArea = new Area(3312, 3250, 3307, 3253); private void bank() throws InterruptedException { Entity portal = getObjects().closest(PortalArea, "Portal"); if(getInventory().contains("Fire rune") && !myPlayer().isAnimating() && !myPlayer().isMoving() && portal != null) { log("Teleporting out.."); portal.interact("Use"); new ConditionalSleep(5000) { @Override public boolean condition() { return myPlayer().isAnimating() && RuinsArea.contains(myPlayer()); } }.sleep(); } if(getInventory().contains("Fire rune") && !myPlayer().isMoving()) { log("Walking to bank.."); getWalking().webWalk(Banks.AL_KHARID); new ConditionalSleep(5000) { @Override public boolean condition() { return Banks.AL_KHARID.contains(myPlayer()); } }.sleep(); } if(Banks.AL_KHARID.contains(myPlayer()) && getInventory().contains("Fire rune")) { log("Banking.."); getBank().open(); sleep(random(800,1200)); getBank().depositAll(); sleep(random(825,1125)); getBank().withdrawAll("Pure essence"); sleep(random(700,900)); getBank().close(); new ConditionalSleep(5000) { @Override public boolean condition() { return getInventory().contains("Pure essence"); } }.sleep(); }else if(Banks.AL_KHARID.contains(myPlayer()) && !getInventory().contains("Pure essence")) { getBank().open(); sleep(random(800,1200)); getBank().withdrawAll("Pure essence"); sleep(random(825,1125)); getBank().close(); new ConditionalSleep(5000) { @Override public boolean condition() { return getInventory().contains("Pure essence"); } }.sleep(); } } private void craft() { Entity ruins = getObjects().closest("Mysterious ruins"); Entity altar = getObjects().closest("Altar"); if (!RuinsArea.contains(myPlayer()) && !PortalArea.contains(myPlayer()) && !myPlayer().isAnimating() && !myPlayer().isMoving()) { log("Walking to ruins.."); getWalking().webWalk(RuinsArea); new ConditionalSleep(5000) { @Override public boolean condition() { return RuinsArea.contains(myPlayer()); } }.sleep(); } if (RuinsArea.contains(myPlayer()) && ruins != null) { log("Entering"); ruins.interact("Enter"); new ConditionalSleep(5000) { @Override public boolean condition() { return PortalArea.contains(myPlayer()) && myPlayer().isVisible(); } }.sleep(); } if (PortalArea.contains(myPlayer()) && altar != null) { log("Crafting runes.."); altar.interact("Craft-rune"); new ConditionalSleep(5000) { @Override public boolean condition() { return myPlayer().isAnimating() && getInventory().contains("Fire rune"); } }.sleep(); } } private void lvlUp() { if(getDialogues().isPendingContinuation()) { getDialogues().clickContinue(); new ConditionalSleep(5000) { @Override public boolean condition() { return !getDialogues().isPendingContinuation(); } }.sleep(); } } @Override public int onLoop() throws InterruptedException { if(getInventory().contains("Pure essence")) { craft(); }else{ bank(); lvlUp(); } return 500; } } Edited April 7, 2019 by Imthabawse Quote Link to comment Share on other sites More sharing options...
Imthabawse Posted April 7, 2019 Author Share Posted April 7, 2019 Update - Seems like WebWalker has been improved with better routing. Makes for way faster and efficient trips Also added some changes that will be posted above in original code. Quote Link to comment Share on other sites More sharing options...