Leaderboard
Popular Content
Showing content with the highest reputation on 04/03/17 in all areas
-
NEW! Added Gemstone Crab! 81 Hours at Cows Brutal Black Dragon support Sulphur Nagua support Blue Dragon 99 ranged 99 Ranged at Gemstone Crab 81 Range F2p Safespotting Hill Giants Hotkey List // F1 = set cannon tile // F2 = hide paint // F3 = Set afk tile // F4 = reset afk tile // F6 = Set safespot tile // F7 = activate tile selector // F8 = Reset tile selector // F9 and F10 used by the client, EDIT: will re-assign as they are no longer used by client // F11 = Set breaks tile // F12 = Reset breaks tile User Interface Banking Tab Demo (handles everything with banking) You can copy inventory (to avoid adding individual items...), you can insert item names which have Auto-Fill (for you lazy folk!) and you can choose whether to block an item and avoid depositing it in bank, ideal for runes and ammo. Looting Tab Demo (From looting to alchemy, noted/stackable items too) You can choose whether to alch an item after looting it simply by enabling a checkbox, with a visual representation. All items are saved upon exiting the bot, for your convenience! Tasking Demo (Not to be confused with sequence mode, this is an individual task for leveling) You can set stop conditions, for example to stop the bot after looting a visage, you can have a leveling streak by changing attack styles and training all combat stats, you can have windows alert bubbles when an event occurs and an expansive layout for misc. options! Prayer Flick Demo (Just example, I made it faster after recording this GIF) There are two settings: Safe mode and efficient mode, this is safe mode: Fight Bounds Demo Allows you to setup the fight bounds easily! Simplified NPC chooser Either choose nearby (local) NPCs or enter an NPC name to find the nearest fight location! Simple interface, just click! Level Task Switch Demo (Switching to attack combat style after getting 5 defence) You can choose how often to keep levels together! e.g. switch styles every 3 levels Cannon Demo (Cannon is still experimental, beta mode!) Choose to kill npcs with a cannon, recharges at a random revolution after around 20-24 hits to make sure the cannon never goes empty too! Results Caged Ogres: How does this bot know where to find NPCs? This bot will find far-away npcs by simply typing the NPC name. All NPCs in the game, including their spawn points have been documented, the bot knows where they are. You can type 'Hill giant' while your account is in Lumbridge, and the bot will find it's way to the edgeville dungeon Hill giants area! Here is a visual representation of the spawn system in action (this is just a visual tool, map mode is not added due to it requiring too much CPU) Fight Area Example (How the bot searches for the npc 'Wolf') Walking System The script has 2 main walking options which have distinctive effects on the script. The walking system is basically a map with points and connections linking each point. It tells the script where to go, and decides the routes to take when walking to fightzones. Walking system 1 This uses a custom walking API written by myself and is constantly being updated as new fightzones are added. Pros: - Updates are instant, no waiting times - More fightzones are supported Cons: - Sometimes if an object is altered, the changes are not instant - Restarting the script too many times requires loading this webwalker each time which adds unnecessary memory (there is no way to make it only load at client startup since I don't control the client) Walking system 2 This is the default OSBot webwalking API - it is relatively new and very stable since the developers have built it, but is currently lacking certain fightzones (e.g. stronghold) and other high level requirement zones. It is perfect for normal walking (no object interactions or stairs, entrances etc) and never fails. Pros: - Stable, works perfect for normal walking - All scripters are giving code to improve the client webwalker - More efficient when restarting the script since it is loaded upon client start Cons: - No stronghold support yet - Some new/rare fightzones not supported yet - If there is a game-breaking update or an unsupported fightzone, it may take some time to add/repair (less than 24 hours usually) So which system should I choose? Whichever one suits your chosen fightzone best! There really shouldn't be any problems - the sole purpose of these options are for backup and emergency purposes, if the script ever messes up there is always the next option to select. Note: If the script ever fails, there will be immediate updates to fix the walking systems! Script Queue/Bot Manager: Script ID is 758, and the parameters will be the profile name that you saved in the fighter setup! Bug Report templates: New feature request - What is the new feature - Basic description of what the script should do - Basic actions for the script: 'Use item on item' etc. For when the script gets stuck on a tile (or continuous loop): - Which exact tile does the script get stuck on? (exact tile, not 'near the draynor village') - Plugin or normal script? - Did you try all 3 walking options? Script has a logic bug (e.g. dies while safespotting) or (cannon mode doesn't pickup arrows) - What is the bug - How did you make the bug happen - (optional) recommendation for the bug, e.g. 'make the script walk back' or something - Tried client restart? - Normal script or a plugin? - Which exact setup options are enabled? Afk mode, cannon mode, etc etc.4 points
-
4 points
-
Hey everyone I found an interesting tutorial about how to create a 3D object with an awt graphics object and I adapted this code into a script. The result is an interesting paint overlay. Here is a proof of concept: The sphere perfectly loops but the gif doesn't My Source code: package osbot; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import org.osbot.rs07.api.filter.Filter; import org.osbot.rs07.api.map.Position; import org.osbot.rs07.api.map.constants.Banks; import org.osbot.rs07.api.model.Item; import org.osbot.rs07.api.model.Player; import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.utility.ConditionalSleep; @ScriptManifest(name = "3D Paint", author = "Gary_Oak", version = 1.0, info = "", logo = "") public class Main extends Script { private int width = 400; private int height = 400; private double rotate = -180; private int xOffset = 10; private int yOffset = 10; @[member='Override'] public void onStart() { } @[member='Override'] public void onExit() { // Code here will execute after the script ends } @[member='Override'] public int onLoop() { if (rotate >= 180) { rotate = -180; } this.rotate = this.rotate + 1; return 100; // The amount of time in milliseconds before the loop starts // over } @[member='Override'] public void onPaint(Graphics2D g) { Graphics2D g2 = (Graphics2D) g; g2.setColor(new Color(0, 0, 0, 0)); g2.fillRect(0, 0, this.width, this.height); List<Triangle> tris = new ArrayList<>(); tris.add(new Triangle(new Vertex(100, 100, 100), new Vertex(-100, -100, 100), new Vertex(-100, 100, -100), Color.WHITE)); tris.add(new Triangle(new Vertex(100, 100, 100), new Vertex(-100, -100, 100), new Vertex(100, -100, -100), Color.RED)); tris.add(new Triangle(new Vertex(-100, 100, -100), new Vertex(100, -100, -100), new Vertex(100, 100, 100), Color.GREEN)); tris.add(new Triangle(new Vertex(-100, 100, -100), new Vertex(100, -100, -100), new Vertex(-100, -100, 100), Color.BLUE)); for (int i = 0; i < 4; i++) { tris = inflate(tris); } double heading = Math.toRadians(this.rotate); Matrix3 headingTransform = new Matrix3(new double[] { Math.cos(heading), 0, -Math.sin(heading), 0, 1, 0, Math.sin(heading), 0, Math.cos(heading) }); double pitch = Math.toRadians(this.rotate); Matrix3 pitchTransform = new Matrix3( new double[] { 1, 0, 0, 0, Math.cos(pitch), Math.sin(pitch), 0, -Math.sin(pitch), Math.cos(pitch) }); Matrix3 transform = headingTransform.multiply(pitchTransform); BufferedImage img = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_ARGB); double[] zBuffer = new double[img.getWidth() * img.getHeight()]; // initialize array with extremely far away depths for (int q = 0; q < zBuffer.length; q++) { zBuffer[q] = Double.NEGATIVE_INFINITY; } for (Triangle t : tris) { Vertex v1 = transform.transform(t.v1); v1.x += this.width / 2; v1.y += this.height / 2; Vertex v2 = transform.transform(t.v2); v2.x += this.width / 2; v2.y += this.height / 2; Vertex v3 = transform.transform(t.v3); v3.x += this.width / 2; v3.y += this.height / 2; Vertex ab = new Vertex(v2.x - v1.x, v2.y - v1.y, v2.z - v1.z); Vertex ac = new Vertex(v3.x - v1.x, v3.y - v1.y, v3.z - v1.z); Vertex norm = new Vertex(ab.y * ac.z - ab.z * ac.y, ab.z * ac.x - ab.x * ac.z, ab.x * ac.y - ab.y * ac.x); double normalLength = Math.sqrt(norm.x * norm.x + norm.y * norm.y + norm.z * norm.z); norm.x /= normalLength; norm.y /= normalLength; norm.z /= normalLength; double angleCos = Math.abs(norm.z); int minX = (int) Math.max(0, Math.ceil(Math.min(v1.x, Math.min(v2.x, v3.x)))); int maxX = (int) Math.min(img.getWidth() - 1, Math.floor(Math.max(v1.x, Math.max(v2.x, v3.x)))); int minY = (int) Math.max(0, Math.ceil(Math.min(v1.y, Math.min(v2.y, v3.y)))); int maxY = (int) Math.min(img.getHeight() - 1, Math.floor(Math.max(v1.y, Math.max(v2.y, v3.y)))); double triangleArea = (v1.y - v3.y) * (v2.x - v3.x) + (v2.y - v3.y) * (v3.x - v1.x); for (int y = minY; y <= maxY; y++) { for (int x = minX; x <= maxX; x++) { double b1 = ((y - v3.y) * (v2.x - v3.x) + (v2.y - v3.y) * (v3.x - x)) / triangleArea; double b2 = ((y - v1.y) * (v3.x - v1.x) + (v3.y - v1.y) * (v1.x - x)) / triangleArea; double b3 = ((y - v2.y) * (v1.x - v2.x) + (v1.y - v2.y) * (v2.x - x)) / triangleArea; if (b1 >= 0 && b1 <= 1 && b2 >= 0 && b2 <= 1 && b3 >= 0 && b3 <= 1) { double depth = b1 * v1.z + b2 * v2.z + b3 * v3.z; int zIndex = y * img.getWidth() + x; if (zBuffer[zIndex] < depth) { img.setRGB(x, y, getShade(t.color, angleCos).getRGB()); zBuffer[zIndex] = depth; } } } } } g2.drawImage(img, 0, 0, null); } public static Color getShade(Color color, double shade) { double redLinear = Math.pow(color.getRed(), 2.4) * shade; double greenLinear = Math.pow(color.getGreen(), 2.4) * shade; double blueLinear = Math.pow(color.getBlue(), 2.4) * shade; int red = (int) Math.pow(redLinear, 1 / 2.4); int green = (int) Math.pow(greenLinear, 1 / 2.4); int blue = (int) Math.pow(blueLinear, 1 / 2.4); return new Color(red, green, blue); } public static List<Triangle> inflate(List<Triangle> tris) { List<Triangle> result = new ArrayList<>(); for (Triangle t : tris) { Vertex m1 = new Vertex((t.v1.x + t.v2.x) / 2, (t.v1.y + t.v2.y) / 2, (t.v1.z + t.v2.z) / 2); Vertex m2 = new Vertex((t.v2.x + t.v3.x) / 2, (t.v2.y + t.v3.y) / 2, (t.v2.z + t.v3.z) / 2); Vertex m3 = new Vertex((t.v1.x + t.v3.x) / 2, (t.v1.y + t.v3.y) / 2, (t.v1.z + t.v3.z) / 2); result.add(new Triangle(t.v1, m1, m3, t.color)); result.add(new Triangle(t.v2, m1, m2, t.color)); result.add(new Triangle(t.v3, m2, m3, t.color)); result.add(new Triangle(m1, m2, m3, t.color)); } for (Triangle t : result) { for (Vertex v : new Vertex[] { t.v1, t.v2, t.v3 }) { double l = Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z) / Math.sqrt(30000); v.x /= l; v.y /= l; v.z /= l; } } return result; } } package osbot; public class Matrix3 { double[] values; Matrix3(double[] values) { this.values = values; } Matrix3 multiply(Matrix3 other) { double[] result = new double[9]; for (int row = 0; row < 3; row++) { for (int col = 0; col < 3; col++) { for (int i = 0; i < 3; i++) { result[row * 3 + col] += this.values[row * 3 + i] * other.values[i * 3 + col]; } } } return new Matrix3(result); } Vertex transform(Vertex in) { return new Vertex(in.x * values[0] + in.y * values[3] + in.z * values[6], in.x * values[1] + in.y * values[4] + in.z * values[7], in.x * values[2] + in.y * values[5] + in.z * values[8]); } } package osbot; import java.awt.Color; public class Triangle { Vertex v1; Vertex v2; Vertex v3; Color color; Triangle(Vertex v1, Vertex v2, Vertex v3, Color color) { this.v1 = v1; this.v2 = v2; this.v3 = v3; this.color = color; } } package osbot; public class Vertex { double x; double y; double z; Vertex(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } } Original code and article: http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html https://gist.github.com/Rogach/f3dfd457d7ddb5fcfd992 points
-
2 points
-
2 points
-
2 points
-
2 points
-
You are changing the boolean value in one instance of the class and outputting the boolean value from another. They aren't the same value. The solution is to use getters and setters to change fields within a class.2 points
-
You can't rely on an api method to execute correctly first time, low-cpu or not (The reason for this is the bot is dealing with a live game, so latency fluctuations / dcs etc also have a say in the script execution). For this reason, writing scripts in a heavily 'recipe' style is not recommended (e.g bank#open, then bank#withdraw assuming the bank is open after calling bank#open) Try and design your scripts such that it will do whatever it needs to do and repeat if necessary to reach the desired in-game situation. (tip: try the if statement) ~apa D:2 points
-
2 points
-
2 points
-
2 points
-
This is an AIO (All-in-one) bot that has almost every thieving style except blackjack, ask for a free trial by liking thread or making a post! Vyres and elves are now supported! Both can make solid profit per hour, decent passive income! BIG THANK YOU TO ALL OUR SUPPORTERS! WE ARE THE MOST SOLD THIEVING BOT IN OSBOT HISTORY. MOST REPLIES, MOST USERS, LONGEST PROGGIES #1 Thiever | Most Overall Sales | Most Total Replies | Most Results | 10+ Years Maintained | 'the intelligent choice' by Czar SUPPORTS VYRES 224M made in a single sitting of 77 hours 1.1B made from elves and vyres!! ELVES SUPPORTED TOO! (NEW) 2.1m/hr, 6 crystals in 7 hrs 99 THIEVING MANY MANY TIMES, 35M EXP IN ONE BOTTING RUN!! 99 thieving in ~43k xp (12 minutes remaining)! Just got 99 proggy! Gratz to @iz0n THIEVING PET AT LVL 22 FROM TEA STALLS 11.5 HOURS, WITH PET TOO!! 610k/hr getting 99s on deadman worlds!1 point
-
Brought to you by the #1 most sold script series on the market. Come and see why everyone's choosing Czar Scripts! This is the most advanced Agility bot you will find anywhere. BUY NOW $9.99 NEW! Added Both Wyrm Courses! SCRIPT INSTRUCTIONS Optimal Setup for the bot: Please set the mouse zoom to far away (to the left, like below) so that more obstacles can be seen in the view, and so the script can be more stable and reliable Also, make sure to have roofs toggled off (either go to settings tab or type ::toggleroof) for optimal results1 point
-
NEW! supports new south + east shortcuts, new hopper (upstairs), and mouse invokes!!! (just like runelite!) 'the intelligent choice' By Czar 34-99 Mining on video!! Agility Shortcut Setup Window Preview 70 hours run time https://i.imgur.com/wiF6VPO.png1 point
-
I know this issue crops up from time to time, I'm here with a way to fix it Thanks bot2max for letting me figure this out on his windows 10 tablet. Compatibility method for Windows 10 ONLY Manifest hack method (WARNING: This ONLY works on Windows 8.1/10.) Closing Notes I hope this helps most of you, if not feel free to contact me (check my profile or message me on here), and I can prob help if you run into issues. I personally have not had this issue (72 dpi win 7 nub) but I can see how this would be a huge annoyance. PS: If you notice any typos/issues please point em out. I wouldn't say I'm sober atm so I can see there being issues I missed :p PSS: Sorry if this has been posted before, or if there is an easier fix. Let me know and I'll remove/edit this post.1 point
-
1 point
-
1 point
-
1 point
-
I recorded 3600 solid alchs by hand without stopping which came up to roughly 3 hours which I use to this day1 point
-
1 point
-
1 point
-
I'll work on that. Here is a Gyazo of the problem accuring. https://gyazo.com/10b863bc29ea09ea472314a23114a1b11 point
-
1 point
-
Apologies haha, it's a sure way to end up in an infinite loop, perhaps consider a for loop or a different design such as integrating a method relying on the onLoop's delayed loop to retry!1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
Oh shit no lol I set it in the middle of the spider area, i'll try outside the spider area :P sorry. I'll let you know1 point
-
1 point
-
http://www.biblestudytools.com/niv/ Here you go man, May Jesus set you in the right path my frin.1 point
-
Hi, welcome to OSBot. There is really only one main difference between reflection and injection bots. An injection bot modifies the game code and allows the bot to access more information. The only potential benefit of using a reflection bot is that it does not modify the game code and that could theoretically remove one avenue of detection. There are techniques one can use to make injection less detectable while maintaining the benefits of using injection (this is what OSBot does). Tl;dr both are detectable and both can get you banned, we don't know exactly how Jagex bans so we can't say if using one over the other is better.1 point
-
1 point
-
1 point
-
1 point