Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
WouterRS

AntiBan by Starfox help!

Recommended Posts

Hi potential helper,

 

I am trying to create my first script and while it already does chop trees, bank them and picks up nests I didn't implement any antiban yet. I started googling to find some help on the ABC TriBot antiban. After some reading I found this Class by Starfox so I downloaded it and made it error free (he used his own API in the class so had to rewrite some stuff). 

Now I thought it would be very easy to use, it doesn't seem to do anything. I basically call the AntiBan.timedActions() method whenever my character is cutting. That method should check if the timer has passed and do some antiban. 

if (Player.getAnimation() == -1){
					treeObject[0].click("Chop down");
					sleep(3000);
					while(Player.getAnimation() != -1){
						AntiBan.timedActions();
					}
					CURRENT_STATE = State.ANTIBAN;
					AntiBan.sleepReactionTime();
				}

Do I need to add some code to get this to work? I am not getting error messages, it just won't do anything. I also enabled the debug printer in the class so that I can see when the AntiBan class does something, no text appears.

 

I hope someone can help!

 

Thanks in advance.

 

Greetings,

Wouter.

Edited by WouterRS

Share this post


Link to post
Share on other sites
11 hours ago, Beg said:

You need to generate trackers.

* Generates the trackers for ABCUtil. Call this only after successfully
* completing an action that has a dynamic wait time for the next action.

The class does that automatically and also automatically when some of the timed actions are being done. 

Edited by WouterRS

Share this post


Link to post
Share on other sites
11 hours ago, WouterRS said:

The class does that automatically and also automatically when some of the timed actions are being done. 

What do you mean automatically?
 

 /**
     * Generates the trackers for ABCUtil.
     * Call this only after successfully completing an action that has a dynamic wait time for the next action.
     *
     * @param estimated_wait The estimated wait time (in milliseconds) before the next action occurs.
     */
    public static void generateTrackers(int estimated_wait) {
        final ABCProperties properties = getProperties();

        properties.setWaitingTime(estimated_wait);
        properties.setUnderAttack(false);
        properties.setWaitingFixed(false);

        getABCUtil().generateTrackers();
    }

Edited by Beg

Share this post


Link to post
Share on other sites
22 hours ago, Beg said:

What do you mean automatically?
 

 /**
     * Generates the trackers for ABCUtil.
     * Call this only after successfully completing an action that has a dynamic wait time for the next action.
     *
     * @param estimated_wait The estimated wait time (in milliseconds) before the next action occurs.
     */
    public static void generateTrackers(int estimated_wait) {
        final ABCProperties properties = getProperties();

        properties.setWaitingTime(estimated_wait);
        properties.setUnderAttack(false);
        properties.setWaitingFixed(false);

        getABCUtil().generateTrackers();
    }

I changed my code to this. Still doesn't seem to work.

I'll upload my whole file as well if you have time to look at it. Thanks for thinking with me :).

public void chop(){
		RSObject[] treeObject = Objects.findNearest(20, tree);
		if (treeObject.length > 0){
			if (treeObject[0].isClickable()){
				if (Player.getAnimation() == -1){
					treeObject[0].click("Chop down");
					waitNotMoving();
					AntiBan.generateTrackers(5000);
					sleep(500);
					while(Player.getAnimation() != -1){
						AntiBan.timedActions();
					}
					CURRENT_STATE = State.ANTIBAN;
					AntiBan.sleepReactionTime();
				}
			} else {
				walkToTrees();
			}
		} 
	}

 

AIO_Chopper.java

Share this post


