Jump to content

When entering combat.


PandieDev

Recommended Posts

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
Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

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