Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Help interacting with items

Featured Replies

Hello! I am very new to the osbot API and have limited experience in Java but am not at all new to coding in general. With that being said, I am having a hard time interacting with two items in my inventory. I am testing with buckets of water/clay and would simply like to interact with the two.

 

My case statement currently looks like this:

case MAKE_CLAY:
           log("Made it to case MAKE_CLAY");
            sleep(random(250,1200));
            if (getInventory().contains("Clay")) {
                log("Got the clay");
            }
            if (getInventory().contains("Bucket of water")) {
                log("Got the water");
            }
            getInventory().interact("Use", "Bucket of water");
            sleep(random(110,780));
            getInventory().interact("Use", "Clay");
            sleep(random(6000,1000));
            break;

I feel like I am following the documentation and my logs to check for the clay and water are reaching the debugger so I'm not sure what I'm doing wrong. Any help or advice for a newbie like me is appreciated :)

32 minutes ago, lnsomnia said:

Hello! I am very new to the osbot API and have limited experience in Java but am not at all new to coding in general. With that being said, I am having a hard time interacting with two items in my inventory. I am testing with buckets of water/clay and would simply like to interact with the two.

 

My case statement currently looks like this:

case MAKE_CLAY:
           log("Made it to case MAKE_CLAY");
            sleep(random(250,1200));
            if (getInventory().contains("Clay")) {
                log("Got the clay");
            }
            if (getInventory().contains("Bucket of water")) {
                log("Got the water");
            }
            getInventory().interact("Use", "Bucket of water");
            sleep(random(110,780));
            getInventory().interact("Use", "Clay");
            sleep(random(6000,1000));
            break;

I feel like I am following the documentation and my logs to check for the clay and water are reaching the debugger so I'm not sure what I'm doing wrong. Any help or advice for a newbie like me is appreciated :)

not sure whats working and not with yours but..

if (getInventory().contains("Clay) && getInventory().contains("Bucket of water)) {
    if (getInventory().interact("Use, "Bucket of water")) {
          if (getInventory().interact("Use", "Clay")) {
               conditional sleep here
      }
}

conditional sleeps: https://osbot.org/forum/topic/127193-conditional-sleep-with-lambda-expressions/
 

  • Author
19 minutes ago, FuryShark said:

not sure whats working and not with yours but..

if (getInventory().contains("Clay) && getInventory().contains("Bucket of water)) {
    if (getInventory().interact("Use, "Bucket of water")) {
          if (getInventory().interact("Use", "Clay")) {
               conditional sleep here
      }
}

conditional sleeps: https://osbot.org/forum/topic/127193-conditional-sleep-with-lambda-expressions/
 

Thanks for the reply and help! The second if condition in your snippet is returning false for some reason :( dunno why I can't seem to interact with anything. I'm not even sure what to test at this point.

getinventory.interact() is not a valid method.

Quote

        if (getInventory().contains("Clay") && getInventory().contains("Bucket of water")) {
            // We have both. lets use them
            if (getInventory().isItemSelected()) {
                // Item is selected in inventory
                if (!getInventory().getSelectedItemName().equals("Bucket of water")) {
                    // If, somehow, a different item is selected, deselect it
                    getInventory().deselectItem();
                } else {
                    // Bucket of water is currently selected item. Use it on clay
                    Item clay = getInventory().getItem("Clay");
                    if (clay != null && clay.interact("Use")) {
                        Timing.waitCondition(() -> getInventory().contains("Soft clay"), 2000);
                    }
                }
            } else {
                // Select the bucket of water
                Item bucket = getInventory().getItem("Bucket of water");
                if (bucket != null && bucket.interact("Use")) {
                    Timing.waitCondition(() -> getInventory().isItemSelected(), 2000);
                }
            }
        }

Link to extremely useful Timing methods

 

EDIT: Im incorrect, Inventory class extends ItemContainer so it does have the interact method

Edited by camaro 09

  • Author
On 10/22/2019 at 8:07 PM, camaro 09 said:

getinventory.interact() is not a valid method.

Link to extremely useful Timing methods

 

EDIT: Im incorrect, Inventory class extends ItemContainer so it does have the interact method

Oh dude! This is awesome, thanks! I really appreciate you taking the time to write that. Makes perfect sense too. Eclipse on the other hand is still yelling at me with some new errors so I'm gonna have to take a step further back and figure out what's wrong.  Probably need to study some more Java too. :/ Thank you!

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.