Welcome to TRiBot Forums

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

TRiLeZ

Guide to Implementing Anti-Ban Compliance

23 posts in this topic

Implementing Anti-Ban Compliance

 

In this guide, you will learn about to how implement anti-ban compliance. You will also learn how to calculate your anti-ban compliance level (ABCL).

 

First, General.useAntiBanCompliance(true); <= This must be called to force the standard API methods to use anti-ban compliance code rather than the standard code. The methods affected by the previous method are:

  • Banking.openBank();
  • Inventory.drop(..);
  • GameTab.open(..);

Performing Common Actions

  • Certain actions must be done certain ways to ensure anti-ban compliance. The actions are listed below.

Opening Banks (Score: 10)

  • If the bank has both a banker (NPC) and a booth (object), then:
    • Your script must use Banking.openBank().
  • Otherwise if the bank only has one of those, you can use a different method to open the bank.

Dropping Items (Score: 12)

  • ​Use any of the Inventory API methods to drop items.

Switching Game Tabs (Score: 8)

  • Use any of the GameTab API methods to switch tabs.

Performing On-The-Side Actions

  • On-The-Side actions are actions which aren't built in to the standard API methods. These actions must be manually coded into scripts. Scripts will have to construct a new ABCUtil instance to know when to perform these actions. Only one instance of ABCUtil should be created.
  • ABCUtil works like this: Calling the next() methods will generate a value corresponding to whatever you are doing. This value will be cached until the reset() method is called. This means that the script doesn't have to cache what next() returns. After the action in question has been performed, the reset() method must be called so that next() will return a new value.

Checking XP (Score: 7)

  • ABCUtil.TIME_TRACKER.CHECK_XP
  • Should the script do it: Only implement this if the script is training a skill. If the script is not training a skill (ex: merchanting), then XP should not be checked.
  • When should the script do it: Perform the action when (System.currentTimeMills() >= next()). This condition should be checked either when the script/player is idling (waiting for something), or after an XP gain.
  • What to do afterwards: Call reset() so that a new timestamp will be returned by next().
  • Recommended: Call ABCUtil.performXPCheck(org.tribot.api2007.Skills.SKILLS) when the player is idling/waiting.

Examining Random Objects (Score: 3)

  • ABCUtil.TIME_TRACKER.EXAMINE_OBJECT
  • Should the script do it: Yes.
  • When should the script do it: Examine a random object when (System.currentTimeMills() >= next()). This condition should be checked when the script/player is idling. If the script is never idling, do it when no interfaces are open.
  • What do do afterwards: Call reset() so that a new timestamp will be returned by next().
  • Recommended: Call ABCUtil.performExamineObject() when the player is idling/waiting.

Randomly Rotating Camera (Score: 5)

  • ABCUtil.TIME_TRACKER.ROTATE_CAMERA
  • Should the script do it: Yes.
  • When should the script do it: Randomly rotate the camera for 500-2000ms when (System.currentTimeMills() >= next()). This condition should be checked when the script/player is idling. If the script is never idling, do it when no interfaces are open.
  • What to do afterwards: Call reset() so that a new timestamp will be returned by next().
  • Recommended: Call ABCUtil.performRotateCamera() when the player is idling/waiting.

Mouse Leaving the Game (Score: 5)

Picking Up the Mouse (Score: 5)

Random Mouse Movement (Score: 5)

Random Right Click (Score: 5)

Combat Check  (Score: 3)

Equipment Check  (Score: 3)

Friends Check  (Score: 3)

Music Check  (Score: 3)

Quests Check  (Score: 3)

Activating Run (Score: 12)

  • ABCUtil.INT_TRACKER.NEXT_RUN_AT
  • Should the script do it: Only if the script performs any movements.
  • When should the script do it: Activate run when (run_energy >= next()). This condition should be checked before/during minimap movement.
  • What to do afterwards: Call reset() so that a new value for the next run activation will be returned by next().

