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.

Smithing interface thing

Featured Replies

Hai,

 

I made this little crafting interface manager to make your life more easy. I also included an example for usage.

 

SmithItem enum

SmithItem.java

 

import java.awt.*;

public enum SmithItem {
    // Row 1
    DAGGER(
            new Rectangle(20, 49, 30, 30),
            new int[] {121, 153}
    ),
    SWORD(
            new Rectangle(20, 103, 30, 30),
            new int[] {112, 152}
    ),
    SCIMITAR(
            new Rectangle(20, 157, 30, 30),
            new int[] {114, 143}
    ),
    LONG_SWORD(
            new Rectangle(20, 211, 30, 30),
            new int[] {113, 116}
    ),
    TWO_HAND_SWORD(
            new Rectangle(20, 265, 20, 30),
            new int[] {115, 117}
    ),
    // Row 2
    AXE(
            new Rectangle(95, 49, 30, 30),
            new int[] {118, 154}
    ),
    MACE(
            new Rectangle(95, 103, 30, 30),
            new int[] {120, 157}
    ),
    WARHAMMER(
            new Rectangle(95, 157, 30, 30),
            new int[] {111, 145}
    ),
    BATTLE_AXE(
            new Rectangle(95, 211, 30, 30),
            new int[] {119, 122}
    ),
    // Row 3
    CHAIN_BODY(
            new Rectangle(168, 49, 30, 30),
            new int[] {125, 136}
    ),
    PLATE_LEGS(
            new Rectangle(168, 103, 30, 30),
            new int[] {126, 137}
    ),
    PLATE_SKIRT(
            new Rectangle(168, 157, 30, 30),
            new int[] {128, 138}
    ),
    PLATE_BODY(
            new Rectangle(168, 211, 30, 30),
            new int[] {127, 139}
    ),
    OIL_LANTERN_FRAME(
            new Rectangle(168, 265, 30, 30),
            new int[] {171, 169}
    ),
    // Row 4
    MEDIUM_HELM(
            new Rectangle(270, 49, 30, 30),
            new int[] {129, 155}
    ),
    FULL_HELM(
            new Rectangle(270, 103, 30, 30),
            new int[] {130, 140}
    ),
    SQUARE_SHIELD(
            new Rectangle(270, 157, 30, 30),
            new int[] {131, 141}
    ),
    KITE_SHIELD(
            new Rectangle(270, 211, 30, 30),
            new int[] {132, 142}
    ),
    NAILS(
            new Rectangle(270, 265, 30, 30),
            new int[] {173, 172}
    ),
    // Row 5
    DART_TIPS(
            new Rectangle(350, 49, 30, 30),
            new int[] {134, 156}
    ),
    ARROWTIPS(
            new Rectangle(350, 103, 30, 30),
            new int[] {135, 158}
    ),
    THOWING_KNIVES(
            new Rectangle(350, 157, 30, 30),
            new int[] {133, 159}
    ),
    IRON_SPIT(
            new Rectangle(350, 211, 30, 30),
            new int[] {123, 160}
    ),
    // Row 6
    BOLTS(
            new Rectangle(439, 49, 30, 30),
            new int[] {178, 176}
    ),
    LIMBS(
            new Rectangle(439, 103, 30, 30),
            new int[] {175, 177}
    );

    SmithItem(Rectangle rectangle, int[] childIds) {
        this.getRectangle = rectangle;
        this.getChildIds = childIds;
    }

    public final Rectangle getRectangle;
    public final int[] getChildIds;
}

 

Interactions and such

SmithingInterface.java

 

package Superheater;

import org.osbot.script.MethodProvider;
import org.osbot.script.Script;
import org.osbot.script.mouse.RectangleDestination;
import org.osbot.script.rs2.model.Item;

public class SmithingInterface {
    Script script;
    public SmithingInterface(Script script) {
        this.script = script;
    }

    public boolean close() throws InterruptedException {
        while (isOpen() && script.client.getInterface(312).isVisible()) {
            script.client.getInterface(312).getChild(184).interact();
            script.sleep(MethodProvider.random(750, 1250));
        }

        return isOpen();
    }

    public boolean makeAmount(SmithItem smithItem, int amount, String bar) throws InterruptedException {
        if (isOpen()) {
            if  (amount >= 10 && getBarsNeeded(smithItem) * 10 <= getBarAmount(bar)) {
                return  make10(smithItem, bar);
            }

            if  (amount >= 5 && getBarsNeeded(smithItem) * 5 <= getBarAmount(bar)) {
                return  make5(smithItem, bar);
            }

            if  (amount >= 1 && getBarsNeeded(smithItem) <= getBarAmount(bar)) {
                return  make1(smithItem, bar);
            }

            script.log("It appears you cannot make " + amount +" " + script.client.getInterface(312).getChild(smithItem.getChildIds[0]).getMessage() + "'s.");
            close();
        }

        return false;
    }

