Leaderboard
Popular Content
Showing content with the highest reputation on 06/05/13 in all areas
-
Divine's MASTER Script
2 pointsDivine Multi-Purpose Script What is the Divine Multi-Purpose Script?: The master script is one script, that runs a large collection of other scripts! It's one giant, ever updating collection of high quality scripts!How much does it cost?: One Time Fee of $14.99 USD. You will receive all new script additions & updates at no extra cost!What are some scripts in the Collection Currently?: AIO Combat Script (HOT!) (IF YOU HAVE ISSUES WITH THE WINDOW, RESTART OSBOT) AIO Herblore Script (HOT!) AIO Firemaking Script Oak Larder Script (Supports Runes + House Tabs) (HOT!) AIO Prayer Guilded Altar Script (HOT!) Clay Miner (SW Varrock) Clay Softener (14 Buckets-14 Clay, Edgeville Bank) Advanced Silk Stall Thiever Rare Finder and More To Come! What are some other features?: Detailed Documentation + Instructions for each script Very reliable, and stable. All Scripts can be started when Logged Out Works well with random events as it should No memory leaks. Download (Located on Repository): http://osbot.org/forum/store/product/51-divines-multi-purpose-script/Master Script General Media: All in One Combat Info + Media: All in One Herblore Info + Media: Oak Larder Builder Info + Media: Guilded Altar Bone Runner Info + Media: Clay Miner Info + Media: Clay Softener Info + Media: Divine Fire Info + Media: Silk Stall Thiever Info + Media: Rare Finder Info + Media:2 points
-
Life or Death
2 pointsI wouldn't just have sex with it, I would destroy it, engulf it in darkness until the only the light they knew was the stars I made her see after a swift knock to the head.2 points
-
AIO Fisher by Aeterna & ProjectPact
2 points
-
RARE LEAKED PHOTOS!
2 points
-
AIO Fisher by Aeterna & ProjectPact
Made the anti-ban extremely human like New Anti-Ban features such as checking skills, friends tab, changing pitch of camera, changing angle of camera New methods of finding spots and lost equipment Sped up the dropping rate (while still keeping it human like) Bug fixes for getting stuck on attacking randoms and not running back New way of searching for bank (tilting screen to get a better view) New paint colors to help make the time running stand out Put a new time system detection for whirlpools A few fail-safes were added, more to come A LOT MORE! Fishing guild (sharks, lobsters, swordfish & tuna) Barbarian outpost (leaping fish) Catherby (sharks, lobsters, swordfish & tuna, bass & mackeral) Barbarian village (trout & salmon - powerfishing only, for now!) Draynor (shrimp/anchovy) Whirlpool & Big fish detection Picks up equipment if it's lost - or banks if one cannot be found Avoids all combat, whether it be swarms, river trolls, or wizards. Barbarian hand Fishing Power Fishing Anti-ban which includes checking experience (strength and agility as well, if barbarian fishing - less often than Fishing experience), rotating the camera, moving the mouse, etc. Piscatoris (Monkfish) Shilo village (Trout & Salmon) No known bugsDownload: AIOFisher.jar (version: 2.0)1 point
-
Dat RangeGuild | 25k+ Ranged Exp/Hour
1.32 is now released. Really sorry about all the screwups. Works with 1.6.5 Script: http://www.filedropper.com/datrangeguildv132 - Should work this time. 1. Download 2. Copy paste the .jar file into your scripts folder 3. Fap 4. Run USE A RING OF LIFE AND START WITH ~150K IN INVENTORY!!!! Features: Runs from combat out of guild when attacked and returns Spam clicks No antiban...yes...an amazing feature. Completes the minigame very swiftly 12 Hour proggy! Click spoiler for more amazing reports!!! Preview of script in work: I don't think a GUI is necessary but once I add features like ticket exchange, then probably. Thanks for reading and wish me luck. Bugs:1 point
-
Apple Scripts - Apple Draynor Willows
Like this Script? Hit the green LIKE button below this post please. Welcome to my first SDN script, please feel free to download it from the SDN and test it as much as you all like. My only request is that you post any bugs you find that are NOT random event or client related. I will fix them as soon as possible. Thanks. Instructions: download the script from the OSBot store using the SDN download link below. The script is free and always will be. Start in Draynor bank or at Draynor willows with axe in inventory or equipped. Operating Manual: http://osbot.org/forum/topic/2255-apple-scripts-apple-draynor-willows-manual/ Features: walks to and from bank quickly cuts willow logs from closest tree's in the area own unique anti ban system with 10 different functions randomly selected. banks all logs, coins, nests & some random event items unique paint showing: status, time running, log collected, nests collects, xp gained, xp per hour, gp gained, gp per hour minimize paint so you can chat without it in the way! runs away from combat to a safe zone Changelog: 1.1 - Evil tree support 1.11 - only cut if invent is not full bug fix. known issues to be fixed: N/A SDN Download: http://osbot.org/forum/store/product/15-draynor-willow-chopper/ Media: Like this Script? Hit the green LIKE button below this post please.1 point
-
AIO FireLighter - Dream Dev Team
1 pointMoved: http://osbot.org/forum/topic/3649-divines-master-script/1 point
-
Seer's Village Flax Picker
1 pointFlax Picker 1.0 Picks flax in Seer's Village and banks them. As simple as that! If you have any suggestions or find any bugs please let me know. Update Logs: 1.0 - Release Version DOWNLOAD V: 1.01 point
-
Novum Agility [Gnome] [Barbarian] [Wilderness].
Development has been put on hold, Doing a major overhaul. Any bugs found from now until I'm done won't be fixed, sorry guys! Novum Agility Script Courses Supported [COMPLETE] - [iN PROGRESS] - [NOT STARTED] Gnome Agility Course Barbarian Agility Course Wilderness Agility Course Ape Atoll Gnome Agility Course Features -Traverses course flawlessly (For me whilst testing at-least, post bugs I'll have em fixed within a few hours). -Recovers from anti-bans knocking it out of place. -Now runs when over 20% energy Progress Report Barbarian Agility Course Features -Traverses course flawlessly (For me whilst testing at-least, post bugs I'll have em fixed within a few hours). -Recovers from anti-bans knocking it out of place. -Eats food when low -Now runs when over 20% energy Progress Report Wildernesss Agility Course Features -Traverses course flawlessly (For me whilst testing at-least, post bugs I'll have em fixed within a few hours). -Recovers from anti-bans knocking it out of place. -Eats food when low -Now runs when over 20% energy Progress Report Download https://www.dropbox.com/s/stcae46rkh8wds9/NovumAgility.jar1 point
-
CronGuildMiner | Falador mining guild miner & banker!
Current Version: 1.2 Working with - 1.6.11 - 1.6.12 - 1.7.X Changelog Start at fally bank with a pickaxe equipped/in inventory. Features: - Considered flawless - Mines coal and banks it - paint with XPTL, coal mined, PH, status, runtime,... - Has anti-explosive rock, and rock golem/swarm/ any combat related random Download link: GronGuildMiner.jar Note: A like keeps me going!1 point
-
A simple guide to the SDN for developers
Let me start of with the fact that we will allow non script developers have their scripts on the repository if their script meets a certain standard. Chances are that we will ask you to become a script developer if the feedback on your script is good and if you have managed to keep your script updated. However, bare with us. Once a script is added to the repository, it's not hard to update for us. But adding it to the repository takes some time and involves more steps on our side than yours. We understand that some of you really want your script on the SDN, and we will try to make that possible, but please remember be nice about it and grant us time if all is going to slow for you. So here we go: Step 1. Go to http://bitbucket.org and create a private repository. Step 2. Structure your repository as follows: 'repo name' / 'script name' / src / files An example of this is as follows: Be careful and avoid spaces. Step 3. Upload your script to the git and then add the user ********* to your repository. It's our repository team for the scripts, called *******. The above censored items are censored because of security reasons. If we value your script good enough for the repo, we shall share this with you. Step 4. Contact an admin to add your repository as a submodule to our script repository. Also create a 180x180 image to use as a thumbnail in the store and on the script selector. Step 5. To add additional scripts, simply add a new directory as described in Step 2 and contact an admin to create to required sql tables for your script. Step 6. Notify an admin if you want your script to be updated. You have to push your latest version, and when you want, let us verify it and push it to the server.1 point
-
Warwick irl
1 point1 point
- A patch for walking into neighboring regions.
Hello, Seemingly people have been requesting me for my mythology for walking threw regions, without having the clients pathfinder break. The reason why it breaks it because your destination, is as close to your current region as you can get (Collision dependent) , and most likely you're right next to it, so you've reached the maximum 'farthest' position that your current region can support path finding to. So you're suck, because you must be right before the area were runescape will load your next region (bad luck), and thus restricts the client from being able to find a path for the next position (Which would be within a neighboring region). How my method works is by combing the reliability of a pre-build path, with the optimization and randomcy of a regional flood agent (Pathfinder). It'll use the pre-build tile path (I call it a spline), when path finding is impossible, or you're within the 'zone' of were runescape is about to load the next region, this is to avoid you're player from pausing, or breaking when runescape loads you're new region (more human). It uses the spline, as way points and hints to were it should work to get to next. It also allow you to break the walking, conditionally based (like while this is true, keep working, else stop.) Example of it in work: http://youtu.be/tvNGQB3m_UE What I use for my flood agent, is a shortest distance tree, which is optimized for speed, and does not require a heuristics function, unlike A*, you can use something different, it does not matter really. The drawback of this method is the spline must be FULLY WALKABLE from A to B, and to get from B to A you must reverse the spline. I clone and reverse the elements, since i'm lazy . Most preferably I use a map utility called OMU (Overload Map Utility), made for p****bot, under some dude, what it does it'll make a tile path from A to B, as compact as you want (1) (The less space within the 'spline' from neighbor to neighbor, the better; ex: Tile(1,1,0), Tile(1, 2, 0), Tile(1,3,0)). Example of a spline (note: not checked to ensure every position is walkable): Download link to jar (google if you don't true me): https://dl.dropboxusercontent.com/u/58848692/OMU.jar What must be going through you're head is, 'I have to check every dam tile to be walkable...?'. But I have to say, have not fear, path finding is hear. Pathfinding is cool, because it if it can't find a path, then it's just not walkable (let's hope). So you can for loop it, like this: public boolean isRegional(Position position) { int baseX = position.getX() - client.getMapBaseX(); int baseY = position.getY() - client.getMapBaseY(); return baseX >= 16 && baseX <= 88 && baseY >= 16 && baseY <= 88; //I think runescape loads @ 16 and nulls collisions at the borders? } public void whatIsNotWalkableWithinMyRegion(Position[] mySpline) { for(Position node : mySpline) { if(!isRegional(node)) continue; //Can't truly verify if it's walkable, since we don't have the collision data for it. //So we would need make that position regional to correctly verify. if (pathfinder.findPath(myPosition(), node, false).length == 0) { System.out.println("Oww darn, this regional position is not walkable, plz fix: " + node); } } } Cool beans? Now for the googies? Please keep in mind this entire method was made to just work, and I'm sure there is methods to improve it's performances and structure, but the bellow code is all the methods I used in the above video. Take note of the TODO's for you'll have to do some housekeeping adjustments, mainly for randomcy. Also, I would split the sub classes for obvious reasons, I just did this so I don't have to post all 4 classes (so lazy right now ). Keep tuned for an exact replica of the videos use of this method. import org.osbot.script.mouse.MinimapTileDestination; import org.osbot.script.rs2.Client; import org.osbot.script.rs2.map.Position; import java.util.*; /** * @author Brainfree * It'll get the job done. */ public class PackedSplineWalk { public static final int BASE_LENGTH = 104; public static final int BASE_BOUNDARY = BASE_LENGTH - 1; public static final int WALL_NORTH_WEST = 0x1; public static final int WALL_NORTH = 0x2; public static final int WALL_NORTH_EAST = 0x4; public static final int WALL_EAST = 0x8; public static final int WALL_SOUTH_EAST = 0x10; public static final int WALL_SOUTH = 0x20; public static final int WALL_SOUTH_WEST = 0x40; public static final int WALL_WEST = 0x80; public static final int BLOCKED = 0x100; public interface Conditional { //All hail public boolean isActive(); } public abstract class FloodAgent { public int[][] flags; public int base_x, base_maxX, base_y, base_maxY, curr_plane; public final Client bot; public FloodAgent(Client bot) { this.bot = bot; } public void updateBase() { if (base_x != bot.getMapBaseX() || base_y != bot.getClient().getMapBaseY() || curr_plane != bot.getClient().getPlane()) { base_x = bot.getClient().getMapBaseX(); base_maxX = base_x + 104; base_y = bot.getClient().getMapBaseY(); base_maxY = base_y + 104; curr_plane = bot.getClient().getPlane(); flags = adjustCollisionFlags(bot.getClient().getClippingPlanes() [bot.getClient().getPlane()].getTileFlags()); } } private int[][] adjustCollisionFlags(final int[][] flags) { final int lx = flags.length - 1; final int lx_m = lx - 5; for (int x = 0; x <= lx; x++) { final int ly = flags[x].length - 1; final int ly_m = ly - 5; for (int y = 0; y <= ly; y++) { if (x <= 5 || y <= 5 || x >= lx_m || y >= ly_m) { flags[x][y] = -1; } } } return flags; } public abstract Position[] findPath(Position from, Position to, boolean fullFlood); } public enum DirectionalOrientation { NORTH_WEST(-1, 1, 135) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_x > 0 && f_y < BASE_BOUNDARY && (here & (WALL_NORTH_WEST | WALL_NORTH | WALL_WEST)) == 0 && (flags[f_x - 1][f_y + 1] & BLOCKED) == 0 && (flags[f_x][f_y + 1] & (BLOCKED | WALL_WEST)) == 0 && (flags[f_x - 1][f_y] & (BLOCKED | WALL_NORTH)) == 0); } }, NORTH(0, 1, 90) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_y < BASE_BOUNDARY && (here & WALL_NORTH) == 0 && (flags[f_x][f_y + 1] & BLOCKED) == 0); } }, NORTH_EAST(1, 1, 45) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_x > 0 && f_y < BASE_BOUNDARY && (here & (WALL_NORTH_EAST | WALL_NORTH | WALL_EAST)) == 0 && (flags[f_x + 1][f_y + 1] & BLOCKED) == 0 && (flags[f_x][f_y + 1] & (BLOCKED | WALL_EAST)) == 0 && (flags[f_x + 1][f_y] & (BLOCKED | WALL_NORTH)) == 0); } ; }, EAST(1, 0, 0) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_x < BASE_BOUNDARY && (here & WALL_EAST) == 0 && (flags[f_x + 1][f_y] & BLOCKED) == 0); } }, SOUTH_EAST(1, -1, 315) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_x < BASE_BOUNDARY && f_y > 0 && (here & (WALL_SOUTH_EAST | WALL_SOUTH | WALL_EAST)) == 0 && (flags[f_x + 1][f_y - 1] & BLOCKED) == 0 && (flags[f_x][f_y - 1] & (BLOCKED | WALL_EAST)) == 0 && (flags[f_x + 1][f_y] & (BLOCKED | WALL_SOUTH)) == 0); } }, SOUTH(0, -1, 270) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_y > 0 && (here & WALL_SOUTH) == 0 && (flags[f_x][f_y - 1] & BLOCKED) == 0); } }, SOUTH_WEST(-1, -1, 225) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_x > 0 && f_y > 0 && (here & (WALL_SOUTH_WEST | WALL_SOUTH | WALL_WEST)) == 0 && (flags[f_x - 1][f_y - 1] & BLOCKED) == 0 && (flags[f_x][f_y - 1] & (BLOCKED | WALL_WEST)) == 0 && (flags[f_x - 1][f_y] & (BLOCKED | WALL_SOUTH)) == 0); } }, WEST(-1, 0, 180) { @Override public boolean walkable(int[][] flags, int f_x, int f_y, int here) { return (f_x > 0 && (here & WALL_WEST) == 0 && (flags[f_x - 1][f_y] & BLOCKED) == 0); } }; public abstract boolean walkable(int[][] flags, int f_x, int f_y, int here); public final int x_shift, y_shift, angle; DirectionalOrientation(int x_shift, int y_shift, int angle) { this.x_shift = x_shift; this.y_shift = y_shift; this.angle = angle; } } public class BitPathfinder extends FloodAgent { public static final int INFINITE_DISTANCE = Integer.MAX_VALUE; private static final int INITIAL_CAPACITY = 8; //what ever floats your boat private final Set<Integer> settledNodes; private final Map<Integer, Double> shortestDistances; private final double Cross = Math.sqrt(2); private final Comparator<Integer> shortestDistanceComparator = new Comparator<Integer>() { public int compare(Integer left, Integer right) { return Double.compare(getShortestDistance(left), getShortestDistance(right)); } }; private final PriorityQueue<Integer> unsettledNodes = new PriorityQueue<>( INITIAL_CAPACITY, shortestDistanceComparator ); private final Map<Integer, Integer> predecessors = new HashMap<>(); public BitPathfinder(Client client) { super(client); this.settledNodes = new HashSet<>(); this.shortestDistances = new HashMap<>(); } private void init(Integer start) { clear(); setShortestDistance(start, 0); unsettledNodes.add(start); } public void execute(Integer start, Integer destination, boolean fullFlood) { init(start); Integer u; while ((u = unsettledNodes.poll()) != null) { if (!fullFlood && u == destination) break; settledNodes.add(u); relaxNeighbors(u); } } //TODO so lazy, overkill bit shifting, does not matter tbh. public int makePositionHash(int x, int y, int z) { return (z << 28 | x << 14 | y); } public int[] getDestinations(int hash) { int x = (hash >> 14) & 0xFF; int y = hash & 0xFF; int[] nodes = new int[0]; for (DirectionalOrientation orientation : DirectionalOrientation.values()) { if (orientation.walkable(flags, x, y, flags[x][y])) { nodes = Arrays.copyOf(nodes, nodes.length + 1); //fk lists nodes[nodes.length - 1] = makePositionHash(x + orientation.x_shift, y + orientation.y_shift, curr_plane); } } return nodes; } private void relaxNeighbors(Integer u) { for (int v : getDestinations(u)) { if (isSettled(v)) continue; int x = (v >> 14) & 0xFF - (u >> 14) & 0xFF; int y = v & 0xFF - u & 0xFF; double shortDist = getShortestDistance(u) + ( (Math.abs(x) > 0 && Math.abs(y) > 0) ? Cross : 1); if (shortDist < getShortestDistance(v)) { setShortestDistance(v, shortDist); setPredecessor(v, u); } } } private boolean isSettled(Integer v) { return settledNodes.contains(v); } private void setShortestDistance(int node, double distance) { unsettledNodes.remove(node); shortestDistances.put(node, distance); unsettledNodes.add(node); } private Integer getPredecessor(int node) { return predecessors.get(node); } private void setPredecessor(int a, int b) { predecessors.put(a, b); } public double getShortestDistance(int node) { Double d = shortestDistances.get(node); return (d == null) ? INFINITE_DISTANCE : d; } public Integer[] extractPath(int destination) { ArrayDeque<Integer> holder = new ArrayDeque<>(); for (Integer node = destination; node != null; node = getPredecessor(node)) holder.add(node); Integer[] a = holder.toArray(new Integer[holder.size()]); reverseOrder(a); return a; } public Position[] findPath(Position start, Position end, boolean fullFlood) { updateBase(); int Start = makePositionHash(start.getX() - base_x, start.getY() - base_y, curr_plane); int End = makePositionHash(end.getX() - base_x, end.getY() - base_y, curr_plane); if (Start == End) return new Position[0]; execute(Start, End, fullFlood); return convert(extractPath(End)); } public Position[] convert(Integer[] nodes) { Position[] real = new Position[nodes.length]; for (int i = 0; i < nodes.length; i++) { int hash = nodes[i]; real[i] = new Position(((hash >> 14) & 0xFF) + base_x, (hash & 0xFF) + base_y, curr_plane); } return real; } public void clear() { settledNodes.clear(); unsettledNodes.clear(); shortestDistances.clear(); predecessors.clear(); } } public static <T> void reverseOrder(T[] nodes) { int l = nodes.length; for (int j = 0; j < l / 2; j++) { T temp = nodes[j]; nodes[j] = nodes[l - j - 1]; nodes[l - j - 1] = temp; } } public class Timer { private long end; private final long start; private final long period; public Timer(final long period) { this.period = period; start = System.currentTimeMillis(); end = start + period; } public boolean isRunning() { return System.currentTimeMillis() < end; } public void reset() { end = System.currentTimeMillis() + period; } } public class SplineWalk { private final Client client; int runningSessionEnableRunThresh; final int MINIMAL_RUN_ENERGY = 30; final int LOCAL_BASE_COMPRESS = 16; final int compressionIndex = 7; public SplineWalk(Client client) { this.client = client; } public int myX() { return client.getMyPlayer().getPosition().getX(); } public int myY() { return client.getMyPlayer().getPosition().getY(); } public Position myPosition() { return client.getMyPlayer().getPosition(); } public double positionDistance(Position A, Position B) { return Math.hypot(A.getX() - B.getX(), A.getY() - B.getY()); } public double distanceTo(Position position) { return positionDistance(client.getMyPlayer().getPosition(), position); } public Position getFarthest(Position[] path) { if (path == null || path.length == 0) return null; Position best = null; Position destination = path[path.length - 1]; double bd = Integer.MAX_VALUE, hold; int distance = (int) (9 + (3 * Math.random() + 1.5)); for (Position node : path) { if ((hold = Math.hypot( node.getX() - destination.getX(), node.getY() - destination.getY())) < bd && distanceTo(node) < distance) { best = node; bd = hold; } } return best; } public boolean withinPreLoadZone(int x, int y, final int baseX, final int baseY) { int realX = baseX + LOCAL_BASE_COMPRESS; int realY = baseY + LOCAL_BASE_COMPRESS; //could clean this up.. int with = 104 - (2 * LOCAL_BASE_COMPRESS); int realX0 = baseX + LOCAL_BASE_COMPRESS + compressionIndex; int realY0 = baseY + LOCAL_BASE_COMPRESS + compressionIndex; int with0 = 104 - (2 * (LOCAL_BASE_COMPRESS + compressionIndex)); return x >= realX && x <= realX + with && y >= realY && y <= realY + with && !(x >= realX0 && x <= realX0 + with0 && y >= realY0 && y <= realY0 + with0); } public boolean isRegional(Position position) { int baseX = position.getX() - client.getMapBaseX(); int baseY = position.getY() - client.getMapBaseY(); return baseX >= LOCAL_BASE_COMPRESS && baseX <= 104 - LOCAL_BASE_COMPRESS && baseY >= LOCAL_BASE_COMPRESS && baseY <= 104 - LOCAL_BASE_COMPRESS; } public Position getRegionalNext(Position[] spline) { //We want the last element of the path. //TODO you can randomize it! Position goal = spline[spline.length - 1], best = spline[0]; //worst double bd = Integer.MAX_VALUE, hold; for (Position step : spline) { if (isRegional(step) && (hold = Math.hypot( goal.getX() - step.getX(), goal.getY() - step.getY())) < bd) { bd = hold; best = step; } } return best; } public boolean canOperate() { return client.getGameState() == 10 && client.getLoginState() == 30; } public boolean checkGameState() throws InterruptedException { if (!canOperate()) { Timer timer = new Timer(5500); while (timer.isRunning() && !canOperate()) Thread.sleep(0, 1); if (!timer.isRunning()) ; //Stop the script.. else return true; } return false; } public boolean splineWalk( FloodAgent pathfinder, Conditional keepWalking, Position[] spline) throws InterruptedException { Position[] path = null; Position next; int regionX = 0, regionY = 0; MinimapTileDestination mouseDestination; runningSessionEnableRunThresh = MINIMAL_RUN_ENERGY; //TODO you can randomize this while (keepWalking.isActive()) { checkGameState(); if (!withinPreLoadZone(myX(), myY(), regionX, regionY)) { if (regionX != client.getMapBaseX() || regionY != client.getMapBaseY() || path == null || path.length == 0) { regionX = client.getMapBaseX(); regionY = client.getMapBaseY(); path = pathfinder.findPath(myPosition(), getRegionalNext(spline), Math.random() > 0.65); if (path.length <= 1) next = getFarthest(spline); else next = getFarthest(path); } else next = getFarthest(path); } else next = getFarthest(spline); if (next == null) { path = null; mouseDestination = new MinimapTileDestination(client.getBot(), (next = getFarthest(spline))); } else mouseDestination = new MinimapTileDestination(client.getBot(), next); if (client.moveMouse(mouseDestination, true)) { client.pressMouse(); int breakDist = (int) (3 * Math.random() + 1.5); Timer timeout = new Timer(1550); while (keepWalking.isActive() && distanceTo( client.getDestination()) > breakDist && timeout.isRunning() && Math.hypot( next.getX() - client.getDestination().getX(), next.getY() - client.getDestination().getY() ) < 4) { //TODO your set run method here if (client.getMyPlayer().isMoving() || checkGameState()) timeout.reset(); Thread.sleep(0, 1); } } } return !keepWalking.isActive(); } } } Whoa!? How do I use this monstrosity? Well here is an example: /** * * This class is from within the packed class, so I would split them, since they are not enclosing classes. */ public class SplineWalkExample extends Script { BitPathfinder pathfinder; SplineWalk splineWalk; public final Position[] splineFromBankToSawMill = new Position[]{ new Position(3252, 3425, 0), new Position(3252, 3426, 0), new Position(3252, 3427, 0), new Position(3252, 3428, 0), new Position(3253, 3428, 0), new Position(3254, 3428, 0), new Position(3255, 3428, 0), new Position(3256, 3428, 0), new Position(3256, 3429, 0), new Position(3257, 3429, 0), new Position(3258, 3429, 0), new Position(3259, 3429, 0), new Position(3260, 3429, 0), new Position(3261, 3429, 0), new Position(3261, 3428, 0), new Position(3262, 3428, 0), new Position(3263, 3428, 0), new Position(3264, 3428, 0), new Position(3265, 3428, 0), new Position(3266, 3428, 0), new Position(3267, 3428, 0), new Position(3268, 3428, 0), new Position(3269, 3428, 0), new Position(3270, 3428, 0), new Position(3271, 3428, 0), new Position(3272, 3428, 0), new Position(3273, 3428, 0), new Position(3274, 3428, 0), new Position(3275, 3428, 0), new Position(3276, 3428, 0), new Position(3277, 3428, 0), new Position(3278, 3428, 0), new Position(3278, 3429, 0), new Position(3279, 3429, 0), new Position(3280, 3429, 0), new Position(3281, 3429, 0), new Position(3282, 3429, 0), new Position(3282, 3430, 0), new Position(3283, 3430, 0), new Position(3283, 3431, 0), new Position(3284, 3431, 0), new Position(3284, 3432, 0), new Position(3285, 3432, 0), new Position(3285, 3433, 0), new Position(3285, 3434, 0), new Position(3285, 3435, 0), new Position(3285, 3436, 0), new Position(3285, 3437, 0), new Position(3285, 3438, 0), new Position(3285, 3439, 0), new Position(3285, 3440, 0), new Position(3285, 3441, 0), new Position(3285, 3442, 0), new Position(3285, 3443, 0), new Position(3285, 3444, 0), new Position(3285, 3445, 0), new Position(3285, 3446, 0), new Position(3285, 3447, 0), new Position(3285, 3448, 0), new Position(3285, 3449, 0), new Position(3285, 3450, 0), new Position(3285, 3451, 0), new Position(3285, 3452, 0), new Position(3285, 3453, 0), new Position(3285, 3454, 0), new Position(3285, 3455, 0), new Position(3285, 3456, 0), new Position(3285, 3457, 0), new Position(3285, 3458, 0), new Position(3285, 3459, 0), new Position(3285, 3460, 0), new Position(3285, 3461, 0), new Position(3286, 3461, 0), new Position(3286, 3462, 0), new Position(3287, 3462, 0), new Position(3288, 3462, 0), new Position(3288, 3463, 0), new Position(3289, 3463, 0), new Position(3290, 3463, 0), new Position(3291, 3463, 0), new Position(3291, 3464, 0), new Position(3292, 3464, 0), new Position(3296, 3464, 0), new Position(3293, 3465, 0), new Position(3294, 3465, 0), new Position(3294, 3466, 0), new Position(3294, 3467, 0), new Position(3295, 3467, 0), new Position(3295, 3468, 0), new Position(3295, 3469, 0), new Position(3296, 3469, 0), new Position(3296, 3470, 0), new Position(3296, 3471, 0), new Position(3297, 3472, 0), new Position(3297, 3473, 0), new Position(3297, 3474, 0), new Position(3297, 3475, 0), new Position(3297, 3476, 0), new Position(3298, 3476, 0), new Position(3298, 3477, 0), new Position(3298, 3480, 0), new Position(3298, 3480, 0), new Position(3298, 3480, 0), new Position(3298, 3481, 0), new Position(3298, 3482, 0), new Position(3298, 3483, 0), new Position(3298, 3484, 0), new Position(3298, 3485, 0), new Position(3298, 3486, 0), new Position(3299, 3490, 0), new Position(3299, 3491, 0), new Position(3299, 3489, 0), new Position(3299, 3490, 0) }; public Position[] splineFromSawToBank; final Conditional thisMustBeTrueToKeepWalking = new Conditional() { @Override public boolean isActive() { return !(myX() > 234234 && myZ() < 234234234); // while NOT between.. those.. bounds, keep chugging. } }; public void onStart() { pathfinder = new BitPathfinder(client); splineWalk = new SplineWalk(client); reverseOrder(splineFromSawToBank = splineFromBankToSawMill.clone()); } public int onLoop() { try { if(splineWalk.splineWalk(pathfinder, thisMustBeTrueToKeepWalking, splineFromBankToSawMill)) { System.out.println("My condition is not true anymore, and broken, so I have met it. that means," + "based on my condition im (myX() > 234234 && myZ() < 234234234)"); //Im here! lets do something } } catch (InterruptedException ignored) { // :'( } return 500; } } I hope this helps, sorry for the lack of depth, I'll try to fix it up tomorrow, but I'm running on fumes posting this.1 point- GFX Tutorial
1 pointGreetings OSBot members. Today I'm going to show you an easy but effective tutorial on how to create a GFX. This is my own style. So let's start. Chapter 1 First we're going to want to download some brushes. "How do we do that?" you may be wondering. Well fortunately for you, these can just be downloaded. So for this tutorial, we're going to be using these: http://razorice.deviantart.com/art/RIPE-GRUNGE-EXTREME-BRUSH-PACK-20409778 http://axeraider70.deviantart.com/art/Ultimate-Brush-Pack-No-3-83880468 Feel free to download your own: http://browse.deviantart.com/?q=brush+pack For those of you who are new to deviantART, the download button is on the right side of the page. Now we're going to want to put these in a folder so that they will work in Photoshop. I use the 64 Bit version of Photoshop CS6 on Windows 7. So my path would be Computer > Windows (C:) > Program Files > Adobe > Adobe Photohop CS6 (64 Bit) > Presets > Brushes Once you have found the directory to the brushes, you're going to Drag/Unzip/Extract the brushes into that folder directory. My folder with the brushes in (with default brushes) New brushes are highlighted: http://i.imgur.com/IoX2aC2.png Once you've done that, great! Chapter 2 Now that we've got our brushes, it's time to move onto Chapter 2. Now before we get started, I want you to create a folder on your desktop named 'Resources' and in that folder I want you to create 2 new folders called 'Backgrounds' and 'Renders'. Once you've done that we can now continue to what chapter 2 is really about! Now you're going to download some fractals (backgrounds) So please download: http://browse.deviantart.com/art/Fractal-Pack-2-114869027 http://greentunic.deviantart.com/art/Fractal-Pack-4-150661301 Alright, now those are downloaded you're going to Extract these into your new folder that you've just made Resources > Backgrounds Okay so now that we've got our fractals, we're going to need to download some renders. It is recommended to use Anime/Cartoon renders, because they are much easier to blend than Real-Life pictures. So feel free to pick your own packs: http://browse.deviantart.com/?q=anime+render+pack http://browse.deviantart.com/art/Anime-Pack-Render-VII-207796413 http://browse.deviantart.com/art/Anime-pack-render-VI-195107006 http://browse.deviantart.com/art/Anime-Render-Pack-2-304748155 Once you've got the renders that you want, or used my examples above. Please extract these to your folder you've created. Resources > Renders Now we've done all the technical stuff, we're now going to move onto the designing! Chapter 3 Okay, so you may now proceed to open Photoshop. Now click 'File' in the top left of Photoshop and select 'Open' Now once you've pressed open, select the resources folder that you have created, go to backgrounds and then select a decent looking fractal. For this tutorial, I have chosen this fractal Now, for a signature this is going to be too big. So press File and then New. Then choose the size 531 x 273 And then press Ok. This'll open a new Photoshop tab so now go back to the previous tab (left) http://i.imgur.com/ZdMAaRb.png Double click the layer named 'Background' This box will popup So then press 'OK' Your layer is now unlocked, so drag the fractal on the canvas to the new tab we're using and drop it in place http://i.imgur.com/vPXaLj5.png Now move the image around the canvas to get it to your liking Chapter 4 Now that we've got our image, it's time to style it. To do so, we can change the colour of it. So press CTRL + U To bring up this box Choose a colour you're happy to work with. For this I am going to use green. So move the Hue bar around to pick a colour, do not touch anything else. So now you see I have made my fractal the colour green. http://i.imgur.com/UkupWup.png Now we're going to be using the smudge option found on the left side bar. Set the brush size to 60, the strength on 50% and the mode on normal. Now just go diagonal with the smudge tool on the background Until it fills the whole image Now the entire canvas image has been smudged Chapter 5 Now go to File > Open. And now go to your resource folder > Render > and now pick a suitable render. Your new render will now open in a new tab. If it has a watermark use the eraser tool to get rid of it. (Unlock the layer if it is locked) Now drag this image into your current tab that we're using. Your render is probably going to be a lot bigger than the current canvas we're using. So go to Edit > Transform > Scale And fit the image to the canvas. Thus far: Now hold CTRL and Click the layers 1 and 2 As so: http://i.imgur.com/D87abdv.png Then right click either layer 1 or 2, and press merge layers. The layers are now merged Chapter 6 Now we can use our brushes! So go to brush tool: Get to here, and then press the cog button http://i.imgur.com/xMFh5uC.png This'll bring up a list of brushes you have installed. So let's use a pack we have downloaded. And change the colour so they're the same colour as the theme. In my case, green. Apply the brushes to the bottom of the canvas. Chapter 7 Now that we've applied our brush, go to Filter > Render > Lighting Effects... Now this bit should be easily done on your own, make sure you can still see the most of the canvas. Alright once that's done, we can have some easy fun. On the right side, you'll see the adjustments. I usually add quite a bit of contrast and make it bright Feel free to mess around with the other effects. Now we've got this Chapter 8 Now it's time to finalize our image, so now we're going to add a border. So first save our GFX as .png and upload it to http://imgur.com/ Now in Photoshop press 'File' and then 'New' now put the size to 531 x 279 Now use the paint bucket tool found on the left side bar and choose the colour black http://i.imgur.com/ZULtzzG.png Then fill the canvas. Now go back to imgur and find your uploaded image and right click 'Copy image' Go to the black filled canvas and press CTRL + V (paste) Now you will see it has a border on it's Height axis. http://i.imgur.com/lEW6JGU.png Now save that image again and reupload to imgur. And now you're done! Final image: Please press 'Like' if you found this tutorial helpful, I spent a lot of time on it1 point- 99 Magic [Tip Table]
1 pointHey, OSBot community. This is just a quick tip table that I calculated last night because I was so curious. This may not be right. If this helped or you've found some sort of use for it, give this a like. If I'm wrong about something, please confront me about it. I just drew this up last night from be curious.1 point- BETA v1.6.12
1 pointThis release contains a patch to the interact methods which fixes a bug introduced in v1.6.10. It will now close any open interfaces properly now. Frog queen was patched however still untested. We'd like your input on this. Molly may or may not work, if you account gets stuck help us out by lending it to us to patch the random event. Other than that, enjoy OSBot 1.6.12. Download: http://osbot.org Thanks, Sincerely Laz and the OSBot Team.1 point- when does ban get lifted?
1 point- Life or Death
1 point- AIO Fisher by Aeterna & ProjectPact
42 hours straight !!!!!! :D:D LOVE U GUYS (the timer resets after 24hours) this one works flawlessly in Catherbury so ill update when i fish sharks at the fishing guild but apparently it stops/crashes when banking1 point- AIO Fisher by Aeterna & ProjectPact
Beautiful script. Thank you Aeterna and Project Pat for all your hard work. Looking forward to upcoming scripts and updates1 point- Life or Death
1 point- AIO Fisher by Aeterna & ProjectPact
Here http://www.mediafire.com/?8zdz1cpn1qk9ym3 Version 2.0, someone can check, it's clean bla bla.1 point- Life or Death
1 point- Rate my avatar 0-10
1 point- AIO Fisher by Aeterna & ProjectPact
1 point- AIO Fisher by Aeterna & ProjectPact
I love this script and I am totally happy for beeing out. You might will have to check over the exp per fish put into the fish again. I get for example at leaping fish now 150xp per fish calculatet even tho it is 50 i think. ;)1 point- AIO Fisher by Aeterna & ProjectPact
Thank you Ron for uploading the new version hopefully all good now for the loss harpoon is fixed I hope.1 point- AIO Fisher by Aeterna & ProjectPact
Version 2.1 is now available on the main post. Awesome dude! I'm glad it's running well for you1 point- AIO Fisher by Aeterna & ProjectPact
I'll upload the new version in a few minutes. Since you're getting 1.6 I'll put it on a different site, I'm guessing it isn't updating for the select few.1 point- Seer's Village Flax Picker
1 pointQuite the nice script. I watched it for about 10 minutes and it made 2 trips with no problem. Left it alone for an hour and no problem, left it alone overnight and again no problem that i could see. My internet must of hiccuped earlier so no biggy.1 point- RARE LEAKED PHOTOS!
1 pointDamn, I thought this was going to be Selena Gomez nudes or something. "Rare leaked photos" should be "Leaked photo of Rare" :c1 point- RARE LEAKED PHOTOS!
1 pointNot really a leak, I've seen Rare a couple times on web cam on Skype nothing special here. "With his cigarettes".1 point- RARE LEAKED PHOTOS!
1 point- RARE LEAKED PHOTOS!
1 point- Show off your bank !
1 pointGotta crop it better one sec haha Not great tbh, spent most of my cash on Stats1 point- AIO Fisher by Aeterna & ProjectPact
Good script, will leave it the whole night, lets see whatsup tomorrow1 point- AIO Fisher by Aeterna & ProjectPact
*I FOUND A GLITCH!* HELP I JUST BOTTED FOR 24 HOURS AND THE TIME RESETS BACK TO 0!!!!! PLEASE FIX THIS!!! WILL I GET BANNED??? just kidding haha anyway thanks for this script ill keep running it till it stops and post a pic tmrw thanks guys cheers1 point- AIO Fisher by Aeterna & ProjectPact
Best script I've used on OSbot to date, thank you so much for this release!1 point- AIO Fisher by Aeterna & ProjectPact
Brilliant not gonna stop till it stops me ill keep posting until then1 point- Lyewchopper
1 point- Rhiel Deal Planker (Open Source + SplineWalk)
Don't say it, hit it, hit that like button next time?1 point- Beat Maker
1 point- Lumbridge Spinner - Bow Strings
1 pointI can't get it to run, It comes up in scripts to run when I click it to "start" Nothing happens.1 point - A patch for walking into neighboring regions.