Jump to content

Reveance

Members
  • Posts

    108
  • Joined

  • Last visited

  • Feedback

    100%

Everything posted by Reveance

  1. Reveance

    Stealth Quester

    I trialed this a while ago and just bought it. Just want to say that this script is awesome! I haven't encountered a problem so far and it is seriously one sick script! Thanks for making this, how long did it take you approximately?
  2. They can yes. They can at least detect if it's a modified client apparently, unless you're using mirror mode of OSBot. No, because there are other modified clients that are allowed (OSBuddy). But I suppose they may track you a little bit faster, not sure though as there are A LOT of people using OSBuddy..
  3. That could be, but I didn't hear of it before and it might make some people here realize this too. For me personally I randomize a lot because it's pretty much the next best thing I can do right now since the bot never misses a click on anything. But yeah obviously not everything should be randomized...all people have habits but there's always randomness involved tho.
  4. Just did a little benchmark, one million iterations of each. The time it took to do regular random was 50ms, whereas the other method took about 200ms. So it does cost more..but as this method would mostly be used in conjunction with sleeps, I really wouldn't worry about it.
  5. Thank you for all the distributions, I'll look into them. I didn't know that Jagex doesn't collect mouse data anymore, however this isn't necessarily only mouse data. The actions that are executed on the server (in this case for example alching) would still get executed with roughly the same timings, with some random delay due to the connection. You don't think that that is somehow involved in their antibot system? It seems silly to throw something like that away because it's easy to counter. Machine learning is interesting stuff yeah, would someday like to dive into that when I've got lots of spare time :'D
  6. Well apparently a lot of scripts haven't implemented this as I hadn't yet seen any script that did yet. Like I said the reason for posting this is that it may help improve some scripts. Even if bots have this implemented, what use is it if it's not being used by the main thing the bots do - run scripts. But gz on commenting even more 'useless shit'. I collected 500 clicks, and filtered out the non existent values since there were still way too many 0's. But you can see some kind of shape :p
  7. Good idea! I already have something like this set up so will get to this now, it might be biased a little bit though since I'm gonna be paying attention to how I click. I think ultimately it would be best to let your clicks be randomized out of a collection of mouse click intervals created by yourself.
  8. This post is mostly intented for scripters I suppose. So anways I just started scripting again after a long break, and thought of the following while making my script: If Jagex can monitor mouse movements, what would be the easiest way to detect bots? For instance take magic; high alching. Thinking about making a script like that I'm sure I would have used sleep(random(min, max)) between mouse clicks until now. Let's take sleep(random(500, 700)) and see what Jagex would see if they're monitoring the time between the clicks for let's say 10k alchs, by using this snippet: int[] numbers = new int[750]; for (int i = 0; i < 10000; i++) { numbers[MethodProvider.random(500, 700) - 1]++; } int i = 0; for (int n : numbers) { if (i++ < 450) { continue; } System.out.println("" + i + ", " + n + ""); } Entering the output in a scatter plot produces the following data visualisation: I'm sure that you would realize that no human could ever hit so perfectly random between 500 and 700, but never go below or past those respectively. So I started digging into this and found out there is a common method which is used for this sort of thing, called standard deviation. It turns out that OSBot already has this in their API at MethodProvider#gRandom, so you can already use this. I had already made my own snippet for it though: public static void main(String[] args) { int[] numbers = new int[750]; for (int i = 0; i < 10000; i++) { numbers[rand(500, 700) - 1]++; } int i = 0; for (int n : numbers) { if (i++ < 450) { continue; } System.out.println("" + i + ", " + n + ""); } } public static int rand(int min, int max) { return rand(min, max, (max - min) / 8); } public static int rand(int min, int max, int deviation) { Random r = new Random(); int avg = min + ((max - min) / 2); int rand; do { double val = r.nextGaussian() * deviation + avg; rand = (int) Math.round(val); } while (rand < min || rand > max); return rand; } Now, running the output data through the same scatter plot produces the following image: Which doesn't drop off to zero without ever hitting one past it. It is important to note that when using this, you might want to make your intervals wider...it is kinda unlikely that you'd be as accurate as the above plot. For example 300, 900 produces this, which is what I think would be a lot more human like: Anyways, you do not always need to use this but I strongly recommend it for scripts that use repetitive clicking and such, because it seems very easy to detect botters from Jagex's side if you use regular sleeps in some cases. Thought I'd share since I had never seen sleep used with such a random distribution before and it may prevent some bans Goodluck & hf :p
  9. Are you sure? If you look in the logger, which hooks are being loaded for your client revision? I think the broken ones were revision 136. I'm since I posted my latest reply loading hooks for client revision 137, which is working for me now..
  10. I think it has been fixed now
  11. Hey, just restarted the client and received the error 'An error has occured while loading hooks'. Here's the log:
  12. Wow seriously... :'D ok I'm guilty now too. Sorry Dust, GL
  13. Reveance

    Stealth Quester

    A weird, thought I started the new client. Thanks, fixed it!
  14. Reveance

    Stealth Quester

    Thanks man! I just started it, and after buying everything (f2p quests) from GE and teleporting to falador, I get this error and the script stops: EDIT: active quest was pirate's treasure
  15. Reveance

    Stealth Quester

    Could you give me a trial please?
  16. Yes, I based a lot of the hierarchy on Swing, however this has alot less features and doesn't work with LayoutManagers but with absolute positions. The text components that are currently in this (PLabel and PTextPane) do calculate their size based on the font / size / weight and padding etc. and you can also choose to align left, center or right for both of those components. The PTextPane also breaks up the lines (by word) if it is too long to fit into the width. Other than that there isn't calculated much atm except the clipping of parents (PContainers). The current version is also more focussed on managing the hierarchy (drawing on top of another etc, handling events etc). If I notice any interest in this project I could possibly add better ways to style besides only the absolute positioning (maybe by percentages or by being able to center elements in a container or whethever?) and possibly ScrollPanes or something
  17. What do you mean? If you're wondering about whether it's safe or not, you can view and use the source on github.
  18. Hey everyone, I'm developing an opensource library that allows you to create user interfaces with components in a graphics2d context. That basically means you can create paints in an object oriented way. Source & download: https://github.com/reveance/jgtk I started the base of this 2 years ago and didn't finish it but only recently came back to the runescape/botting scene, after which I rewrote my original base as it had many flaws. It is currently far from complete as it only supports absolute positions (where the absolute positions of elements are relative to their parent) but nevertheless I think it's a nice starting point to create interactive paints quite easily. At the moment it only has a few components (PContainer, PImage, PLabel and PTextPane), which you can give various properties such as a border, backgroundcolor, backgroundimage. I hope to upgrade this list with some other components in the future such as a PScrollPane. A cool feature that come with using this is that you can create dynamic paints very easily, because you can for example add a HoverListener to a component in which you set another backgroundimage or another property and the rest is done automatically. All elements support dragging and you can also set a dragtarget (the element that is going to move when you drag the element you enabled dragging on). Another nice thing is that you can preview your paints easily when developing, but I'll explain more about that below. You can find an example on github aswell, but to make things complete I'll post it here too. An example of how to create a user interface: import java.awt.Color; import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.imageio.ImageIO; import nl.reveance.jgtk.paint.UICanvas; import nl.reveance.jgtk.paint.components.PContainer; import nl.reveance.jgtk.paint.components.PImage; import nl.reveance.jgtk.paint.components.PLabel; import nl.reveance.jgtk.paint.components.PLabel.Alignment; import nl.reveance.jgtk.paint.components.PTextPane; import nl.reveance.jgtk.paint.events.MouseHoverListener; public class CustomPaint extends UICanvas { public CustomPaint(final Component reference) { super(); setSize(1024, 768); try { // Create a container for a part of the paint PContainer container = new PContainer(500, 200); // Set the location to (50, 50) container.setLocation(50, 50); // Put a background image on the container, however note that if you // are doing this in an actionlistener, make sure you load the // images somewhere in the class before you use them, to avoid // blocking the ui. container .setBackgroundImage(ImageIO .read(new URL( "http://www.walkontile.com/wp-content/uploads/2011/02/metal-tiles-th.jpg"))); // Create a border with 1 width and assign it a dark gray color container.setBorder(1); container.setBorderColor(Color.DARK_GRAY); // Create an image component PImage pimage = new PImage(); // Make the image listen to drag events. pimage.setDraggable(true); // Set the drag target to the container. This means that the drag // events are going to influence the container (and thus all // components inside it) instead of only this element itself. pimage.setDragTarget(container); // Set the location to 5, 5. This is relative to the parent, which // is going to be the container pimage.setLocation(5, 5); // Load the image. If you are going to dynamically do this in // listeners, make sure you have loaded this beforehand. pimage.setImage(ImageIO .read(new URL( "http://findicons.com/files/icons/2338/reflection/128/cursor_move.png"))); // The image is originally 128x128, but resize it to 32x32 pimage.setImageSize(new Dimension(32, 32)); // Add the image to the container container.add(pimage); // Create a text pane with some text on location (80, 30) with size // (300, 0). If height is set to 0 for a textpane, it will resize // itself based on the amount of text PTextPane textpane = new PTextPane("Strength xp: 10000\n" + "Time ran: 4:30:36\n" + "Strength xp / h: 3000\n" + "Blabla: 100k\n" + "Something else: 14914", 80, 30, 300, 0); // I guess the rest here speaks for itself textpane.setBorder(1); textpane.setAlignment(Alignment.CENTER); textpane.setBackgroundColor(Color.LIGHT_GRAY); textpane.setTextColor(Color.DARK_GRAY); textpane.setPadding(20, 20, 20, 20); // Add the textpane to the container aswell container.add(textpane); // Finally, add the container to the paint this.add(container); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // This shows how you can make a button using a label, but the same // principle would apply when using a PImage to do so. When labels are // given any size 0, it will automatically size itselves based on the // content. final PLabel btn = new PLabel("Fancy button", 50, 300, 0, 0); // Give a new font btn.setFont(new Font("Verdana", Font.BOLD, 18)); // Speaks for itself... btn.setBorder(1); btn.setPadding(10); btn.setAlignment(Alignment.CENTER); btn.setBackgroundColor(Color.LIGHT_GRAY); btn.setTextColor(Color.DARK_GRAY); // We add a HoverListener which is called when you hover in or out of // the element, to create some cool looking things. Maybe support for // this will be implemented in a better way soon, so that you don't have // to large listener classes just to change a color on hover btn.addHoverListener(new MouseHoverListener() { @Override public void onHoverIn(MouseEvent e) { btn.setBackgroundColor(Color.GRAY); btn.setTextColor(Color.WHITE); // Set cursor to HAND_CURSOR when hovering in. This is why we // needed the reference to a component in the constructor. If // you don't want any of such functionality you can leave the // constructor empty. reference.setCursor(Cursor .getPredefinedCursor(Cursor.HAND_CURSOR)); } @Override public void onHoverOut(MouseEvent e) { btn.setBackgroundColor(Color.LIGHT_GRAY); btn.setTextColor(Color.DARK_GRAY); // Set the cursor to default when hovering out. reference.setCursor(Cursor .getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } }); // We add a mouse listener to create an effect on mousePressed, and we // reset everything in mouseReleased btn.addMouseListener(new MouseListener() { @Override public void mouseReleased(MouseEvent arg0) { // Check if the mouse is released inside or outside the absolute // bounds of the button. Note that you MUST use absolute bounds // to check this, as the normal bounds are relative to the // parent, where the MouseEvent is relative to the container // everything is painted in. if (btn.getAbsoluteBounds().contains(arg0.getPoint())) { btn.setBackgroundColor(Color.GRAY); btn.setTextColor(Color.WHITE); // Set cursor to HAND_CURSOR reference.setCursor(Cursor .getPredefinedCursor(Cursor.HAND_CURSOR)); } else { btn.setBackgroundColor(Color.LIGHT_GRAY); btn.setTextColor(Color.DARK_GRAY); // Set cursor to DEFAULT reference.setCursor(Cursor .getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } } @Override public void mousePressed(MouseEvent arg0) { btn.setBackgroundColor(Color.BLACK); } @Override public void mouseExited(MouseEvent arg0) {} @Override public void mouseEntered(MouseEvent arg0) {} @Override public void mouseClicked(MouseEvent arg0) {} }); // Add the button to the ui add(btn); } } You can preview your paint by placing this main method in some class: public static void main(String[] args) { final JPaintFrame paintFrame = new JPaintFrame(); // Create an instance of our CustomPaint CustomPaint canvas = new CustomPaint(paintFrame); // Add it to the JPaintFrame pf.setUICanvas(canvas); } If you want to use this to create paints for OSBot you have to place this inside your script, preferably in the onStart method. Also note that supplying the canvas to the CustomPaint is entirely optional. I did this so it was possible to change the cursor when hovering over the button: CustomPaint customPaint = new CustomPaint(this.getBot().getCanvas()); new OSBotPaint(customPaint, this); This is the outcome of the above CustomPaint inside the preview window, where the move icon controls the entire container its in when dragged, and the 'Fancy button' has a hover, hoverout and click effect. I hope any of you can find any use for this. If you have any questions let me know
  19. Well they ain't gonna ban everyone at the same time I guess, os would only have like 3k players online if they'd do that, and like I said, I wasn't botting half of the time and when I was...I was usually monitoring. Besides...I knew lots of legit players...even me a long time ago...who played alot longer, often and even more botlike then the current osbot but w/e. You can ignore it if you want...but all the recent instant bans I've been seeing around the forums, combined with the removal of randoms tells me that something is wrong
  20. I just got my account banned aswell, which is an account I've had for 9 years, after botting for about 2 days, 10h a day with breaks of ~15min every ~hour... seen alot of other reports on this too lately...maybe jagex came up with a method to detect (this?) bot, while banning them slowly so they don't instantly lose all os players...it would at least give a good explanation to removing randoms.. Edit Those 10 hours were not even full botting hours as I was usually monitoring the account and half the time I was doing something else myself on it
  21. I just bought this script and am trying it out using latest version of osbot (2.2.28) and it fails to walk to the east rock crabs... not only does it click the minimap to slow (standing still for a few seconds sometimes) but when it is at the portal (near Rellekka) it clicks on the ground...then it sometimes attempt to walk 1 point further on the minimap and when you almost arrive there, it clicks back on the spot before the portal. I'd really appreciate it if that gets fixed. It would also be awesome if you can add combat potions to the dropdown as I bought a bunch of them only to find out that most scripts don't support it. The rock crabs are being attacked perfectly though and except the points i just named it seems like a good script so far! EDIT I took some time to make a little video/gif to show you what I meant:
×
×
  • Create New...