MarWo22 Posted February 20, 2018 Share Posted February 20, 2018 This is my first script i made. Everything works fine except when it starts using the items. It will keep spamming them. I've used if(!myplayer().isanimating()). But there seems to be a small gap in the animations so it will still be spamming the vials of water and herbs and it will eventually cancel the crafting. import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "MarWo", info = "simple bot for making unfinished potions", logo = "", name = "HerbloreBot", version = 0) public class Bot extends Script { private enum State { BANK, MAKE }; private State getState() { if(inventory.contains(227) && inventory.contains(255)) return State.MAKE; return State.BANK; } public void onStart(){ } public void onExit() { } public int onLoop() throws InterruptedException { switch (getState()) { case BANK: if(!getBank().isOpen()) { getBank().open(); } sleep(100); bank.depositAll(); sleep(100); bank.withdraw(227, 14); sleep(100); bank.withdraw(255, 14); sleep(100); bank.close(); break; case MAKE: if(!getWidgets().isVisible(270, 14)) { if(!myPlayer().isAnimating()) { inventory.interact("Use", 227); sleep(250); inventory.interact("Use", 255); } } if (getWidgets().isVisible(270, 14)) { getWidgets().interact(270, 14, "Make"); } break; } return 500; } } Quote Link to comment Share on other sites More sharing options...
Chris Posted February 20, 2018 Share Posted February 20, 2018 delete ur code and start over take a look at this http://osbot.org/api https://osbot.org/api/org/osbot/rs07/utility/ConditionalSleep.html Quote Link to comment Share on other sites More sharing options...
Juggles Posted February 20, 2018 Share Posted February 20, 2018 Conditional sleeps and animation timers are your friend sir Quote Link to comment Share on other sites More sharing options...
Alek Posted February 20, 2018 Share Posted February 20, 2018 I'd recommend learning conditional sleeping, this would both solve your issue and make it more responsive. Since it seems you're new to programming, you could add a 500ms sleep after your second interaction. Also you have : if (!getWidgets().isVisible(270, 14)) { //do stuff } if (getWidgets().isVisible(270, 14)) { //do more stuff } You can replace this with: if (!getWidgets().isVisible(270, 14)) { } else { } The else is faster on the machine since it's only checking that if statement once. The else is the inverse of the if statement. In human english terms, you would read this as, "if widget 270, 14 is NOT NOT visible", NOT NOT, double not so this is true, therefore "if widget 270, 14 is visible". Edit: accidentally missed a ! Quote Link to comment Share on other sites More sharing options...
MarWo22 Posted February 21, 2018 Author Share Posted February 21, 2018 Sorry im new to scripting. Can someone do an example of the conditional sleep cause i cant get it to work. Quote Link to comment Share on other sites More sharing options...
Chikan Posted February 21, 2018 Share Posted February 21, 2018 20 minutes ago, MarWo22 said: Sorry im new to scripting. Can someone do an example of the conditional sleep cause i cant get it to work. Quote Link to comment Share on other sites More sharing options...
gptaqbc Posted February 21, 2018 Share Posted February 21, 2018 Good luck man! Quote Link to comment Share on other sites More sharing options...