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.

Tanks

Members
  • Joined

  • Last visited

  1. I more meant the technical reason as to why people are actually getting banned for mistaking it as a bot client (A Friends video). Why does rendering of botting clients differ to OSB/Konduit/standard client?
  2. Mod Mat K has said that the reason OSHD is not recommended for use is because 'it renders the game like a bot client'. What is meant by this exactly?
  3. Okay thanks man. do you have another link for the api? that ones dead now and I need it :3
  4. Thanks. I was under the impression you could make it sequentially walk to each area in order :p
  5. Hi im having problems with webwalking. Im making a script that kills hobgoblins, loots, then banks and returns. The code im using for the walking is here ... case WALKTOBANK: if(!faladorBank.contains(myPlayer())) getWalking().webWalk(cropField, airAltar, faladorBank); case WALKTOHOBS: if(!hobgoblinSpawn.contains(myPlayer())) getWalking().webWalk(faladorGuards, airAltar, hobgoblinSpawn); I created some other areas to guide the walking as it heads to and from the hobgoblins/bank, as when I don't do that it takes bad routes/doesn't reach the area. My problem is that when it gets to a location in the parameters (usually first or second) it will stop walking. In the logger it says "We have reached the final destination" over and over. Any help? thanks
  6. Tanks replied to Tanks's topic in Archive
    great feedback. Ill modify it now to what you've said. thanks man Hadn't thought of that thanks a lot I'll change it now. For the antiban part however how come its useless to add? I know its really basic and not a wide variety of different operations to perform, but could it not possibly help reduce the bot detection if it has these added features? thanks for the feedback man
  7. Tanks posted a topic in Archive
    Just finished my first script and was looking for some constructive criticism from people with more experience if thats alright. Simple script that farms cows for xp in Falador, simple antiban, randomised run times, basic GUI. Code: import org.osbot.rs07.api.filter.Filter; 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.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.utility.ConditionalSleep; import java.awt.Graphics2D; @ScriptManifest(name = "Cow Killer", author = "Tanks", version = 1.0, info = "Farms Cows at Falador Farm", logo = "") public class TanksCowKiller extends Script { private final Area cowField = new Area(3043,3313,3021,3298); private long startTime; private int startRun; @SuppressWarnings("unchecked") private NPC getTarget(){ NPC targetCow = npcs.closest(new Filter<NPC>(){ public boolean match(NPC theCow){ return theCow != null && (theCow.getName().equals("Cow") || theCow.getName().equals("Cow calf")) && theCow.isAttackable() && cowField.contains(theCow); } }); return targetCow; } public void AntiBan() throws InterruptedException { log("Antiban Triggered ..."); switch(random(1,7)){ case 1: mouse.moveOutsideScreen(); sleep(random(5000,12000)); break; case 2: mouse.moveSlightly(); break; case 3: mouse.moveVerySlightly(); break; case 4: skills.open(); mouse.move(random(554,603),random(211,230)); //check attack xp sleep(random(2000,4000)); mouse.click(random(632,653), random(176,196), false); break; case 5: skills.open(); mouse.move(random(554,603),random(240,264)); //check strength xp sleep(random(2000,4000)); mouse.click(random(632,653), random(176,196), false); break; case 6: skills.open(); mouse.move(random(554,603),random(274,294)); //check defence xp sleep(random(2000,4000)); mouse.click(random(632,653), random(176,196), false); break; case 7: skills.open(); mouse.move(random(616,667),random(212,231)); //check hp xp sleep(random(2000,4000)); mouse.click(random(632,653), random(176,196), false); break; } } public void startRunning(){ settings.setRunning(true); this.startRun = random(60,100); } @[member=Override] public void onStart() { startTime = System.currentTimeMillis(); for(final Skill skill : new Skill[]{Skill.ATTACK, Skill.STRENGTH, Skill.DEFENCE, Skill.HITPOINTS}) { getExperienceTracker().start(skill); } } @[member=Override] public int onLoop() throws InterruptedException{ NPC cowToKill = getTarget(); if(cowToKill != null && !cowToKill.isOnScreen()) camera.toEntity(cowToKill); if(cowToKill != null) //another null check in case the cow died before we could attack cowToKill.interact("Attack"); sleep(random(2000,3500)); int rand = random(1,30); if(rand == 1) AntiBan(); int failSafe = random(5,10); int failCount = 0; while(myPlayer().isInteracting(cowToKill) && failCount < failSafe){ new ConditionalSleep(4000) { @ Override public boolean condition() throws InterruptedException { return (myPlayer().isMoving() && !cowToKill.isUnderAttack()) && myPlayer().isUnderAttack() && cowToKill.isInteracting(myPlayer()); } }.sleep(); failCount++; } if(settings.getRunEnergy() > this.startRun && !settings.isRunning()) startRunning(); return 100; } @[member=Override] public void onExit() { } //method taken from Explv's paint tutorial -> osbot.org/forum/topic/87697-explvs-dank-paint-tutorial/ 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); } @[member=Override] public void onPaint(Graphics2D g) { double attackXP = getExperienceTracker().getGainedXP(Skill.ATTACK); double strengthXP = getExperienceTracker().getGainedXP(Skill.STRENGTH); double defenceXP = getExperienceTracker().getGainedXP(Skill.DEFENCE); double hitpointsXP = getExperienceTracker().getGainedXP(Skill.HITPOINTS); int attackLvls = getExperienceTracker().getGainedLevels(Skill.ATTACK); int strengthLvls = getExperienceTracker().getGainedLevels(Skill.STRENGTH); int defenceLvls = getExperienceTracker().getGainedLevels(Skill.DEFENCE); int hitpointsLvls = getExperienceTracker().getGainedLevels(Skill.HITPOINTS); g.drawString("Attack XP gained: " + attackXP, 25, 100); g.drawString("Strength XP gained: " + strengthXP, 25, 120); g.drawString("Defence XP gained: " + defenceXP, 25, 140); g.drawString("HP XP gained: " + hitpointsXP, 25, 160); g.drawString("---", 25, 180); g.drawString("Attack Lvls gained: " + attackLvls, 25, 200); g.drawString("Strength Lvls gained: " + strengthLvls, 25, 220); g.drawString("Defence Lvls gained: " + defenceLvls, 25, 240); g.drawString("HP Lvls gained: " + hitpointsLvls, 25, 260); g.drawString("---", 25, 280); g.drawString("Runtime: " + formatTime((System.currentTimeMillis() - startTime)), 25, 300); } } Thanks
  8. Tanks replied to Tanks's topic in Price Check
    Okay guys got some screenshots. Notable bank tabs: https://gyazo.com/d6d8b32dd01dd06018b91d210ea07bd1 https://gyazo.com/7e0760443cea3fa65e1983c7dca9ea8d https://gyazo.com/18cdd5d335b3c77dfbaa02421d729415 https://gyazo.com/8275ba88ad17513984c25d0732fbddb2 https://gyazo.com/9459089e860fa1a140e9243cb4a6a6c5 (clue items) Notable items: https://gyazo.com/d183618f42d282cd8387364c203ae769 Skills (some censored for anonymity) https://gyazo.com/d5f3afa9401d68e3df79a7557675c618
  9. Tanks posted a topic in Price Check
    Not got a screenshot, but the notable stats are ... 87 Attack 87 Strength 85 Defence 85 Ranged 80 Magic 70 Prayer 80 Slayer 1400+ Total Items: All standard void items Barrows Gloves Fire Cape Fighter Torso cheers edit: May also be worth mentioning the account has always been mine and was created by me. Also has never been botted and everything was obtained manually
  10. Thanks for the replies guys. New to programming so sorry but just to confirm the parameter ConditionalSleep takes is the timeout, so the script will sleep until whatever condition I put in returns false or until the timeout is reached? if the timeout is reached but the boolean still returns true will it loop or would I just use a while loop for it? thanks again guys big help
  11. Hey I'm making my second script which basically just farms cows for xp. I've been using static sleeps everywhere and was wondering how to implement conditional sleeps? I've tried checking the API but for whatever reason it doesn't let me access it saying there's a server error. Was wondering if someone could give me a quick example and some sample code on how to implement them? My code is here if anyone wants to have a look: import org.osbot.rs07.api.filter.Filter; 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.script.Script; import org.osbot.rs07.script.ScriptManifest; import java.awt.*; @ScriptManifest(name = "Cow Killer", author = "Tank", version = 1.0, info = "", logo = "") public class TanksCowKiller extends Script { private final Area cowField = new Area(3043,3313,3021,3298); private long startTime; private enum State { ATTACK, WAIT }; private State getState(){ if(myPlayer().isMoving() || combat.isFighting() || myPlayer().isUnderAttack()) return State.WAIT; else return State.ATTACK; } @SuppressWarnings("unchecked") private NPC getTarget(){ NPC targetCow = npcs.closest(new Filter<NPC>(){ public boolean match(NPC theCow){ return theCow != null && (theCow.getName().equals("Cow") || theCow.getName().equals("Cow calf")) && theCow.isAttackable() && (theCow.getHealth() != 0) && cowField.contains(theCow); } }); return targetCow; } @[member=Override] public void onStart() { startTime = System.currentTimeMillis(); for(final Skill skill : new Skill[]{Skill.ATTACK, Skill.STRENGTH, Skill.DEFENCE, Skill.HITPOINTS}) { getExperienceTracker().start(skill); } } @[member=Override] public int onLoop() throws InterruptedException{ switch(getState()) { case ATTACK: NPC cowToKill = getTarget(); if(cowToKill != null && !cowToKill.isOnScreen()) camera.toEntity(cowToKill); cowToKill.interact("Attack"); sleep(random(600,1000)); while(cowToKill.isInteracting(myPlayer())) { sleep(random(1500,3000)); } break; case WAIT: sleep(random(400,600)); break; } return 100; } @[member=Override] public void onExit() { } //method taken from Explv's paint tutorial -> osbot.org/forum/topic/87697-explvs-dank-paint-tutorial/ 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); } @[member=Override] public void onPaint(Graphics2D g) { double attackXP = getExperienceTracker().getGainedXP(Skill.ATTACK); double strengthXP = getExperienceTracker().getGainedXP(Skill.STRENGTH); double defenceXP = getExperienceTracker().getGainedXP(Skill.DEFENCE); double hitpointsXP = getExperienceTracker().getGainedXP(Skill.HITPOINTS); int attackLvls = getExperienceTracker().getGainedLevels(Skill.ATTACK); int strengthLvls = getExperienceTracker().getGainedLevels(Skill.STRENGTH); int defenceLvls = getExperienceTracker().getGainedLevels(Skill.DEFENCE); int hitpointsLvls = getExperienceTracker().getGainedLevels(Skill.HITPOINTS); g.drawString("Attack XP gained: " + attackXP, 25, 100); g.drawString("Strength XP gained: " + strengthXP, 25, 120); g.drawString("Defence XP gained: " + defenceXP, 25, 140); g.drawString("HP XP gained: " + hitpointsXP, 25, 160); g.drawString("---", 25, 180); g.drawString("Attack Lvls gained: " + attackLvls, 25, 200); g.drawString("Strength Lvls gained: " + strengthLvls, 25, 220); g.drawString("Defence Lvls gained: " + defenceLvls, 25, 240); g.drawString("HP Lvls gained: " + hitpointsLvls, 25, 260); g.drawString("---", 25, 280); g.drawString("Runtime: " + formatTime((System.currentTimeMillis() - startTime)), 25, 300); } } Cheers

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.