# Thread: My approach at making simba produce more human like mouse movements

1. ## My approach at making simba produce more human like mouse movements

Hi all, I have been playing around with the mouse movements from simba for the last couple of days and I wanted to show you what I have managed to make. I would just like to get your opinion on them compared to the standard mmouse. I have used Borland_Iron_Ores script as an example and modified it so the rest times and mouse movements are completely different.

Code:
program Iron_Ore_pro;   { Version: 2.3 }
{\$i AeroLib/AeroLib.Simba}

const
UseAntiBan     = True;  //Set True if you wish to use antiban (Highly recommended!!!)
MinesOreAmount = 999999;  //How many ores to mine? 1 ore = 35 exp
MouseStyle     = 1;      //0 = Accurate (straighter), 1 = Random line path

MAX_MINE_TIME = 5400;    {Maximum time it takes for you to mine an ore
if it disappaers right as you start mining it lower
this value to 1800. If the script tries to mine another
rock before the current one is finished increase this
value by 1200 till that's no longer an issue.}
type
TExpLabel = Integer;
TExperience = record
Start, Last : TExpLabel;
OreDropped  : TExpLabel;
BeforeMining: TExpLabel;
end;

TOreInt = Integer;
TOrePoint = TPoint;
TOreTPA = TPointArray;
TOreATPA = Array of TOreTPA;
TOre = record
tCol    : TColEx;
ToDrop  : TOreInt;
Failures: TOreInt;
Dropping: Boolean;

Point   : TOrePoint;
MSPoints: TOreTPA;
TPA     : TOreTPA;
ATPA    : TOreATPA;
end;

var
Experience: TExperience;
Ore: TOre;
Fails: Integer;
timerProggy: Timer;

const
VERSION = 23;

procedure ClassicMouse(x, y, ranx, rany: Integer);
begin
case MouseStyle of
0: accurateMMouse(Point(x+Random(ranx), y+Random(rany)),0,0);
1: humanmmouse(Point(x+Random(ranx), y+Random(rany)),0,0);
end;
end;

begin
Result := timerProggy.timeElapsed > 60000;
end;

function TExperience.Bar: Integer;
begin
Result := getXPBarAmount;
end;

procedure TExpLabel.setBar;
begin
Self := TExperience.Bar;
end;

function TExpLabel.BarDifference: Integer;
begin
Result := TExperience.Bar - Self;
end;

function TExpLabel.MoreThanBar: Boolean;
begin
Result := Self > Experience.Bar;
end;

function TExpLabel.LessThanBar: Boolean;
begin
Result := Self < Experience.Bar;
end;

function TExperience.Gained: Integer;
begin
Result := Experience.Start.BarDifference;
end;

function TExperience.PerHour: Integer;
begin
Result := Floor((Experience.Gained/((GetTimeRunning)/1000))*3600);
end;

procedure ReportLog;
var
h, m, s: Integer;
begin
if GetTimeRunning > 5000 then
begin
ConvertTime(GetTimeRunning, h, m, s);
Writeln('---------------- Iron Ore Pro ----------------');
Writeln('|  Script Has Run For : ',h,':',m,':',s);
Writeln('|  Iron Ore Mined     : ',Experience.Gained/35);
Writeln('|  Experience Gained  : ',Experience.Gained);
Writeln('|  Experience Per Hour: ',Experience.PerHour);
Writeln('--------------------- End --------------------');
end;
end;

procedure StopScript(Reason: String);
begin
ReportLog;
Writeln('====== '+(TheTime)+': Script stopped. Reason: '+Reason+' ======');
logoutPlayer;
TerminateScript;
end;

procedure TOreInt.Reset;
begin
Self := 1;
end;

function TOreInt.Present: Boolean;
begin
Result := itemInSlot(Self);
end;

begin
Result := itemInSlot(Slot);
end;

procedure TOreInt.Flip;
begin
Case Self of
1: Self := 5;
5: Self := 1;
end;
end;

procedure TOreTPA.Clear;
begin
SetLength(Self, 0);
end;

procedure TOreATPA.Clear;
begin
SetLength(Self, 0);
end;

procedure TOre.Init();
begin
Self.tCol.create(1713728, 12, 0.12, 0.78);
Self.ToDrop.Reset;
end;

function TOre.Find: Boolean;
var
TempATPA: T2DPointArray;
i,ii,tmpCTS: Integer;
begin
Self.ATPA.Clear;
Self.TPA.Clear;

Self.tCol.findAllIn(AREA_MS, Ore.TPA);
if Length(Ore.TPA) = 0 then
begin
Exit(False);
end;
Result := True;

TempATPA := ClusterTPA(Self.TPA,12);

for i := 0 to High(TempATPA) do
if Length(TempATPA[i]) > 1000 then
Self.ATPA := Self.ATPA + TempATPA[i];
end;

function TOreTPA.getPoint: TPoint;
var
RandomPoint, MidPoint: TPoint;
begin
if Length(Self) < 1 then
Exit;

MidPoint := MiddleTPA(Self);
RandomPoint := Self[Random(0,High(Self))];

case MidPoint.X > RandomPoint.X of
True : RandomPoint.X := Random(RandomPoint.X, MidPoint.X)-Random(2);
False: RandomPoint.X := Random(MidPoint.X, RandomPoint.X)+Random(2);
end;

case MidPoint.Y > RandomPoint.Y of
True : RandomPoint.Y := Random(RandomPoint.Y, MidPoint.Y)-Random(2);
False: RandomPoint.Y := Random(MidPoint.Y, RandomPoint.Y)+Random(2);
end;

Result := RandomPoint;
end;

procedure TOre.setMSPoints;
var
i: Integer;
begin
if Self.Find then
begin
SortATPASize(Self.ATPA, True);
Self.MSPoints.Clear;

for i := 0 to High(Ore.ATPA) do
Self.MSPoints := Self.MSPoints + Self.ATPA[i].getPoint;
end else
Self.MSPoints.Clear;
end;

function Ore.Mined: Boolean;
var
Timerrr: Timer;
begin
Result := False;
if isInvFull then
Exit(True);
Timerrr.start;

repeat
if Experience.BeforeMining.LessThanBar then
Result := True
else
Wait(50+Random(50));
until((Result) or (Timerrr.timeElapsed > MAX_MINE_TIME));

if Result then
Ore.Dropping := Ore.ToDrop.Present(5);

Result := True;
end;

procedure Randombreak;
begin
case Random(1000) of
889: Wait(Random(10,100));
725..730: Wait(Random(10,800));
555..565: Wait(Random(1000,2000));
end;
end;

procedure RandomMouse;
begin
case Random(1000) of
889: pickUpMouse();
725..730: MMouseOffClient('random');
555..565: pickUpMouse();
end;
end;

procedure AntiBan;
begin
if not UseAntiBan then
Exit;
case Random(4000) of
889: Wait(Random(800,3000));
725..730: MMouseOffClient('random');
555..565: Wait(Random(1000,40000));
end;
end;

procedure itemuse;
var
pnt:Tpoint;
begin
if waitUpTextMulti(['->'],1) then
begin
pnt := [540, 223];
HumanMMouse(pnt, 5, 5);
fastClick(Mouse_Left);
wait(random(1000, 2000));
end else
exit;
end;

procedure Ore.DropSingle(Slot: Integer);
begin
if not Ore.ToDrop.Present then
Exit;

mouseSpeed := random(25, 85);
interactSlot(Slot, Mouse_Move);
if waitUpTextMulti(['Iron',' ore','cut'],1200) then
begin
Antiban;
Randombreak;
Wait(Random(5,210));
KeyDown(VK_SHIFT);
Randombreak;
Wait(Random(5,300));
fastClick(Mouse_Left);
Wait(Random(1,120));
KeyUp(VK_SHIFT);
Antiban;
RandomMouse;
sleepAndMoveMouse(100 + random(500));
//Ore.ToDrop.Reset;
end;
end;

procedure Ore.Drop;
begin
if not Ore.ToDrop.Present then
begin
while(not(Ore.Mined)) do
Wait(10+Random(10));
Exit;
end;
Ore.Dropping := Ore.ToDrop.Present(5);

interactSlot(Ore.ToDrop, Mouse_Move);

if waitUpTextMulti(['Iron',' ore','cut'],1200) then
begin
antiban;
while(not(Ore.Mined)) do
Wait(10+Random(10));

if (Ore.Dropping) and (Experience.OreDropped.LessThanBar) then
begin
Ore.DropSingle(Ore.ToDrop);
Ore.ToDrop.Flip;
Experience.OreDropped.setBar;
Ore.Failures := 0;
end;
end else
if itemInSlot(Ore.ToDrop) then
//StopScript('Move unknown item from slots 1 & 5 inventory');
end;

function Ore.Mine: Boolean;
var
i, RanI: Integer;
OrePoints: TPointArray;
RandomOrePoint: TPoint;
begin
Result := False;
Ore.Dropping := Ore.ToDrop.Present(5);
Ore.setMSPoints;
OrePoints := Ore.MSPoints;

if Length(OrePoints) > 0 then
begin
antiban;
for i := 0 to High(OrePoints) do
begin
RanI := I+(Random(High(OrePoints)-I));
RandomOrePoint := OrePoints[Rani];

mouseSpeed := random(25, 85);
ClassicMouse(RandomOrePoint.x-1, RandomOrePoint.y-1, 3, 3);
Wait(Random(100,180));
itemuse;
if waitUpTextMulti(['Mine','ine R', ' ocks'],600) then
begin
Antiban;
Experience.BeforeMining.setBar;
fastClick(Mouse_Left);
Wait(Random(1,100));
Antiban;
RandomMouse;
sleepAndMoveMouse(100 + random(500));
Exit(True);
end else
begin
Inc(Ore.Failures);
Ore.setMSPoints;
OrePoints := Ore.MSPoints;
end;
end;
end else
if Ore.Failures > 30 then
StopScript('Failed to find ores after 30 tries.');
end;

procedure Checks;
begin

Antiban;

if not isLoggedIn then
StopScript('We are not logged in');

if Experience.Start.BarDifference / 35 >= MinesOreAmount then
StopScript('Mined desired number of iron ore');

if Fails >= 15 then
StopScript('Too many failures detetcted');

begin
ReportLog;
if Experience.Last >= Experience.Bar then
//StopScript('We have not gained any experience in a whole minute.')
else
Experience.Last.setBar;

timerProggy.start;
end;
end;

procedure SetupScript;
begin
initAL;
mouseSpeed := 30;
ActivateClient;
if not isLoggedIn then
StopScript('We are not logged in');

timerProggy.start;
Experience.Start.setBar;
Experience.Last := Experience.Start;
Experience.OreDropped := Experience.Start;

Ore.Init;
Ore.setMSPoints;

while not isInvFull do
if Ore.Mine then
while(not(Ore.Mined)) do
Wait(Random(125,250));

if isInvFull then
Ore.DropSingle(5);

end;

begin
SetupScript;

repeat
if clickContinueEx(False) then
Ore.DropSingle(5);

if Ore.Mine then
Ore.Drop;

Checks;
until(False);

end.
Last edited by tristen8878; 01-13-2018 at 07:13 PM.

2. Oh man this looks like genuine mouse movements.
Mind sharing?

3. @tristen8878, because you didn't provide any code we can't tell that you actually produced a method of mouse movement that looks human like. The long explanation (for e.g. a lay audience) at the beginning makes your video look like hoax videos that will sometimes pop up requesting donations for phone modding and so on.

4. Originally Posted by R0b0t1
@tristen8878, because you didn't provide any code we can't tell that you actually produced a method of mouse movement that looks human like. The long explanation (for e.g. a lay audience) at the beginning makes your video look like hoax videos that will sometimes pop up requesting donations for phone modding and so on.
Ye I understand, am currently at work at this moment in time so can't really explain but when I get home I will post a more in depth analysis and provide code to back up my video, but for now the short answer I basically combined sleepandmovemouse function and the pickup mouse function and put them into one aswell as the normal humanmmouse running. I created a procedure like how a antiban one works and set it so it would choose randomly how the mouse would move.

Sorry for the lack of code :/

5. I'm sure a few other people restrained themselves from posting due to not wanting to demotivate you; many of us believe that mouse movements don't actually play a part in bot detection.

6. Originally Posted by Kasi
I'm sure a few other people restrained themselves from posting due to not wanting to demotivate you; many of us believe that mouse movements don't actually play a part in bot detection.
I understand at some point this will have been brought up as originally I was thinking maybe I should of not posted it as it might not be interesting or worth investing my time in but I just wanted to get peoples opinion on whether they thought it looked human or was at all a improvement over the standard humanmmouse.

7. Originally Posted by Kasi
[...] many of us believe that mouse movements don't actually play a part in bot detection.
I'm interested in his code partly because I can't think of a good way to analyze mouse movements. The more algorithms that are available the better we can make future algorithms. His algorithm looks fairly good, but just by eyeing it it does seem slightly unnatural.

8. Originally Posted by R0b0t1
I'm interested in his code partly because I can't think of a good way to analyze mouse movements. The more algorithms that are available the better we can make future algorithms. His algorithm looks fairly good, but just by eyeing it it does seem slightly unnatural.
Based on how AI classifiers work. It'd be as simple as collecting a bunch of data and identifying which is *real* player data. Classifying mouse movement data (IMO) just isn't feasible. There's too much ("move" data) and it's too varying to do it efficiently without causing false positives, even though it might in-fact get some true positives. This is even before applying different constructs such as gaming mouse profiles (https://i.imgur.com/AKGd8xj.png). Professional gamers also have insanely efficient mouse paths which can also make it exceedingly harder to variate from bots.

Here is one example of a mouse profile option (freemove) that i have on my mouse. (On being max or 100%, Off being 0). https://i.imgur.com/1C0PTIb.png
I drew both those lines by hand with the pencil tool. By using this profile, am i a bot? certainly not.

Keep in mind, RS can also be played on touchscreen devices, (soon mobile). Which AFAIK, won't require mouse movements.

Whilst mouse movements can still be used in classifiers, (maybe random forest), i doubt it brings much variation between legit players and botters for it to be considered.

TLDR; fancy mouse movements are a scam.
Last edited by Kasi; 12-15-2017 at 12:03 AM.

9. Yes, that's why I doubted they could create good detection methods. The main problem with classifiers is that you need to format the data in very specific ways, in the case of mouse movement, what do you use? The other is that running classifiers can be very expensive, even if you are only doing it for some subset of your playerbase.

The option your mouse has is interesting. Which mouse do you have? That's something I had not considered that will make detection even harder.

As it is, I think Jagex is using machine learning for bot detection. There are a high number of false positives now judging by RS-related forums I have looked at.

10. Originally Posted by Kasi
Based on how AI classifiers work. It'd be as simple as collecting a bunch of data and identifying which is *real* player data. Classifying mouse movement data (IMO) just isn't feasible. There's too much ("move" data) and it's too varying to do it efficiently without causing false positives, even though it might in-fact get some true positives. This is even before applying different constructs such as gaming mouse profiles (https://i.imgur.com/AKGd8xj.png). Professional gamers also have insanely efficient mouse paths which can also make it exceedingly harder to variate from bots.

Here is one example of a mouse profile option (freemove) that i have on my mouse. (On being max or 100%, Off being 0). https://i.imgur.com/1C0PTIb.png
I drew both those lines by hand with the pencil tool. By using this profile, am i a bot? certainly not.

Keep in mind, RS can also be played on touchscreen devices, (soon mobile). Which AFAIK, won't require mouse movements.

Whilst mouse movements can still be used in classifiers, (maybe random forest), i doubt it brings much variation between legit players and botters for it to be considered.

TLDR; fancy mouse movements are a scam.
Could they not couple mouse movements with other red flags, essentially using it as an additional detection method?
IE if a player has been doing a task for a long period of time, their patterns might be different from their first hour of play, compared to their second hour, or third hour etc.

11. This video reminds me of RiD marketing with the Inception theme and quotes in the beginning, haha.

Feasibility debates aside, there's strong anecdotal evidence a lot of us have: many combined years of botting consistently without any mouse movements, no bans. I stopped using mouse movements entirely when I shifted to scripting with ogLib a few years ago. There's a lot of conversation about this in that hardware mouse thread too.

That said, it's always fun and can't hurt to explore this kind of stuff.

12. Originally Posted by Clarity
This video reminds me of RiD marketing with the Inception theme and quotes in the beginning, haha.

Feasibility debates aside, there's strong anecdotal evidence a lot of us have: many combined years of botting consistently without any mouse movements, no bans. I stopped using mouse movements entirely when I shifted to scripting with ogLib a few years ago. There's a lot of conversation about this in that hardware mouse thread too.

That said, it's always fun and can't hurt to explore this kind of stuff.
What mouse movement functions do you use at the moment in OSRS?

13. Originally Posted by Dan the man
What mouse movement functions do you use at the moment in OSRS?
Teleporting mouse, no movement. Of course appropriate delays exist between clicks.
No bans on OSRS as of yet. But I'm not doing anything they are watching closely (I think).

14. Im with clarity here, mouse movements dont make a difference in my opinion

15. Originally Posted by R0b0t1
Yes, that's why I doubted they could create good detection methods. The main problem with classifiers is that you need to format the data in very specific ways, in the case of mouse movement, what do you use? The other is that running classifiers can be very expensive, even if you are only doing it for some subset of your playerbase.

The option your mouse has is interesting. Which mouse do you have? That's something I had not considered that will make detection even harder.

As it is, I think Jagex is using machine learning for bot detection. There are a high number of false positives now judging by RS-related forums I have looked at.
Regarding mouse movements, i don't bot but when i do, i use teleporting too (The bot i've been working on (with Twinki) also solely incorporates teleporting movements and no splines). I haven't been banned either; I don't bot frequently enough for it to be considered IMO. I believe detection is weighed much more heavily on delays rather than movement.

I own: https://steelseries.com/gaming-mice/sensei

You need to also consider that a percentage of the people posting on forums / reddit are actually true positives. They are simply taking one last shot to see if they can get their account un-banned.

Originally Posted by Dan the man
Could they not couple mouse movements with other red flags, essentially using it as an additional detection method?
IE if a player has been doing a task for a long period of time, their patterns might be different from their first hour of play, compared to their second hour, or third hour etc.
this is what i meant by random forest. Different subset classifiers/regressions are used to identify whether several components of an account are bot-like. Shit like; location, playtime, client metrics, trade history? IP? action delays etc (just a guess at what they might be using). https://en.wikipedia.org/wiki/Random_forest
Whatever the case, mouse movements vary waay too much to be considered a decent classifier/regression IMO. There's way too much accountability on mouse hardware and skillset. My dad for example, he takes decades moving the pointer to a certain part of the screen. On the other end, it's easy asf for me to lose track of a pointer if i blink on a pro-gamer's twitch stream.

The point about the first hour compared to the second hour etc, is quite interesting. I've heard of a SRL'er who incorporated a fatigue modifier into their scripts (i forget who). We also have personalised player profiles like this in the bot that we're working on. Delays etc, change depending on how long the bot has been playing for / how long they've breaked for. I think it works quite well.

16. Originally Posted by Kasi
Regarding mouse movements, i don't bot but when i do, i use teleporting too (The bot i've been working on (with Twinki) also solely incorporates teleporting movements and no splines). I haven't been banned either; I don't bot frequently enough for it to be considered IMO. I believe detection is weighed much more heavily on delays rather than movement.
Interesting, I'm glad people were able to check.

Originally Posted by Kasi
You need to also consider that a percentage of the people posting on forums / reddit are actually true positives. They are simply taking one last shot to see if they can get their account un-banned.
I did. Some of them were people who explicitly set out to be banned while playing legitimately. The reason was to show that people are actually being falsely banned, and that people aren't usually posting for sympathy. Jagex might soon have a huge problem on their hands if they keep banning paying customers.

Originally Posted by Kasi
Different subset classifiers/regressions are used to identify whether several components of an account are bot-like. Shit like; location, playtime, client metrics, trade history? IP? action delays etc (just a guess at what they might be using). https://en.wikipedia.org/wiki/Random_forest
Whatever the case, mouse movements vary waay too much to be considered a decent classifier/regression IMO. There's way too much accountability on mouse hardware and skillset. My dad for example, he takes decades moving the pointer to a certain part of the screen. On the other end, it's easy asf for me to lose track of a pointer if i blink on a pro-gamer's twitch stream.
That's basically saying "machine learning will work great if you can get it to work great." The hard part is formatting the data to send it to the algorithm; it is easy to mention what might be relevant, but harder to actually scrape it and process it. Based on what people are saying it looks like this was so hard Jagex gave up. They might only be able to process events that generate network activity.

Originally Posted by Kasi
The point about the first hour compared to the second hour etc, is quite interesting. I've heard of a SRL'er who incorporated a fatigue modifier into their scripts (i forget who). We also have personalised player profiles like this in the bot that we're working on. Delays etc, change depending on how long the bot has been playing for / how long they've breaked for. I think it works quite well.
That builds on the assumption that only the time between actions matters quite nicely. In general, though, anything that requires state in its operation will be costly to run and so Jagex might avoid it.
Last edited by R0b0t1; 12-15-2017 at 04:33 PM.

17. Originally Posted by R0b0t1
That's basically saying "machine learning will work great if you can get it to work great." The hard part is formatting the data to send it to the algorithm; it is easy to mention what might be relevant, but harder to actually scrape it and process it. Based on what people are saying it looks like this was so hard Jagex gave up. They might only be able to process events that generate network activity.

That builds on the assumption that only the time between actions matters quite nicely. In general, though, anything that requires state in its operation will be costly to run and so Jagex might avoid it.
Sort of, but I also don't think it'd be hard to profile bots if you profile them on the correct variables. The only thing I'm really saying is that profiling on mouse movement data is not viable.

Time between actions is probably more viable for sure. And I'm almost certain they do location based profiling too. I've watched a couple developer streams where they talked about looking into a certain area to monitor too. E.g, one stream I watched, they talked about monitoring flesh crawlers in the stronghold of security because those become green dragon bots. From this line alone, you can assume they track some sort of account history, and by extension it's not ridiculous to assume they also record actions and when they were done. Formatting this data can also be quite easily done depending on how their engine works. Writing some sort of AI wouldn't be insanely hard either, besides, they have an entire team banning bots at Jagex.

18. Originally Posted by Kasi
Sort of, but I also don't think it'd be hard to profile bots if you profile them on the correct variables. The only thing I'm really saying is that profiling on mouse movement data is not viable.
Don't take this the wrong way, but you still are not saying much. Of course "it will work if you do the right thing." Why don't you think profiling mouse data is not viable? What constitutes mouse data? As people have mentioned, Jagex does seem to look at the speed of mouse clicks.

Originally Posted by Kasi
Time between actions is probably more viable for sure. And I'm almost certain they do location based profiling too. I've watched a couple developer streams where they talked about looking into a certain area to monitor too. E.g, one stream I watched, they talked about monitoring flesh crawlers in the stronghold of security because those become green dragon bots. From this line alone, you can assume they track some sort of account history, and by extension it's not ridiculous to assume they also record actions and when they were done. Formatting this data can also be quite easily done depending on how their engine works. Writing some sort of AI wouldn't be insanely hard either, besides, they have an entire team banning bots at Jagex.
A recognized problem in machine learning is that it is hard to create viable models if you do not have all of the data that can be produced from a process. They might set a flag for "this account has been at X location Y percent of the time," but after that flag is set, the location data is lost and could not be fed to a machine learning algorithm. Summary statistics are better than nothing but may not be enough to generate good results.

That they have an entire team of people dedicated to making it harder to pay them for their game is a strange thing indeed.
Last edited by R0b0t1; 12-16-2017 at 01:35 AM.

19. Originally Posted by R0b0t1
...
I'm not saying mouse data. I'm saying mouse movement data. Mouse splines as such. The way you move your mouse between 2 points is useless, and i explained this in my earlier posts... It's has also been proven over the years, many of us have had no difference in ban-rates between teleporting mouse and using mouse splines.

What's also another fairly weird thing, is the way the client straight up discard values from the mouse recorder in the client if they are above the fixed size (fixed size client opposed to re-sizeable, OSRS):

Java Code:
//160, client.java, void client.ev()for (int n6 = 0; n6 < 396566785 * av.bi.e && 328573213 * w3.e.w - n4 < 240; ++n6) {    ++n5;    int n7 = av.bi.u[n6]; // Y positions.    if (n7 < 0) {        n7 = 0;    }    else if (n7 > 502) {        n7 = 502;    }    int n8 = av.bi.k[n6]; // X Positions.    if (n8 < 0) {        n8 = 0;    }    else if (n8 > 764) {        n8 = 764;    }    ....//add stuff to the packet buffer etc.}

This means all the values above 764 and 502 (x and y respectively) are straight up discarded. This is also interesting cause they do in-fact query whether you're playing in fixed mode or re-sizeable mode (amongst other things). The TL;DR of this is, they don't give a shit about mouse movements, if they did, they'd be consistent between screen modes and wouldn't discard values (mouse movement data). Biome-tricked you.

The second point, as i already mentioned, really depends on how thorough their engine is at logging these things. It definitely isn't hard to log things like clicks and actions/interactions. Formatting this data can also be automated for sure - (keeping in mind, we already know for a fact that they keep session data on each player). There's also a bunch of 3rd party classifier/data mining packages which can make this job a lot easier. But yeah, building the initial model could be hard to automate, and would probably require some sort of human intervention initially. I do believe they combat different areas of the game individually. If a new skill method or boss / money making method gets released, you don't see bans straight away, or at least isn't apparent to me.
Last edited by Kasi; 12-16-2017 at 11:41 PM.

20. @Kasi, I'm not suggesting they do care, but I am proposing reasons why they might not care.

Is the piece of code you posted related to all mouse events in general? It seems like they could be ignoring events that don't take place in the window, because it is later going to be turned into a network event. I.e. you can't click on an object that isn't inside the screen. This agrees with what I was saying above, where they would not record as much as people think they do because they do not want to do things they are not already doing.

21. Originally Posted by R0b0t1
Is the piece of code you posted related to all mouse events in general?
The piece of code isn't the mouse recorder, and is not related to ALL mouse events.
The mouse recorder runs on a separate thread and just stores the latest grabbed position every 50ms
The code i posted deals with adding the recorded mouse positions to the packet buffer which is in turn set to the server.

Originally Posted by R0b0t1
It seems like they could be ignoring events that don't take place in the window, because it is later going to be turned into a network event. I.e. you can't click on an object that isn't inside the screen. This agrees with what I was saying above, where they would not record as much as people think they do because they do not want to do things they are not already doing.
This is an incorrect assumption. Maybe i didn't explain it properly:

The OSRS Canvas (you call it a window) is no longer just 765 by 503. You can have a re-sizeable option. https://i.imgur.com/E8kunhm.png
The code i posted earlier means that anything OUTSIDE of the red rectangle: https://i.imgur.com/2OkLSFM.png would be changed to 764 for the x(if it is greater than 764) and 502 for the y(if it is greater than 502). So, all the mouse movement data outside this red rectangle is changed incorrectly EVEN THOUGH IT EXISTS INSIDE THE CANVAS(window).

As explained earlier, this is one of the reasons why i believe they don't do anything with mouse movement data. They simply don't monitor mouse movement data equally across both screen types (fixed and re-sizeable) for it to be a statistic they profile...in simpler terms, they can't accurately classify mouse movements as "bot-splines" if they just ruin the data.

22. Originally Posted by Kasi
As explained earlier, this is one of the reasons why i believe they don't do anything with mouse movement data. They simply don't monitor mouse movement data equally across both screen types (fixed and re-sizeable) for it to be a statistic they profile...in simpler terms, they can't accurately classify mouse movements as "bot-splines" if they just ruin the data.
Alright, that is pretty weird. From another thread, I also forgot that you can now ignore randoms. Together that is pretty good proof that they don't care, for the most part.

23. They would more than likely monitor if the mouse input is fake or not wouldn't the?

24. Originally Posted by R0b0t1
Alright, that is pretty weird. From another thread, I also forgot that you can now ignore randoms. Together that is pretty good proof that they don't care, for the most part.
It's not too weird being from another thread at all.

25. SRL Junior Member
Join Date
Mar 2013
Posts
32
Mentioned
0 Post(s)
Quoted
10 Post(s)
Any plans to post your modification?