Link to post
Share on other sites
private long start_time = 0L;
private long estimated_wait = 10000L;
private Condition startChopping = new Condition() {
	@Override
	public boolean active() {
		General.sleep(50);
		return Player.getAnimation() == 879;   // is chopping trees
	}
};
private Condition stopChopping = new Condition() {
	@Override
	public boolean active() {
		General.sleep(50);
		AntiBan.timedActions();
		return Player.getAnimation() != 879; // isn't chopping trees
	}
};
...
public void chop() {
	RSObject[] trees = Objects.findNearest(20, TREE_NAME);
	if (trees.length > 0) {
		RSObject tree = AntiBan.selectNextTarget(trees);
		if (tree != null && tree.isOnScreen()) {
			start_time = Timing.currentTimeMillis();
			if (DynamicClicking.clickRSObject(tree, "Chop down") && Timing.waitCondition(startChopping, General.random(5000, 10000)) {   // you can change min/max to whatever you need
				AntiBan.generateTrackers(estimated_wait);
				Timing.waitCondition(stopChopping, General.random(60000, 90000));   // you can change min/max to whatever you need
				estimated_wait += Timing.currentTimeMillis() - start_time;
				estimated_wait /= 2;
				AntiBan.sleepReactionTime();
			}
		} 
		else 
			walkToTrees();  // or turn camera if just not on screen
	}
}

 

Edited by Beg
  • Like 1

Share this post


Link to post
Share on other sites
9 hours ago, Beg said:
private long start_time = 0L;
private long estimated_wait = 10000L;
private Condition startChopping = new Condition() {
	@Override
	public boolean active() {
		General.sleep(50);
		return Player.getAnimation() == 879;   // is chopping trees
	}
};
private Condition stopChopping = new Condition() {
	@Override
	public boolean active() {
		General.sleep(50);
		AntiBan.timedActions();
		return Player.getAnimation() != 879; // isn't chopping trees
	}
};
...
public void chop() {
	RSObject[] trees = Objects.findNearest(20, TREE_NAME);
	if (trees.length > 0) {
		RSObject tree = AntiBan.selectNextTarget(trees);
		if (tree != null && tree.isOnScreen()) {
			start_time = Timing.currentTimeMillis();
			if (DynamicClicking.clickRSObject(tree, "Chop down") && Timing.waitCondition(startChopping, General.random(5000, 10000)) {   // you can change min/max to whatever you need
				AntiBan.generateTrackers(estimated_wait);
				Timing.waitCondition(stopChopping, General.random(60000, 90000));   // you can change min/max to whatever you need
				estimated_wait += Timing.currentTimeMillis() - start_time;
				estimated_wait /= 2;
				AntiBan.sleepReactionTime();
			}
		} 
		else 
			walkToTrees();  // or turn camera if just not on screen
	}
}

 

Thanks for your help! I'll try to implement this and will let you know if it worked!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Optimus
      Hey guys, Optimus here
        This script is arguably the most powerful script on the market, with over 5 years of development put into it, the end result is an easy and safe to use script that should meet all your combat and magic training needs!
        This script can train combat & magic using almost every training method available. Enjoy  
        Preview:   Features Overview:   AIO Combat Features:
        Start the script from absolutely anywhere in RS and it will navigate to your saved location. Complete all in one combat system that can fight every single monster in Runescape including but not limited too: -Brutal dragons
      -Wyverns
      -Everything in the stronghold of security -Slayer dungeons -Sand crabs -Rock crabs -Dragons -Giants -Goblins -Ghouls -Dagganoths -Chaos Druids
      -And hundreds more different monsters! (Anything you can think of).   Can use all types of food Automatically detects ironman mode and will only pickup your own loot! Can drink every potion in the game Full prayer support Superior antiban Easy to use banking at every bank in RS Supports all teleport items and spells Guthans healing Dwarf multicannon support Progressive training (Upgrade gear, switch training spots & more) Full worldhopping system that can worldhop when many different conditions are met Bones to peaches support Automatically uses the Looting bag and Herb sack Automatically resets Rock crabs and Sand crabs aggro (Including 10k island). Keeps a safe distance while using ranged/magic on Brutal dragons Herb cleaning and dropping Supports all weapons and special attacks (Full list of spec weapons here: https://pastebin.com/raw/bf56k5Bg) Customisable looting by Item Name, Item ID, or items worth more than x price (Automatic price lookup). Re-equips ammo that you loot Safe spotting support ABC2 antiban with a 10/10 rating Telekinetic grab support Can bury bones Load & save GUI settings Profit calculations and xp tracking Customisable mouse speeds   AND MORE!     AIO Magic Features: This script can reliably and safely train magic using the following methods:   Every single combat spell available, from air strike to ice barrage; It's all supported Every single curse spell available Stun/combo alching!
      This is the best magic xp in the game, you cast a regular combat spell or curse, quickly followed by a high level alchemy spell.
      This can earn you up to 180k magic xp/hour! Splashing! All alchemy spells All enchantment spells Superheat item All teleport spells The script can also train with the following lunar spells! Humidify Plank make Superglass make Tan leather Spin flax String Jewellery and More!   Purchase info and script trial info:   Packages:
        Free Trial Price: $FREE  Every month you're allowed a free 10 hour trial with the script, enjoy   1 month Package Price: $10  VIP is not required to run the script  The ability to train all of combat and magic effortlessly and safely for 1 month  Complete customer support via discord and the TRiBot forums   To purchase the script or activate your free trial, click the image below: TRiBot Repository | Optimus Combat & Magic     Gallery:    

         
                   
    • By Red_Spark
      Red_ClayMaster is an open source soft clay making script.It will take empty buckets from Edgeville bank and fill them up with water.After all the buckets have been filled it will withdraw clay from the bank and start making soft clay.It will do this until it runs out of clay .
       
      Red_ClayMaster V2 is here!!!!!!!!!!
      I have re-written the framework, so I can expand on it easier.It also works a lot smoother now and it has passed my overnight test(Ran for 7h:42m made 8,3k soft clay, the only reason it stopped was because it ran out of clay )
       
      Starting the script:
       
      Start the script in Edgeville with and empty inventory.
      Make sure you have the supply in the bank
      Make sure roof are toggle off
         //togglerooftops
       
      GUI Explained:

       
       
      Know Bugs:
      LogIn failing sometimes FIXED(13/01/2016)
       
       
      Features:
      World Hoping
      GUI-Pick what you want to do
      Anti-Ban-Full ABCL10 compliance  (might not work as intended need to test it)
      Fast Dynamic clicking-Accenture and fast clicking
      Dynamic sleep/wait
       
      Have a suggestion?
      Feel free to post it. You can also pm or even contact me through skype. Just click the red Add My Skype button in my signature to add me to your skype
       
      Script Repository Link
       
      TODO:
      Need to implement ABC2 instead of ABC1 Done(will still tweak it a bit)
      If you're interested in the source code please go to this topic:
       
      https://tribot.org/forums/topic/58881-betared-claymasterfirst-script/
       
      UPDATES:
      2.5 Date 11/04/2019
      Updated IDs
      Updated World Hoping
       
      2.5 Date 20/01/2016
      Upgraded to ABC2(new Tribot Anit-Ban)
      2.4 Date 21/12/2015
      Added World Hoping
       
      2.3 Date 19/12/2015
      If the bot ends up outside the bank while making soft clay. It will run back to the bank(even if the bank is off-screen)
       
      2.2 Date 18/12/2015
      FIXED fail-safes in the script
      More info on this topic:https://tribot.org/forums/topic/58881-betared-claymasterfirst-script/
    • By gef30
      I've decided to update an old script i wrote 3 years ago, and here it is: Multi Fisher v2! Completely rewritten, with a full implementation of ABC2, Multi fisher allows you to fish anything, anywhere! 
      get it HERE
      Source code: https://github.com/frankkeuning/fisher
      Screenshot(s):
       
      Setup guide:
    • By Optimus
      Hey TRiBot community!
      The script has been in development for the past ~4 Years, but I've recently just rewrote the entire script, and it now performs better than any other. It's been engineered in a way that mimics a human player down to the littlest detail. It uses human like behavior, playing strategies and teamwork, while also simulating human reaction times and mouse movements, making the script extremely powerful and safe to use.
      To purchase the script or activate your free 1 hour trial, visit the repository:
        https://tribot.org/repository/script/id/2770-optimus-pest-control/
      The current features of the script are:
      VIP is not required Free 1 Hour Trial Advanced ABC2 Antiban Three different playing styles:

      -Defend the knight : The script will defend the void knight, and also kill monsters around the portals to keep your activity bar high.

      Attack the portals: The script will kill the portals as they open up, while also attacking spinners and surrounding npcs when necessary.

      -Repair mode (gain no hp XP): Perfect for defence pures, the script will keep you activity high by chopping down trees and repairing the doors / barricades around the map.
        The script generates unique characteristics for each different account. Point spending feature that will purchase desired items from the void shop when you have enough points. Can join a clan chat and follow the team to different worlds. Can fight with quick prayers Uses the special attack of all weapons Drinks all potions Uses a complex algorithm to calculate the order in which portals will open up. Works well with TRiBot's break handler feature You can start the script from anywhere! It will use the PC minigame teleport if necessary. Randomized pathing each game. Efficiently handles brawlers & splatters' User friendly UI with extensive customization Can play in all boats (Novice, Intermediate, Veteran) Fast at entering the boat ( Multi threaded ) Simple and effective paint that displays points / XP gained.
        Below is a video of the script in action, and some screenshots of results that users have achieved. 

      Reaching max points in a single run:

      Reaching max points again:


      Spending max points on 99 HP: 
       
      Spending max points again:
       
      Spending max points again:







      Thanks, 
      Optimus
    • By Optimus
      TRiBot's #1 Script For Training Pures & Mains
      Description:
      Tri Experiment Fighter is a flawless script designed to kill Experiments in the Canafis Dungeon.
      The script was designed not just to be fast, but also to be very stable and human like. With many many people often using the script for days at a time without stopping it. Tri Experiment Fighter is one of the fastest & safest script available to train any type of account with.
       
      Experiments are one of the best monster in the game to train on for all account types because:
      They have 100 hitpoints - Which means you don't have to attack another one often.
      They have a max hit of 2 - Which means they are ideal to train on for pures.
      There are ALOT of them to train on, and the script is capable of fighting in all areas of the dungeon
      They are close to a bank - They are about a 30 second walk away from the Canafis Bank.
      Features:
      Pictures:
      Contact Info / Support:
      If you ever need help with the script, feel free to send me a pm on the forums, or add me on skype and I usually reply within a few hours. My skype is: tri.tribot
      Purchase Information / Pricing:
      Simply click the button below or search for the script on the repository

       
      Thanks for reading
    • By YoHoJo
      More Runescape Botting Guides at https://RSBotSpot.com
      Join our Runescape Botting Discord chat channel here
      Original/Updated Article here at RSBotSpot
      This guide contains affiliate links
      How to Use TRiBot Looking Glass & Bot though the Official Runescape Client
      TRiBot’s Looking Glass feature allows you to bot through the official Runescape client by hooking onto and controlling it. Looking glass also supports proxies for botting & other clients like OSBuddy.
      While there’s no evidence that TRiBot is detectable, this feature was released as a form of antiban for users worried about the potential detectability of botting clients. Botters seem to be torn 50⁄50 about the effectiveness of Looking Glass on bans, but it never hurts to have some extra protection. This guide will cover how to use TRiBot Looking Glass to bot through the official Runescape client!
      1. Install Java Development Kit (JDK)
      Download and install JDK here. I will be using 32 bit JDK 8u151.
      Java Development Kit Download
      At the time of writing, only Java 8 is supported. 2. Load Runescape & TRiBot
      Load Runescape up to the login screen, and TRiBot up to the client select screen.
      3. Start Looking Glass
      On TRiBot, click the “New Client (Looking Glass)” button.
      Hooking TRiBot to the Official Runescape Client
      4.(Optional) Set a Proxy
      If you’re using a proxy for runescape botting, now’s the time to apply it. To do this: right click the client’s tab on TRiBot, and select “Set Proxy”.
      TRiBot Looking Glass Set Proxy
      That’s it, you’re done!
      Your TRiBot client is now hooked onto the official client, and you’re ready to start botting Runescape!
      Helpful Links:
      You can find out more about TRiBot’s Looking Glass feature on it’s release thread here You can find out more about using proxies with TRiBot Looking Glass here You can find more working Java/Client version combinations reported here  More setup guides: By Einstein
      Note: Some threads are only visible to TRiBot VIP users. Our Favorite Runescape Botting Proxy Providers
      We've tested and had great results with Runescape botting proxies from:
      Blazing Proxy (Use code RSBOTSPOT to save 5% recurring!)(CHEAPEST) Virmach (Use code SAVE20 to save 20% on your first order!) Proxy Fish (Use code OSBOT20 to save 20% on your first order!) Your Private Proxy Our Other Guides:
      All About Proxies for Runescape Botting How to Create and Register Runescape Bot Accounts Through a Proxy How to Use Proxies With TRiBot How to Expand your Goldfarm with a Botting VPS How to Unlock your Runescape Bot Account
    • By wastedbro
      Summary
      Hello everyone, I've started a project that I hope can benefit our antiban technology. Since ABCv2, there really hasn't been much improvement in antiban. I think the concepts behind Trilez's creation are the key to staying under the heuristic radar of Jagex and prolong bot life.
      This project is an extension of the current implementation of ABCUtil, and serves to replace some functionality, and also add some.
      Since my class extends ABCUtil, you still have access to everything ABC has to offer. I'm not replacing all of it!
       
      Why?
      There are three main reasons behind this project:
      Put simply, ABCv2 is cumbersome. It's annoying to implement in most cases, and very difficult to implement correctly in a lot of cases. This mainly applies to the new addition of Reactions, which requires a lot of unnecessary input from the script. Some of the human data behind the new Reactions of ABCv2 isn't ideal. Bots should not emulate the average player, because the average player plays RS like an AFK game. That's how these reactions were recorded. We want our bot to be very efficient, but not abnormally efficient. We want our bot to be a no-life, caffeine-driven player, but still human. (Though we still want each bot to be heuristically different than other bots, but we'll get to that). There are more things to add!  
      Replacements
      Reactions
      I've already pointed out the problems with the current Reactions System. Anyone who's watched their bot wait 13 seconds between killing seagulls are likely also frustrated. 
      Not to mention, ABCv2 does not cover reactions for predictable events. 
      ABCv3 will offer a set of Reaction Types that allow the scripter to replace nearly all arbitrary sleep times with something that looks human, and takes into account RS username, mouse position, and a dynamic sleep.
      Here are some examples of Reactions that you can use in your script. Each one will use an equation that produces data that matches human data that I will collect:
      SHORT (generally around 200-600 milliseconds) MEDIUM (500-1000) LONG (1000,3000) BANK_APPEARS (used after bank screen opens. Based solely off of human data collected from people opening the bank) BANK_CLOSES (used after bank is closed) INTERFACE_APPEARS (used for non-bank interfaces) INTERFACE_CLOSES (used for non-bank interfaces)  
      Now, we must also account for AFK Reactions, which are performed after long, idling tasks, such as chopping a tree. The current implementation takes into account 9 factors. My system will take into account the majority of those factors, and some of them will be auto-detected.
      For example, ABCv2 forces you to tell it whether or not you're in combat. My reactions will determine that for you.
      Also, the Abc3Util class will now provide helper classes for keeping track of idle events so that it can take into account average idle time. It will also make it easy to keep tasks separate. ABCv2 is really only meant for generating reaction times based off of a single Idle Task. But let's say your bot chops oaks AND Willows. Those each require separate reaction generating variables. Abc3Util will allow you to easily track data for any number of events at the same time, and generate reactions based on them, with only a few lines of code.
      All of the old Reaction Methods will be Overriden and marked "Deprecated" (they will still function normally, however).
       
      Preferred Target
      ABC preferred target is annoying to implement, and sometimes doesn't make sense.
      For example, it requires you to call it for hovering the next Target, then you must store that target for when you decide to actually click something. The problem, however, is that in order for this to make sense, you must make sure that not only is the Target valid, but also that it hasn't moved or anything else has spawned or even if your mouse isn't on it.
      Also, this method only takes into account distance, which isn't a good metric, because it ignores any and all obstacles.
       
      In effect, the ABCLv2 Preferred target system is useless.
      .... but it's a good idea.
      I'm going to replace this by calculating many of the above variables I mentioned inside the API. Therefore, instead of calling the method when going to hover and storing the result, you can just call it whenever. It will be a more expensive call, but it will take into account Mouse Position, Weighted Distance to targets, Competition, and it will be adjusted to allow for human-like decisions, which include not always picking the absolute most optimal targets.
       
      New Features
      Timed Action - Accidental Input
      Performing actions in a human way is important, but our input in general must also look human. Even though our actions are performed at human times, they still all have a purpose. Hell, even most of the times actions have specific purposes. How many times have we accidentally pressed a key on the keyboard while playing a video game? A lot.
      This action in meant to be performed while the game screen is focused, and it simply presses 1 or more keys on the keyboard. It works the same as all timed actions, except the "should" method will rarely return true when the mouse is on screen (though it's possible, to avoid heuristic detection).
      The method will also return different results (over time) based on the RS account username (like normal ABC). This method will also be affected by fatigue. Basically speaking, the longer the script running, the more likely these accidents (although they will still be rare). 
      Predictive Inputs
      Now that we have human reactions, we must explore how humans have compensated for our slow nervous system! The answer is predicting the future. It's not hard. When we click the banker, we expect the bank screen to appear. Our reaction may be slow, but we compensate by moving our mouse near where we think the deposit button will appear.
      My API will simply provide a "shouldPredict()" method, which will return true most of the time, but the actual calculation will be complex. The implementation will be up to the scripter, except for APIs that I package with this project (for example, I might offer a Banking extension that uses this).
      The method will also return different results (over time) based on the RS account username (like normal ABC). This method will also be affected by fatigue. Simply put, the longer the script time, the fewer predictions (although it will normally still be true). 
       
       
      Improvements
      Easier Implementation
      Singleton
      In ABCv2, you must get a new instance of the class and use it in all of your code, until a new RS account logs in. That's not necessary, and really annoying if you have a lot of source files.
      My implementation stores an instance of itself in a thread-local variable (works with tabs, but can only be retrieved on the main thread).
      Here's how you use it now:
      Abc3Util.instance().shouldHover(); You're of course welcome to store the result of "instance()" in your script for easier use, but now you don't have to pass it to all of your objects if you don't want to.
       
      Timed Actions
      In ABCv2, you must do something like "if(shouldDoX) { doX(); }" for each action. You probably have a method that goes through each action and performs it if needed. My implementation has a built in method for that. As a bonus, it randomizes the order in which it checks and performs the actions. By doing so avoids certain behavioral patterns. Even though checking your stats and moving the mouse are humanized behaviors, always performing them in the same order can be dangerous, even if it doesn't happen often.
      Abc3Util.instance().performTimedActions();  
      Release Schedule
      I have not yet decided if I will release this publicly. If it ends up truly helping with banrates, it will be a very valuable tool. I don't want to sound greedy, but I might have to charge for this (maybe offer it to Patreon subscribers?).
       
      How You Can Help?
      I will be asking for private Beta Testers eventually. I will need human data. But the human data I collect will be much more controlled than what Trilez collected in order to produce the results I want. Remember, we want to be human, but an efficient human.
      If I had enough developer support, I would consider allowing this to be open-sourced for contributions.
       
      Other than that, I have no way you can help other that be loyal to Tribot and spread the word. I may eventually have a Patreon where you can subscribe for certain benefits and I will put the money towards things that will speed this development along. Let me know if you'd be behind that.
       
      Credits
      Shotdox - For providing a base set of calculation methods for generating distributions (jogged my statistics memories) TRiLez - For inventing ABC and showing that human data is important. If we want to fight against heuristics, we need to implement heuristics of our own!  
      If you have any question, feel free to post below, or contact me on Discord (wastedbro#9955).
    • By chakal
      Hello everyone,
      Im a experienced programmer and Im trying to earn money with osrs since a couple months ago...
      I have good ideas, good moneymakings methods, a very complex system of automatic account replace after ban,
      everything is beautiful except by the fact that I dont know how to make a better antiban. People commonly say "have to be human like"
      but, believe me, its human like =s.
      everything that the script make is randomized by a seed, I use abcutil, I change methods in same script after a random time and still getting bans pretty fast.

      I know antiban its very personal and noone will share your methods, but I just find one good thread about antiban here from trilez and its deprecated, there is any good habits that any of you can share? maybe I can pay for a good advice/ code, if it works... just contact me if you can help me avoiding my bans.

      If you dont mind sharing to public, just post here... certainly will help other guys like me.

      cheers
    • By IceKontroI
      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.
  • Our picks

    • This update features:

      Fixed broken hooks from today's update


      Fix wilderness level with RuneLite (Thanks @Todd)


      Add support for Kotlin .class files in scripts (Thanks @wastedbro)


      Overhaul Inventory API (Thanks @wastedbro)


      Add List support for common methods


      Change method grouping to make more sense (by functionality)


      Refactor methods to utilize Java 8 streams instead of cumbersome loops




      Recognize chatbox minimization (Thanks @JoeDezzy1)


      Fix Screen#isInViewport when NPC chat is open (Thanks @JoeDezzy1)


      Fix login bot bugs (Thanks @erickho123)


      Fix hint arrow return values (Thanks @Encoded)


      Fix depositAllExcept functionality (Thanks @wastedbro)


      Change containing box interface bound and adjust for Y values (Thanks @erickho123)
        • Like
      • 148 replies
    • This release will:

      Fix prayers and world hopper API (Thanks @JoeDezzy1 and @erickho123)


      Improve banking API (Thanks @Encoded)


      Adds methods for returning and using Java Lists, rather than arrays


      Slightly randomizes some hardcoded behaviour


      Removes sleeps from waitConditions; the efficiency saving potential is negligible in these use-cases, therefore cleaner code is preferable


      Other back-end improvements





      Note: If you are using LG, please restart both the RS client and TRiBot.
        • Sad
        • Haha
        • Thanks
        • Like
      • 90 replies
    • This release will:

      Add new internal framework for capturing exceptions


      Fix issue with not selecting the last column in world hopper (Thanks @Todd)


      Add a message about pin usage in Banking#openBank (Thanks @Todd)


      Disable the firewall by default (Thanks @Todd)


      Fix handling of the welcome screen after login (Thanks @Encoded)


      Fix wrong amount bank withdrawal (Thanks @Encoded)


      Fix Screen#isInViewport


      Fix Game#isInViewport (Thanks @Encoded)


      Call onBreakEnd for ListenerManager Breaking Listeners (Thanks @Encoded)


      Fix Prayer#getPrayerPoints NumberFormatException (Thanks @JoeDezzy1)



      Note: If you are using LG, please restart both the RS client and TRiBot.
        • Thanks
        • Like
      • 28 replies
    • This release will:

      Fix LG for both OSBuddy and RuneLite


      Fix issue where the resizable client isn't able to be made smaller (Thanks @JoeDezzy1)


      Fix detection of the logout game tab when resizable mode and side panels are enabled (Thanks @JoeDezzy1)


      Add initial support for Sentry to allow us to identify and easily debug exceptions happening with all TRiBot users


      Add methods to determine if the bank is actually loaded, and not just the overarching interface (Thanks @wastedbro)



      Upcoming updates:

      Improved CLI support


      Full Sentry support


      Much more
        • Like
      • 64 replies
    • This release will:

      Fix NPE in Camera API (Thanks @wastedbro)


      Update deposit box interface ids (Thanks @Encoded)


      Add various bank methods (Thanks @wastedbro)


      Banking#getWithdrawXQuantity


      Banking#getDefaultWithdrawQuantity


      Banking#arePlaceholdersOn




      Fix resizeable minimap bug (Thanks @wastedbro)


      Remove Java 8 requirement


      Please note: TRiBot is not yet fully compatible with Java 10+




      Fix the break handler issues by ensuring the break handler thread never gets paused


      Fix broken settings hooks



      Upcoming updates:

      Improved CLI support


      Much more



      Note: If you are using LG, please restart both the RS client and TRiBot
        • Like
      • 68 replies
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...