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.

Leaderboard

  1. Khaleesi

    Script Officer
    3
    Points
    27682
    Posts
  2. Malcolm

    Global Moderator
    2
    Points
    172847
    Posts
  3. Czar

    Global Moderator
    2
    Points
    23250
    Posts
  4. Folks

    Java Lifetime Sponsor
    1
    Points
    60
    Posts

Popular Content

Showing content with the highest reputation on 07/16/23 in all areas

  1. 1 point
    NEW! Added Grand Exchange auto-restocking! Perfect for goldfarms!! Features Coming Soon: - Deathwalk support - Salamander support - More ironman routes for barrows How to use Bot Manager or Script Queue: Script ID is 1181 Script Parameter is the saved profile name, e.g. hello123.txt
  2. This is an AIO (All-in-one) bot that has almost every thieving style except blackjack, ask for a free trial by liking thread or making a post! Vyres and elves are now supported! Both can make solid profit per hour, decent passive income! BIG THANK YOU TO ALL OUR SUPPORTERS! WE ARE THE MOST SOLD THIEVING BOT IN OSBOT HISTORY. MOST REPLIES, MOST USERS, LONGEST PROGGIES #1 Thiever | Most Overall Sales | Most Total Replies | Most Results | 10+ Years Maintained | 'the intelligent choice' by Czar SUPPORTS VYRES 224M made in a single sitting of 77 hours 1.1B made from elves and vyres!! ELVES SUPPORTED TOO! (NEW) 2.1m/hr, 6 crystals in 7 hrs 99 THIEVING MANY MANY TIMES, 35M EXP IN ONE BOTTING RUN!! 99 thieving in ~43k xp (12 minutes remaining)! Just got 99 proggy! Gratz to @iz0n THIEVING PET AT LVL 22 FROM TEA STALLS 11.5 HOURS, WITH PET TOO!! 610k/hr getting 99s on deadman worlds!
  3. Small script update: I've just fixed this bug in v2.01.
  4. Emphasis on good Ones, Might wanna just leave @FuryShark alone
  5. 1 point
    You're stuck with the Jagex launcher. I think devs are investigating ways to launch OSBot through the launcher but it's not official or public yet.
  6. 1 point
    Khal wintertodt updated to V2.32: - Added bruma safespot chopping option Live soon! Enjoy!
  7. 1 point
    I will be adding it asap!
  8. Gotta message the good ones
  9. If you dm'd me, I was on vacation and probably lost the dm. I'm also active
  10. 1 point
    Hey queen, still crushing with ur wintertodt script, could I trial this out ? 🙏
  11. 1 point
    can i try this one sir?
  12. I mean if it really won't load the inventory, could do a conditionalSleep until myPlayer().exists(); or getInventory() !=null
  13. could i get a trial please
  14. May i get a trial?
  15. Current version: V1.4.2 What is this? - This program uses cli to easily and automatically start your bots without having to type in anything once it's configured. How do i use this? - I've created a few gifs to show you how to use this program. Don't know how to/Don't want to use script parameters? - simply don't fill them in, and run it. It will boot up OSBot, login and start the script and bring up the script's GUI if it has one. If you don't fill in these fields, it will use the default value -Memory(mb) -Proxy(it will simply not use it if you dont fill in the fields) -debug port(default: 5005) note: You wont be able to run multiple clients on the same port. -Script parameters -Bot Pin Shortcuts -Double click: runs a script -Del: deletes 1 or more scripts Can i run multiple scripts at once? - Yes, select multiple scripts and press run NOTE: - If you run multiple scripts, be sure to not have them all use the same port number(for example 5005) - Creating a new script Running a script. Simply press the run button! OSBot updated? New OSBot jar? No problem! press edit and select the new jar Create and load presets Simply update ALL of your scripts with a new OSBot jar This application is FULLY OPEN SOURCE! feel free to look around and change things if you wish to do so Source: https://github.com/TehHeroOfTime/OSBOT-CLI-Script-creator Download: https://github.com/TehHeroOfTime/OSBOT-CLI-Script-creator/raw/master/Setup/Debug/Setup.msi changelog V1.2 Fixed an issue with reading a file that didnt exist V1.3 fixed spacing issues. local scripts can now contain spaces. V1.4 You are now able to mass-update all of your scripts with a new OSBot jar V1.4.1 Fixed a spacing issue for people with a space in their name, as that is now possible with the new forums V1.4.2 Added 3 new permissions. -Norandoms -NoInterface -NoRender DISCLAIMER: Since @Alek did not reply to my pm saying something is wrong, and the fact that he liked my post showing it, i assumed it is ok to release, Since there is an OSBot logo in the application. If this is not okay i will remove it immediately.
  16. While working on my own paint, I liked the aesthetic of the chatbox so I wanted to keep the look and paint over it with the same or similar colors. I figured I'd share since others might find it useful. Side note I just noticed there is a chatbox in the api which might have something to make this easier or better but I am too lazy to look into it at this point. private static final int CHAT_BOX_X = 0; private static final int CHAT_BOX_Y = 338; private static final int CHAT_BOX_WIDTH = 519; private static final int CHAT_BOX_HEIGHT = 142; private static final int CHAT_BOX_PADDING = 6; private static final Color CHAT_BOX_COLOR = new Color(200, 180, 150); public void fillChatBoxPadded(final Graphics2D g) { int paddedX = CHAT_BOX_X + CHAT_BOX_PADDING; int paddedY = CHAT_BOX_Y + CHAT_BOX_PADDING; int paddedWidth = CHAT_BOX_WIDTH - (2 * CHAT_BOX_PADDING); int paddedHeight = CHAT_BOX_HEIGHT - (2 * CHAT_BOX_PADDING); g.setColor(CHAT_BOX_COLOR); g.fillRect(paddedX, paddedY, paddedWidth, paddedHeight); g.setColor(Color.black); g.drawRect(paddedX, paddedY, paddedWidth, paddedHeight); } public void fillChatBox(final Graphics2D g) { g.setColor(CHAT_BOX_COLOR); g.fillRect(CHAT_BOX_X, CHAT_BOX_Y, CHAT_BOX_WIDTH, CHAT_BOX_HEIGHT); g.setColor(Color.black); g.drawRect(CHAT_BOX_X, CHAT_BOX_Y, CHAT_BOX_WIDTH, CHAT_BOX_HEIGHT); } With padding Without padding
  17. 1 point
    Bob Ross would be so proud! Example code: import java.awt.Color; import java.awt.Graphics2D; import java.util.List; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import com.liverare.api.PaintAPI; @ScriptManifest(author = "", info = "", logo = "", name = "Test", version = 0) public class Test extends Script { PaintAPI paint; Area safeSpace; List<NPC> guards; @Override public void onStart() throws InterruptedException { paint = new PaintAPI(); paint.exchangeContext(bot); safeSpace = myPlayer().getArea(5); } @Override public int onLoop() throws InterruptedException { guards = npcs.filter(Test::isGuard); return 100; } private static boolean isGuard(NPC npc) { return npc.getName().equals("Guard"); } @Override public void onPaint(Graphics2D g) { g.setColor(Color.BLACK); g.setBackground(Color.PINK); // dont worry bout checks fam, i do dat paint.drawMinimapArea(g, safeSpace); paint.drawEntities(g, guards, Test::guardToString, true, false, false, false, false, false, true); } private static String guardToString(NPC npc) { return "Health: " + npc.getHealthPercent() + ", xyz: " + npc.getPosition().toString(); } } Functions: public void drawLink(Graphics2D g, Entity entity1, Entity entity2) public void drawMinimapArea(Graphics2D g, org.osbot.rs07.api.map.Area area) public <T extends Position> void drawString(Graphics2D g, Function<T, String> toString, T position) public void drawString(Graphics2D g, String aString, Position position) public void drawString(Graphics2D g, String aString, Entity entity) public void drawEntity(Graphics2D g, Entity entity, String aString, boolean labelTile, boolean click, boolean cube, boolean minimap, boolean tile, boolean box, boolean wireframe) public void drawEntity(Graphics2D g, Entity entity, Function<T, String> getDescription, boolean labelTile, boolean click, boolean cube, boolean minimap, boolean tile, boolean box, boolean wireframe) public <T extends Entity> void drawEntities(Graphics2D g, Collection<T> entities, Function<T, String> getDescription, boolean labelTile, boolean click, boolean cube, boolean minimap, boolean tile, boolean tileCube, boolean wireframe) private void drawBox(Graphics2D g, Entity entity) private void drawBox(Graphics2D g, Position bottomTile, Position topTile) private void drawWireframe(Graphics2D g, Entity entity) private void drawClickBounds(Graphics2D g, Entity entity) private void drawCube(Graphics2D g, Entity entity) public void drawMinimapPoint(Graphics2D g, Vector3D v) public void drawMinimapLink(Graphics2D g, Vector3D a, Vector3D b) public void drawTile(Graphics2D g, Entity entity) public void drawTile(Graphics2D g, Position position) public static void drawPoint(Graphics2D g, Point point, int size) public static void drawPoint(Graphics2D g, int x, int y, int size) public static void drawShape(Graphics2D g, Shape shape) public static void drawString(Graphics2D g, String aString, int x, int y) public static void drawString(Graphics2D g, String aString, Point point) public static void drawString(Graphics2D g, String aString, Rectangle rectangle) Source:
  18. 1 point
    This will paint a progress bar going left-right or right-left. It has one class and two callable methods: drawProgressBar() || drawReversedProgressBar() Example Usage In onPaint() with the Graphics2D named g: Code:
  19. Someone asked me for the source, here you go: import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.model.GroundItem; import org.osbot.rs07.api.model.Item; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.api.ui.EquipmentSlot; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.utility.ConditionalSleep; import java.awt.*; import java.util.Arrays; import java.util.Comparator; import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors; /** * Created by Alek on 6/26/2016. */ @ScriptManifest(name = "Macro Killer", author = "Alek", version = 1.4, info = "Macro Killer", logo = "") public class MacroKiller extends Script { private boolean isUsingRanged = false; private Area combatArea; private String state = "State: Idle"; private Font titleFont = new Font("Sans-Serif", Font.BOLD, 10); private String ammoType; private int ammoRemaining = 0; private boolean isAvasEquipped = false; private int collectAmmo = 0; private Predicate<NPC> suitableNPC = n -> getMap().canReach(n) && n.getHealthPercent() > 0 && n.hasAction("Attack") && combatArea.contains(n) && !n.isUnderAttack() && getMap().realDistance(n) < 7; private Predicate<GroundItem> suitableArrowStack = g -> g.getName().contains(ammoType) && getMap().realDistance(g) < 4; @Override public void onPaint(Graphics2D g) { g.setFont(titleFont); g.setColor(Color.WHITE); g.drawRect(mouse.getPosition().x - 3, mouse.getPosition().y - 3, 6, 6); g.drawString("Macro Killer v1.5 - Written by Alek", 10, 250); g.drawString(state, 10, 265); if (isUsingRanged) g.drawString("Remaining " + ammoType + "s: " + ammoRemaining, 10, 280); } @Override public void onStart() { if (getEquipment().getItemInSlot(EquipmentSlot.WEAPON.slot).getName().contains("bow")) { Item ammo = getEquipment().getItemInSlot(EquipmentSlot.ARROWS.slot); if (ammo != null && ammo.getAmount() > 1) { ammoType = ammo.getName().toLowerCase().split(" ")[1]; isUsingRanged = true; } if (isUsingRanged) { Item item = getEquipment().getItemInSlot(EquipmentSlot.CAPE.slot); isAvasEquipped = item != null && (item.getName().contains("Ava's")); } } combatArea = myPlayer().getArea(6); } @Override public int onLoop() { if (getSkills().getDynamic(Skill.HITPOINTS) < (getSkills().getStatic(Skill.HITPOINTS) / 2)) { state = "State: Looking for food to eat"; Optional<Item> foodItem = Arrays.stream(getInventory().getItems()).filter(i -> i != null && (i.hasAction("Eat") || i.hasAction("Drink"))).findFirst(); if (foodItem.isPresent()) { state = "State: Eating food " + foodItem.get().getName(); foodItem.get().interact("Eat", "Drink"); } else { state = "State: No food remaining, logging out"; stop(true); } } else if (!getCombat().isFighting() || myPlayer().getInteracting() == null) { if (isUsingRanged) { state = "State: Checking equipment for " + ammoType + "s"; Item arrows = getEquipment().getItemInSlot(EquipmentSlot.ARROWS.slot); if (arrows == null || arrows.getAmount() < 10) { state = "State: Not enough arrows, logging out"; stop(true); return 0; } ammoRemaining = arrows.getAmount(); state = "State: Scanning ground for " + ammoType + "s"; java.util.List<GroundItem> arrowItems = groundItems.getAll().stream().filter(suitableArrowStack).collect(Collectors.toList()); arrowItems.sort(Comparator.comparingInt(GroundItem::getAmount).thenComparingInt(GroundItem::getAmount).reversed()); if (!isAvasEquipped && !arrowItems.isEmpty()) { if (arrowItems.get(0).getAmount() > 1 || ((collectAmmo = ~collectAmmo & 1) == 1)) { state = "State: Looting " + arrowItems.get(0).getName() + "(s) with a stack size of " + arrowItems.get(0).getAmount(); if (arrowItems.get(0).interact("Take")) { ConditionalSleep pickup = new ConditionalSleep(4000, 500) { @Override public boolean condition() throws InterruptedException { return !arrowItems.get(0).exists(); } }; if (pickup.sleep()) { if (arrowItems.get(0).getName().equals(getEquipment().getItemInSlot(EquipmentSlot.ARROWS.slot).getName())) getInventory().interact("Wield", arrowItems.get(0).getId()); } } } } } state = "State: Searching for monsters to kill"; java.util.List<NPC> npcs = getNpcs().getAll().stream().filter(suitableNPC).collect(Collectors.toList()); if (!npcs.isEmpty()) { npcs.sort(Comparator.<NPC>comparingInt(a -> getMap().realDistance(a)).thenComparingInt(b -> getMap().realDistance(b))); if (npcs.get(0).interact("Attack")) { state = "State: Attacking " + npcs.get(0).getName(); new ConditionalSleep(3000, 500) { @Override public boolean condition() throws InterruptedException { return !npcs.get(0).exists() || npcs.get(0).isUnderAttack(); } }.sleep(); } } } return 500; } }
  20. 3 classes u can use to add a trail and a crusor Classes: Usage: global vars: private MouseTrail trail = new MouseTrail(0, 255, 255, 2000, this); private MouseCursor cursor = new MouseCursor(52, 4, Color.white, this); onPaint: public void onPaint(Graphics2D g){ trail.paint(g); cursor.paint(g); } Credit: swizzbeat -> cursor DarkMagican -> trail Original posts:
  21. 0 points
    Thanks man, I think thats such a stupid design on jagex kind of locking you in like that.

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.