Leaderboard
Popular Content
Showing content with the highest reputation on 02/13/14 in all areas
-
v1.7.80: Mandatory update due to changes in RS. v1.7.81: Fixed issues with closestAttackableNPC() that was causing the bot to click on recently killed NPCs (thanks @Swizzbeat and ).7 points
-
5 points
-
No you don't Gh0st, the only person you know is the seat at Donut King3 points
-
at 101 post he will post an acc sale then u know he be spamming3 points
-
3 points
-
As we've stated many times and times again, the RuneScape client itself uses the most CPU within the OSBot environment. Due to this, I've recently been playing around with methods that can be skipped in the client it-self that will lower the burden the client has on performance. One of the newest features that will be available to OSBot 2 is the "disable client rendering" toggle right next to the "low cpu" toggle. Here it is in action: As you can see, the client is logged in and works normally with the exception that the 3D world is not drawn at all. At the moment this only disables the client's rasterizer (the part of the client that converts 3D points to 2D points and draws them). The client still performs other model calculation data in the background (for calculating menus and such). The feature is undetectable and the bot is able to interact with the client exactly the same way as if the screen was actually drawn. We're planning on further adding more CPU saving systems to the client in the future. Thanks, Sincerely, Laz and the OSBot Team.2 points
-
I've been looking for a project to keep me occupied for a while, and I definitely think this will challenge me and hopefully provide the community with a great script! Basic layout In the process of creating this script, I thought long and hard on what would be the best setup for the project. I created a node based script framework a while back, but I never really used it as none of my scripts really called for it. However, with the upcoming OSBot 2.0 release, which is very similar in style to nodes, I decided that for each clue, I will create a separate node. The advantages here are obvious; easy editing as well as very uncluttered code. Of course, looping through 90+ Ids isn't ideal, so obviously in my main controller I will have a way to per-determine the next node to advance to. Features Very simple, steal clues from HAM members, go to the bank get the needed items, go to the area, perform the needed actions. Other things If any of you have ANY level 1 clues, PLEASE send me a screenshot of the clue as well as the ID of the clue. The person who sends me the most of these pics and IDs will receive a free copy of the script, as well as my eternal gratitude PRIZES!!!! LOOK HERE I am offering 4 great prizes!!! All you have to do is send me a picture of a level one clue scroll (with its itemID (get by using grounditem info in advanced settings))!!! The person who sends me the most: ALL MY SCRIPTS + $10 Second place: My clue scroll script Third: Any of my scripts, except for my clue scroll script WILDCARD! IF YOU SEND ME AT LEAST 5 CLUE + PIC COMBOS YOU ARE ENTERED IN THIS: You can win ANY script in the SDN! YOUR CHOICE! SEND ME YOUR CLUE + ID PICS IN A PM PLEASE! EXAMPLE: http://i.imgur.com/PCuSvgD.png (courtesy of Monkalishous) (Sorry for spelling your name wrong ) Progress: Finished, In progress, Unfinished -Stealing from HAM members -Banking -Clues (94/95) #1LEFT1LEFT: Data for ~94/95 clues [PROBABLY ALL CLUES DATA GATHERED!!] 93 clues actually completed (Most of these have been tested and verified), with one clue not to be supported (Canifis)2 points
-
Hello OSBotters, the much anticipated wait for OSBot 2 is over. On Friday 12:00AM EST, I will be making OSBot 2 available to VIP and Sponsor members. For those who do not have VIP or Sponsor, do not panic! OSBot 2's collection of random event solvers will still be very small. The purpose for this private BETA is to speed up the process of developing the random event solvers to finally get the public bot out. Tonight I released OSBot 2.0.6 to the private testing group. By tomorrow I will have reviewed any bugs mentioned by the private testing group and finalize OSBot 2.0.7, which will be the first semi-public version of the bot. Sneak Peak: Thanks, OSBot wouldn't be possible without our VIP and Sponsor members! Sincerely, Laz and the OSBot Team!2 points
-
I like all the mods here besides @Eliot. Thank God he can't handle anything important :troll1:2 points
-
My insurance gives me a discount for having a diamond car ;D2 points
-
It's happening even if I don't contribute a single line of code from today until tomorrow. All I have to do is allow the server to accept VIP and Sponsors and release the jar. I can run a flax spinner on low cpu mode and rendering disabled on my Intel i7 only using 3% of my CPU. The CPU usage is very good. Without low CPU mode and with rendering enabled, I average at around 10% usage.2 points
-
2 points
-
Updated for OSBot 2's API! Hello future script writers and other OSBot members! This will be my first OSBot script writing tutorial, and it's geared toward beginners with at least some understanding of Java (however, I'll still be covering some fundamentals). So, let us begin. Step I: Getting the IDE An IDE (integrated development environment) is software that makes programming much easier on you, the programmer. There are many Java IDE's to choose from (IntelliJ, NetBeans, Eclipse, and many more), but for this tutorial, we'll be using Eclipse. You can download Eclipse here. Simply choose the Eclipse Standard and download the version for your computer (32 or 64 bit). Once downloaded, use a program to decompress the archive, and move the eclipse folder to wherever you'd like (C:\, your desktop, it honestly doesn't matter). To open Eclipse, go into that folder and open the Eclipse application. Congratulations, your one step closer to making OSBot scripts! Step II: Basic Java Fundamentals Java, like C++, PHP, and Javascript, is a high-level programming language, which simply means it's very readable by humans (we use English while programming in these languages) and therefore much simpler to write code. If you're an absolute beginner, with no background in programming at all, this is going to go by extremely fast, and I will likely skip over some important topics. If you fall into this category, you absolutely NEED to read these tutorials by Oracle. I'm not sure about most of you, but I feel that a great way to learn something is to dive right in, and worry about the little things after you've started to understand the bare essentials. With that in mind, let's take a look at a simple HelloWorld class: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World, I'm learning Java!"); } } Now looking at that might be intimidating if you're new to this, but believe me it's very simple! I'll break down some of the common words used above: public: This could be public, private, protected, or default. It simply states the visibility of this class/method/variable. Public items can be seen from outside of your package, private items can't be seen by other classes in your package, protected items can only be seen by the subclasses of your package, and default can only be seen by your package. class: A class is like a blueprint from which objects are created (Oracle). static: This is a keyword that simply means that only one instance of it will ever exist, even if you recreate it infinitely. void: This is the return type of this method. Void methods return nothing, int methods return integers, String methods return strings, and so on. String[]: This is an array. Arrays are just containers that hold a specific number of items (of one type). For example, this method takes an array of strings as a parameter. System.out.println: This is just a method that prints a message to the console and then prints the newline character. ;: Semi-colons are used at the end of any Java statement (note: conditionals and loops do not count as statements), without them, your compiler will give you errors. { }: These curly braces are used to surround/contain the contents of a class/method/etc. This is all of the Java basics I will teach, simply because there are already many resources out there (see above). Step III: Setting up a Java Project Setting up a Java project in Eclipse for making OSBot scripts is simple, just follow these steps: Step 1: Press File>New Java Project and name your project, then press finish Step 2: Add the OSBot .JAR file to your build path Step 3: Add a class to your new project And you're ready to actually start script writing! Step IV: Creating Your Script Now here's where we actually start making your script! For this example, we'll be creating a very simple mining script that will mine and drop everything once the inventory is full (please note: this example is hardly usable for a script, but it shows the basics. With a real mining script, you'll want to replace the object name with the ID(s) of the rocks, so you don't try mining empty veins). Here's the full source: import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import java.awt.*; @ScriptManifest(author = "You!", info = "I made this script!", name = "Basic Miner", version = 0, logo = "") public class BasicMiner extends Script { private enum State { MINE, DROP }; private State getState() { if (inventory.isFull()) return State.DROP; return State.MINE; } @Override public void onStart() { log("I can't believe script writing is this easy! I love learning!"); } @Override public int onLoop() throws InterruptedException { switch (getState()) { case MINE: if (!myPlayer().isAnimating()) { RS2Object vein = objects.closest("Rocks"); if (vein != null) { vein.interact("Mine"); } } break; case DROP: inventory.dropAll(); break; } return random(200, 300); } @Override public void onExit() { log("Thanks for using this wonderful script!"); } @Override public void onPaint(Graphics2D g) { } } Now most of that will be confusing, but don't worry, I'm here to help you! I'll break this down for you. import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import java.awt.*; These lines import other classes for their use in your script. @ScriptManifest(author = "You!", info = "I made this script!", name = "Basic Miner", version = 0, logo = "") This is the script manifest, which simply tells OSBot your script's author, info, name, and current version (for use in their class loader). public class BasicMiner extends Script { ... } This just defines our class, and extends OSBot's Script class, so we can use all of their fancy API methods. private enum State { MINE, DROP }; private State getState() { if (inventory.isFull()) return State.DROP; return State.MINE; } Here we make an enum (collection of constants) called State which holds two states: mine and drop. Then we have a method that's return type is State (so it returns a State, which we just made). If your inventory is full, this method will return the dropping state, otherwise it will return the mining state. @Override public void onStart() { log("I can't believe script writing is this easy! I love learning!"); } This method is part of OSBot's Script class (which we're extending from). The onStart() method is only called once, and is called at the beginning of the script. This is where you should define some variables that only need defined once (the start time, start experience/level, etc.). @Override public int onLoop() throws InterruptedException { switch (getState()) { case MINE: if (!myPlayer().isAnimating()) { RS2Object vein = objects.closest("Rocks"); if (vein != null) { vein.interact("Mine"); } } break; case DROP: inventory.dropAll(); break; } return random(200, 300); } This is another method from OSBot's Script class (see that @Override?). onLoop() returns an integer, or how many milliseconds to wait before doing onLoop() again. We then use a switch statement to see what we should be doing. If we're to mine, we check if our player is currently animating (mining). If we aren't, we find the closest rock to mine, if that doesn't exist (or is null), we stop right there. But if it isn't null, we interact with the rocks by pressing "Mine". If we're to drop, we simply drop everything in your inventory (you did have your pickaxe equipped, right?). @Override public void onExit() { log("Thanks for using this wonderful script!"); } @Override public void onPaint(Graphics2D g) { } onExit() and onPaint(Graphics g) are two more methods from the Script class. onExit() is called once your script is stopped, and onPaint(Graphics g) is called every time the screen is updated. Step V: Exporting Your Script The final step to this tutorial will be exporting the script we just made so we can actually test it out! Step 1. Right click your project and press Export... Step 2: Choose JAR file Step 3: Choose your OSBot's scripts directory and export it! Well that's all for this tutorial, thanks for reading! You can find Part II here! Also: post suggestions for future tutorials, and I'll definitely consider it!1 point
-
The OSBot methods are slow and unreliable so I wrote my own. Thanks to @TheScrub for cluing me in on what interface in the bank had the items! public boolean bankContains(int item) { for (Item i : sI.client.getInterface(12).getItems(6)) { if (i != null && i.getId() == item) { return true; } } return false; } public boolean bankContains(String item) { for (Item i : sI.client.getInterface(12).getItems(6)) { if (i != null && i.getName().equalsIgnoreCase(item.toLowerCase())) { return true; } } return false; } public boolean rightClickBankItem(int item) throws InterruptedException { if (!bankContains(item)) { return false; } int slot = sI.client.getBank().getSlotForId(item); if (!sI.client.getBank().isSlotVisible(slot)) { sI.client.getBank().scrollToSlot(slot); } Rectangle rect = sI.client.getBank().getAbsoluteSlotPosition(slot); sI.client.moveMouseTo(new RectangleDestination((int) rect.getX(), (int) rect.getY(), (int) rect.getWidth(), (int) rect.getHeight()), false, true, true); return sI.client.isMenuOpen(); } public boolean rightClickBankItem(String item) throws InterruptedException { if (!bankContains(item)) { return false; } int slot = sI.client.getBank().getSlotForId(sI.client.getBank().getItemForName(item).getId()); if (!sI.client.getBank().isSlotVisible(slot)) { sI.client.getBank().scrollToSlot(slot); } Rectangle rect = sI.client.getBank().getAbsoluteSlotPosition(slot); sI.client.moveMouseTo(new RectangleDestination((int) rect.getX(), (int) rect.getY(), (int) rect.getWidth(), (int) rect.getHeight()), false, true, true); return sI.client.isMenuOpen(); } public boolean selectOpenMenuOption(String option) throws InterruptedException { if (sI.client.isMenuOpen()) { List<Option> options = sI.client.getMenu(); for (int i= 0; i < options.size(); i++) { if (options.get(i).action.equalsIgnoreCase(option.toLowerCase())) { return sI.client.moveMouse(new RectangleDestination(sI.client.getMenuX(), sI.client.getMenuY()+19+(i*15), sI.client.getMenuWidth(), 15), false); } } } return false; } public boolean withdraw(int id, int amount) throws InterruptedException { if (!bankContains(id)) { return false; } if (rightClickBankItem(id)) { if (sI.client.isMenuOpen()) { List<Option> options = sI.client.getMenu(); for (int i= 0; i < options.size(); i++) { if (options.get(i).action.equalsIgnoreCase("withdraw-" + amount)) { return sI.client.moveMouse(new RectangleDestination(sI.client.getMenuX(), sI.client.getMenuY()+19+(i*15), sI.client.getMenuWidth(), 15), false); } else if (options.get(i).action.equalsIgnoreCase("withdraw-x")) { sI.client.moveMouseTo(new RectangleDestination(sI.client.getMenuX(), sI.client.getMenuY()+21+i*14, sI.client.getMenuWidth(), 10), false, true, false); sI.sleep(MethodProvider.random(615, 963)); sI.client.typeString(Integer.toString(amount)); return true; } } } } return false; } public boolean withdraw(String name, int amount) throws InterruptedException { if (!bankContains(name)) { return false; } if (rightClickBankItem(name)) { if (sI.client.isMenuOpen()) { List<Option> options = sI.client.getMenu(); for (int i= 0; i < options.size(); i++) { if (options.get(i).action.equalsIgnoreCase("withdraw-" + amount)) { return sI.client.moveMouseTo(new RectangleDestination(sI.client.getMenuX(), sI.client.getMenuY()+21+i*14, sI.client.getMenuWidth(), 10), false, true, false); } else if (options.get(i).action.equalsIgnoreCase("withdraw-x")) { sI.client.moveMouse(new RectangleDestination(sI.client.getMenuX(), sI.client.getMenuY()+19+(i*15), sI.client.getMenuWidth(), 15), false); sI.sleep(MethodProvider.random(615, 963)); sI.client.typeString(Integer.toString(amount)); return true; } } } } return false; }1 point
-
So I just made a new siggy tell me if you guys making it making more for free Maldestos Maldesto V21 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
maybe u can pay $5-10 for a supermod+ to verify ur IRL details, aka u give them ur house phone number send them proof of ur address matching ur paypal, etc etc. i believe they do this on sythe.1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
Something sexy with mod mark making a kamehameha is that possible? http://static1.wikia.nocookie.net/__cb20120528053026/runescape/images/archive/0/00/20121206194755!Mark_Ogilvie.png1 point
-
1 point
-
1 point