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

Acerd

Members
  • Joined

  • Last visited

Everything posted by Acerd

  1. can i see source
  2. cause "auto" is not the name of your Autocaster instance, its "caster". so !caster.isAutocasting()
  3. getCombat().isFighting()
  4. Here's my own autocaster I made: Autocaster.java import org.osbot.rs07.api.ui.Tab; import org.osbot.rs07.script.MethodProvider; public class Autocaster { private static final int AUTOCAST_CONFIG = 108; private CachedWidget openPanel = new CachedWidget(593, 25); private CachedWidget panel = new CachedWidget(548, 61); //private CachedWidget cancel = new CachedWidget(201, 0, 0); private CachedWidget spellWidget; private MethodProvider api; public Autocaster(MethodProvider api) { this.api = api; } public boolean isAutocasting() { return api.getConfigs().get(AUTOCAST_CONFIG) != 0; } public boolean isAutocasting(Items spell) { return api.getConfigs().get(AUTOCAST_CONFIG) == spell.getConfigValue(); } public void openPanel(Items spell) throws InterruptedException { if (api.getTabs().getOpen() != Tab.ATTACK) { TabHotkey.COMBAT.openTab(api); } else { if (openPanel.getWidget(api.getWidgets()) != null) { if (openPanel.getWidget(api.getWidgets()).interact()) { new CSleep(() -> isSpellVisible(spell), 2_500).sleep(); } } } } public void selectSpell(Items spell) { if (isSpellVisible(spell)) { if (spellWidget.getWidget(api.getWidgets()).interact()) { new CSleep(() -> isAutocasting(), 2_500).sleep(); } } } public void autoCastSpell(Items spell) throws InterruptedException { if (!isSpellVisible(spell)) openPanel(spell); else { selectSpell(spell); } } public boolean isPanelOpen() { return panel.getWidget(api.getWidgets()) != null; } public boolean isSpellVisible(Items spell) { spellWidget = new CachedWidget(spell.getRoot(), spell.getChild(), spell.getChild2()); return spellWidget.getWidget(api.getWidgets()) != null; } } CachedWidget.java import org.osbot.rs07.api.Widgets; import org.osbot.rs07.api.ui.RS2Widget; public class CachedWidget { private Integer parentID; private Integer childID; private Integer child2ID; private String text; private RS2Widget widget; public CachedWidget(final int parentID, final int childID, final int child2ID) { this.parentID = parentID; this.childID = childID; this.child2ID = child2ID; } public CachedWidget(final int parentID, final int childID) { this.parentID = parentID; this.childID = childID; } public CachedWidget(final String text) { this.text = text; } public RS2Widget getWidget(final Widgets widgets) { if (widget == null) cacheWidget(widgets); return widget; } private void cacheWidget(final Widgets widgets) { RS2Widget widget; if (text != null) widget = widgets.getWidgetContainingText(text); else if (child2ID != null) widget = widgets.get(parentID, childID, child2ID); else widget = widgets.get(parentID, childID); this.widget = widget; } } Items.java import org.osbot.rs07.api.ui.MagicSpell; import org.osbot.rs07.api.ui.RS2Widget; import org.osbot.rs07.api.ui.Spells.NormalSpells; import org.osbot.rs07.script.MethodProvider; public enum Items { AIR_STRIKE("Wind strike", NormalSpells.WIND_STRIKE, 201, 0, 1, 3), WATER_STRIKE("Water strike", NormalSpells.WATER_STRIKE, 201, 0, 2, 5), EARTH_STRIKE("Earth strike", NormalSpells.EARTH_STRIKE, 201, 0, 3, 7), FIRE_STRIKE("Fire strike", NormalSpells.FIRE_STRIKE, 201, 0, 4, 9), AIR_BOLT("Wind bolt", NormalSpells.WIND_BOLT, 201, 0, 5, 11), WATER_BOLT("Water bolt", NormalSpells.WATER_BOLT, 201, 0, 6, 13), EARTH_BOLT("Earth bolt", NormalSpells.EARTH_BOLT, 201, 0, 7, 15), FIRE_BOLT("Fire bolt", NormalSpells.FIRE_BOLT, 201, 0, 8, 17), AIR_BLAST("Wind blast", NormalSpells.WIND_BLAST, 201, 0, 9, 19), WATER_BLAST("Water blast", NormalSpells.WATER_BLAST, 201, 0, 10, 21), EARTH_BLAST("Earth blast", NormalSpells.EARTH_BLAST, 201, 0, 11, 23), FIRE_BLAST("Fire blast", NormalSpells.FIRE_BLAST, 201, 0, 12, 25), WIND_WAVE("Wind wave", NormalSpells.WIND_WAVE, 201, 0, 13, 27), WATER_WAVE("Water wave", NormalSpells.WATER_WAVE, 201, 0, 14, 29), EARTH_WAVE("Earth wave", NormalSpells.EARTH_WAVE, 201, 0, 15, 31), FIRE_WAVE("Fire wave", NormalSpells.FIRE_WAVE, 201, 0, 16, 33), IBAN_BLAST("Iban blast", NormalSpells.IBAN_BLAST), CRUMBLE_UNDEAD("Crumble undead", NormalSpells.CRUMBLE_UNDEAD, 201, 0, 0, 35), MAGIC_DART("Magic dart", NormalSpells.MAGIC_DART, 201, 0, 0, 37), CLAWS_OF_GUTHIX("Claws of Guthix", NormalSpells.CLAWS_OF_GUTHIX), SARADOMIN_STRIKE("Saradomin strike", NormalSpells.SARADOMIN_STRIKE), FLAMESS_OF_ZAMORAK("Flames of Zamorak", NormalSpells.FLAMES_OF_ZAMORAK), CONFUSE("Confuse", NormalSpells.CONFUSE), WEAKEN("Weaken", NormalSpells.WEAKEN), CURSE("Curse", NormalSpells.CURSE), STUN("Stun", NormalSpells.STUN); Items(String name, MagicSpell spell, int root, int child, int child2, int configValue) { this.name = name; this.magicSpell = spell; this.root = root; this.child = child; this.child2 = child2; this.configValue = configValue; } Items(String name, MagicSpell spell) { this.name = name; this.magicSpell = spell; } private MagicSpell magicSpell; private String name; private int root, child, child2, configValue; @Override public String toString() { return name; } public MagicSpell getMagicSpell() { return magicSpell; } public int getRoot() { return root; } public int getChild() { return child; } public int getChild2() { return child2; } public int getConfigValue() { return configValue; } public RS2Widget getWidget(MethodProvider api) { return api.getWidgets().get(getRoot(), getChild(), getChild2()); } } TabHotkey.java (@FrostBug) import java.awt.event.KeyEvent; import org.osbot.rs07.api.ui.Tab; import org.osbot.rs07.script.MethodProvider; public enum TabHotkey { COMBAT(Tab.ATTACK, 0, 1224), SKILLS(Tab.SKILLS, 1, 1224), QUEST(Tab.QUEST, 2, 1224), INVENTORY(Tab.INVENTORY, 3, 1224), EQUIPMENT(Tab.EQUIPMENT, 4, 1224), PRAYER(Tab.PRAYER, 5, 1224), MAGIC(Tab.MAGIC, 0, 1225), CLAN(Tab.CLANCHAT, 1, 1225), FRIENDS(Tab.FRIENDS, 2, 1225), IGNORE(Tab.IGNORES, 3, 1225), SETTINGS(Tab.SETTINGS, 4, 1225), EMOTES(Tab.EMOTES, 5, 1225), LOGOUT(Tab.LOGOUT, 1, 1226); private final Tab tab; private final int index; private final int register; private final static int[] KEYCODES = { -1, KeyEvent.VK_F1, KeyEvent.VK_F2, KeyEvent.VK_F3, KeyEvent.VK_F4, KeyEvent.VK_F5, KeyEvent.VK_F6, KeyEvent.VK_F7, KeyEvent.VK_F8, KeyEvent.VK_F9, KeyEvent.VK_F10, KeyEvent.VK_F11, KeyEvent.VK_F12, KeyEvent.VK_ESCAPE }; private TabHotkey(Tab tab, int index, int register) { this.tab = tab; this.index = index; this.register = register; } public Tab getTab() { return tab; } public int getHotkey(MethodProvider parent) { int config = parent.getConfigs().get(this.register); int kcIndex = (config >> (this.index * 5)) & 0b11111; return KEYCODES[kcIndex]; } public boolean openTab(MethodProvider parent) throws InterruptedException { if(!isAssigned(parent)) return false; int hkey = getHotkey(parent); parent.getKeyboard().pressKey(hkey); try { MethodProvider.sleep(MethodProvider.random(20, 50)); } finally { parent.getKeyboard().releaseKey(hkey); } return true; } public boolean isAssigned(MethodProvider parent) { return getHotkey(parent) != -1; } public static TabHotkey forTab(Tab tab) { for(TabHotkey thk : values()) { if(thk.getTab() == tab) { return thk; } } return null; } } CSleep: (@Explv) import java.util.function.BooleanSupplier; import org.osbot.rs07.utility.ConditionalSleep; public final class CSleep extends ConditionalSleep { private final BooleanSupplier condition; public CSleep(final BooleanSupplier condition, int timeout) { super(timeout); this.condition = condition; } @Override public boolean condition() throws InterruptedException { return condition.getAsBoolean(); } } Usage: private Autocaster caster = new Autocaster(this); private Items spell; //onloop if (!auto.isAutocasting()) { if (getMagic().canCast(NornalSpells.AIR_BLAST)) auto.autoCastSpell(spell); else stop(); }
  5. i think its a world record on a game
  6. like: public boolean isStarted(MethodProvider api) { return api.getConfigs().get(getConfigValue()) != 0; } i think?
  7. private QuestsAPI questsAPI; if (!questsAPI.isStarted(questsAPI.IMP_CATCHER, this))
  8. its an enum with the quests you put in quests with their config value there's a boolean to check if a quest is started or not (config value being 0 means its not started)
  9. you could use something like this: public enum Quests { QUEST(0); private int configValue; public int getConfigValue() { return configValue; } public boolean isStarted(Quests quest, MethodProvider api) { return api.getConfigs(quest.getConfigValue()) != 0; } }
  10. ive gotten permed 3 times when i didnt even bot and i was even playing on the webclient and my ip was clean
  11. doubt he's botting edit: thread says he wont be botting
  12. Acerd replied to Jonny's topic in Spam/Off Topic
    plz
  13. or just make me a cba rn
  14. We had a big ass pic at the top and no1 noticed it so they removed it and put a sidebar and the sidebar rarely gets updated about status.
  15. solution doing tis for me
  16. to not fucking ask if the bot is up or not
  17. i could do this for cheap
  18. t i t l e u go first or we use mm
  19. if (getInventory().contains("ITEM1") && getInventory().contains("ITEM")) { if (!getWidgets().isVisible(309, 4)) { if (getInventory().interact("Use", "ITEM1")) { if (getInventory().interact("Use", "ITEM2")) { new org.osbot.rs07.utility.ConditionalSleep(5000) { @Override public boolean condition() throws InterruptedException { return getWidgets().isVisible(309, 4); } }.sleep(); } } } else { if (getWidgets().interact(309, 4, "Make All")) { new ConditionalSleep(100_000) { @Override public boolean condition() throws InterruptedException { return !getInventory().contains("ITEM1") || getDialogues().isPendingContinuation(); } }.sleep(); } } }
  20. idk its outdated as hell

Account

Navigation

Search

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.