Eating Food (Score: 10)

  • ABCUtil.INT_TRACKER.NEXT_EAT_AT
  • Should the script do it: Only if the script ever has to eat food.
  • When should the script do it: Eat food when (hp_percent <= next()).
  • What to do afterwards: Call reset() so that a new value for the next percent to eat at will be returned by next().

Responding to Switching Objects (Switch Object Delay) (Score: 26)

  • Non-Combat: ABCUtil.DELAY_TRACKER.SWITCH_OBJECT, Combat: ABCUtil.DELAY_TRACKER.SWITCH_OBJECT_COMBAT
  • Should the script do it: If the script/player has to wait before moving on to the next object, then yes.
  • When should the script do it: The script should wait for next() milliseconds right after a resource has been fully drained, and when there is a next object to go to immediately afterwards. The delay should be executed right before clicking/moving the mouse to the object. The delay also applies to clicking the minimap if the resource is not on screen. Needs to be used in conjunction with new object response time (depends on the waiting time before clicking the next resource).
  • What to do afterwards: Call reset() after the script has slept for the delay time so that a new delay will be returned by next().

Responding to New Objects (New Object Delay) (Score: 28)

  • Non-Combat: ABCUtil.DELAY_TRACKER.NEW_OBJECT, Combat: ABCUtil.DELAY_TRACKER.NEW_OBJECT_COMBAT
  • Should the script do it: If the script has to wait for an object to spawn, then yes.
  • When should the script do it: The script should wait for next() milliseconds before responding to the new object, if the player has been waiting/idling for the object in question to spawn. The delay should be executed right before clicking/moving the mouse to the object. The delay also applies to clicking the minimap if the resource is not on screen. Needs to be used in conjunction with switch object response time (depends on the waiting time before clicking the next resource).
  • What to do afterwards: Call reset() after the script has slept for the delay time so that a new delay will be returned by next().

Hovering Objects (Score: 20)

  • ABCUtil.BOOL_TRACKER.HOVER_NEXT
  • Should the script do it: yes.
  • When should the script do it: The script should hover over the next object/npc/player/item/etc. while waiting for the player to finish performing the current action. The mouse should hover over the next action. The script should only hover when next() returns true.
  • What to do afterwards: Call reset() with every new object/npc/player/item/etc. so that the hover condition should be re-checked the next time next() is called.

Using Closest Objects vs Using Objects Which Aren't the Closest (Score: 18)

  • ABCUtil.BOOL_TRACKER.USE_CLOSEST
  • Should the script do it: Do it if objects/npcs/players/etc. are clustered together (if there exists objects which are < 3.0 tiles apart from eachother).
  • When should the script do it: If next() returns false, then just use the closest object. Otherwise, check the second closest object. If the second object is < 3.0 tiles away from the closest object, then use the second closest object. Otherwise if it is father than 3.0 tiles from the first object, just use the first object.
  • What to do afterwards: Call reset() with every new object/npc/player/etc. so that the use closest object condition should be re-checked the next time next() is called.

Moving to the Anticipated Next Object Location (Score: 26)

  • ABCUtil.BOOL_TRACKER.GO_TO_ANTICIPATED
  • Should the script do it: If the script ever has to wait for an object to spawn, and there are multiple objects which spawn at different frequencies/times, then yes.
  • When should the script do it: After the current resource you are at has had it's resources drained, then go to the next available resource. Otherwise, if there are no available resources at that time, then the script/player should move to the next anticipated resource location if and only if next() returns true. The next anticipated resource location can either be calculated randomly, or approximated with math and timing and whatnot.
  • What to do afterwards: Call reset() with every new resource so that the move condition should be re-checked the next time next() is called.

Switching Resources Upon Too Many Players (Score: 4)

  • ABCUtil.SWITCH_TRACKER.TOO_MANY_PLAYERS
  • Should the script do it: If the player is harvesting resources from an object/npc/etc. which has limited resources (competition between players), then yes.
  • When should the script do it: The script should track how often it wins the limited resources, and how often it loses the limited resources. If it wins limited resources >= 50% of the time, then we should not ever switch resources. Otherwise, a few seconds (2-5s) after moving to a new resource, if next(player_count) returns true, then we should move to a different resource location. If no other resource locations exist, then do nothing.
  • What to do afterwards: Call reset() with every new resource so that the condition should be re-checked the next time next() is called.

