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.

Botre

Members
  • Joined

  • Last visited

Everything posted by Botre

  1. Some nice progress my friend! Good luck & have fun
  2. Botre Pest Control Features: Implemented: Auto-detect best settings. Advanced settings customization options. Smart target prioritization. All boats. Classic potions. Powerups. Classic praying. Special attacks. Autocasting. Gate management. In development: Combat prayer flicking. Banking. Blowpipe recharging. Ammo management. Barricade repairing.
  3. Botre NMZ Features: Implemented: Auto-detect best settings. Advanced settings customization options. Overload potions. Absorption potions. Classic potions. Powerups. Classic praying. Rapid health prayer flicking. Dwarven rock cake. Special attacks. Extensive customization options for Rumble mode. In development: Combat prayer flicking. Banking. Dream coffer management. Dream re-entry. Point spending. Blowpipe recharging. Ammo management.
  4. holy fuckerino this thread though
  5. Hello world
  6. Example: // Event will break after 10 seconds. execute(EventDecorator.withTimeout(new WalkingEvent(leArea), 10)); // Event will break when player is animating (a bit random but ok..) execute(EventDecorator.withBreakCondition(new InteractionEvent(goblin, "Attack"), () -> myPlayer().isAnimating())); Code: package org.botre.osbot.event; import java.util.function.BooleanSupplier; import org.dreamstream.moka.main.time.FetchingTimer; import org.dreamstream.moka.main.time.Timer; import org.osbot.rs07.event.Event; public final class EventDecorator { private EventDecorator() { } public static final Event withBreakCondition(Event event, BooleanSupplier breakCondition) { return new Event() { @Override public void onStart() { try { super.onStart(); } catch (InterruptedException e) { e.printStackTrace(); } event.setAsync(); execute(event); } @Override public int execute() throws InterruptedException { boolean failed = breakCondition.getAsBoolean(); if(failed) { event.setFailed(); setFailed(); } return 100; } @Override public boolean hasFailed() { boolean failed = breakCondition.getAsBoolean(); if(failed) { event.setFailed(); setFailed(); } return failed || event.hasFailed(); } @Override public boolean hasFinished() { return event.hasFinished(); } }; } public static final Event withTimeout(Event event, int timeoutSeconds) throws IllegalArgumentException { if(timeoutSeconds < 0) throw new IllegalArgumentException(); Timer timer = FetchingTimer.milliseconds(); return withBreakCondition(event, () -> { return timer.getElapsedSeconds() > timeoutSeconds; }); } }
  7. Feel free to PM me the prices for each of the current accounts
  8. Example: CarouselPanel carousel = new CarouselPanel(); carousel.addComponent(new JLabel(new ImageIcon(ImageIO.read(new URL("http://i.imgur.com/0yd3HFb.png"))))); carousel.addComponent(new JLabel(new ImageIcon(ImageIO.read(new URL("http://i.imgur.com/2YDrKSy.png"))))); carousel.addComponent(new JLabel(new ImageIcon(ImageIO.read(new URL("http://i.imgur.com/e9RmCeC.png"))))); frame.add(carousel, BorderLayout.CENTER); Snippet: package org.botre.swing.custom; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.Timer; public class CarouselPanel extends JPanel { private static final long serialVersionUID = 1L; private int count = 0; private int index = 0; private JPanel content = new JPanel(new CardLayout()); private JButton navLeft, navRight; private Timer timer = new Timer(1000, null); public CarouselPanel(int scrollseconds) { setLayout(new BorderLayout()); navLeft = new JButton("<"); navRight = new JButton(">"); navLeft.addActionListener(l -> { CardLayout cl = (CardLayout)(content.getLayout()); index = index - 1; index = index >= 0 ? index : count - 1; cl.show(content, Integer.toString(index)); timer.restart(); }); navRight.addActionListener(l -> { CardLayout cl = (CardLayout)(content.getLayout()); index = index + 1; index = index < count ? index : 0; cl.show(content, Integer.toString(index)); timer.restart(); }); add(navLeft, BorderLayout.WEST); add(navRight, BorderLayout.EAST); add(content, BorderLayout.CENTER); navLeft.setVisible(count > 1); navRight.setVisible(count > 1); if(scrollseconds > 0) { timer = new Timer(scrollseconds * 1000, null); timer.addActionListener(l -> { navRight.doClick(); }); timer.setRepeats(true); timer.start(); } } public CarouselPanel() { this(-1); } public void addComponent(Component component) { content.add(component, Integer.toString(count)); count++; navLeft.setVisible(count > 1); navRight.setVisible(count > 1); } }
  9. Couldn't care less about the defence level Send me a PM with more details and prices
  10. Looking for the following features. If you have an account for sale with all or any or just one of them, feel free to contact me with your price The more features your account supplies the more I'd be willing to pay ofcourse. Able to self-host NMZ Unlocked rock cake from NMZ 40+ ranged 40+ magic 130+ combined attack & strength Access to Experiments. Access to Yaks. Unlocked the herblore skill. House with lectern and butler. 0 offences only. Cheers!
  11. 1. Depends, 2-day are more common I think but I've seen Macro Majors for alching. 2. The odds of you getting reported would be decreased but you're safe nowhere :p. 3. There's no safety threshold, risk increases as you go along :p
  12. Quick snippet that allows you to pass lambda expressions in order to evaluate ConditionalSleep. Syntactic sugar: CSleep.create(2400, 200, () -> !myPlayer().getPosition().equals(cache)).sleep(); vs. new ConditionalSleep(2400,200) {@Override public boolean condition() throws InterruptedException { return !myPlayer().getPosition().equals(cache); }}.sleep(); Snippet: package org.botre; import java.util.function.Function; import org.osbot.rs07.utility.ConditionalSleep; public final class CSleep { private CSleep() { } public static ConditionalSleep create(int maximumMs, int deviationMs, BooleanSupplier condition) { return new ConditionalSleep(maximumMs, deviationMs) { @Override public boolean condition() throws InterruptedException { return condition.getAsBoolean(); } }; } }
  13. Needed this data for the Superheat component of my Magic script, figured maybe someone else could benefit from it too :p The data makes writing a smelter a matter of minutes though:
  14. Example: public static void main(String[] args) { Map<Ore, Integer> o = SmithingBar.ADAMANTITE.getOres(); System.out.println("In order to make an adamantite bar I need: "); for (Ore ore : o.keySet()) { System.out.println("\t" + o.get(ore) + " " + ore); } System.out.println("... and " +SmithingBar.ADAMANTITE.getRequiredSmithingLevel() + " smithing."); } Ore enum: public enum Ore { COPPER("Copper ore"), TIN("Tin ore"), BLURITE("Blurite ore"), IRON("Iron ore"), SILVER("Silver ore"), COAL("Coal ore"), GOLD("Gold ore"), MITHRIL("Mithril ore"), ADAMANTITE("Adamantite ore"), RUNITE("Runite ore"); private String name; private Ore(String name) { this.name = name; } public String getName() { return name; } @Override public String toString() { return getName(); } } SmithingBar enum: package org.botre.data; import java.util.Collections; import java.util.EnumMap; import java.util.Map; public enum SmithingBar { BRONZE("Bronze bar", 1), BLURITE("Blurite bar", 8), IRON("Iron bar", 15), SILVER("Silver bar", 20), STEEL("Steel bar", 30), GOLD("Gold bar", 40), MITHRIL("Mithril bar", 50), ADAMANTITE("Adamantite bar", 70), RUNITE("Runite bar", 85); private static final Map<SmithingBar, Map<Ore, Integer>> ORE_RECIPES = Collections.unmodifiableMap(initOres()); private String name; private int requiredSmithingLevel; private SmithingBar(String name, int requiredSmithingLevel) { this.name = name; } public String getName() { return name; } public int getRequiredSmithingLevel() { return requiredSmithingLevel; } public Map<Ore, Integer> getOres() { return ORE_RECIPES.get(this); } @Override public String toString() { return getName(); } private static Map<SmithingBar, Map<Ore, Integer>> initOres() { Map<SmithingBar, Map<Ore, Integer>> map = new EnumMap<>(SmithingBar.class); for (SmithingBar bar : values()) { Map<Ore, Integer> ores = new EnumMap<>(Ore.class); switch (bar) { case BRONZE: ores.put(Ore.COPPER, 1); ores.put(Ore.TIN, 1); break; case BLURITE: ores.put(Ore.BLURITE, 1); break; case IRON: ores.put(Ore.IRON, 1); break; case SILVER: ores.put(Ore.SILVER, 1); break; case STEEL: ores.put(Ore.IRON, 1); ores.put(Ore.COAL, 2); break; case GOLD: ores.put(Ore.GOLD, 1); break; case MITHRIL: ores.put(Ore.MITHRIL, 1); ores.put(Ore.COAL, 4); break; case ADAMANTITE: ores.put(Ore.ADAMANTITE, 1); ores.put(Ore.COAL, 6); break; case RUNITE: ores.put(Ore.RUNITE, 1); ores.put(Ore.COAL, 8); break; } map.put(bar, ores); } return map; } }
  15. You brought the whole entitlement issue up, though it seems you don't quite understand what it actually means. @OP: Contact the scripter to fix your script, ask maldesto to remove the scripts from your account, or just learn to live with the few extra script icons
  16. That's a contract between OSBot and the scripter, not the scripter and its customers. All it does is entitle OSBot to punish a scripter should they refuse to fix their scripts. If the scripter refuses the punishment you don't get your script, so there's zero guarantee hence the absence of any sort of "entitlement". As a user you are, as per the TOS, not entitled to anything. However, users can ofcourse contact the administrator in order to: a: notify the administrator of the broken product so they can pressure the script writer if need be. b: give a refund, entirely at their discretion. Maldesto tends to be very reasonable about these cases. But seems like we're going on a tangent here :p
  17. http://osbot.org/tos.html We hold the right at any time, and without prior notice, to cease to supply any of our products or services provided by us and we will be in no way liable to you in any way if we decide to stop such supply. We hold the right at any time, and without prior notice, to stop any access to any of the products and services provided by us and used by you... More like 0% Do your research.
  18. I love me some Daniel Day Lewis and Dicaprio and the other obvious great ones. My favorite people on TV rn: Drama: Bobby Cannavale Comedy: Charlie Day
  19. Not sure if you're allowed to post here considering your postcount. (your price is a bit on the low side for what you're buying)
  20. Botre replied to Sky's topic in Spam/Off Topic
    What becomes a meme, becomes unforgettable. #AcerdIncest2016
  21. The reason they are so expensive is because that's the price the majority of people who actually buy anime DVDs (hardcore fans, collectors, etc...) are willing to pay for them. Since illegal downloading became so mainstream, the '18 - 29 year old without money demographic' pretty much kicked itself out of the traditional DVD target market :p Yeah some people will x) TV / streaming licensing & milking collectors / hardcore fans = their entire business model :p Quick conclusion: Physical media in entertainment has become more of a vanity item than an actual way to purchase the content they store, it's the reason why cassette and vinyl sales outperform cd's in physical music sales and why expensive "ultimate collector" edition dvds are so prevalent. Since the internet made media content virtually worthless, content producers had to adapt, some of them struggle with it, others do a brilliant job at it.

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.