Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Buy OSRS Gold

Sell OSRS Gold

Search the Community

Showing results for tags 'detection'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • TRiBot
    • News and Announcements
    • Old School Scripts
    • Help and Guidance
    • Development
    • Bugs and Errors
    • Tutorials
  • Scripters' Forums
    • Scripter Application
  • RuneScape®
    • General
    • Guides/Tutorials
    • Achievements
  • General
    • General
    • Questions
    • Discussions & Debates
    • Introductions
    • Suggestions
    • Feedback
  • The Black Market
    • Disputes
    • Repository Credits
    • Gold Exchange
    • Item Exchange
    • Membership Sales
    • Services
    • Other
    • Middleman Services


  • Getting Started With TRiBot
  • The Best Way To Get Rid Of Termites
  • How to Generate Real Estate Leads Using Twitter
  • A Guide to Landing Pages
  • Dog Grooming in Sydney – 5 steps to finding a grooming salon
  • Cheap RS 2007 Gold for Spring 2020!
  • Logo Design Mistakes- Your Business Should Avoid at All Cost
  • Effective Pest Control Measures
  • В Алматы карантин из-за коронавируса: жизнь в условиях пандемии
  • Preschool Educational Toys, Helping One's Child Prepare For the Future
  • Automating Tribot
  • Payment error
  • Animal Crossing: New Horizons Cuts Player Interest Rates
  • network-security-engineer
  • The best place to buy Animal Crossing Bells
  • Major Content of Escape from Tarkov Patch Optimizations
  • You need to rest properly when playing Rocket League
  • Escape from Tarkov hits 200k concurrent players
  • List of Rocket League Ranking System
  • Should I need to run a paid ad campaign, when organically I rank well?
  • How to play Rocket League
  • Twitch Drops Come Back in Escape from Tarkov
  • The Path of Exile game features
  • Be more seen
  • Rocket League Took Actions to Fight Racism and Discrimination in the Game 
  • Rocket League camera setting 
  • Animal Crossing -List of Wedding Season Rewards
  • What WoW Classic race and sophistication is best?
  • FIFA 21 Coming to Steam

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Found 5 results

  1. I suspect Jagex is using a technique called browser fingerprinting, this means they can give your browser it's own fingerprint/ID even if you change proxies or delete your cookies they will still know it's you. Multiloginapp is free, however they offer a premium version which you don't need, basically it will create a new browser with it's own new fingerprint. This website will show you how easily you can be tracked: https://amiunique.org/fp Ever seen an ad follow you around the internet and wondered how they do it? Browser fingerprinting is your answer.
  2. Hello, everyone. Recently I've been interested in how Jagex's pattern detection works. I ran a simple easily detected script which opens the GE, buys 1 lobster at 100 GP, waits 30 seconds, then cancels the offer and closes the GE on a loop with tribot's AI antiban turned off. After a few minutes of runtime some abnormal things started happening. Most commonly my input to the game was blocked, meaning I could move my mouse around, but the game server never accepted my input, and as a result my account's actions had no effect on the game world. I've been able to semi-reliably recreate this scenario multiple times on different accounts and IP addresses. It's worth noting that players and NPCs continue their normal action while my account's been frozen, which also indicates no connection errors. The input blockage happens fairly often to the point that it's very unlikely it has anything to do with my network connection or Jagex servers. I believe this is Jagex's first line of defense against bots (or at least one of them). Real players will typically try to perform various actions in-game like arranging inventory, clicking on random tiles or objects, world hopping, and even restarting the client. Bots may repeatedly click the same action (big red flag) or do nothing (moderate red flag) I have no doubt that botters/scripters with more experience than me have noticed this, but this is not a thread about Jagex input blocking, it's about preventing it from happening through pattern breaking. Pattern breaking is centered around the imperfections and variability of the human mind and judgment. Regular player activity does form patterns to some degree, but typically it isn't as pronounced as those of bots. There are two categories of pattern breaking: Large scale More useful for public scripts or large farms Focuses on creating differences between accounts through account preference Different methods of performing tasks Different subsets of antibans per account Each account may be only able to use 7 out of 12 generic antibans available for the script This increases the longevity of the script by allowing less opportunities for Jagex to group accounts via similar actions Different frequencies of antibans per account Account A may perform one antiban more frequently than account B Changes in sleep and delay times per account Accounts all have different run times This is mainly for farm detection, not for public scripts Different accounts running the script in different worlds/locations if possible Unique break patterns per account Different muling cycles Small scale Focuses on preventing accounts from producing patterns through their actions Changes the order of sub-actions within a larger action when order does not matter More useful when incorporated as part of a complex script process Avoid hardcoding script processes as first A, then B, finally C Instead use fluid condition checks to see what action should be performed Then use account preference and probability to determine which of several actions it prefers over the others Action[] actions = getActions(situation); // This should perform action condition checks and return only relevant actions boolean performed = false; for (action : actions) { if (accountPrefers(action) && accountProbability(action)) { performed = performAction(action); if (performed) { break; } } } if (!performed) { performAction(action[General.random(0, action.length)]; } While this may seem excessive, this is how players decide what to do next in a sequence of events Antiban is a large part of pattern breaking Performing actions you don't usually do is an effective way to break patterns Misclicking can be seen as a form of antiban as it's infrequent but deviates from your normal activity Avoid randomization Randomizing everything from antibans to sub-actions within a larger action schedule may seem like an appealing idea While it's likely to work to some degree, it will make accounts on the large scale appear too similar to each other We're trying to get our accounts to operate in the grey area between a well defined pattern and no pattern at all If all accounts operate in this grey area their patterns will be loosely defined but dissimilar from each other The idea of pattern breaking shows promise, however it has many requirements. One of which is account preference which is something Tribot has some support for, but this support is limited. For example a scripter has no way of applying Tribot preference to custom made functions. The solution is to make your own preference system where the account's username and a seed value is used to derive a value from 0 to 100. Below is my own way of doing so: /** * Performs a probability check on the input value. Input a percentage (0 - 100). */ public boolean chance(double chance) { return General.random(0, 100) <= chance; } /** * Scales a value based on its original range so that its position in that range is in the same position in the new range. */ public double normalizeValue(double value, double oldMin, double oldMax, double newMin, double newMax) { double percentage = (value - oldMin) / (oldMax - oldMin); return newMin + percentage * (newMax - newMin); } /** * Generates a username based preference value for the given seed (0 - 100). */ public double preference(double seed) { try { String hash = Double.toString(Player.getRSPlayer().getName().hashCode() * Math.sqrt(seed)).replaceAll("[^\\d.]", "").replaceAll("\\.", ""); String int1 = Character.toString(hash.charAt(hash.length() - 1)); String int2 = Character.toString(hash.charAt(hash.length() - 2)); String int3 = Character.toString(hash.charAt(hash.length() - 3)); return normalizeValue(Double.parseDouble(int1 + int2 + "." + int3), 0, 99, 0, 100); } catch (NullPointerException e) {return 50.0;} } /** * Generates a username based preference value for the given seed, but normalized to match the provided range. */ public double preference(double seed, double min, double max) { return normalizeValue(preference(seed), 0, 100, min, max); } /** * Performs a probability check on a preference value normalized to match the given range. */ public boolean preferenceChance(double seed, double min, double max) { return chance(preference(seed, min, max)); } Hopefully I've included all the necessary functions for the above to work. If you for example wanted to test an account's preference for performing Action A over Action B, you could take the hashcode of each actions, remove all non-integer characters from each, input them into the functions above, and receive a preference for each. I recommend using custom ranges like preference(100, 15, 85), where 100 is the seed, 15 is the min chance, and 85 is the max chance. That way the preference range will always be within 15% and 85% and you won't ALWAYS or NEVER perform that action above other actions. It should also be mentioned that you shouldn't be using these preferences to determine which actions to do, only to determine which actions should be performed above other actions. All actions should be performed as long as they're part of your script. This post ended up being much longer than I originally wanted but it's good to get your thoughts out in writing so I'm glad I spent the time. Going forward I would appreciate a healthy discussion, please add to the thread with your comments rather than just taking up space with pointless nay saying.
  3. Hello everyone. So I'm writing this because one of my mates told me, that if you're botting you should be using the bot client even when you're playing legit. Because they can detect if you like play legit everytime you on this client, and botting when you're on the other one. Does anybody have a qualified answer on this? - Love Kikipaz
  4. I've seen people post snippets of Ent detection for woodcutting that work with NPC names and IDs. However, it is a lot more work than needed to gather the IDs and change names if your script cuts multiple tree types. I've come up with a simple method that determines if you are cutting an Ent by simply checking the location of the nearest tree in question. It has worked great during my tests. If any experienced programmer sees a flaw, please let me know so that it can be fixed. /** * Returns true iff the player is cutting an Ent. * @param currentTree The tree currently being cut. * @param treeID The id of the tree being cut. * @return true iff the player is cutting an Ent. */ private boolean checkEnts(RSObject currentTree, int treeID) { trees = Objects.findNearest(20, treeID); sleep(200, 400); // You could eliminate the else statement using a combination of || and &&. if (trees.length == 0) { return true; } else { if (!trees[0].getPosition().equals(currentTree.getPosition())) { return true; } } return false; }The method should be called while the player is cutting a tree or when the player's animation is wood cutting. If the bot determines that there are no trees nearby and the player is cutting, then you are cutting an Ent and you should simply run away. However, if there are trees nearby and the tree you are cutting is not the nearest tree, the bot should move to the nearest tree. (You can do this by calling your cut method again).
  5. CREDIT: Arckos, SockMonster, they helped show me this method. EDIT: This isn't actually 100% flawless as sometimes ents aren't npcs. As the owner of a woodcutting script, ents are possible one of the most annoying things to combat. Thankfully, there is a way around IDs so you don't have to keep updating every time the game changes. For starters, when a tree turns into an ent the Object ID changes, and it becomes an NPC. We don't really care about the object, but what can do is check for an npc with the name "Yew". That's the ent. To add this into our script, let's create an ent() method. public void ent() { //First we declare the RSNPC ent RSNPC[] ent = NPCs.findNearest("Yew"); //Now we find the nearest NPC called "Yew" (the ent) RSObject[] Tree = Objects.findNearest(10, "Yew"); if (ent.length > 0) { //if the distance between the player and the ent npc is 2, if (ent[0].getPosition().distanceTo(current_tree) < 2) { //debug message println("Ent Detected - Switching Trees"); //switch to the nearest tree. Tree[0].click("Chop down"); sleep(500, 1700); println("Switched tree"); } } } Now that we have the ent() method, we need to call it in our loop. I find the best way to do this is to structure your loop to have something like this: public int loop(){//schtuffwhile(isAnimating()){ent()anyotherchecks()} Now when we are cutting a tree (boolean isAnimating), it will check for an ent every time the loop returns. Enjoy
  • Create New...