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.

Tasemu

Members
  • Joined

  • Last visited

Everything posted by Tasemu

  1. I would love cli support, it uses a lot less resources not to have to have to gui open for each bot
  2. Hello! 2 quick questions: 1: should i be buying a subscription or a bond for new bots? 2: If i have a brand new bot and want to do bowstrings, what is a good way to get some initial gold? Thanks for any help!
  3. Just a question, but to me it appears that it is very possible to handle this logic within the conditional wait loop and even break out if required, is that considered a bad practise for some reason? for example, as long as I return a condition, any other logic I like can be executed within the conditional check loop.
  4. I am currently using this conditional wait while fighting an NPC new ConditionalSleep(3000, 500) { @Override public boolean condition() throws InterruptedException { return !currentTarget.isInteracting(myPlayer()) && !myPlayer().isUnderAttack() && !currentTarget.exists(); } }.sleep(); When the NPC dies, my script immediately begins attacking the next npc, then comes back after killing that NPC to loot the first kill. What should I be using here to wait for looting each kill before attacking the next? Much appreciated!
  5. Hrm, i still havent tracked down why it's not updating yet. I am running it through the intellij debugger, and it works when i remove everything from the folder, but then returns to not updating on future builds.
  6. I currently have intellij to build a .jar artifact within the osbot/scripts folder. I have noticed that whenever I build the jar and try to run the script in osbot, the script appears to not update with the changes. For example when I have commented out my entire loop, the bot still tries to kill chickens. I am sure that the .jar is building... and I am pressing refresh in the script manager. What am I missing here?
  7. Hi, i have tried using a few methods to determine if my bot is fighting a cow, running to hit a cow or is under attack and the results seem sketchy at best. I am currently using an expression like this: if (myPlayer().isAnimating() || myPlayer().isUnderAttack() || myPlayer().isHitBarVisible()) { return States.WAIT; } Is there a more generally accepted way to do this out there? Thanks in advance for any advice.
  8. @Czar Will you be fixing profile saving on OSX in the near future? It is currently impossible for me to use this script with multiple bots as I need to spend 5 minutes each setting up the preferences for every bot every time I want to use this.
  9. I don't think the developer is going to do anything here, he has been on for days in a row but no replies here despite the issues. I'll me making a refund request shortly.
  10. Other scripts are working fine yeah?
  11. Working fine for me, what is the actual error you're getting here?
  12. Any word on saving profiles in mac/linux? it's broken and I really need this for cli support.
  13. Tasemu replied to Explv's topic in Others
    Any word on this break before I buy?
  14. Purchased a few days ago, i wanted to try and save my fighter profile for use with CLI but [save, saveAs, open] menu items appear to do nothing. (using OSX)
  15. Would buying a bunch of gold on a new account to use as a mule not look suspicious as hell?
  16. Hi there! I'm fairly new here but am enjoying learning so far. I currently have a new account that is sitting in lumby and I am eager to complete the 3 quests to get 7gp using a free bot on the forum. However the bot required 100k gold to do the quests. How would I go about getting this 100k (ideally automated using another bot) so that I am able to complete these quests and remove my trade-limit? Much obliged for any advice
  17. Tasemu replied to Khaleesi's topic in Others
    I purchased this, it seems alright though it hung both at the very beginning and when trying to cook bread. It seems it was not waiting to click the dialogue box and trying to cook the bread, which the client was not allowing.
  18. public boolean isLoggedIn() Returns if you are currently logged in. Returns: True if logged in and not logged out or 'loading please wait...'. Is the api docs out of date? or is the description wrong?
  19. Any checks for world loaded? Maybe checking if the character is visible...? lol
  20. I've noticed when running OSBot in debug mode I am getting a lot of null pointer errors because my bot is not logged in yet and the world has not loaded. Is there a best practise method for holding the script until the world is correctly loaded in? Cheers!
  21. I haven't included a .jar file as I assumed the SDN is already inundated with basic combat scripts. You can easily compile this yourself with eclipse. Would you like me to upload the jar?
  22. Sweet, how do you mean man? just have each method check if it should be running itself? Is that similar to a task based script or do you mean something else? ^^
  23. Hey guys, here is my first script for OSBot. The first of hopefully many more. I have open sourced it and you can find the script and the link to Github online. Please feel free to post any comments and constructive criticism of my script right here and don't be shy as I hope to get a few new techniques out of this share to improve my future scripts. If you wanna say thanks for the script then that would also make me pretty happy haha. Welp enjoy ^^ Credits to so many awesome people on this forum. If you have posted on one of my threads, or if I have used a method you shared then please post below and i'll credit you for sure! Progress reports coming soon... running it now. Github: https://github.com/Tasemu/osbot_descrete_gulls (fork me baby) package descrete_gulls; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.api.util.GraphicUtilities; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.utility.ConditionalSleep; import java.awt.*; import java.util.EnumSet; @ScriptManifest(author = "Tasemu", info = "Kill seagulls at Port Sarim", name = "Descrete Gulls", version = 1.1, logo = "") public class main extends Script { private Area docks = new Area( new int[][]{ { 3026, 3241 }, { 3030, 3241 }, { 3030, 3238 }, { 3047, 3238 }, { 3047, 3234 }, { 3030, 3234 }, { 3030, 3211 }, { 3026, 3211 }, { 3026, 3216 }, { 3018, 3216 }, { 3018, 3220 }, { 3026, 3220 } } ); private NPC target; private enum State { WAIT, WALK, ATTACK }; private EnumSet<Skill> skillToTrain = EnumSet.of(Skill.ATTACK, Skill.STRENGTH, Skill.DEFENCE, Skill.HITPOINTS); private long startTime; private int gullsKilled = 0; @Override public void onStart() { log("Welcome to Descrete Gulls."); log("version: " + getVersion()); startTime = System.currentTimeMillis(); for (Skill skill : skillToTrain) { getExperienceTracker().start(skill); } } private State getState() { NPC gull = getNpcs().closest("Seagull"); if (target != null && myPlayer().isInteracting(target)) return State.WAIT; if (!docks.contains(myPlayer())) return State.WALK; if ( gull != null && !gull.isUnderAttack() && !gull.isHitBarVisible() ) return State.ATTACK; return State.WAIT; } @Override public int onLoop() throws InterruptedException { switch (getState()) { case ATTACK: target = getNpcs().closest("Seagull"); if (target != null) { if (target.interact("Attack")) { new ConditionalSleep(random(3000, 5000)) { @Override public boolean condition() throws InterruptedException { return target != null && target.getHealthPercent() > 0; } }.sleep(); } } break; case WALK: getWalking().webWalk(docks); break; case WAIT: if (target != null && target.getHealthPercent() == 0) { this.gullsKilled++; this.target = null; } if (this.getDialogues().isPendingContinuation()) { this.getDialogues().clickContinue(); } sleep(random(500, 700)); break; } return random(200, 300); } @Override public void onExit() { log("Bye!"); } @Override public void onPaint(Graphics2D g) { final long runTime = System.currentTimeMillis() - startTime; drawMouse(g); g.setColor(Color.WHITE); g.drawString("Descrete Gulls Public v" + this.getVersion(), 10, 40); g.drawString("Status: " + getState().toString().toLowerCase() + "ing", 10, 55); g.drawString("Time running: " + formatTime(runTime), 10, 70); g.drawString("Gulls Wasted: " + this.gullsKilled, 10, 85); int trainingPaintMargin = 0; for (Skill skill : skillToTrain) { if (getExperienceTracker().getGainedXP(skill) > 0) { g.drawString(skill.toString().toLowerCase() + " xp: " + getExperienceTracker().getGainedXP(skill), 10, 100 + trainingPaintMargin); trainingPaintMargin += 15; } } if (target != null && target.exists()) { g.setColor(Color.RED); GraphicUtilities.drawWireframe(getBot(), g, target); } } public final String formatTime(final long ms){ long s = ms / 1000, m = s / 60, h = m / 60; s %= 60; m %= 60; h %= 24; return String.format("%02d:%02d:%02d", h, m, s); } private void drawMouse(Graphics graphics) { ((Graphics2D) graphics).setRenderingHints( new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); Point pointer = mouse.getPosition(); Graphics2D spinG = (Graphics2D) graphics.create(); Graphics2D spinGRev = (Graphics2D) graphics.create(); spinG.setColor(new Color(255, 255, 255)); spinGRev.setColor(Color.cyan); spinG.rotate(System.currentTimeMillis() % 2000d / 2000d * (360d) * 2 * Math.PI / 180.0, pointer.x, pointer.y); spinGRev.rotate(System.currentTimeMillis() % 2000d / 2000d * (-360d) * 2 * Math.PI / 180.0, pointer.x, pointer.y); final int outerSize = 20; final int innerSize = 12; spinG.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); spinGRev.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); spinG.drawArc(pointer.x - (outerSize / 2), pointer.y - (outerSize / 2), outerSize, outerSize, 100, 75); spinG.drawArc(pointer.x - (outerSize / 2), pointer.y - (outerSize / 2), outerSize, outerSize, -100, 75); spinGRev.drawArc(pointer.x - (innerSize / 2), pointer.y - (innerSize / 2), innerSize, innerSize, 100, 75); spinGRev.drawArc(pointer.x - (innerSize / 2), pointer.y - (innerSize / 2), innerSize, innerSize, -100, 75); } }
  24. I want to have a paint over my current target npc. I have had a look through the NPC api and have found information regarding their coordinates on the map, but am unsure how to get the coordinates to paint over the model. Does anyone have any advice on this subject? Cheers!
  25. Hey there, is there a decent check for my player being in or out of combat? And what about other players? I'm seeing spash bots in the chicken areas and I cannot find any combination of checks (yet) in the api to handle it. My current home-made combat checking is pretty flakey, and if people are splashing spells then my script is trying to take their chickens haha ^^

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.