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.

DragonAlpha

Members
  • Joined

  • Last visited

Everything posted by DragonAlpha

  1. I got banned botting on my main. Was trying to get 1750 skill total (started at 1630 before starting to bot). I was willing to lose it, as playing the game is not overly important to me. So I don't mind. I'm just letting others know that even with an old account that played totally legit for years, and you bot. Even if you alternate the skills (like I did) and keep botting to 4-8 hours per day and use a good script you WILL most likely be banned. I should have used the Mirror Mode and botted through OSBuddy. (mirror mode works on that). It is my own fault for being lazy and using the default OSBot injection. I was fletching at time of ban.
  2. I only just started doing it today. So I don't know if it's expensive. So far I've paid about 500k for a mud staff (mud gives me infinite earth and water runes). So it means I can cast the Stun spell easily, Stun requires: 12 water, 12 earth and 1 soul rune. The downside is you need to use fire runes for the high alching, since you will be wielding a mud staff. I have only trialed this script with 2k soul runes, 2k natures, and 2k maple longbows (and 10k fire runes), i have been very impressed with the mega exp rates.
  3. Thanks for confirming the code. Nice guy
  4. This is a script that gets you 150k mage exp per hour. It casts stun at an enemy, and then really quickly casts high alch afterwards. We wear armour so that we will splash. This process is called Stun-Alching. Here is a short video about it: This script is very basic. I made it for a user named Anthony who is new here, but actually ended up using this myself. Note: Babysitting advised. The script cannot logout when you are out of runes, because you cannot logout during combat. It also cannot take breaks, because again, you cannot logout during combat. Usage: Simply change the variable "targetEnemyName" to the name of the npc that you want to splash Stun onto. The current enemy is set to "Skeleton". package scripts; import java.awt.Color; import java.awt.Graphics2D; import java.text.NumberFormat; import java.util.Locale; import org.osbot.rs07.api.model.Entity; import org.osbot.rs07.api.model.Item; import org.osbot.rs07.api.ui.Option; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.api.ui.Spells; import org.osbot.rs07.api.ui.Tab; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(name = "Stun Alcher", author = "MegaManAlpha", logo = "", version = 0.0, info = "") public class StunAlcher extends Script { String targetEnemyName = "Skeleton"; long scriptStartTime = 0; int startMagicLevel = 0; int startMagicExp = 0; int currentMagicExp = 0; int soulRunesStartAmount = 0; int soulRunesCurrentAmount = 0; int soulRunesUsed = 0; int natureRunesStartAmount = 0; int natureRunesCurrentAmount = 0; int natureRunesUsed = 0; boolean started = false; @Override public void onStart() throws InterruptedException { antiBan.unregisterAllBehaviors(); scriptStartTime = System.currentTimeMillis(); startMagicExp = skills.getExperience(Skill.MAGIC); startMagicLevel = skills.getStatic(Skill.MAGIC); soulRunesStartAmount = getNumberOfSoulRunes(); natureRunesStartAmount = getNumberOfNatureRunes(); log("MegaManAlpha's Stun-Alcher script has now started!"); log("You will be splashing: " + targetEnemyName); started = true; } @Override public int onLoop() throws InterruptedException { if(started) getState(); return random(100, 200); } private void getState() throws InterruptedException { if(!client.isLoggedIn()) { log("Not logged in."); log("You need to be logged in for this script to work."); return; } if(!tabs.getOpen().equals(Tab.MAGIC)) { if(tabs.open(Tab.MAGIC)) { sleepUntilMagicTabOpens(); } return; } Entity enemy = npcs.closest(targetEnemyName); if(enemy == null) { log("Target enemy not found"); return; } soulRunesCurrentAmount = getNumberOfSoulRunes(); natureRunesCurrentAmount = getNumberOfNatureRunes(); soulRunesUsed = soulRunesStartAmount - soulRunesCurrentAmount; natureRunesUsed = natureRunesStartAmount - natureRunesCurrentAmount; currentMagicExp = skills.getExperience(Skill.MAGIC); if(magic.castSpellOnEntity(Spells.NormalSpells.STUN, enemy) && sleepUntilStunIsCast(soulRunesCurrentAmount)) { sleep(random(25, 100)); if(moveMouseToAlchArea()) { leftClick(); if(sleepUntilInventoryTabActive() && isHighAlchOption()) { sleep(random(25, 100)); leftClick(); sleepUntilMagicTabOpens(); } } } } private int getNumberOfSoulRunes() throws InterruptedException { for(Item item : inventory.getItems()) { if(item != null && item.getDefinition() != null && item.getName() != null) { if(item.getName().equals("Soul rune")) { return item.getAmount(); } } } return 0; } private int getNumberOfNatureRunes() throws InterruptedException { for(Item item : inventory.getItems()) { if(item != null && item.getDefinition() != null && item.getName() != null) { if(item.getName().equals("Nature rune")) { return item.getAmount(); } } } return 0; } private boolean moveMouseToAlchArea() throws InterruptedException { //high alch area rectangle //709, 322 //719, 336 mouse.move(random(709, 719), random(322, 336)); return isHighAlchOption(); } private boolean isHighAlchOption() { for(Option option : menu.getMenu()) { if(option != null) { if(option.action.equals("Cast")) { if(option.name.contains("High Level Alchemy")) { return true; } } } } return false; } private void leftClick() { mouse.click(false); } private void rightClick() { mouse.click(true); } private void sleepUntilMagicTabOpens() throws InterruptedException { long startTime = System.currentTimeMillis(); long timeout = 4000; while(!tabs.getOpen().equals(Tab.MAGIC)) { long timeNow = System.currentTimeMillis(); if(timeNow > startTime + timeout) { break; } sleep(100); } } private boolean sleepUntilStunIsCast(int startNumOfSoulRunes) throws InterruptedException { long startTime = System.currentTimeMillis(); long timeout = 4000; while(getNumberOfSoulRunes() == startNumOfSoulRunes) { long timeNow = System.currentTimeMillis(); if(timeNow > startTime + timeout) { return false; } sleep(100); } return true; } private boolean sleepUntilInventoryTabActive() throws InterruptedException { long startTime = System.currentTimeMillis(); long timeout = 4000; while(!tabs.getOpen().equals(Tab.INVENTORY)) { long timeNow = System.currentTimeMillis(); if(timeNow > startTime + timeout) { return false; } sleep(100); } return true; } @Override public void onPaint(Graphics2D g) { int baseY = 10; int baseX = 275; int gapYAfterHeading = 20; g.setColor(Color.LIGHT_GRAY); g.fillRect(baseX, baseY, 290, 151); g.setColor(Color.BLACK); g.drawString("---: STUN-ALCHER :---", baseX+30, baseY+20); long totalRunTime = System.currentTimeMillis() - scriptStartTime; long secondsRunTime = totalRunTime / 1000; long minutesRunTime = 0; if(secondsRunTime >= 60) { minutesRunTime = secondsRunTime / 60; secondsRunTime = secondsRunTime - (minutesRunTime * 60); } String strRunTime = ""; if(minutesRunTime > 0) strRunTime += minutesRunTime + "min "; strRunTime += secondsRunTime + "s"; g.drawString("Run Time: " + strRunTime, baseX+10, baseY+gapYAfterHeading+35); g.drawString("Total Stuns: " + soulRunesUsed, baseX+10, baseY+gapYAfterHeading+50); g.drawString("Total High Alchs: " + natureRunesUsed, baseX+10, baseY+gapYAfterHeading+65); g.drawString("Exp to next level: " + NumberFormat.getNumberInstance(Locale.ENGLISH).format(skills.experienceToLevel(Skill.MAGIC)), baseX+10, baseY+gapYAfterHeading+80); int totalMagicExp = currentMagicExp - startMagicExp; String strMagicExp = NumberFormat.getNumberInstance(Locale.ENGLISH).format(totalMagicExp); g.drawString("Total Exp gained: " + strMagicExp, baseX+10, baseY+gapYAfterHeading+95); int magicLevel = skills.getStatic(Skill.MAGIC); g.drawString("Current level: " + magicLevel, baseX+10, baseY+gapYAfterHeading+110); g.drawString("Levels gained: " + (magicLevel - startMagicLevel), baseX+10, baseY+gapYAfterHeading+125); } }
  5. This guy is totally right. It is detectable playing on a jar file. A java applet can see it's running environment. This is why Mirror Mode is so essential. "That cant be the case otherwise we'd all be banned instantly!!!!!111!!1!!" - no. Just no. If they did that, it would INSTANTLY let the bot users and more importantly, the bot developers, know one of Jagex's bot detection methods, so the bot developers would just quickly write a work-around. That would be fucking dumb stupid and retarded to say that they can't see if you're running a jar file otherwise you'd all be banned. They would do it by stealth, in drips and drabs.
  6. Are you using heuristics? I can't see how a heuristic can have any value when a node's neighbor is somewhere else on the map (instead of all the adjcacent tiles). Since the goal of the heuristic is to favor a tile that is closest to the destination. But what if in the exact opposite direction, just 5 tiles away there is a charter-ship which takes you much closer to the goal tile. If you are using a standard a* heuristic such as manhattan, then that won't take teleports/shortcuts into account. I see each tile as having 8 neighbors. (each tile around it). However, for tiles that contain a "Boat Charter Ship Npc", I class that as having 9 neighbors (all the tiles around it, and also a tile far away on the map where the boat takes you). I can only see Dijkstra being useful for this, unless there is some heuristic method that can take these wormholes/shortcuts/jumps into account?
  7. Doing A* pathfinding with a web is pretty good. A* heuristic ensures that the most likely path is taken being more efficient. Let's take the Manhattan heuristic. Where the node closest to the goal node is considered the most likely/valuable one. What about when you are trying to write a web-walker-and-traveller. When you walk to say Port Sarim docks, and travel on the boat, you are instantly teleported from a node and put somewhere totally different. This renders any a* heuristic worthless, right? What alternative heuristic can we use, or should a* be scrapped altogether and just use DJkstra which does not rely on heuristics? Any advice appreciated. Teleports/shortcut examples: port sarim docks charter ships fairy ring teleports pull lever -> deep wilderness Why do this? You start in Draynor Village. Your code does: WebWalk.walkTo(ardougneMarketPos); A webwalker will WALK all the way there. A really long way, all over white wolf mountain. Well there is a much faster and efficient way to do it: starting in draynor village, walk to port sarim, get the boat to karamja, walk to brimhaven, get the boat to ardougne, then walk to market. This is why I am asking about web walker with shortcuts/teleports.
  8. fire.getX() is getting the X coordinate for the fire. You need to get the x and y coordinates then add 1 to this but then you are doing the click wrong. mouse.click cannot be fed coordinates. It clicks the position on the screen mouseX, mouseY. You need to calculate what the screen mouse coordinates are for tht tile. You are confusing the 2. Tile coordinates (position in runescape world) and mouse sxreen coordinates, where 0, 0 means the top left of the screen.
  9. DragonAlpha replied to Botre's topic in Scripting Help
    Very good explanation. Had no idea on where to even start with a web walker. Was even considering doing GLOBAL a* (i know, inefficient). Thanks for the pointers.
  10. Jagex can detect if you are logged in with a bot (*removed*/osBot) or if you are a legit user with a regular web browser (such as Firefox, Chrome, Internet Explorer). Direct Evidence: I have direct evidence of this because 4 days ago I purchased *removed* My plan was to buy USA's amazing Abyss runecrafter script in 2 weeks after I collect some resources. It's a really epic script with good antiban. For 3-4 days I have been playing runescape using the *removed* client login and I have NOT run any bot at all. (Before *removed* I have not botted before either). Jagex banned me for "Bot Bust (Moderate) - 48hr" just for playing legitimately with the *removed* Indirect Evidence: Over 50+ people have reported in the last 7 days alone that they have been banned 10 seconds after logging into runescape with a bot (most of these reports come from *removed*, however I have seen a few reports from *removed*users stating this too, as well as people on this osBot forum). Conclusion: Even if you have the best most epic bot with anti-ban *removed* you will get banned, because Jagex can detect the bot logins. I'm not sure how they do this, how they detect the mal-formed client. Heck, *removed* doesn't even use injection so I was surprised that they detected I was logged in with *removed* Bot owners need to make a work-around for whatever it is about their bots that is allowing Jagex to detect that we are not using the legitmate game client. I don't know how they would do this though.

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.