Robo Raptor Posted March 7, 2020 Share Posted March 7, 2020 I'm trying to put together my first basic script, however, I'm having an issue when setting a conditional sleep. The wait condition will randomly end (earlier than the timeout condition), this will happen 5+ times until all the bars are used up. I want the script to sleep until there are no chocolate bars left in the inventory. I've also used !myPlayer().isAnimating() with the same random stops happening. if(inventory.contains("Knife") && inventory.contains("Chocolate bar")){ if (bank.isOpen()){ getKeyboard().typeKey((char) 27);} log("Using knife with chocolate"); inventory.getItem("Knife").interact("Use"); inventory.getItem("Chocolate bar").interact("Use"); log("Sleeping until no bars remain"); Timing.waitCondition(() -> !inventory.contains("Chocolate bar"), 16000); } I'm using the wait condition from The Viking: public static boolean waitCondition(BooleanSupplier condition, int timeout) { return waitCondition(condition, 20, timeout); } If anyone can point me in the right direction it would be helpful. Quote Link to comment Share on other sites More sharing options...
BravoTaco Posted March 7, 2020 Share Posted March 7, 2020 4 hours ago, Robo Raptor said: I'm trying to put together my first basic script, however, I'm having an issue when setting a conditional sleep. The wait condition will randomly end (earlier than the timeout condition), this will happen 5+ times until all the bars are used up. I want the script to sleep until there are no chocolate bars left in the inventory. I've also used !myPlayer().isAnimating() with the same random stops happening. if(inventory.contains("Knife") && inventory.contains("Chocolate bar")){ if (bank.isOpen()){ getKeyboard().typeKey((char) 27);} log("Using knife with chocolate"); inventory.getItem("Knife").interact("Use"); inventory.getItem("Chocolate bar").interact("Use"); log("Sleeping until no bars remain"); Timing.waitCondition(() -> !inventory.contains("Chocolate bar"), 16000); } I'm using the wait condition from The Viking: public static boolean waitCondition(BooleanSupplier condition, int timeout) { return waitCondition(condition, 20, timeout); } If anyone can point me in the right direction it would be helpful. Try to use the normal ConditionalSleep method to see if its an error, with the method you are currently using. new ConditionalSleep(16000) { @Override public boolean condition() throws InterruptedException { return !getInventory().contains("Chocolate bar"); } }.sleep(); Quote Link to comment Share on other sites More sharing options...
Robo Raptor Posted March 7, 2020 Author Share Posted March 7, 2020 Thanks BravoTaco. After I tried this I got the same result but I finally figured out that this is entirely my fault. 16000 ms is not enough time to afk crush an inventory worth and I had a random return condition for onloop which skewed the 16000ms it was terminating at. I extended the maximum condition time and all is working well now. Thanks again for the help. Quote Link to comment Share on other sites More sharing options...