Leaderboard
Popular Content
Showing content with the highest reputation on 04/03/17 in Posts
-
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
-
1 point
-
Hello guys, Buying osrs gp 1$ per 1 million. PayPal only leave your skype in a comment below!1 point
-
1 point
-
1 point
-
I bought mills from someone else, her was a bit faster. Sorry! topic can be closed and deleted.1 point
-
1 point
-
That's actually Task-based, not States right? I made my own ghetto buy Method for temp use, is not that hard to do. Script is working so gonna take my time to clean up all. Maybe I'll switch to Task-based instead of States.1 point
-
1 point
-
1 point
-
This is 100% caused by the way the code is executed. You need to structure it in a way that if it does fail it will simply try again on the next loop. Here is an example of one of my banking methods: if (!script.inventory.contains("Coins")) { if (!Banks.LUMBRIDGE_UPPER.contains(script.myPosition())) { script.getWalking().webWalk(Banks.LUMBRIDGE_UPPER); } else { if (!script.getBank().isOpen()) { if (script.getBank().open()) { Sleep.sleepUntil(() -> script.getBank().isOpen(), Script.random(5000, 10000)); } } else { if (script.getBank().contains("Coins")) { if (script.getBank().withdrawAll("Coins")) { Sleep.sleepUntil(() -> script.inventory.contains("Coins"), Script.random(5000, 10000)); } } else { script.stop(false); } } } }1 point
-
1 point
-
I have to leave a review here since I recently came back to OSBot and this is the first script I bought :P...this script has come a long way since late 2014 when I bought it (sorry for never replying back on your request back then :\)! Great job on this Apaec it hasn't gotten stuck once since I started using it a few weeks ago, pretty much flawless ty!1 point
-
1 point
-
Yeah going to put 100 bots on it tomorrow after Jagex leaves the office. Saw they went back to 120.1 point
-
If you're worried about getting your account banned, then don't bot. Most botters will get banned at one point or another. But that's why some are drawn to it; to see whether we can collectively outsmart Jagex.1 point
-
Damn that's good. Remembering guys it's much more differcult to train a pure with 1 prayer1 point
-
accounts with mithril gloves, with 8-10 days of membership left on them1 point
-
I sell mith gloves accounts (no other stats other than the reqs for mith gloves) for 7-8M, id say 40-50m1 point
-
@Czar sometimes the script works really good and sometimes it run around like a chicken with its head cut off. i can't be babysitting it 24/7 but i have tried restarting client and it still has problem. I have safespot set and fight zone but it runs away and then runs back. logger doesn't say much. i think ill stop botting with this script as i dont want to get banned due to malfunctioning of script.1 point
-
hi can i please have a trial on this thank you! and what is ban rate like on thieving?1 point
-
1 point
-
He's a racist scum. Glad he's banned. And he pretends like he is an expert in Java and got a job for it yet I have pm's from him asking me simple questions1 point
-
Read the OP, this is not the same behaviour as the code the post you quoted contains. And the OP literally said the method you posted doesn't do what he needs.1 point
-
Just bought this. Can't even read half the options on the setting before starting the bot. The text is too long so it just ends with "....." and I can't read the options that I can select.1 point
-
1 point
-
1 point