Leaderboard
Popular Content
Showing content with the highest reputation on 01/17/14 in all areas
-
3 points
-
TERMS OF SERVICE - You get your product after you paid. - You feedback me after our transaction. - Don't push me to get it done A.S.A.P. - You will pay using Paypal or 07 RSGold. - You are not allowed to Chargeback. - By posting you agree to the ToS. EXAMPLES AFK ACTIVE2 points
-
Hi devs/others. I like to run my osbot client with the command window open to look for exceptions that aren't thrown in the clients console. I typically find myself getting frustrated having to update my batch file so often so I made this. @echo off SET /a i=100 :loop IF %i%==0 GOTO END if exist ".\osbot 1.7.%i%.jar" GOTO run SET /a i=%i%-1 GOTO LOOP :run java -jar ".\osbot 1.7.%i%.jar" pause :end echo No osbot files found. Please contact Dreamliner on OsBot forums. pauseCopy and paste this into a text document and save it as a batch file. You can now run osbot up to 1.7.100 (can change if need be god forbid..) without needing to change a thing!this must be run from the same directory you save osbot jars in2 points
-
Dear community, @Zach added something that was forgotten in the addition of 1.7.69. There was another release, we apologize for the amount of releases so close together. He forgot to make a topic before exiting for the night. Download can be found here: http://osbot.org Sincerely, OSBot.org2 points
-
2 points
-
2 points
-
Updated for OSBot 2's API! Hello again everyone! I hope you enjoyed my first tutorial, and I hope you'll enjoy this on as well. All feedback is appreciated, so feel free to post your thoughts! This tutorial will use some of my methods for simple banking and path walking! We’ll expand upon our script we were working on last time, so you'll need the source. Step I: Converting to a Banking Script Now as we all know, this script isn’t only boring, it will keep trying to click the rocks after we mine them, even if that vein isn’t ready! To remedy this, we’ll be searching for the rocks using object IDs instead of names. Since we’ll be using specific IDs, we have to choose what and where we’ll be mining! For this second tutorial, we’ll make a script that mines tin in the mines south-east of Varrock: Finding Object IDs Finding object IDs in OSBot is very simple, stand near the object you want the ID of, press Settings: Then press Advanced Settings: Then finally press Object Info: This will lag your client a lot, but don’t worry, you can shut it off as soon as you get the IDs. To get the ID, just look for the number near/on the object you’re looking for: Note: Some objects and NPCs in Runescape have deviations of themselves (like tin), so the same object/NPC may have different IDs (make sure to get all the IDs of whatever you’re using). Now that we have tin’s ID, we’ll make a constant in our script: private static final int[] TIN_ID = { 7140, 7141, 7142 }; We’ll put this line right after this: public class BasicMiner extends Script { Now that we have the object ID found and defined, let’s change our original code to use the ID instead of a name, simply by changing this line: RS2Object vein = objects.closest("Rocks”); to this: RS2Object vein = objects.closest(TIN_ID); Step II: Area Based State For this script, we’ll see which state we should be in with the help of OSBot’s Area class, which is defined as Area(int x1, int y1, int x2, int y2). Simply stand on two opposite corners and fill in the x and y. For the areas, put this after our path variable: private static final Area MINE_AREA = new Area(3277, 3358, 3293, 3371); private static final Area BANK_AREA = new Area(3250, 3419, 3257, 3423); Step II: Path Making The first step to path walking, would be path making! We’ll be making a path by enabling the “Player Position” setting (same place we enabled Object Info): Now, I like to open notepad, or some other text editor while finding my path, so do that now. Alright, finding a path to the bank is pretty simple, but can be slightly confusing at first. Start at the tin veins, and add the position you’re current at (this will be used when we reverse the path to walk from the bank back): Then act like you’re walking to the bank, but only press ONCE on the minimap. Let your player walk to that position and stop, then write down your first position to that path. Then keep doing that until you’re in the bank, here’s what I got: 3283, 3363 3290, 3374 3292, 3386 3290, 3374 3291, 3401 3287, 3413 3282, 3427 3270, 3429 3256, 3429 3254, 3421 To turn this path into something we can use in our script, we’ll be using an array (collection of a type of variable). We’ll put this line of code right after where we defined TIN_ID: private Position[] path = { new Position(3283, 3363, 0), new Position(3290, 3374, 0), new Position(3292, 3386, 0), new Position(3290, 3374, 0), new Position(3291, 3401, 0), new Position(3287, 3413, 0), new Position(3282, 3427, 0), new Position(3270, 3429, 0), new Position(3256, 3429, 0), new Position(3254, 3421, 0) }; Yay! We now have a full path from the mines to the bank, which we’ll reverse to go from the bank to the mines (saving us a step)! Step IV: Path Walking Now that we have a path, let’s put it to use! First of all, let’s change our enum by removing the DROP constant, and adding WALK_TO_BANK, BANK, WALK_TO_MINES: private enum State { MINE, WALK_TO_BANK, BANK, WALK_TO_MINE }; Now it’s time to change our getState() function to return what exact state we should be in: private State getState() { if (inventory.isFull() && MINE_AREA.contains(myPlayer())) return State.WALK_TO_BANK; if (!inventory.isFull() && BANK_AREA.contains(myPlayer())) return State.WALK_TO_MINE; if (inventory.isFull() && BANK_AREA.contains(myPlayer())) return State.BANK; return State.MINE; } Now that the script knows what state we should be in, let’s handle the actual path walking, with a pretty simple method to traverse the whole path: private void traversePath(Position[] path, boolean reversed) throws InterruptedException { if (!reversed) { for (int i = 1; i < path.length; i++) if (!walkTile(path[i])) i--; } else { for (int i = path.length-2; i > 0; i--) if (!walkTile(path[i])) i++; } } You can put this method after getState() if you’d like, and the walkTile(path) will be underlined red, because we’re about to make that method too! I’ll explain this method, as it may look confusing: If the path isn’t reversed, we’ll iterate through the path starting at position 1 (note that arrays start at 0, but remember, our 0 is in the mine) until we end in the bank. If the path is reversed, we’ll simply do the opposite! We’ll start at the 2nd to last position (path.length - 2) and continue to decrease through the path until we end up back in the mine! The reason we aren’t using OSBot’s walk() method is because, well, it doesn’t work nicely at all. It tends to continue clicking the position til you’re there, and many other problems can happen. So here’s the walkTile(Position p) method, put this after the traversePath() method: private boolean walkTile(Position p) throws InterruptedException { client.moveMouse(new MinimapTileDestination(bot, p), false); sleep(random(150, 250)); client.pressMouse(); int failsafe = 0; while (failsafe < 10 && myPlayer().getPosition().distance(p) > 2) { sleep(200); failsafe++; if (myPlayer().isMoving()) failsafe = 0; } if (failsafe == 10) return false; return true; } Simply put, we move the mouse to where the tile is on the minimap, then press the mouse button. After that, we’ll sit around and wait until we’re pretty close to the tile we’re walking to. I also implemented a simple failsafe here, just incase we misclicked or something, that will reclick the same position until we're actually near that position. Step V: Preparing for Banking Now let’s actually make the walking states actually walk, by changing our onLoop() to this: @Override public int onLoop() throws InterruptedException { switch (getState()) { case MINE: if (!myPlayer().isAnimating()) { RS2Object vein = objects.closest(TIN_ID); if (vein != null) { if (vein.interact("Mine")) sleep(random(1000, 1500)); } } break; case WALK_TO_BANK: traversePath(path, false); sleep(random(1500, 2500)); break; case WALK_TO_MINE: traversePath(path, true); sleep(random(1500, 2500)); break; } return random(200, 300); } Step VI: Banking Now that we’ve managed to walk to and from the bank, let’s actually do some banking! If we’re in the bank state, that means we’re already in the bank! Now, let’s add this case to our onLoop() function (as seen above), by simply adding this after the last “break;” and before the ‘}’: case BANK: RS2Object bankBooth = objects.closest("Bank booth"); if (bankBooth != null) { if (bankBooth.interact("Bank")) { while (!bank.isOpen()) sleep(250); bank.depositAll(); } } break; This looks for the bank booth, if it isn’t null and if we actually managed to click on it, we’ll wait til it’s open, then deposit everything except our pickaxe, which is hardcoded so you’ll have to change this to whatever pickaxe you’re using. We’ll automatically detect which pickaxe we’re using in the next tutorial. Conclusion If you managed to get through this whole tutorial without error, congratulations! If not, you can find the full source here. I hope you've learned something from this, and if you didn’t, don’t worry! Programming takes time to learn, look this over a few times, I promise you’ll get it! Thanks for viewing my second tutorial, stay tuned for future tutorials!1 point
-
Hey guys ,hopefuly you like my video,i know im new in videos,but i want to start create,i know my accent and pronaunce is so bad because im lithuaninan but its a first video,next one i hope will be better,so follow me on twitch channel,like this video and subscribe my channel thanks for watching http://www.youtube.com/watch?v=FfyYFjGeyC8&feature=youtu.be1 point
-
This script will be free when released and be free forever... FAQ Pictures of the GUI Need a Paint this is important Suggest a new feature1 point
-
Pandemics & Gh0sts BarrowsPro Giveaway! Okay so this is going to be a giveaway to Pandemics BarrowsPro for 2 weeks. If page gets to 10 pages, I'll pick 1 person randomly to receive the script for 2 weeks Post a funny gif or a funny picture to be entered in this contest. Good luck to all -Pandemic & Gh0st1 point
-
1 point
-
1 point
-
Client settings, go in to Advanced and check 'Interfaces' Then hover over the interface you want to interact with. The color of the box will co-respond to two numbers that show up on the side of your screen, they are parent, child. In order.1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
you can run osbot through your IDE to pick up output messages resulting in this type of result but that is a nice batch file as you don't need to update your dependance's when you want to run it1 point
-
Perhaps you should actually download this version instead of using an outdated version. 1.7.69 handles enabling run perfectly.1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
I hope I win too, this script is too awesome from one of my favorite movies1 point
-
Dear community, I want to give you an idea where OSBot 2 is at. First of all I want to let you know that OSBot 2 is rewritten from the ground up to tackle some problems that you as a community pointed out. Things like CPU usage increasing over time in a scale of hours, something that never was a huge problem to most users but could be annoying for some. Besides that, increased overall performance is something everyone always likes to see. By writing an entire new core and taking time to do so, the client will score better at those points. At the moment, there is an abstract core written which is extendable for the most part to write implementations of other server revisions, such as RS3. Whether we will do so or not doesn't matter, it will be reusable. The entire GUI of the current OSBot was written using Swing. For OSBot 2 we are using JavaFX. JavaFX might not be as developed in certain areas as Swing, however those area's won't affect us. Besides that, JavaFX performs faster and gives more reliable output when it comes to exceptions. Not to mention, I personally and many others agree, I think that the look and feel of JavaFX is far better and promising than Swing. At the moment, a lot of the main GUI features are done. The client loads the applet, injects the client, hacks the canvas and such. So from here on, our first focus will be towards designing and organizing the new API. The API will have the same features as seen in the current OSBot and those features will be ported over. This is not a very hard job, most of it will just be refactoring. Other new features will remain secret and will be revealed as progress proceeds. Besides the API, which its functions will not have to be rewritten, we are planning and thinking about a second scripting engine. The current scripting engine is completely sequential in a blocking fashion. The new scripting engine, don't worry the old one won't disappear, we want to give a fully event driven asynchronous environment where you will dispatch tasks based on events and have control over the queue by using policies for tasks. We are looking forward writing this as Laz and I love writing new and fancy stuff. There are many other things that need to be done for OSBot 2, but the above is the majority. We can't give you an ETA, we don't want to stress any deadlines and instead focus on its quality. Laz has done a great job on it so far and now I'm joining him in this battle progress will speed up. I hope you had a fun read, Sincerely, OSBot.org1 point
-
1 point
-
Thanks Omoshu, but this is a rather technical version of what it does, so let me explain it much simpler: The @Override above a function simply means that OSBot will use this function instead of the default function that's defined in the Script class (the one our script is extending from). You can also call the default function by doing the super() function inside of the function you're overriding (well it's useless in this case, because the Script class functions are empty).1 point
-
1 point
-
Swizzbeat I don't mean the name, I mean the actual client's getPassword() method. The system would check for suspicious activity (using client.getPassword(), downloading anything, and other common wrapper methods that could be dangerous).1 point