Jump to content

Conditional Sleep Condition Randomly Ending


Recommended Posts

Posted

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.

 

Posted
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();
Posted

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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...