    public boolean make10(SmithItem smithItem, String bar) throws InterruptedException {
        if (isOpen()) {
            if (getBarsNeeded(smithItem) * 10 <= getBarAmount(bar)) {
                if (!smithItem.equals(SmithItem.DART_TIPS) && !smithItem.equals(SmithItem.ARROWTIPS) && !smithItem.equals(SmithItem.THOWING_KNIVES) && !smithItem.equals(SmithItem.IRON_SPIT)) {
                    return script.selectOption(null, new RectangleDestination(smithItem.getRectangle), "Make 10");
                }
                return script.selectOption(null, new RectangleDestination(smithItem.getRectangle), "Make 10 sets");
            } else {
                script.log("You cannot make that many.");
                close();
            }
        }

        return false;
    }

    public boolean make5(SmithItem smithItem, String bar) throws InterruptedException {
        if (isOpen()) {
            if (getBarsNeeded(smithItem) * 5 <= getBarAmount(bar)) {
                if (!smithItem.equals(SmithItem.DART_TIPS) && !smithItem.equals(SmithItem.ARROWTIPS) && !smithItem.equals(SmithItem.THOWING_KNIVES) && !smithItem.equals(SmithItem.IRON_SPIT)) {
                    return script.selectOption(null, new RectangleDestination(smithItem.getRectangle), "Make 5");
                }
                return script.selectOption(null, new RectangleDestination(smithItem.getRectangle), "Make 5 sets");
            } else {
                script.log("You cannot make that many.");
                close();
            }
        }

        return false;
    }

    public boolean make1(SmithItem smithItem, String bar) throws InterruptedException {
        if (isOpen()) {
            if (getBarsNeeded(smithItem) <= getBarAmount(bar)) {
                if (!smithItem.equals(SmithItem.DART_TIPS) && !smithItem.equals(SmithItem.ARROWTIPS) && !smithItem.equals(SmithItem.THOWING_KNIVES) && !smithItem.equals(SmithItem.IRON_SPIT)) {
                    return script.selectOption(null, new RectangleDestination(smithItem.getRectangle), "Make");
                }
                return script.selectOption(null, new RectangleDestination(smithItem.getRectangle), "Make set");
            } else {
                script.log("You cannot make that many.");
                close();
            }
        }

        return false;
    }
    
    public int getBarsNeeded(SmithItem smithItem) {
        if (isOpen()) {
            return Integer.parseInt(script.client.getInterface(312).getChild(smithItem.getChildIds[1]).getMessage().split("")[1]);
        }
        return -1;
    }

    public String getActualName(SmithItem smithItem) {
        return script.client.getInterface(312).getChild(smithItem.getChildIds[0]).getMessage();
    }

    public int getBarAmount(String name) {
        int bars = 0;

        for (Item item : script.client.getInventory().getItems()) {
            if (item != null && item.getName().toLowerCase().contains((name.toLowerCase() + " bar"))) {
                bars++;
            }
        }

        return bars;
    }

    public boolean isOpen() {
        return script.client.getInterface(312).isValid() && script.client.getInterface(312).isVisible();
    }
}


 

example

Tester.java

 

package smithingMenu;

import org.osbot.script.Script;
import org.osbot.script.ScriptManifest;

import java.awt.*;

@ScriptManifest(name = "smith interface tester", info = "", version = 0.1D, author = "Jelknab")
public class Tester extends Script {
    SmithingInterface smithingInterface = new SmithingInterface(this);
    SmithItem smithItem = SmithItem.PLATE_BODY;

    @Override
    public int onLoop() throws InterruptedException {
        smithingInterface.makeAmount(smithItem, 15, "iron");

        return 5000;
    }

    @Override
    public void onPaint(Graphics g) {
        if (smithingInterface.isOpen()) {
            Rectangle r = smithItem.getRectangle;
            g.drawRect(r.x, r.y, r.width, r.height);
        }
    }
}

 

And a picture because fuck you.

 

3Awq6.jpg

 

Giving me credits would be nice, but i won't force you to.

 

Have fun.

 

And burn in hell.

Edited by jelknab

Haha dat topic title x3

Thx for burning in hell? ^^

Good job man!

grtz

H0ppy

Guest
This topic is now closed to further replies.

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.