Delay Between Item Interaction (Score: 12)

  • ABCUtil.DELAY_TRACKER.ITEM_INTERACTION
  • Should the script do it: If the script interacts with multiple items one after another, then yes.
  • When should the script do it: The script should call General.sleep(next()) after an item has been interacted with.
  • What to do afterwards: Nothing. No caching of delays is used for this, so no resetting is needed.

Calculating Anti-Ban Compliance Level (ABCL)

  • To calculate a script's ABCL:
    • Create two running totals. The first will be your script's running compliance score (numerator). The second will be the overall compliance score (denominator). If one of the anti-ban techniques does not apply to your script (the guide will specify if it does or not), then ignore that technique's score.
    • Go through each and every technique. Add the technique's score to the denominator. If your script fully implements the technique, then add the its score to the numerator.
    • After going through them all, divide the numerator by the denominator, then times that number by 100 to get a percentage.
    • The resulting percentage will be used to calculate the script's ABCL using the following table.
      • 0%: ABCL 0
      • 0-9.99%: ABCL 1
      • 10-19.99%: ABCL 2
      • 20-29.99%: ABCL 3
      • 30-39.99%: ABCL 4
      • 40-49.99%: ABCL 5
      • 50-59.99%: ABCL 6
      • 60-69.99%: ABCL 7
      • 70-79.77%: ABCL 8
      • 80-89.99%: ABCL 9
      • 90-100%: ABCL 10

Examples

 

The example shows the use of BOOL_TRACKER.USE_CLOSEST, BOOL_TRACKER.HOVER_NEXT, DELAY_TRACKER.NEW_OBJECT, and DELAY_TRACKER.SWITCH_OBJECT.

