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
  • Stoned

    Members
    • Posts

      106
    • Joined

    • Last visited

    Reputation Activity

    1. Upvote
      Stoned got a reaction from BrownK1d in Life is weird   
      Anyone else feel the same? Our world is strange af. No one knows what the fuck is going on but everyone acts like they do 🤷‍♂️

    2. Like
      Stoned reacted to Hosfad in Life is weird   
      What this life really is :  we are on a fucking giant ball thats spinning in space and no one talks about it ,its going 1600Km/h  ,  floating in the sky above us is a giant fire ball a million times bigger than earth ,
      and you need it for vitamin D , if you stare at it you will go blind , its trying to give you cancer , and if its not there you get sad 
      We are spinning in infinity and it never comes up 
    3. Like
      Stoned reacted to ChaosKilla in Life is weird   
      I used to be a huge stoner. Now I rarely smoke because it keeps me from being social and productive. Every couple weeks or every month, I'll smoke alone after a long day at work. I always think life is weird when I'm baked.
    4. Like
      Stoned reacted to UNSTOPPABLE in HOW TO UNBAN -> PERMANENT BANNED OSRS ACCOUNT   
      Go smoke some
       
    5. Like
      Stoned got a reaction from TheCloakdOne in HOW TO UNBAN -> PERMANENT BANNED OSRS ACCOUNT   
      200 iq
    6. Upvote
    7. Like
      Stoned got a reaction from skaterrsteve in zeFlourMaker (20-30k/hr) (F2P)   
      v nice
    8. Like
      Stoned reacted to dQw4w9WgXcQ in DreamBot 3 Progress Update - 09/16/2016   
      🎉🎉🎉HAPPY 2 3 4 YEARS 🎉🎉🎉
    9. Like
      Stoned reacted to yeeter in DrawMouseUtil - Draw mouse trails and custom cursors   
      fuckin mint
    10. Like
      Stoned reacted to holic in DrawMouseUtil - Draw mouse trails and custom cursors   
      I made a nifty little mouse utility for drawing custom cursors and trails that I thought I would pass onto the community. Some of the trails are meh but I think the final product is still great and it's very straightforward to use.
      Credits:
      DarkMagican for the original mouse trails & rainbow source ENFILADE for MousePathPoint Setup functions
      void setCursorColor(Color cursorColor) Manually set the cursor's colour, default white void setCursorStroke(BasicStroke cursorStroke) Manually set the cursor's stroke thickness, default 2 void setTrailColor(Color trailColor) Manually set the trail's colour, default white void setRainbow(boolean RAINBOW) Set the mouse cursor & trail colour to be rainbow void setRandomColor() Set the mouse cursor & trail colour to be random, possibly rainbow Mouse functions
      void drawRandomMouse(Graphics g) Draws the randomly selected mouse graphic. void drawPlusMouse(Graphics g) Draws a "+" for the mouse, with shadow. void drawCrossMouse(Graphics g) Draws a "x" for the mouse, with shadow. void drawCircleMouse(Graphics g) Draws a circle for the mouse, with shadow. void drawDotMouse(Graphics g) Draws a dot for the mouse, with shadow. void drawRotatingCrossMouse(Graphics g) Draws an "x" for the mouse that rotates, with shadow. void drawRotatingCircleMouse(Graphics g) Draws a circle with rotating pie slices, with shadow. Trail functions
      void drawTrail(Graphics g) Draws a typical line-based mouse trail, varying size line width void drawZoomTrail(Graphics g) Draws a "ZOOM" for a trail, varying case and size void drawTextTrail(Graphics g, String trail) Draws your specified text for a trail, could work for script status? void drawDotTrail(Graphics g) Draws a series of dots as a trail, varying sizes void drawCircleTrail(Graphics g) Draws a series of circles as a trail, varying sizes void drawPlusTrail(Graphics g) Draws a series of "+" as a trail, varying sizes void drawRotatingSlashTrail(Graphics g) Draws a series of "/" as a trail that rotate, varying sizes void drawRotatingCrossTrail(Graphics g) Draws a series of "x" as a trail that rotate, varying sizes Usage example
      First, add DrawMouseUtil to your project by copying and pasting it into a file name DrawMouseUtil.java and importing it into your project
      Second, create a variable for DrawMouseUtil so you have consistency in your setup and calls.
      private DrawMouseUtil drawMouseUtil = new DrawMouseUtil();  
      Third, set your desired settings and add it to onStart. For this example we will be setting up the mouse randomly:
      @Override public void onStart() { drawMouseUtil.setRandomColor(); //Set a random colour and leave the stroke setting at default ..... }  
      Fourth, call your desired mouse cursor and trail in onPaint. For this example we will be using random settings:
      @Override public void onPaint(Graphics g) { drawMouseUtil.drawRandomMouse(g); drawMouseUtil.drawRandomMouseTrail(g); }  
      My favourite combination currently is either
      drawMouseUtil.drawRotatingCrossMouse(g) drawMouseUtil.drawRotatingCrossTrail(g) or
      drawMouseUtil.drawRotatingCircleMouse(g); drawMouseUtil.drawDotTrail(g);  
       
      DrawMouseUtil.java:
      /** DrawMouseUtil by holic **/ import org.dreambot.api.Client; import org.dreambot.api.methods.Calculations; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Arc2D; import java.awt.geom.Line2D; import java.util.LinkedList; import static org.dreambot.api.methods.MethodProvider.log; public class DrawMouseUtil { LinkedList<MousePathPoint> mousePath = new LinkedList<MousePathPoint>(); private boolean RAINBOW = false; private int STROKE = 2; private int mX, mY; private long angle; private BasicStroke cursorStroke = new BasicStroke(STROKE); private int randomMouse = Calculations.random(5); private int randomMouseTrail = Calculations.random(7); private Color cursorColor = Color.WHITE; private Color trailColor = cursorColor; private Color[] cursorColors = {new Color(78, 216, 255), new Color(90, 222, 98), new Color(215, 182, 77), new Color(232, 134, 124), new Color(215, 120, 124), new Color(183, 138, 215), Color.WHITE}; private AffineTransform oldTransform; private int r = 0, g = 0, b = 0, duration = 650; public DrawMouseUtil() { Client.getInstance().setDrawMouse(false); } public void setRainbow(boolean RAINBOW) { if (RAINBOW) { g = 255; } else { g = 0; } this.RAINBOW = RAINBOW; } public void setRandomColor() { if (Calculations.random(2) != 1) { log("Rainbow mouse!"); setRainbow(true); } else { setRainbow(false); cursorColor = getRandomColour(); trailColor = cursorColor; } } private Color getRandomColour() { return cursorColors[Calculations.random(cursorColors.length - 1)]; } public void setCursorStroke(BasicStroke cursorStroke) { this.cursorStroke = cursorStroke; } public void setCursorColor(Color cursorColor) { this.cursorColor = cursorColor; } public void setTrailColor(Color trailColor) { this.trailColor = trailColor; } public void drawRandomMouse(Graphics g) { switch (randomMouse) { case 0: drawPlusMouse(g); break; case 1: drawCrossMouse(g); break; case 2: drawCircleMouse(g); break; case 3: drawDotMouse(g); break; case 4: drawRotatingCrossMouse(g); break; case 5: drawRotatingCircleMouse(g); break; } } public void drawRandomMouseTrail(Graphics g) { switch (randomMouseTrail) { case 0: drawTrail(g); break; case 1: drawZoomTrail(g); break; case 2: drawPlusTrail(g); break; case 3: drawCircleTrail(g); break; case 4: drawDotTrail(g); break; case 5: drawRotatingSlashTrail(g); break; case 6: drawRotatingCrossTrail(g); break; case 7: drawTextTrail(g, "your text here"); break; } } /** * * ** ** ** ** * Mouse cursor * * ** ** ** ** **/ public void drawPlusMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; int s = 4; Point cP = Client.getMousePosition(); int cX = (int) cP.getX(); int cY = (int) cP.getY(); g2.setColor(Color.BLACK); g2.setStroke(cursorStroke); /* + Cursor */ g2.drawLine(cX - s + 1, cY + 1, cX + s + 1, cY + 1); g2.drawLine(cX + 1, cY - s + 1, cX + 1, cY + s + 1); g2.setColor(cursorColor); g2.drawLine(cX - s, cY, cX + s, cY); g2.drawLine(cX, cY - s, cX, cY + s); g2.setStroke(new BasicStroke(1)); } public void drawCrossMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; int s = 3; Point cP = Client.getMousePosition(); int cX = (int) cP.getX(); int cY = (int) cP.getY(); g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); /* X Cursor */ g2.drawLine(cX - s + 1, cY - s + 1, cX + s + 1, cY + s + 1); g2.drawLine(cX - s + 1, cY + s + 1, cX + s + 1, cY - s + 1); g2.setColor(cursorColor); g2.drawLine(cX - s, cY - s, cX + s, cY + s); g2.drawLine(cX - s, cY + s, cX + s, cY - s); g2.setStroke(new BasicStroke(1)); } public void drawCircleMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); g2.drawOval(mX - 1, mY - 1, 4, 4); g2.setColor(cursorColor); g2.drawOval(mX - 2, mY - 2, 4, 4); g2.setStroke(new BasicStroke(1)); } } public void drawDotMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); g2.drawOval(mX - 1, mY - 1, 4, 4); g2.setColor(cursorColor); g2.drawOval(mX - 2, mY - 2, 4, 4); g2.setStroke(new BasicStroke(1)); } } public void drawRotatingCircleMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.drawOval(mX - 2, mY - 2, 4, 4); g2.setColor(cursorColor); g2.rotate(Math.toRadians(angle += 6), mX, mY); g2.draw(new Arc2D.Double(mX - 6, mY - 6, 12, 12, 330, 60, Arc2D.OPEN)); g2.draw(new Arc2D.Double(mX - 6, mY - 6, 12, 12, 151, 60, Arc2D.OPEN)); g2.setTransform(oldTransform); g2.setStroke(new BasicStroke(1)); } } public void drawRotatingCrossMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); Point cP = Client.getMousePosition(); int cX = (int) cP.getX(); int cY = (int) cP.getY(); int s = 4; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); //g.rotate(Math.toRadians(angle+=1), mX, mY); Line2D lineShadow = new Line2D.Double(cX - s + 1, cY + 1, cX + s + 1, cY + 1); Line2D lineShadow2 = new Line2D.Double(cX + 1, cY - s + 1, cX + 1, cY + s + 1); AffineTransform atS = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), cX + 1, cY + 1); AffineTransform atS2 = AffineTransform.getRotateInstance( Math.toRadians(angle), cX + 1, cY + 1); g2.draw(atS.createTransformedShape(lineShadow)); g2.draw(atS2.createTransformedShape(lineShadow2)); g2.setColor(nextCursorColor()); Line2D line = new Line2D.Double(cX - s, cY, cX + s, cY); Line2D line2 = new Line2D.Double(cX, cY - s, cX, cY + s); AffineTransform at = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), cX, cY); AffineTransform at2 = AffineTransform.getRotateInstance( Math.toRadians(angle), cX, cY); // Draw the rotated line g2.draw(at.createTransformedShape(line)); g2.draw(at2.createTransformedShape(line2)); g2.setStroke(new BasicStroke(1)); } } /** * * ** ** ** ** * Mouse trails * * ** ** ** ** **/ public void drawTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int tmpcursorStroke = STROKE; if (STROKE > 1) tmpcursorStroke = (a.getAlpha() > 175 ? STROKE : STROKE - 1); g2.setStroke(new BasicStroke(tmpcursorStroke)); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawLine(a.x, a.y, lastPoint.x, lastPoint.y); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawZoomTrail(Graphics g) { String zoom = "zoom zoom "; int zoomIndex = 0, zoomIndexStart = -1; Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setFont(new Font("default", Font.BOLD, 12)); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (zoomIndex >= zoom.length()) zoomIndex = 0; String toDraw = String.valueOf(zoom.toCharArray()[zoomIndex]); if (lastPoint != null) { Color c = nextTrailColor(); toDraw = a.getAlpha() > 175 ? toDraw.toUpperCase() : toDraw; g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawString(toDraw, a.x, a.y + 5); } lastPoint = a; zoomIndex++; } g2.setFont(new Font("default", Font.PLAIN, 12)); } public void drawTextTrail(Graphics g, String trail) { int zoomIndex = 0, zoomIndexStart = -1; Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setFont(new Font("default", Font.BOLD, 12)); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawString(trail, a.x, a.y); } lastPoint = a; zoomIndex++; } g2.setFont(new Font("default", Font.PLAIN, 12)); } public void drawDotTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 6 : a.getAlpha() > 150 ? 5 : a.getAlpha() > 100 ? 4 : a.getAlpha() > 50 ? 3 : 2; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.fillOval(a.x, a.y, size, size); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawCircleTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 6 : a.getAlpha() > 150 ? 5 : a.getAlpha() > 100 ? 4 : a.getAlpha() > 50 ? 3 : 2; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawOval(a.x, a.y, size, size); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawPlusTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 5 : a.getAlpha() > 150 ? 4 : a.getAlpha() > 100 ? 3 : a.getAlpha() > 50 ? 2 : 1; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawLine(a.x - size + 1, a.y + 1, a.x + size + 1, a.y + 1); g2.drawLine(a.x + 1, a.y - size + 1, a.x + 1, a.y + size + 1); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawRotatingSlashTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 5 : a.getAlpha() > 150 ? 4 : a.getAlpha() > 100 ? 3 : a.getAlpha() > 50 ? 2 : 1; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color Line2D line = new Line2D.Double(a.x - size, a.y, a.x + size, a.y); Line2D line2 = new Line2D.Double(a.x, a.y - size, a.x, a.y + size); AffineTransform at = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), a.x, a.y); g2.draw(at.createTransformedShape(line)); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawRotatingCrossTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 5 : a.getAlpha() > 150 ? 4 : a.getAlpha() > 100 ? 3 : a.getAlpha() > 50 ? 2 : 1; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color Line2D line = new Line2D.Double(a.x - size, a.y, a.x + size, a.y); Line2D line2 = new Line2D.Double(a.x, a.y - size, a.x, a.y + size); AffineTransform at = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), a.x, a.y); g2.draw(at.createTransformedShape(line)); g2.draw(at.createTransformedShape(line2)); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void nextRGB() { if (r == 255 && g < 255 & b == 0) { g++; } if (g == 255 && r > 0 && b == 0) { r--; } if (g == 255 && b < 255 && r == 0) { b++; } if (b == 255 && g > 0 && r == 0) { g--; } if (b == 255 && r < 255 && g == 0) { r++; } if (r == 255 && b > 0 && g == 0) { b--; } } public Color currentCursorColor() { if (!RAINBOW) { return cursorColor; } else { return new Color(r, g, b); } } public Color currentTrailColor() { if (!RAINBOW) { return trailColor; } else { return new Color(r, g, b); } } public Color nextCursorColor() { nextRGB(); return currentCursorColor(); } public Color nextTrailColor() { if (!RAINBOW) //Don't call this if it is set to rainbow so we're not double calling nextRGB() nextRGB(); return currentTrailColor(); } public class MousePathPoint extends Point { private long finishTime; private double lastingTime; private int alpha = 255; public MousePathPoint(int x, int y, int lastingTime) { super(x, y); this.lastingTime = lastingTime; finishTime = System.currentTimeMillis() + lastingTime; } public int getAlpha() { int newAlpha = ((int) ((finishTime - System.currentTimeMillis()) / (lastingTime / alpha))); if (newAlpha > 255) newAlpha = 255; if (newAlpha < 0) newAlpha = 0; return newAlpha; } public boolean isUp() { return System.currentTimeMillis() >= finishTime; } } }  
      Enjoy falsely tricking people into thinking your script is better than it is!
    11. Like
      Stoned 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!
    12. Like
      Stoned got a reaction from Aeon in Aeon Firemaker   
      Nice release  Nice paint too man!
    13. Like
      Stoned reacted to Aeon in Aeon Firemaker   
      Requirements:
      - Tinderbox.
      - Logs.
      - Player located at the Grand Exchange.
       
       
      Instructions:
      - Start script.
      - Select desired log type or toggle on progressive mode.
      - Select a level goal to stop at or leave it at 99.
      - Start script.
      - Profit.
       
      Settings:
      Progressive mode:
      Always uses the best available logs from your bank based on firemaking level. If you don't have the best possible logs in your bank, it will use the next best type. Possible logs: Regular Oak Willow Maple Yew Magic  
       
      Screenshots:

       
      GUI:

       
      Change log:
       
      Bug Reporting:
      If you run into an issue when using this script, please post here or message me directly with this format:
      1. Short description of the problem: 
      2. How do you reproduce it:
      3. Any other relevant information:
       
      Discord:
      Join Here
       
    14. Like
      Stoned reacted to LordJashin32 in zeFlourMaker (20-30k/hr) (F2P)   
      !!!!!!!Introducing!!!!!!!!
          zeFlourMaker
      Version 1.0
      Last updated: 08/26/2020
      Locations supported: Draynor
      Instructions: Start script anywhere on main map where it can walk to Draynor (not underground or above)
      Make sure you have (Pots & Grain) in the bank/Inventory
       
      Features
      - Out speeds other flour bots
      - Saves run energy for top floor of mill (unless over 90 run energy)
      - Supports Noted Pots & Grain
      -  Supports laggy proxies
      - Exact tile placement
       
      Known Bugs & Suggestions (post in thread and I'll add here)
      Known Problems: - Unsure if this works with DB3 beta or not (works with DB2) - Might have some places it can still get stuck need user input and more testing - Run might need better handling Suggestions: - Varrock West (32 cooking) mill support - World hop if players nearby - Antiban - GUI for custom settings - Option to manually pick pots/grain and then make flour - ?  
      Change Log
      Version 1.0 Released: - Supports Draynor - Fast clicks to outspeed other flour bots - Will walk unless over 90 run energy - Will save running for top floor with operating hopper controls - Exact tile placement - Works with noted (grain & pots) - Basic paint to track (gp/hr), etc - Will stop the script and log pots of flour when it runs out of mats - Fixed issue where giant door blocks access - Fixed issue where clicks ladder when door is closed - Fixed issue where it gets stuck on second* floor - Fixed issue where it got stuck outside bank (tile distance problem) - Fixed issue where it spammed pots in bank when out of grain - Fixed issue where it would not click operate hopper controls in time - Fixed issue where it wouldn't wait until large door was open - Ran with laggy proxy, so it should be safe for them - Fixed issue where it would switch between run and open bank screen (added wait after run if bank is open) Proggies

       
       

      ~> LordJashin32
    15. Like
      Stoned reacted to TheCloakdOne in [DB3] Cloakd Tutorial Island [Bulk Loader] [Muling] [Custom Final Area] [Multi-Brain]   
      Overview
       
      - Built For DB3
      The script has been designed from the ground up for DB3 to provide better performance, reliability and all the latest functionality DB3 brings with it.
       
      - Blazing Fast
      Completes Tutorial Island in the fastest possible time. Outperforms all current script on the market
       
      - MultiBrain Technology
      Cloakd Scripts utilize its unique Multi-Brain technology to provide the most fluid and efficient actions
       
      - Human-Like in every way
      The script has been built based off human data and analysis, everything from idles, to name creation has been modelled of existing human data, here is just a few!
      - Email Address & Password
      - Account Username
      - Apperance
      - Idles / istractions
      - Walking, Camera & Zoom
      - 30+ Datapoints From Caffine Levels to Attention Span and much more!
       
      Post Completion Muiling
      When used in combination with Cloakd Mule will allow the bot to stock up on any items or gold needed prior to stopping the script
       
       
      Feature Breakdown
       
      - Configurable Final Area
      Upon completion walk to a specified area - All F2P Banks supported
       
      - Ironman Selection
      Will select the specified ironman mode along with collecting the armour prior to banking
       
      - Bank Items
      Bank all items and clear Banking tutorial upon completion
       
      - Human Like Names, Emails & Apperance
      Its been proven bald heads increase your report rate, This script will create a human like profile from its email all the way through to its apperance.
      Names have been generated from over 20,000 usernames to ensure authentic realistic looking names
      Apperance data has been moddeled off real user data
       
      - Turing Complete
      By utilizing logic validation and MultiBrain technology, the script will never stop or idle
       
      - QuickStart
      Run the script directly from the CLI! 
       
      - Bulk Account Rotation
      Utilize the CloakdTutorialLauncher for mass creation of tutorial island accounts.
      Simply provide it with a list of proxies and accounts and let it control the management of launching DreamBot
       
      - Intuative GUI
      Adjust the paramaters and quests all in an easy to use GUI
       


       
      Antiban/AntiPattern
      Randomized positioning
      Randomized pathing
      Human Like Idling & Afk
      Randomized collection & banking
      Human based profiling
      Zoom Support
       Resizable Mode
      Real-Time Pattern Heuristics
      Advanced Fatigue System modelled from Human data - Over 30 datapoints of variation
       
       
      Terms & Conditions
       
      CloakdTutorialLauncher
      Cloakd Tutorial Launcher can be used to mass create accounts across multiple proxies. This is a stand alone application that can be run on any OS which handles the rotation of proxies and the launching/stopping of the DreamBot client itself.
      Benefits
      - MultiThreaded - Run as many DreamBot clients as you want
      - Advanced Error Recovery - Handle Script/Client/Proxy issues flawlessly
      - File Output - Outputs all completed tutorial accounts to file
       
      How To Use

       
      Requirements
      Fresh Account to run through tutorial island
       
       
      CLI Options
       
      Script Trials
      Trials are not being issued for this script.
       
      Bug Reports
      Provide as much info on the bug as possible
      Provide a print screen of the client + the debug console
       
      Release Notes
       
       
    16. Like
      Stoned got a reaction from Pandemic in DreamBot 3 Miner Tutorial, Part 1   
      Awesome tutorial Pandemic, I'm sure this will help many people out. Great job
    17. Like
    18. Like
      Stoned got a reaction from Soldtodie in SShopper [Buying] [Selling] [World Hopping] [Banking] [And much more]   
      Nice release! Looks really great, good job. 
      My only suggestion would be to change:
      Stop if less money in inventory than: to
      Stop if inventory contains less than I'm sorry for being so picky
    19. Like
      Stoned reacted to Soldtodie in SShopper [Buying] [Selling] [World Hopping] [Banking] [And much more]   
      Version: 0.15 Beta
       


      Features
      Selling
      Buying
      World hopping
      Pack opening
      Custom places
      Banking
       
      Feedback and addition requests are welcome!
    20. Like
      Stoned reacted to Pandemic in DreamBot 3 Miner Tutorial, Part 1   
      Hello everyone, this will be a series of short tutorials expanding on a miner for the DreamBot 3 client, starting with a simple script that just mines and drops, eventually compounding to a fully complete miner that has antiban methods, banking, a GUI, and whatever else I think of
      This initial tutorial will be very brief, I won't be explaining every line of code, however future parts may be more in depth.
      Prerequisites
      This is meant to be for people who are somewhat familiar with Java or similar languages, and new to DreamBot or OSRS bot making. I won't be discussing setting up Java or your development software for building the script's output. This will assume you already have a basic knowledge of Java programming and an IDE ready to go. If you need help with that, check out this guide to get a basic setup ready:
      Project Layout
      To start, create a new project in your IDE and call it anything you'd like. Inside your project folder, create a folder layout and create the three starting classes, it should look like this:

      The 'src' folder is important if you ever decide to upload a script to our SDN.
      The Script
      Let's start with what the script should be able to do by the end of Part 1:
      Mine any rocks, just whatever is closest If the inventory is full, drop all of the ore Show a basic paint letting us know how much experience we've gained For this script, I've decided to go with a node or task setup. Basically we'll make simple, self contained tasks that the client will run whenever they're ready to be ran. We can optionally set a priority so more important tasks will run first, but we'll save that for a later tutorial.
      Miner.java, the script's main class
      For this basic setup, here's the simple starting class for our miner:
      Points of Interest:
      @ScriptManifest: This is an annotation that helps us show your script in the script manager. extends TaskScript: TaskScript is a subclass of AbstractScript that handles the basic task/node logic so we can focus on creating discrete tasks. onStart(): This method is called whenever someone starts the script through DreamBot. onPaint(Graphics g): This method is called on every frame render, usually 60 times per second. For performance reasons, you want to minimize the amount of processing you do in this method. The Tasks
      Now that the script's main class is added, let's make the mining task.
      Mining
      Now we need to figure out how to know which rocks are mine-able. Load into the game and walk by any rocks you can mine.
      Now you can enable the Developer Mode in the settings panel:

      Then in the menu bar that shows up, open the Game Explorer:

       
      Go to the "Game Objects" tab and choose the closest rock to you so we can see if anything changes when a rock is mined:

      After mining the rock, press refresh and select the same rock again:

      As you can see, a few things did change: the rock's ID, model colors, modified colors, and index. To avoid hardcoding any specific rock ids, since we don't care what type of rock it is, I think we should just check for non-null model colors.
      MiningTask.java
      Points of Interest:
      accept(): This is used by DreamBot to decide if it should run this task's execute method. execute(): This is the method called whenever the task runs. Dropping the Inventory
      With the mining task finished, it'll mine until the inventory is full, then just sit around waiting. If you enable input and drop a few ore, the script will pick right back up where it was and mine until it's full again.
      Dropping our entire inventory is pretty easy to do, so our task's class file is really simple:
      DropTask.java
       
      We're Done!
      With that, everything should now compile. Make sure your script's output goes to the (USER_HOME)/DreamBot/Scripts/ folder, then run the script in the client and it should start working, paint and all:

       
       
      You can find all of the source files attached in case you had trouble setting it up correctly
      If you have any questions or have anything you'd like to see included for the end result, please post it below.
      Thanks for reading!
      Miner.zip
      Part Two:
       
    21. Like
      Stoned reacted to PhilBox in PhilStaffer - The deep wildy staff collector. (F2P 60k-100k /HR)   
      PhilStaffer

      Description
      This script will travel to the Lava Maze in the Wilderness, collect "Staff of Earths", bank them, and repeat! This script is excellent for "Iron-man" accounts, the staffs can be sold at "Zaff's Superior Staffs!" in Varrock! The staffs can be sold at  I will be updating this script as time goes on, so stay tuned here for the latest changes/additions! Some features I'm planning on adding are: Death counter, A better anti-ban, and grave retrieval. While testing I was getting 80k-110k (on average) an hour. Keep in mind market prices and fluctuations for this script.

      Requirements
      Salmon and Bronze swords are required *INSIDE THE BANK* for the script to run. There are no set skill requirements (I did all my testing on a Level 3 account). However at such a low defense/health level, the bot will die often. I recommend somewhere around 15 HP Defense to reliably have this script run without it dying.

      Changes
       
      Screenshots



       @ElChapoJr
      @Munchiies
       @Munchiies
      Don't hesitate to PM me with suggestions/concerns/questions
    22. Like
    23. Like
      Stoned reacted to TheCloakdOne in Cloakd Quester [DB3] [10HP Support] [Multi-Brain] [In Progress Quest Support] [Progressive/Random Mode] [Death Retry]   
      Features
       
      Quest In Progress Support
      Unlike most other questers, Cloakd Quester FULLY supports quests that are partially completed. 
       
      - Built For DB3
      The script has been designed from the ground up for DB3 to provide better performance, reliability and all the latest functionality DB3 brings with it.
       
      MultiBrain Technology
      Cloakd Scripts utilize its unique Multi-Brain technology to provide the most fluid and efficient actions
       
      - Intelligent Combat Handling
      All quests are designed around 10HP support. Where applicable the script will use combat techniques to bypass any hard to kill mobs (such as tagging) and also pray if it has the required prayer level.
       
      Feature Breakdown
       
      - Grand Exchange Support
      - Purchases required Quest items
      - Purchases any additional supplies needed (Teleports/Jewelry/Food)
      - Realtime price updates - never get stuck trying to buy an item
       
      - 10HP + Death Support
      - Built from the ground up to support 10HP accounts in the most efficient way for questing
      - Upon bot death the script will recover its items and continue questing.
       
      - Humanlike Idles
      Script emulates human like breaks, idles and reaction times. 
       
      - Turing Complete
      By utilizing logic validation and MultiBrain technology, the script will never stop or idle
       
      - Quest Queuing
      Easily queue up multiple quests to run that will run back to back
       
      - Intuative GUI
      Adjust the paramaters and quests all in an easy to use GUI
       

       
       
      Antiban/AntiPattern
      Randomized positioning
      Randomized pathing
      Human Like Idling & Afk
      Randomized collection & banking
      Zoom/Camera Support
      Resizable Mode
      Real-Time Pattern Heuristics
      Advanced Fatigue System modelled from Human data - Over 30 datapoints of variation
       
      Requirements
      This script can be started from pretty much anywhere. Simply ensure that the account has enough Gold to purchase the required items or make sure the items are in the bots inventory/bank. As this script does traverse the entire map its worth having Varrock Tablets in the bank to ensure it can always recover
       
       
      CLI Options
       
      Progress Reports
      -
       
       
      Script Trials
      12 hour trials are available, simply like the page and comment here!
       
      Bug Reports
      Provide as much info on the bug as possible
      Provide a print screen of the client + the debug console
       
      Release Notes
       
    24. Like
      Stoned reacted to vince77 in Life is weird   
      Whatever we do, we are just creating more and more chaos. We think that we have figured it all out but the truth is we are making life more and more complicated. 
      There is a hope somewhere that one day we will make this planet a paradise and all the conflicts and chaos will be over and humans would be satisfied but ain't gonna happen.
      We are driven by hormones and controlled by the desires of this body. 

      Search for soul.
    25. Like
      Stoned reacted to Hoodz in DreamBot 3 Progress Update - 09/16/2016   
      RIP db3 meme
    ×
    ×
    • 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.