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

    Members
    • Posts

      14
    • Joined

    • Last visited

    Recent Profile Visitors

    The recent visitors block is disabled and is not being shown to other users.

    Zenz101's Achievements

    1. I remember back in the day they would write a file with a UUID along side the cache to determine if accounts originated from the same computer. Cba to check but isn't this the case anymore?
    2. Basically it's an UI for creating the command line arguments for quick starting the client (CLI)
    3. What I would do is get the item IDs of each weapon style melee, ranged and magic and sort them into an array. Then use binarySearch to check if the opponents weapon slot equipment is included in one of the arrays. Next I would check the distance of the opponent from myself to determine if he is not staff bashing or casting a spell. Pour this into a separate thread which calls every 600ms (1 tick) and change a variable concurrently using AtomicReference in the main thread for thread safety to grab whichever attack style the opponent is using. You would only do this for the character interacting with yourself through Players.getLocal().getCharacterInteractingWithMe()
    4. There has to some kind of setting if Runelite is able to tell.
    5. There is a class called MouseAlgorithm to set a custom algorithm with Mouse#SetMouseAlgorithm. In said class there is a function called #handleMovement(AbstractMouseDestination destination). What do I do in this method? Call Mouse#hop(x, y) until I have reached the destination or do I have to do something else to use this correctly? I calculate the spline myself as well as the winding. Does Mouse#hop send MOUSE_MOVED events to the canvas? I tried to decompile the classes with IntelliJ FernFlower but for every method it says it can't decompile. Is there any other method to get more insight in what the API functions do without trial-and-error?
    6. Magic.castSpellOn(Normal.WIND_STRIKE, entity); Always returns false even though the spell has been casted successfully. It happens when clicking the spell in the spellbook and then on the entity.
    7. Zenz101

      delete

      edit: nvm found it, can be deleted
    8. What is a good provider for residential proxies? Proxy should have option to have a sticky IP instead of rotating after x amount of time. It should be fast enough to bot on at a reasonable price. Also, how much bandwidth does a proxy consume for lets say 1 hour of botting? I've been looking at some providers for $7/GB which I think is not worth it.
    9. The reason why skiddies still use BenLand's algorithm is because they have no clue where to start writing an own mouse implementation. Why don't you come up with your own implementation using something like Bezier curves or another more challeging spline algorithm? Eventually all you need is to create a spline between start and end point which has some twists in it using control points. I have very good experience using TCB splines (Kochanek Bartels spline) and adjusting the tension, bias and continiuty factors to generate decent humanlike mouse splines which can overshoot the target point. See wikipedia. For every mouse spline algorithm I love to use Fitt's law to determine how much time it takes to move to the "object". Afaik Fitt's law is used in every RuneScape bot since 2010. BenLand's algorithm written for Kaitnieks dates back from early 2000's. It's way more than 10 years old. Example using TCB splines: https://tinypic.host/i/oud9tx https://tinypic.host/i/oudOQ9 https://tinypic.host/i/oudRlh
    10. My brain died reading this post. If I correctly comprehend what you're even trying to say I suppose you want to create a large script with a lot of actions but don't know what kind of structure you're needing. Instead of structuring everything you try to code everything in a wall of code with while loops hoping you can complete each section of code when it's needed. If you want to start writing something big you should think more about the structure of the script. The bit of advice I can give you is to never use while loops. While loops keep endlessly running and hogging away CPU and it's unneeded. During a while loop the script hasn't got the oppertunity to update the state. After all a script is a finite state machine. This means the script resides in one state where we wish to react upon. Having this in mind you could let the script poll and let conditions decide which state to use. In example below we would use the getState() function when the loop polls to retrieve the state of the script. The conditions in the getState() function determine which action to use. To make the code more readable we could use enums with readable text to describe the actions. In the loop we would declare every action and the logic it has to use. import org.dreambot.api.methods.interactive.Players; import org.dreambot.api.methods.map.Area; import org.dreambot.api.methods.map.Tile; import org.dreambot.api.methods.walking.impl.Walking; import org.dreambot.api.script.AbstractScript; import org.dreambot.api.wrappers.interactive.Player; public class TestScript extends AbstractScript { private enum State { WALK_TO_LUMBRIDGE, WALK_TO_DRAYNOR, IDLE } final java.util.Random random = new java.util.Random(); final Area draynor = new Area(new Tile(3092, 3240, 0), new Tile(3097, 3240, 0), new Tile(3097, 3246, 0), new Tile(3092, 3246, 0)); final Area lumbridge = new Area(new Tile(3218, 3216, 0), new Tile(3224, 3216, 0), new Tile(3224, 3221, 0), new Tile(3218, 3221, 0)); @Override public int onLoop() { final Player local = Players.getLocal(); switch(getState(local)) { case WALK_TO_LUMBRIDGE: if(!local.isMoving() || local.isStandingStill()) { Walking.walk(lumbridge.getRandomTile()); } break; case WALK_TO_DRAYNOR: if(!local.isMoving() || local.isStandingStill()) { Walking.walk(draynor.getRandomTile()); } break; } return random(500, 800);//Poll loop every 500-800ms } public State getState(final Player local) { if(!draynor.contains(local)) { return State.WALK_TO_DRAYNOR; } else if(!lumbridge.contains(local)) { return State.WALK_TO_LUMBRIDGE; } return State.IDLE; } public int random(final int min, final int max) { if (max < min) { return max + random.nextInt(min - max); } return min + (max == min ? 0 : random.nextInt(max - min)); } } You could optimize it even more doing following so you don't need to write to walk logic twice or even more @Override public int onLoop() { final Player local = Players.getLocal(); final State state = getState(local); switch(state) { case WALK_TO_LUMBRIDGE: case WALK_TO_DRAYNOR: final Area areToWalkTo = state == State.WALK_TO_LUMBRIDGE ? lumbridge : draynor; if(!local.isMoving() || local.isStandingStill()) { Walking.walk(areToWalkTo.getRandomTile()); } break; } return random(500, 800);//Poll loop every 500-800ms } Another thing is to never use something like sleep(11000, 13000) but instead use a random between those numbers otherwise you will get banned a lot sooner sleep(random(11000, 13000)); final java.util.Random random = new java.util.Random(); public int random(final int min, final int max) { if (max < min) { return max + random.nextInt(min - max); } return min + (max == min ? 0 : random.nextInt(max - min)); } And lastly why start dreaming about payments and donations when you can't even come up with a basic script structure?
    11. Afaik this bot has been around for a while and I don't know this is version 3 of the bot? And I was wondering why it's such a hassle to write a decent script with this API? Since Java 8 we've started using streams and writing reactive code even though I'm more of the oldschool programmer but I feel this API is on a whole other level on the negative side. Since RSBot 5 which I think was late 2012 we had something like a query API where you could poll items/gameobjects/... For instance to search a GameObject with id 1337 and location 1000,2000 you could simply do the following final GameObject gameObject = ctx.gameObjects.poll().forId(1337).location(1000,2000).get(0); if(gameObject != null) { //Do stuff... } When I'm using the Dreambot API it gets cumbersome and I have to do final List<GameObject> objectList = GameObjects.all(gameObject -> { final Tile location = gameObject.getTile(); return gameObject.getID() == 1337 && location.getX() == 1000 && location.getY() == 2000; }); if(objectList.size() > 0) { final GameObject gameObject = objectList.get(0); if(gameObject != null) { //Do stuff... } } I mean GameObjects.getObjectsOnTile returns an array and the other functions return a List<GameObject> ??? How is this supposed to be modular? So every time I want to filter out gameObjects I have to retrieve the whole array fetched from the client every time the script loop is called. Isn't this too CPU intensive? I also hate the fact that the API is closed source to the bone so you couldn't even check this out <.< When I turn on "Enable Inventory Tool" it lags as hell which I suppose has something to do with it. I also hate the fact that in AbstractScript the onStart/onExit method isn't abstract and it's a void instead of a boolean? What do you have to do if you want to run logic before the script starts but you eventually don't want the script to start? Normally onStart should return "false" in this case. These methods also aren't even described in the Script Skeleton tutorial so how would a noob even know about these in the first place? They would execute their GUI in the loop. I've just recently started using this bot and writing my first script on it. I've been out of the scene for +5 years but I can see a lot of improvements which could be done to the API which is lacking at the moment. I'm just using this thing to get my private stuff up and running but please for the sake of the sanity of your developers optimize this thing and consider improving the architecture of your API to more modern technologies. I'm using this bot over Tribot because I heard this bot is more capable and mature but I'm starting to consider now... This is just my 2c and I had to get it out because it's frustrating me. /end rant
    12. Zenz101

      Widget IDs

      Is there a script or a feature where u can explore all visible widgets on the screen along with their properties and childeren? Same with varbits?
    ×
    ×
    • 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.