private ABCUtil abc = new ABCUtil();private boolean hover_next = false;private boolean waited_delay_time = false;private long last_chopping_time = 0L;private boolean cutTree() {    // Code to click the tree. Returns true if we successfully clicked the tree, and if/when isChopping() returns true.    final RSObject[] objects = ...;    if (objects.length < 1)        return false;    RSObject object_to_click = objects[0]; // The closest object    // We should check BOOL_TRACKER.USE_CLOSEST to determine whether we should use the closest object or not.    if (objects.length > 1 && this.abc.BOOL_TRACKER.USE_CLOSEST.next()) {        if (objects[1].getPosition().distanceToDouble(objects[0]) < 3.0)            object_to_click = objects[1];    }    // Now that we have found a tree to cut, let's sleep    if (!this.waited_delay_time) {        // Since we have not waited the delay time for this specific object yet, let's do so. We should check how long ago we were last chopping a tree. If it was recently (between 8-12 seconds or less ago), then wait for DELAY_TRACKER.SWITCH_OBJECT. Otherwise, wait for DELAY_TRACKER.NEW_OBJECT.        if (Timing.timeFromMark(this.last_chopping_time) < General.random(8000, 12000)) {            General.sleep(this.abc.DELAY_TRACKER.SWITCH_OBJECT.next());            this.abc.DELAY_TRACKER.SWITCH_OBJECT.reset();        } else {            General.sleep(this.abc.DELAY_TRACKER.NEW_OBJECT.next());            this.abc.DELAY_TRACKER.NEW_OBJECT.reset();        }        this.waited_delay_time = true;    }    // Proceed to chop the object object_to_click.}private boolean isChopping() {    // Code to determine if the player is chopping a tree. Returns true if we are chopping.}private boolean handleChopping() {    if (!isChopping()) {        if (!cutTree())            return false;        // So we weren't cutting a tree, but now we are. isChopping() should true right here (assuming cutTree() checks it before returning).        // Since we just moved to a new tree, we should re-check BOOL_TRACKER.HOVER_NEXT to determine whether we should hover over the next tree.        this.hover_next = this.abc.BOOL_TRACKER.HOVER_NEXT.next();        this.abc.BOOL_TRACKER.HOVER_NEXT.reset(); // Only reset with every new object.        this.abc.BOOL_TRACKER.USE_CLOSEST.reset();// Only reset with every new object.    }    this.waited_delay_time = false;    //isChopping() should return true right here. Let's enter a loop for the duration of the chopping.    final long timeout = Timing.currentTimeMillis() + General.random(180000, 240000); // A timeout to prevent an endless loop    while (isChopping()) {        sleep(80, 120); // A sleep to prevent an overload of CPU usage.        // We should check this.hover_next here. If true, we should find the next object, and hover the mouse over it.        // Check other things if needed.        this.last_chopping_time = Timing.currentTimeMillis(); // Update the time at which we were last chopping    }}

Simple NEW_OBJECT and SWITCH_OBJECT delay usage:

	/**	 * Executes the NEW_OBJECT/SWITCH_OBJECT delay, to be executed right before	 * clicking objects/NPCs/players/tiles/ground items/minimap tiles/items. Not	 * to be used between item clicks; only if we have to wait for an item to	 * popup in the inventory before clicking on it, and if we do not know the	 * exact time at which the item will appear in the inventory. In other	 * words, this is the reaction delay when responding to a changing	 * environment where we do not know the exact time at which the environment	 * will change to the way we want.	 * 	 * @param last_busy_time	 *            The timestamp at which the player was last	 *            working/mining/woodcutting/fighting/fishing/crafting/etc. The	 *            timestamp beings when we have to move on to the next resource.	 * 	 * @param combat	 *            True if the player is in combat, or the script is one which	 *            the player is constantly performing actions, and requires the	 *            player to have very fast actions (such as sorceress's garden).	 */	public void waitNewOrSwitchDelay(final long last_busy_time,			final boolean combat) {		// All ABCUtil objects contain the exact same data, so it doesn't matter		// whether we construct a new one, or use a constant one.		final ABCUtil abc = new ABCUtil();		if (Timing.timeFromMark(last_busy_time) >= General.random(8000, 12000)) {			if (combat) {				General.sleep(abc.DELAY_TRACKER.NEW_OBJECT_COMBAT.next());				abc.DELAY_TRACKER.NEW_OBJECT_COMBAT.reset();			} else {				General.sleep(abc.DELAY_TRACKER.NEW_OBJECT.next());				abc.DELAY_TRACKER.NEW_OBJECT.reset();			}		} else {			if (combat) {				General.sleep(abc.DELAY_TRACKER.SWITCH_OBJECT_COMBAT.next());				abc.DELAY_TRACKER.SWITCH_OBJECT_COMBAT.reset();			} else {				General.sleep(abc.DELAY_TRACKER.SWITCH_OBJECT.next());				abc.DELAY_TRACKER.SWITCH_OBJECT.reset();			}		}	}
1 person likes this

Share this post


Link to post
Share on other sites

When hovering skills to check the xp I think it makes sense to hover based on the xp gains instead of randomly hovering a skill. This might not make sense for your script, but if it does, here is a snippet to implement skill xp hovering based on xp gains:

 

skills is an array of the skills that can be trained.

startXps is the starting xp of each skill

private final SKILLS[] skills = {SKILLS.ATTACK, SKILLS.STRENGTH, SKILLS.DEFENCE, SKILLS.RANGED, SKILLS.MAGIC, SKILLS.HITPOINTS};    private final int[] startXps = {Skills.getXP(skills[0]), Skills.getXP(skills[1]), Skills.getXP(skills[2]), Skills.getXP(skills[3]), Skills.getXP(skills[4]), Skills.getXP(skills[5])};  
/**     * Checks the XP of a random skill we are training     * @return True if checked xp     */    public boolean checkXp() {        LinkedHashMap<SKILLS, Integer> map = new LinkedHashMap<SKILLS, Integer>();        int totalXp = 0;                // Check what skills have been trained        for(int i = 0; i < skills.length; i++){            int xpGained = Skills.getXP(skills[i]) - startXps[i];            if(xpGained > 0) {                totalXp += xpGained;                map.put(skills[i], totalXp);            }        }                // Determine what skill to hover        if(map.size() > 0) {            int random = General.random(0, totalXp);            Set<SKILLS> skills = map.keySet();            for(SKILLS skill : skills) {                int xp = map.get(skill);                if(xp >= random) {                    // HOVER SKILL!                }            }        }        return false;    }
Edited by J J
1 person likes this

Share this post


Link to post
Share on other sites

Is there any statistical evidence proving that “ABCL” will even effect ban rates?

 

In addition the implementation is beyond bulky in its current state,

a majority of the functions required to meet high “ABCL” could be simply included in with TRiBot.

 

Also I would like to mention that Banking.openBank() in fact has multiple issues opening the bank in certain areas.

For example, I have personally witnessed the method attempting to open a banker that was un-reachable for around 20 minutes straight (edgeville bank). It will also circle varrock east in some cases.  

 

Personally, I would opt for a custom method even using the same bank/banker, over spam clicking a banker and circling a bank.

 

Also in your implementation of “ABC” on TriCraft you use a number of methods that are not even functioning properly.

For example, Options.setrun(Boolean a) or webwalking attempts to click on the volume options instead of run.

 

I now have customers asking for me to comply with “ABCL”, when in reality I know it may actually cause more bans for my particular script than anything.

 

At a loss for words,

Warfront1

Edited by warfront1
1 person likes this

Share this post


Link to post
Share on other sites

This is an amazing idea that, at least in my opinion, could not have been implemented more poorly. It seems to me that it has been in development for a while, but had its release rushed due to the implementation of the bot worlds. I could be very wrong, but that is just my observation.

 

At any rate, I think that this is an extremely bad idea. There are so many different things that can be done for a legitimate anti-ban, and those features should be coded by the scriptwriter. As warfront1 said, many of the functions that are included in the ABCL are not fully functional, leaving experienced scriptwriters with little desire to implement ABCL at all. I think that ABCL provides a very top-level access point to a good method of anti-ban to inexperienced scriptwriters, but doesn't provide much to those who know what they are doing.

 

There is so much more that can be done for anti-ban, and the fact that "randomly rotating the camera" is on this list shows just how primitive this system is. If I worked for Jagex, one of the first things I would do when scanning for bots is look for random camera rotations, regardless of a pattern. Players don't randomly rotate the camera, unless it makes sense to do so. What would make more sense is to write something like this, all using the RS username to get a seed for the "randomness":

  1. Spin the camera around drastically using the center mouse button. I know I do that a ton when I get bored, and I have seen others who do it too. So the first step would be on or off, and then the frequency of the drastic movement. This would most likely be done when the player is doing a task, such as mining or chopping, when there is nothing else to do but wait.
  2. How far past an object the camera moves before stopping.
  3. When the object that is being looked at is clicked on, as far as camera motions. IE, does the camera stop as soon as the object comes in sight? Is the object clicked while the camera is still moving?
  4. Does the player prefer to have a more lateral or vertical view of the screen.
  5. Will the player click on an object if it is on the screen, regardless of where it is, or will the player try to center the object at least a little bit first?
  6. Will the player constantly move the camera so they are facing forward when moving, or do they not care if they are facing forward?

These are just a couple of ideas off the top of my head for ONE anti-ban feature. No one outside of Jagex knows what they do to detect bots, but the best we can do is try and think like them. If they are looking for bot-like patterns, random camera movement is definitely on the top of the list, and I can guarantee you DOES NOT comply as an "anti-ban" feature.

 

The point is, anti-ban should either be executed properly and internally (not with ABCL), or it shouldn't be done at all. I strongly believe that anything in between is just going to scream even more so than doing nothing, "I'm a bot, please ban me".

Edited by tacomanstan
1 person likes this

Share this post


Link to post
Share on other sites

you guys are too harsh, if you think u got one thats better then use it on ur script and leave it out of ur calculation.

 

@taco: some of ur ideas are very personalized, and would stick out like a sore thumb. everyone rotates the camera sometimes, but not everyone uses the center mouse or does drastic movement with it randomly.

 

obviously a compliant bot doesn't mean it can't be improved on or made better.

Share this post


Link to post
Share on other sites

Some things are still unclear, for example USE_CLOSEST tracker. In this thread you mentioned that you should use second closest if true is returned, though in documentation it tells us otherwise:

"Gets the next boolean value. True to perform the action in question; false to not."

 

By the way, are trackers completely random or are you taking in-game factors into account?

Edited by kLeptO

Share this post


Link to post
Share on other sites

The scores of all the compliance areas have been adjusted to reflect more of a focus on delays and on changing script logic rather than performing random actions.

 

I have also added "Eating Food" and "Delay Between Item Interaction" to the list of compliance areas.

Share this post


Link to post
Share on other sites

Added new compliance elements relating to TRiBot Release 9.133_0.

Re-adjusted scores for most elements.

Added java doc links and an example.

Share this post


Link to post
Share on other sites

 

Activating Run (Score: 12)

  • ABCUtil.INT_TRACKER.NEXT_RUN_AT
  • Should the script do it: Only if the script performs any movements.
  • When should the script do it: Activate run when (run_energy >= next()). This condition should be checked before/during minimap movement.
  • What to do afterwards: Call reset() so that a new value for the next run activation will be returned by next().

 

So we shouldn't set WebWalking#setRun(boolean) to true?

Share this post


Link to post
Share on other sites

Is there any statistical evidence proving that “ABCL” will even effect ban rates?

 

In addition the implementation is beyond bulky in its current state,

a majority of the functions required to meet high “ABCL” could be simply included in with TRiBot.

 

Also I would like to mention that Banking.openBank() in fact has multiple issues opening the bank in certain areas.

For example, I have personally witnessed the method attempting to open a banker that was un-reachable for around 20 minutes straight (edgeville bank). It will also circle varrock east in some cases.  

 

Personally, I would opt for a custom method even using the same bank/banker, over spam clicking a banker and circling a bank.

 

Also in your implementation of “ABC” on TriCraft you use a number of methods that are not even functioning properly.

For example, Options.setrun(Boolean a) or webwalking attempts to click on the volume options instead of run.

 

I now have customers asking for me to comply with “ABCL”, when in reality I know it may actually cause more bans for my particular script than anything.

 

At a loss for words,

Warfront1

 

Is there any statistical evidence proving that “ABCL” will even effect ban rates?

 

In addition the implementation is beyond bulky in its current state,

a majority of the functions required to meet high “ABCL” could be simply included in with TRiBot.

 

Also I would like to mention that Banking.openBank() in fact has multiple issues opening the bank in certain areas.

For example, I have personally witnessed the method attempting to open a banker that was un-reachable for around 20 minutes straight (edgeville bank). It will also circle varrock east in some cases.  

 

Personally, I would opt for a custom method even using the same bank/banker, over spam clicking a banker and circling a bank.

 

Also in your implementation of “ABC” on TriCraft you use a number of methods that are not even functioning properly.

For example, Options.setrun(Boolean a) or webwalking attempts to click on the volume options instead of run.

 

I now have customers asking for me to comply with “ABCL”, when in reality I know it may actually cause more bans for my particular script than anything.

 

At a loss for words,

Warfront1

Its alright bro i understand. Do what is best.

Share this post


Link to post
Share on other sites

 

Opening Banks (Score: 10)

  • If the bank has both a banker (NPC) and a booth (object), then:
    • Your script must use Banking.openBank().
  • Otherwise if the bank only has one of those, you can use a different method to open the bank.

Dropping Items (Score: 12)

  • ​Use any of the Inventory API methods to drop items.

Switching Game Tabs (Score: 8)

  • Use any of the GameTab API methods to switch tabs.

 

This doesn't seem like a good idea to me. When using these methods, the bot is going to directly interact only changing the pace of the mouse/the click timing and such.

 

I honestly think there should be alot more to this, like mouse movement patterns that occur before the mouse moves to the actual point.

 

(Like if you want to interact with an object, instead of going directly do it, the mouse determines what path to take that isn't directly to the object and does something like curve how I move my mouse, and lands on the point with or without accuracy, and then interacts.)

 

There are different kinds of mouse movements scripts require to perform efficiently.

 

Direct (Mouse goes straight to the position/object) which is good when chaining together instructions that need to be done in a timely manner.

 

Indirect (Mouse takes a path like a human would move (Not instantly changing directions as it currently does which is almost not possible for me to replicate without doing it on purpose), and then lands on the object/position)

 

Direct mouse movements would be used when you don't/can't waste time moving the mouse.

 

Indirect mouse movements would be used when the player is doing something and is waiting for an action to complete and may take a while, or set in random occurrence, but makes it look like fluid human movement.

 

For camera moving, you can easily do this manually. Use the mouse.Press, mouse.Release (middle mouse button) in combination with moving the mouse directly/curved to a position taking into account how much x/y difference of the current mouse position is needed to increase or decrease the cam rotation and angle.

 

Simple stuff, don't use constant values to determine how long the press/release lasts, you want to make that seem human or else you get caught quick. (I would know, that's how I got one of my accounts banned to test my private scripts, I forgot to randomize the timing of the mouse press/releasing.) Got banned within 6 hours (wasn't even botting, I was just testing functions, and then running to see it without breaking the script.

Share this post


Link to post
Share on other sites

I can't understand why there isn't something as obvious as mouse speed in ABCL? All scripts don't have to option to choose mouse speed and using the same one across the scripts could reduce the bans a lot.

Edited by Genka

Share this post


Link to post
Share on other sites

Could Examining Random Objects (Score 3) be counter-intuitive to scripts such as ExNightMareZone?

 

I raised this with the script creator but he did not want it mentioned in his thread: https://tribot.org/forums/topic/20990-abcl-10-exnightmarezone-sellercombat-reworked-selling-gamescombat-50-120k-combat-xphr-absorptiondh-guthans-afk/?p=639146

 

Is he being required to implement something that could raise ban detection for this activity to maintain his ABCL score?

 

Interestingly, @warfront1 mentioned exactly this in 2014 :P

 

I now have customers asking for me to comply with “ABCL”, when in reality I know it may actually cause more bans for my particular script than anything.

 

 

Or is this TRiBot's antiban?

Edited by Dax

Share this post


Link to post
Share on other sites

I can't understand why there isn't something as obvious as mouse speed in ABCL? All scripts don't have to option to choose mouse speed and using the same one across the scripts could reduce the bans a lot.

Doesn't tribot already have random mouse speeds built in ?

Share this post


Link to post
Share on other sites

So by default all scripts should be using it?

Or dos scripter have to add it?

Any script that makes a call to General.useAntibanCompliance(true) or whatever the actual method name is.

Share this post


Link to post
Share on other sites

As with all other tutorials that I've followed today, well done! Implementing ABC seems to be far easier than I had anticipated. Thank you for the great examples!

Share this post


Link to post
Share on other sites

Their is no point to program the bot to examine objects as examining is all done on the client side. The server will never know about it

Share this post


Link to post
Share on other sites

Their is no point to program the bot to examine objects as examining is all done on the client side. The server will never know about it

My expertise is in web development, and there when something happens on the client side it basically means that something happened with the javascript which is of course executed on the client side (the users machine and in this case browser). In web development it is simple enough to set a flag based on whether or not the user does something (on the front end / client side), then send a request to the back end with that data. Is it possible that they do something like this in java, or is there no way to do such things?

Edited by botsallday

Share this post


Link to post
Share on other sites

My expertise is in web development, and there when something happens on the client side it basically means that something happened with the javascript which is of course executed on the client side (the users machine and in this case browser). In web development it is simple enough to set a flag based on whether or not the user does something (on the front end / client side), then send a request to the back end with that data. Is it possible that they do something like this in java, or is there no way to do such things?

It is irrelevant. Jagex tracks mouse movements and mouse actions, which they can then analyze server-side.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.