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.

Swizzbeat

Members
  • Joined

  • Last visited

Everything posted by Swizzbeat

  1. Back when I played legit I remember that happened. Can't remember if it was a timeout, failing the puzzle, or a mixture of both.
  2. Not really needed since the API already provides this in many different ways:
  3. Since I think it's important scripters do this instead of adding static sleeps here's a basic guide on how to use them. The ConditonalSleep interface takes a timeout parameter as well as a condition method that requires overriding. When the sleep() method is invoked on the instantiated anonymous implementation it will sleep until either the timeout argument is met or the condition returns true. The condition method will return true if the condition was met before the specified timeout or false if the timeout has passed. For example the following code will sleep until either 5000 milliseconds has passed or the condition method returns true, then return the value. return new ConditionalSleep(5000) { @Override public boolean condition() throws InterruptedException { return sI.myPlayer().isAnimating(); } }.sleep();
  4. Memory/CPU management Stability Perform the given task for an infinite amount of time without human input Not be detected by the bot watch
  5. Swizzbeat replied to SKlipz's topic in Spam/Off Topic
    No way brah I can make a site name and have it redirect anywhere I want?!
  6. If she offered me sex I wouldn't say no, but she isn't a girl I'd be drooling over.
  7. This looks god awful.
  8. Why is this in projects if it's a SSF script..?
  9. Not my code lol. Plus it doesn't matter considering I highly doubt the sleep is going to start exactly on a game tick :p
  10. Swizzbeat replied to Jack's topic in Resolved
    nvm i retard
  11. public void waitFor(Condition c, int timeout) { long t = System.currentTimeMillis(); while (System.currentTimeMillis() - t < timeout && !c.condition()) { Time.sleep(30); } }
  12. Dunno I just put that there so I wouldn't have to release my own walking method :p hai corey with an e
  13. Swizzbeat replied to TheScrub's topic in Farewells
    Bye scrubby poo, goodluck on your future endeavours
  14. Please mate it was a woman getting mad. She's probably just trying to assert her dominance on the road in other ways than her shitty driving.
  15. Why do you guys make this so complex? If you can get the doors you need to open via configs, you can literally just run around the perimeter until the door is reachable. Finding the next position to walk to is ezpz as you can just find the farthest walkable tile in your game region and walk to it.
  16. I'm pretty sure the game map is 16 by 16, so the farthest position to the right would be: new Position(myPosition.getX() + 16, myPosition().getY(), myPosition().getZ()); Farthest position below: new Position(myPosition().getX(), myPosition().getY() - 16, myPosition().getZ()); etc...
  17. If they're from here you're going to want to just reopen it now lol
  18. Read the above quote. I saw asking about clipping data so I posted a snippet I had but then figured I mine as well post the whole walker. Guarantee mines better.
  19. Lol you should see my walker with multiplane handling as well as @NotoriousPP's sexy blindwalking addition ;)
  20. Pretty basic, all credits to @Maxi who designed pretty much the whole thing while I updated a few core components. import org.osbot.rs07.api.def.ObjectDefinition; import org.osbot.rs07.api.map.Position; import org.osbot.rs07.api.model.Entity; import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.api.util.LocalPathFinder; import org.osbot.rs07.input.mouse.MiniMapTileDestination; import org.osbot.rs07.input.mouse.RectangleDestination; import org.osbot.rs07.script.Script; import java.util.LinkedList; import java.util.List; /** * Originally created by Maxi */ /** * Updated by Swizzbeat */ public class Walker { private Script scriptInstance; public Walker(Script scriptInstance) { this.scriptInstance = scriptInstance; } public boolean noObstacleBlocking(Position p) throws InterruptedException { RS2Object obstacle = getNextObstacle(p); if (obstacle != null) { obstacle.interact("open"); return false; } return true; } public boolean walkPathMM(Position[] path) throws InterruptedException { return walkPathMM(path, 3); } public boolean walkPathMM(Position[] path, int distance) throws InterruptedException { Position next = nextTile(path, 15); if (next != null && noObstacleBlocking(next)) { return clickMiniMapPosition(next); } Position lastNode = path[path.length - 1]; return lastNode != null && scriptInstance.map.distance(lastNode) < distance; } public Position nextTile(Position path[], int skipDist) { int dist = -1, closest = -1; for (int i = path.length - 1; i >= 0; i--) { Position tile = path[i]; int d = scriptInstance.map.distance(tile); if (d < dist || dist == -1) { dist = d; closest = i; } } int feasibleTileIndex = -1; for (int i = closest; i < path.length; i++) { if (scriptInstance.map.distance(path[i]) <= skipDist) { feasibleTileIndex = i; } else { break; } } return (feasibleTileIndex == -1) ? null : path[feasibleTileIndex]; } public RS2Object getNextObstacle(Entity e) { List<RS2Object> obstacles = getObstacles(); List<Position> path = generatePath(e); if (path == null) { return null; } for (RS2Object obj : obstacles) { for (Position pos : path) { if (obj.getPosition().equals(pos)) { return obj; } } } return null; } public RS2Object getNextObstacle(Position p) { List<RS2Object> obstacles = getObstacles(); List<Position> path = generatePath(p); if (path == null) { return null; } for (RS2Object obj : obstacles) { for (Position pos : path) { if (obj.getPosition().equals(pos)) { return obj; } } } return null; } public List<RS2Object> getObstacles() { List<RS2Object> list = new LinkedList<>(); for (RS2Object obj : scriptInstance.objects.getAll()) { if (obj.getType() == 0 && obj.getDefinition() != null && obj.getDefinition().getActions() != null && obj.getDefinition().getModelIds() != null && obj.getDefinition().getModelIds().length < 3) { search: { for (String action : obj.getDefinition().getActions()) { if (action != null && action.equalsIgnoreCase("open")) { list.add(obj); break search; } } } } } return list; } private List<Position> generatePath(Position p) { LocalPathFinder pf = new LocalPathFinder(scriptInstance.bot); int[][] flags = generateModifiedClippingData(); List<Position> path = pf.findPath(p, flags); if (path == null) { return null; } return path; } private List<Position> generatePath(Entity e) { LocalPathFinder pf = new LocalPathFinder(scriptInstance.bot); int[][] flags = generateModifiedClippingData(); List<Position> path = pf.findPath(e, flags); if (path == null) { return null; } return path; } private int[][] generateModifiedClippingData() { int[][] origFlags = scriptInstance.map.getRegion().getClippingPlanes()[scriptInstance.map.getPlane()].getTileFlags(); int[][] flags = new int[origFlags.length][origFlags.length]; for (int x = 0; x < flags.length; x++) { for (int y = 0; y < flags.length; y++) { flags[x][y] = origFlags[x][y]; } } for (RS2Object obj : getObstacles()) { int lx = obj.getLocalX(); int ly = obj.getLocalY(); ObjectDefinition def = obj.getDefinition(); if (def.isClipping1()) { switch (obj.getOrientation()) { case 0: case 2: flags[lx][ly] &= ~585; break; case 1: case 3: flags[lx][ly] &= ~1170; break; } } if (def.getClipping2() != 0) { if (0 == obj.getOrientation()) { flags[lx][ly] &= ~128; flags[lx - 1][ly] &= ~8; } if (1 == obj.getOrientation()) { flags[lx][ly] &= ~2; flags[lx][ly + 1] &= ~32; } if (2 == obj.getOrientation()) { flags[lx][ly] &= ~8; flags[lx + 1][ly] &= ~128; } if (3 == obj.getOrientation()) { flags[lx][ly] &= ~32; flags[lx][ly - 1] &= ~2; } if (def.isClipping3()) { if (0 == obj.getOrientation()) { flags[lx][ly] &= ~65536; flags[lx - 1][ly] &= ~4096; } if (obj.getOrientation() == 1) { flags[lx][ly] &= ~1024; flags[lx][ly + 1] &= ~16384; } if (2 == obj.getOrientation()) { flags[lx][ly] &= ~4096; flags[lx + 1][ly] &= ~65536; } if (3 == obj.getOrientation()) { flags[lx][ly] &= ~16384; flags[lx][ly - 1] &= ~1024; } } } } return flags; } private boolean clickMiniMapPosition(Position position) throws InterruptedException { return scriptInstance.mouse.click(new RectangleDestination(scriptInstance.bot, new MiniMapTileDestination(scriptInstance.bot, position).getBoundingBox())); } public Position[] reversePath(Position[] path) { Position[] t = new Position[path.length]; for (int i = 0; i < t.length; i++) { t[i] = path[path.length - i - 1]; } return t; } }
  21. http://osbot.org/forum/topic/50819-osbot-2-flawless-denoxums-perfect-staker-calculator-super-efficient-advanced/ That's all you need...
  22. Like you said if they don't know simple low level instructions that are similar across the board they 110% have no idea what they're doing, considering you need libraries such as BCEL or ASM to go about creating the updater. Not only that, but good freaken luck finding someone that can properly inject classes without it throwing a flag up to Jagex or even what xbooting is. @OP this would be a good guy ^
  23. Are you kidding? Name one person here that even knows what the instructions iconst_5 or invokespecial do...or even that it's bytecode.

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.