Jump to content

When entering combat.


Recommended Posts

Posted (edited)

Hi,

i am writing a script that loots a ground item and then world hops and repeats. When the player enters combat it runs to a safespot waits for combat delay hops world and tries again. This works but i notice it bugs out when the script is in the middle of an iteraction or world hopping etc...

I would like the script to stop whats its doing as soon as it enters combat and move to the safespot.

What would be the correct way to achieve this.

Thanks in advance.

        if(getSkills().getDynamic(Skill.HITPOINTS) < 6){
            if(ItemCountInInventory() <= 14){
                paint.setCurrentStatus("regenerating some health");
                WalkExact(SAFE_SPOT);
                sleep(60_000);
            }
        } else if(!myPlayer().isUnderAttack()){
            TakeItem(item, position, ItemCountInInventory());
        } else if (myPlayer().isUnderAttack()) {
            WalkExact(SAFE_SPOT);
            sleep(5000);
            getWorlds().hop(nextWorldInOrder(true));
        }
    private void TakeItem(GroundItem item, Position position, long inventoryCount){
        paint.setCurrentStatus("Looting item :" + ItemCountInInventory());
        if(item == null || !position.equals(item.getPosition())){
            getWorlds().hop(nextWorldInOrder(true));
        } else {
            item.interact("Take");
            Sleep.sleepUntil(() -> inventoryCount < ItemCountInInventory(), 5000, 100);
            log("InventoryCount " + ItemCountInInventory());
        }
    }

 

Edited by PandieDev
Posted
1 minute ago, skillerkidos1 said:
Sleep.sleepUntil(() -> myPlayer().isUnderAttack() || inventoryCount < ItemCountInInventory(), 5000, 100);

Hi, Thanks for the reply.

That is indeed an oversight on my part.

But how would this workd with  hopping world? i assume i would need to write the hopping myself ?

getWorlds().hop();

 

Posted
11 minutes ago, PandieDev said:

Hi, Thanks for the reply.

That is indeed an oversight on my part.

But how would this workd with  hopping world? i assume i would need to write the hopping myself ?

getWorlds().hop();

 

Sorry my question might not be clear. I have the hopping itself.

But when its hopping (scrolling the world list, selecting the world, etc... ) When it gets attacked then it just stands there.

Posted
20 minutes ago, skillerkidos1 said:

you could try something with onMessage if it says the cant hop msg sleep 10 seconds
 

@Override
public void onMessage(Message msg) throws InterruptedException {}

it seems that the break condition does help.

 

public boolean hop(int world,
                   java.util.concurrent.Callable<java.lang.Boolean> breakCondition)

Hops to the specified world id if the destination is not already the world you are in.

Parameters:
    breakCondition - Return true to break the hopping process 

Is there any way to make the world hopping instant like it is with keybinds on runelite?

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...