# Ban Theory by Gnomedesto

## Recommended Posts

Ever been banned? Banned even using the most premium of scripts? Banned while only botting for a couple hours? Well, I have a theory as to how JaGex is distinguishing humans from bots apart from injection. Before I go further, let me brief you on something most programmers know and most others don't.

Let's say you're cutting maple logs at Seers. The moment that tree is cut down, I have a feeling JaGex takes note of the time that action was completed as such:

21:59:46: Your tree was cut down. (completed action)

JaGex may also take note of the time you begin your next action and what it does.

Then you click on the next tree available, or in this case, the same tree after it respawns:

22:00:16 Player begins cutting another tree. (new action initiated)

We find that the difference in time the action was complete and the next action was initiated is 30 seconds (21:59:46 + 00:00:30 = 22:00:16).

Imagine doing this for hundreds of hours and that difference between completed action and next action is ALWAYS 30 seconds. Pretty predictable and bot-like, wouldn't you say?

To counter this, most programmers would know to wait a random duration after the completed action before starting the next one. The code in bot scripts have something along the lines of "Sleep(1-6);". What this entails is the bot to wait anywhere from 1 second to 6 seconds before starting the next action.

In theory, this would make it harder for JaGex to spot a pattern; however, it's just as easy to spot a bot-like pattern.

Throw a 6 sided dice 100 times. What's the probability that 1 was rolled? It'll be roughly the same as 2, 3, 4, 5, and 6 (~0.17 x 100 = ~17% chance for a number to be rolled)

As expected because rolling a dice should be random. The probability of each face of that dice should be the same as the next face of that dice. Nonetheless, human behavior is not nearly as related to the randomness of throwing a dice.

Humans are inclined to lean a particular way. So when it comes to time between completing tasks and beginning another, it's not going to look like the graph of 100 dice rolls. It may look more like this:

All while the graph of a bot might look like this:

I'm not much of a programmer myself, but this theory does have some merit to it. If you can add to this, please do so below. If you think this is a bad theory, please let me know why. Also, let me know what you think JaGex does to distinguish humans from bots.

What's the fix? How do you program "human behavior" into code? That's difficult; however, there may be an easy, temporary solution. Random numbers in the Java code currently are thrown through a Math method called a random number generator. Perhaps we could roll 2 dice instead of one and get something that looks a little more human-like:

Edited by Gnomedesto
##### Share on other sites

You my friend, may have changed the game.

##### Share on other sites

Interesting theory, but does this only apply to skills such as woodcutting, fishing, ect..?

##### Share on other sites

Interesting theory, but does this only apply to skills such as woodcutting, fishing, ect..?

I think it can be anything as long as there's a enough instances of the same completed action followed by the same next action. Because JaGex couldn't base it off one trial, they'd have to see hundreds of these occurances to call it evidence. Could be as simple as climbing down a ladder (completed action) followed by clicking somewhere on the minimap (next action).

Edited by boatsb4hose
##### Share on other sites

Ehmm... I have always had this theory in mind. It only seems logical for them to implement such detection.

##### Share on other sites

To be honest I think this is a part of it , yet the need for for more smooth mouse paths, as well a rng for the bot itself as a core initiator.

##### Share on other sites

I agree with what you're saying. I think a major contributing factor to this is people's desire to get max exp gains while botting. If a script operates at anything under maximum efficiency people throw a shit fit. Realistically it would not be difficult to develop "profiles" that switch every so often in a script to simulate things like a human becoming bored, thus having slower reaction times, a human becoming more focused and thus having faster reaction times etc. However as I stated people would bitch non-stop about not getting the most xp/ph possible, even though their account would likely be significantly safer.

##### Share on other sites

Quite possibly true, really interesting and a great use of graphs and shit.

##### Share on other sites

Simple... script writers need to incorporate dynamic structures into their scripts.

##### Share on other sites

I agree with what you're saying. I think a major contributing factor to this is people's desire to get max exp gains while botting. If a script operates at anything under maximum efficiency people throw a shit fit. Realistically it would not be difficult to develop "profiles" that switch every so often in a script to simulate things like a human becoming bored, thus having slower reaction times, a human becoming more focused and thus having faster reaction times etc. However as I stated people would bitch non-stop about not getting the most xp/ph possible, even though their account would likely be significantly safer.

Amen.

##### Share on other sites

This is a very interesting theory and with what you have shown it may well be a probability. I think this could be one of many ways in which Jagex is catching us out. As Molly said people are more interested in efficiency instead of safety which means people want to purchase scripts with maximum xp/profit per hour. There was a hunch about client injection and with the introduction of mirror mode it seems that theory of detection was correct and ban rates have gone down significantly. Hopefully we will be able to carry on tackling these theories and further getting the upper hand!

##### Share on other sites

Not a programmer, but why wouldn't Sleep(1-6); prevent this?

##### Share on other sites

Not a programmer, but why wouldn't Sleep(1-6); prevent this?

prevent what, I must ask? I'll try to answer what I think you're getting at. A random sleep generator anywhere from 1 second to 6 seconds will generate anything between those two numbers. Over a long time, the graph it creates looks just like the graph of 100 dice rolls. It looks bot-like and produces a predictable graph that can be profiled to what other botter's graphs look like.

Edited by boatsb4hose
##### Share on other sites

Not a programmer, but why wouldn't Sleep(1-6); prevent this?

Because sleep 1-6 over a period of time is still just a period of 1-6. A human might have a random say "15" or "28" or something. If you ran a bot for 12 hours and during that whole time there was only a sleep period of 1-6 that's quite unrealistic. See what I'm saying?

##### Share on other sites

Not a programmer, but why wouldn't Sleep(1-6); prevent this?

A pattern would be formed over long periods of time. If the reaction time of 1000 different players over many hours of game play, say woodcutting yews, was always between 1 and 6 seconds it would be suspicious. Humans don't typically play this way, for example when I woodcut I sometimes focus, I sometimes don't. Sometimes I'm studying hard and react slower to the game, sometimes I'm reacting faster to the game. If Jagex were to collect data on me woodcutting for 10 hours they would notice the inconsistency and assume I'm human. If however I bot those 10 hours and always react to a tree spawning within a 1-6 second time frame it becomes pretty obvious that I might be botting.

To add to this: Now imagine this data being stored and used to track patterns of scripts, which is then compared to players suspected of botting. It becomes pretty easy to detect and ban bots at that point.

Edited by Molly

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.