Jump to content
Frequently Asked Questions
  • Are you not able to open the client? Try following our getting started guide
  • Still not working? Try downloading and running JarFix
  • Help! My bot doesn't do anything! Enable fresh start in client settings and restart the client
  • How to purchase with PayPal/OSRS/Crypto gold? You can purchase vouchers from other users
  • Semper Fi

    $100 Donor
    • Posts

      1920
    • Joined

    • Last visited

    • Days Won

      4

    Reputation Activity

    1. Like
      Semper Fi reacted to holic in WindMouse - Custom Mouse Movement Algorithm   
      Hey all,
      Since DB3 officially supports custom mouse algorithms I thought I would port over a classic one: WindMouse.
      WindMouse was written by BenLand100 for SCAR some years back (maybe 10 years?) and has been used on so many damn bots throughout the years because it functions really well so it only seemed right to bring it here.
      In the source code below, there are two implementations of WindMouse:
      Point windMouse(int x, int y) Which comes directly from the SMART github with minor adjustments to work with DB3.
      Better in fixed mode.
        void windMouse2(Point point) My tweaked version from years back that supports all screen sizes.
      I've added a random point between the original and the destination point if the distance between them is large to feel more human but has a 50% chance of happening. By default my implementation is the active algorithm (as it handles all sizes), swap the comments in handleMovement to change to the original.
       
      To use it, simply add the file WindMouse.java to your project and add the following to your onStart method:
      Client.getInstance().setMouseMovementAlgorithm(new WindMouse());  
      All credits go to Benjamin J. Land a.k.a. BenLand100
      WindMouse.java:
      /** * WindMouse from SMART by Benland100 * Copyright to Benland100, (Benjamin J. Land) * * Prepped for DreamBot 3 **/ import org.dreambot.api.Client; import org.dreambot.api.input.Mouse; import org.dreambot.api.input.mouse.algorithm.MouseMovementAlgorithm; import org.dreambot.api.input.mouse.destination.AbstractMouseDestination; import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.input.mouse.MouseSettings; import java.awt.*; import static java.lang.Thread.sleep; public class WindMouse implements MouseMovementAlgorithm { private int _mouseSpeed = MouseSettings.getSpeed() > 15 ? MouseSettings.getSpeed() - 10 : 15; private int _mouseSpeedLow = Math.round(_mouseSpeed / 2); private int _mouseGravity = Calculations.random(4, 20); private int _mouseWind = Calculations.random(1, 10); @Override public boolean handleMovement(AbstractMouseDestination abstractMouseDestination) { //Get a suitable point for the mouse's destination Point suitPos = abstractMouseDestination.getSuitablePoint(); // Select which implementation of WindMouse you'd like to use // by uncommenting out the line you want to use below: //windMouse(suitPos.x, suitPos.y); //Original implementation windMouse2(suitPos); //Tweaked implementation return distance(Client.getMousePosition(), suitPos) < 2; } public static void sleep(int min, int max) { try { Thread.sleep(Calculations.random(min,max)); } catch (InterruptedException e) { log(e.getMessage()); } } public static void sleep(int ms) { try { Thread.sleep(ms); } catch (InterruptedException e) { log(e.getMessage()); } } /** * Tweaked implementation of WindMouse * Moves to a mid point on longer moves to seem a little more human-like * Remove the if statement below if you'd rather straighter movement * @param point The destination point */ public void windMouse2(Point point) { Point curPos = Client.getMousePosition(); if (distance(point, curPos) > 250 && Calculations.random(1) == 2) { Point rp = randomPoint(point, curPos); windMouse2(curPos.x, curPos.y, rp.x, rp.y, _mouseGravity, _mouseWind, _mouseSpeed, Calculations.random(5, 25)); sleep(1, 150); } windMouse2(curPos.x, curPos.y, point.x, point.y, _mouseGravity, _mouseWind, _mouseSpeed, Calculations.random(5, 25)); _mouseGravity = Calculations.random(4, 20); _mouseWind = Calculations.random(1, 10); _mouseSpeed = Calculations.random(_mouseSpeedLow, MouseSettings.getSpeed()); } /** * Tweaked implementation of WindMouse by holic * All credit to Benjamin J. Land for the original. (see below) * * @param xs The x start * @param ys The y start * @param xe The x destination * @param ye The y destination * @param gravity Strength pulling the position towards the destination * @param wind Strength pulling the position in random directions * @param targetArea Radius of area around the destination that should * trigger slowing, prevents spiraling */ private void windMouse2(double xs, double ys, double xe, double ye, double gravity, double wind, double speed, double targetArea) { double dist, veloX = 0, veloY = 0, windX = 0, windY = 0; double sqrt2 = Math.sqrt(2); double sqrt3 = Math.sqrt(3); double sqrt5 = Math.sqrt(5); int tDist = (int) distance(xs, ys, xe, ye); long t = System.currentTimeMillis() + 10000; while (!(Math.hypot((xs - xe), (ys - ye)) < 1)) { if (System.currentTimeMillis() > t) break; dist = Math.hypot((xs - xe), (ys - ye)); wind = Math.min(wind, dist); if ((dist < 1)) { dist = 1; } long d = (Math.round((Math.round(((double) (tDist))) * 0.3)) / 7); if ((d > 25)) { d = 25; } if ((d < 5)) { d = 5; } double rCnc = Calculations.random(6); if ((rCnc == 1)) { d = 2; } double maxStep = (Math.min(d, Math.round(dist))) * 1.5; if ((dist >= targetArea)) { windX = (windX / sqrt3) + ((Calculations.random((int) ((Math.round(wind) * 2) + 1)) - wind) / sqrt5); windY = (windY / sqrt3) + ((Calculations.random((int) ((Math.round(wind) * 2) + 1)) - wind) / sqrt5); } else { windX = (windX / sqrt2); windY = (windY / sqrt2); } veloX += windX + gravity * (xe - xs) / dist; veloY += windY + gravity * (ye - ys) / dist; if ((Math.hypot(veloX, veloY) > maxStep)) { maxStep = ((maxStep / 2) < 1) ? 2 : maxStep; double randomDist = (maxStep / 2) + Calculations.random((int) (Math.round(maxStep) / 2)); double veloMag = Math.sqrt(((veloX * veloX) + (veloY * veloY))); veloX = (veloX / veloMag) * randomDist; veloY = (veloY / veloMag) * randomDist; } int lastX = ((int) (Math.round(xs))); int lastY = ((int) (Math.round(ys))); xs += veloX; ys += veloY; if ((lastX != Math.round(xs)) || (lastY != Math.round(ys))) { Mouse.hop(new Point((int) Math.round(xs), (int) Math.round(ys))); } int w = Calculations.random((int) (Math.round(100 / speed))) * 6; if ((w < 5)) { w = 5; } w = (int) Math.round(w * 0.9); sleep(w); } if (((Math.round(xe) != Math.round(xs)) || (Math.round(ye) != Math.round(ys)))) { Mouse.hop(new Point(((int) (Math.round(xe))), ((int) (Math.round(ye))))); } } /** * Internal mouse movement algorithm from SMART. Do not use this without credit to either * Benjamin J. Land or BenLand100. This was originally synchronized to prevent multiple * motions and bannage but functions poorly with DB3. * * BEST USED IN FIXED MODE * * @param xs The x start * @param ys The y start * @param xe The x destination * @param ye The y destination * @param gravity Strength pulling the position towards the destination * @param wind Strength pulling the position in random directions * @param minWait Minimum relative time per step * @param maxWait Maximum relative time per step * @param maxStep Maximum size of a step, prevents out of control motion * @param targetArea Radius of area around the destination that should * trigger slowing, prevents spiraling * @result The actual end point */ private Point windMouseImpl(double xs, double ys, double xe, double ye, double gravity, double wind, double minWait, double maxWait, double maxStep, double targetArea) { final double sqrt3 = Math.sqrt(3); final double sqrt5 = Math.sqrt(5); double dist, veloX = 0, veloY = 0, windX = 0, windY = 0; while ((dist = Math.hypot(xs - xe, ys - ye)) >= 1) { wind = Math.min(wind, dist); if (dist >= targetArea) { windX = windX / sqrt3 + (2D * Math.random() - 1D) * wind / sqrt5; windY = windY / sqrt3 + (2D * Math.random() - 1D) * wind / sqrt5; } else { windX /= sqrt3; windY /= sqrt3; if (maxStep < 3) { maxStep = Math.random() * 3D + 3D; } else { maxStep /= sqrt5; } } veloX += windX + gravity * (xe - xs) / dist; veloY += windY + gravity * (ye - ys) / dist; double veloMag = Math.hypot(veloX, veloY); if (veloMag > maxStep) { double randomDist = maxStep / 2D + Math.random() * maxStep / 2D; veloX = (veloX / veloMag) * randomDist; veloY = (veloY / veloMag) * randomDist; } int lastX = ((int) (Math.round(xs))); int lastY = ((int) (Math.round(ys))); xs += veloX; ys += veloY; if ((lastX != Math.round(xs)) || (lastY != Math.round(ys))) { setMousePosition(new Point((int) Math.round(xs), (int) Math.round(ys))); } double step = Math.hypot(xs - lastX, ys - lastY); sleep((int) Math.round((maxWait - minWait) * (step / maxStep) + minWait)); } return new Point((int) xs, (int) ys); } /** * Moves the mouse from the current position to the specified position. * Approximates human movement in a way where smoothness and accuracy are * relative to speed, as it should be. * * @param x The x destination * @param y The y destination * @result The actual end point */ public Point windMouse(int x, int y) { Point c = Client.getMousePosition(); double speed = (Math.random() * 15D + 15D) / 10D; return windMouseImpl(c.x, c.y, x, y, 9D, 3D, 5D / speed, 10D / speed, 10D * speed, 8D * speed); } private void setMousePosition(Point p) { Mouse.hop(p.x, p.y); } private static double distance(double x1, double y1, double x2, double y2) { return Math.sqrt((Math.pow((Math.round(x2) - Math.round(x1)), 2) + Math.pow((Math.round(y2) - Math.round(y1)), 2))); } public double distance(Point p1, Point p2) { return Math.sqrt((p2.y - p1.y) * (p2.y - p1.y) + (p2.x - p1.x) * (p2.x - p1.x)); } public static float randomPointBetween(float corner1, float corner2) { if (corner1 == corner2) { return corner1; } float delta = corner2 - corner1; float offset = Calculations.getRandom().nextFloat() * delta; return corner1 + offset; } public Point randomPoint(Point p1, Point p2) { int randomX = (int) randomPointBetween(p1.x, p2.x); int randomY = (int) randomPointBetween(p1.y, p2.y); return new Point(randomX, randomY); } }  
      Happy botting!
    2. Like
      Semper Fi reacted to Hoodz in DreamBot 3 Progress Update - 09/16/2016   
      RIP db3 meme
    3. Like
      Semper Fi reacted to EthanHatesYou in Ethan's Account Creator   
      Built it to make accounts for my PacketBot, maybe you guys will find useful.
      Github
      It's very stable, light-weight, and multi-threaded.
       
      Accounts are saved to Desktop as "New Accounts.txt"
       
      Feel free to change the way emails are generated to better suite you.
       

       
       
    4. Like
      Semper Fi reacted to Gains in Gains Cannonballer [Double ammo mould] - [Low requirements] - [G.E. support] - [Task system] - [QuickStart]   
      Double ammo mould - Low requirements

       
      Features:
      Trains Smithing by melting Steel bars into Cannonballs. When X amount of items have been processed or the desired level has been reached, the bot will start the next task. You can save the task list and settings to a text file and load them quickly. Supports any equipment, for example, jewelry for teleporting. Supports the buying and selling of items in the Grand Exchange. Supports QuickStart. Supports Double ammo mould and Ammo mould.  
      Requirements:
      Have Dwarf Cannon quest completed. Have at least 35 Smithing. If using Shilo Village as the location, have Shilo Village quest completed.  
      Instructions:
      Have Double ammo mould or Ammo mould in the bank. Have Steel bars in the bank. If using Shilo Village as the location, have enough Coins in the coffer.  
      Locations supported:
      Edgeville Al Kharid West Falador Shilo Village Neitiznot Mount Karuulm Mor Ul Rek Lovakengj East Ardougne  
      Gallery:


       
      QuickStart:
      Fill out the form and save the task list and settings to a text file. Open the text file and copy everything. Add -params "" at the end of your QuickStart file. Paste the settings inside the quotation marks. Example: -params "Tasks:1. Skill: Cannonballer | Location: Edgeville | Equipment: None | Goal: Reach level 50;2. Skill: Cannonballer | Location: Shilo Village | Equipment: None | Goal: Process 5000 items # Settings:true;50;30;120;70;2" You can edit the text manually but it has to be perfect, otherwise it won't work.  
      Click here to leave a review for the script
       
    5. Upvote
      Semper Fi reacted to Defiled in DreamBot Client Won't Open Solution   
      Hello Everyone,
      This thread has been suggested by @Infidel , due to the high amount of people experiencing this problem when first starting their botting journey.
      I've listed 2 methods you could attempt, so let's get started!
      1) Client won't open when DBLauncher.jar is clicked.
      This may be due to several reasons but most commonly it's because your computer may lack Java 8 OR It has it but your computer also has other versions installed on it and when you try to load any Java applications, the higher version (Which would be probably set to default) loads the JAR file instead of Java 8.
      So.. what should you do? 🤔🤔🤔
      First let's check the Java version installed and used on your Computer/PC! You can do that by:
      1) Opening the Command Prompt (CMD) -> Search CMD in the start menu OR Terminal for Mac.
      2) Type in 
      java -version and you'll be faced with the following details:

      If the java version doesn't output "1.8" then you could be either of these situations:
      1) You have Java 8 Installed but the system is using another version.
      2) You do not have Java 8 Installed.
      Before continuing if you are sure you do not have Java 8 installed/downloaded: click here to download JDK/JRE 8 . 
      To check whether you have Java 8 Installed or not:
      Windows:
      head over to your Java folder located in your Program Files / Program Files (64bit)

      You'll see all Java versions that are installed on your PC.
      Mac OS: (Paste this in Terminal)
      which java It'll output the current Java version installed.
       
      Now we will set the Environmental Path (To tell your system to use Java 8 )
       
      Get the Path To Your Java Installation:
       
      To fetch the Java Path:  
      Mac OS: (Terminal)
      which java Windows OS: (CMD)
      where java This gets the path of every Java Installation you have! Copy the Java 8 Path
       
       
      Setting the Environmental Path: (Assigning Java 8 as the default Java version)
      for Mac OS:
      Run the following command in your Terminal: (Make sure to change the Java version "Orange number" to the version you found in your Java folder)
      % /usr/libexec/java_home -v 1.8.0_73 --exec javac -version  
      for Windows:
      Run the following command in your Command Prompt (CMD): (Change the path (blue text) to the path of your Java Installation)
      setx -m JAVA_HOME "C:\ProgramFiles\Java\jdk1.8.0_XX"  
      Testing:
      Restart CMD/Terminal and type in
      java -version If it displays 1.8, then everything worked great!
       
      If you guys have any questions, please do leave a comment and I'll answer them to the best of my knowledge!
      Have a good one guys!
    6. Like
      Semper Fi reacted to DaffyDubz in Lumby Goblin Slayer [FREE]   
      DaffyDubz Northern Lumby Goblin Slayer
      (Now available on SDN!)
      ABOUT:
      So this script is a small part of a much lager script I'm working on. Just getting a feel for the API and such. The idea is for training new accounts, this script will kill Goblins, eat (any) food if you have any in your inventory, and loot stack-able loot and clues if you elect to do so via the GUI. You can also set the maximum level to train as well as if you want to train Att, Str, and/or Def. I highly recommend you set up your breaks in the DB client, I personally use 2, first a small (10-30 minute) break every hour or so, and then a large (7-12 hours) sleep every 5-8 hours. (NOTE: I did receive a ban when I did not use the long break, I was using the small break [I think] and was banned after 10-12 hours straight.) Honestly, this was not intended for levels higher than 30-30-30, but I was able to achieve 40+ - 40+ - 40+ on several accounts with the mentioned breaks above, so make sure to keep it under 5-6 hours without breaks. 
       
      HOW TO USE:
      Start anywhere in F2P on Runescape Surface (Preferably in/near Lumby) with weapon/armor already equipped (Does Not Support Changing Weapon/Armor) and ANY food (if needed) in Inventory (Does Not Support Banking). Run the script and configure your settings via the GUI (see below) Select what stats to train (Prayer Not Supported) and what Loot to pickup (deselect all if you don't want to Loot) and hit START. {NOTE: It only changes the Combat Style [Att, Str, Def] every few minutes, so if you set the max to something like 15, there's a chance it will get a level higher than 15. I'll look into checking the level for max more often, but for now just set it 3-4 levels below your absolute max if you really don't want it to be over your max}
       
      RECOMMENDATIONS:
      5 Att (from dummies) Steel Scim and full Iron armor - should only need about 6-10 cooked chickens before you wont need food anymore
      On fresh account with bronze long and wooden shield - go get a full inventory of cooked chicken and do not train higher than 20-20-20 without getting better armor and weapon.
       
      POSSIBLE FUTURE FEATURES: (Definitely in the "Larger Script" mentioned above, but  most of these are unlikely in this script)
      Other locations, Loots Bones + Bury for Prayer, Banking + non stack-able loot, Changing weapons/armor, Kill Chickens/Cows + cook meat for food, World hopping, using the G.E., and much more...
      This Larger Script I keep mentioning is something I plan to use to get a small army (farm) to 60-60-60 and above in F2P, killing several different monsters in several different locations. Basically a "Play Runescape for you" script that focuses on Combat, starting with a fresh account off Tutorial Island. My free time is limited (adult-ing sucks) so don't expect it any time soon, but I hope to have it be a nice "Pure Starter" as well. 
      Yes I know this script is not extremely useful, but I wanted to get the ball rolling and get some feed back as I expand it. Plus I'm still using it and didn't want to make this spot too hot as it's the only supported location as of right now. Please provide any feedback and post some Proggies as well!
       
      GUI + PROGGIES:
      Nothing Fancy, GUI appears when script is started, Proggy appears when Script Ends.


       
      Enjoi!
       
    7. Like
      Semper Fi reacted to NovaGTX in DreamBot 3 Progress Update - 09/16/2016   
      I already have....

    ×
    ×
    • Create New...

    Important Information

    We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.