SRL Archive - News and General

Why not standardize scripts ?


double codes

2013-06-27 12:18:26

Since i registered here at SRL i haven't found one single script that has been put as a standard, and quite frankly i am kinda worried.

Let's take an example:

Bob want to create a script that does WoodCutting for him, but he's worried about not having the required scripting experience to script a decent Anti-Ban but since there isn't any Anti-Ban scripts that he can use in his script he's forced to make his own.
When he's done with his script and ready to let it go over night, he goes to bed.

Next morning when Bob finally get's up to check on how well the script has done, he sees that he's logged off.
He was banned.


I do NOT want this to happen to this community that someone is forced to create shitty Anti-Bans and then hope they don't get banned.


If we all work together we can make the best Anti-Ban there is and the best Random solver there is, and we might even make it un-banable from botwatch(The players are the only ones left).

Kevin

2013-06-27 12:29:04

Anti-Ban has to be implemented up to each scripter. Anti-ban isn't just a single method you can call that does whatever else in the background that makes you automatically a human. Yes, I understand many people have antiban procedures, but they really don't make that big a difference in the end. Like at all. The majority of "Antiban" should (in my opinion at least…) come from scripts that are more randomized. Instead of seeing someone click the exact middle of whatever object every time (or worse the exact pixel location every time - I see that way too often and there's NO reason for it), they should be clicking with some amount of randomness. Better yet - the script SHOULD make mistakes that it then fixes like a real player would. Real people don't get everything perfect for 20 hours in a row… And finally? (still technically my opinion as we don't have exact proof of anything) versatile scripts should be taking the charge. What seems more bot-like to you: someone running to the same furnace for 20 hours straight and making gold bars, OR someone running to the same furnace for hours and making some gold bars AND making some gold bracelets, OR someone running to the furnace for a little while and then running out to update their port, then making bracelets, then doing their dailies, then making some bars again? There is no way to have a simple 'antiban' procedure that does all that for every single person. The scripter must implement that on their own. Although something like a 'DoDailies' procedure could be made as a public snippet that any scripter could call after X hours.

As for random solvers? Everyone is welcome to work on them, but they don't. It IS a community project, yet only a few people are working on it. You are very welcome to work on them as well - it's a publicly accessed repository that has been announced here on the forums many times.

double codes

2013-06-27 13:10:19

From: Kevin
Anti-Ban has to be implemented up to each scripter. Anti-ban isn't just a single method you can call that does whatever else in the background that makes you automatically a human. Yes, I understand many people have antiban procedures, but they really don't make that big a difference in the end. Like at all. The majority of "Antiban" should (in my opinion at least…) come from scripts that are more randomized. Instead of seeing someone click the exact middle of whatever object every time (or worse the exact pixel location every time - I see that way too often and there's NO reason for it), they should be clicking with some amount of randomness. Better yet - the script SHOULD make mistakes that it then fixes like a real player would. Real people don't get everything perfect for 20 hours in a row… And finally? (still technically my opinion as we don't have exact proof of anything) versatile scripts should be taking the charge. What seems more bot-like to you: someone running to the same furnace for 20 hours straight and making gold bars, OR someone running to the same furnace for hours and making some gold bars AND making some gold bracelets, OR someone running to the furnace for a little while and then running out to update their port, then making bracelets, then doing their dailies, then making some bars again? There is no way to have a simple 'antiban' procedure that does all that for every single person. The scripter must implement that on their own. Although something like a 'DoDailies' procedure could be made as a public snippet that any scripter could call after X hours.

As for random solvers? Everyone is welcome to work on them, but they don't. It IS a community project, yet only a few people are working on it. You are very welcome to work on them as well - it's a publicly accessed repository that has been announced here on the forums many times.


I think you (Or i) has failed to understand what i mean.
What i mean by a public AntiBan Script is the we all use the same "Mouse-Move" function but perfected to match the human hand.
Like for example we like to mouse the cursor in circles when we're bored so make the bot do that while inactive in a random pattern.
Or maybe when we reach for a button we might make a swoosh movement before we click.
Making those pattern can easily be done in .NET but i am unsure about how easily it can be done in Simba.

As for you statement on random, i would gladly help the community making better solves but i am unsure how.
I have a spare member account if anyone need it i would be glad to offer it to the community.

Also can i ask you why you don't use spacing between every 2-4 lines ? :P

rj

2013-06-27 13:26:08

From: double codes
I think you (Or i) has failed to understand what i mean.
What i mean by a public AntiBan Script is the we all use the same "Mouse-Move" function but perfected to match the human hand.
Like for example we like to mouse the cursor in circles when we're bored so make the bot do that while inactive in a random pattern.
Or maybe when we reach for a button we might make a swoosh movement before we click.
Making those pattern can easily be done in .NET but i am unsure about how easily it can be done in Simba.

As for you statement on random, i would gladly help the community making better solves but i am unsure how.
I have a spare member account if anyone need it i would be glad to offer it to the community.

Also can i ask you why you don't use spacing between every 2-4 lines ? :P


Why would somebody need to space every 2-4 lines that seems random. I don't get what you mean by "I havn't found a script with proper standards"

And for the HumanMouse thing:

procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
lastX, lastY, MSP, W: integer;
sqrt2, sqrt3, sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2 := sqrt(2);
sqrt3 := sqrt(3);
sqrt5 := sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist := hypot(xs - xe, ys - ye);
wind := minE(wind, dist);
if dist >= targetArea then
begin
windX := windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY := windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end
else
begin
windX := windX / sqrt2;
windY := windY / sqrt2;
if (maxStep < 3) then
begin
maxStep := random(3) + 3.0;
end
else
begin
maxStep := maxStep / sqrt5;
end;
end;
veloX := veloX + windX;
veloY := veloY + windY;
veloX := veloX + gravity * (xe - xs) / dist;
veloY := veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist := maxStep / 2.0 + random(round(maxStep) div 2);
veloMag := sqrt(veloX * veloX + veloY * veloY);
veloX := (veloX / veloMag) * randomDist;
veloY := (veloY / veloMag) * randomDist;
end;
lastX := Round(xs);
lastY := Round(ys);
xs := xs + veloX;
ys := ys + veloY;
case Random(50) of
1..25: W := (MSP + (Random((MSP / 4))));
26..50: W := (MSP - (RandomRange((MSP / 2), MSP - 1)));
end;
if (W < 1) then
W := 1;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
step := hypot(xs - lastX, ys - lastY);
wait(W);
lastdist := dist;
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;

procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X, Y, X2, Y2, j, Dist, MP: integer;
begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist / 150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX - (j * MP), eX + (j * MP));
Y2 := RandomRange(eY - (j * MP), eY + (j * MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
end;

It's flights HumanMMouse, and I believe it's going to be in SRL6 by default.. besides I don't think anybody has ever gotten banned from bad mouse movements, it's kind of impossible to be banned from bad mouse movements unless the mouse is jumping or something. No program is that bad

Kevin

2013-06-27 13:27:29

Ton of questions = line by line answers :p

What i mean by a public AntiBan Script is the we all use the same "Mouse-Move" function but perfected to match the human hand. => We have one of these, it's just up to the user to implement - Flight has publicised very human-like mouse movement procedures.
Like for example we like to mouse the cursor in circles when we're bored so make the bot do that while inactive in a random pattern. => Also have this in the public include simply up to the scripter to call.
Or maybe when we reach for a button we might make a swoosh movement before we click. => Exists in Flight's mouse movement procedures :p

As for you statement on random, i would gladly help the community making better solves but i am unsure how. => Which part: scripting in general, or specifically for randoms?
I have a spare member account if anyone need it i would be glad to offer it to the community. => Spare member accounts are needed so much as accounts that happen to currently be in "x" unsolved random so devs can work on that random while it's happening (with teleport randoms being a tad harder to force for testing).

Also can i ask you why you don't use spacing between every 2-4 lines ? :P => I space my lines based on paragraphs. It was a long paragraph, so no spacing. English teachers did a solid job in making me do that. :p

double codes

2013-06-27 13:42:57

From: Officer Barbrady
Why would somebody need to space every 2-4 lines that seems random. I don't get what you mean by "I havn't found a script with proper standards"

And for the HumanMouse thing:

procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
lastX, lastY, MSP, W: integer;
sqrt2, sqrt3, sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2 := sqrt(2);
sqrt3 := sqrt(3);
sqrt5 := sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist := hypot(xs - xe, ys - ye);
wind := minE(wind, dist);
if dist >= targetArea then
begin
windX := windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY := windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end
else
begin
windX := windX / sqrt2;
windY := windY / sqrt2;
if (maxStep < 3) then
begin
maxStep := random(3) + 3.0;
end
else
begin
maxStep := maxStep / sqrt5;
end;
end;
veloX := veloX + windX;
veloY := veloY + windY;
veloX := veloX + gravity * (xe - xs) / dist;
veloY := veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist := maxStep / 2.0 + random(round(maxStep) div 2);
veloMag := sqrt(veloX * veloX + veloY * veloY);
veloX := (veloX / veloMag) * randomDist;
veloY := (veloY / veloMag) * randomDist;
end;
lastX := Round(xs);
lastY := Round(ys);
xs := xs + veloX;
ys := ys + veloY;
case Random(50) of
1..25: W := (MSP + (Random((MSP / 4))));
26..50: W := (MSP - (RandomRange((MSP / 2), MSP - 1)));
end;
if (W < 1) then
W := 1;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
step := hypot(xs - lastX, ys - lastY);
wait(W);
lastdist := dist;
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;

procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X, Y, X2, Y2, j, Dist, MP: integer;
begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist / 150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX - (j * MP), eX + (j * MP));
Y2 := RandomRange(eY - (j * MP), eY + (j * MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
end;

It's flights HumanMMouse, and I believe it's going to be in SRL6 by default.. besides I don't think anybody has ever gotten banned from bad mouse movements, it's kind of impossible to be banned from bad mouse movements unless the mouse is jumping or something. No program is that bad

gfhfgh



Ohh, i didn't know that, then it's more or less no point to making a better mouse-Moving script.
But how do you call the function(procedure) ? As i can read Simba it goes something like this if im not wrong:
SuperWindMouse(512, 200, 300, ye, 1.4, 0.2, 20, 40, 1, targetArea: extended)

rj

2013-06-27 13:44:59

From: double codes
Ohh, i didn't know that, then it's more or less no point to making a better mouse-Moving script.
But how do you call the function(procedure) ? As i can read Simba it goes something like this if im not wrong:
SuperWindMouse(512, 200, 300, ye, 1.4, 0.2, 20, 40, 1, targetArea: extended)

Just call it like you would mmouse

humanmmouse(x,y, rx, ry);

double codes

2013-06-27 13:48:31

From: Kevin
Ton of questions = line by line answers :p

What i mean by a public AntiBan Script is the we all use the same "Mouse-Move" function but perfected to match the human hand. => We have one of these, it's just up to the user to implement - Flight has publicised very human-like mouse movement procedures.
Like for example we like to mouse the cursor in circles when we're bored so make the bot do that while inactive in a random pattern. => Also have this in the public include simply up to the scripter to call.
Or maybe when we reach for a button we might make a swoosh movement before we click. => Exists in Flight's mouse movement procedures :p

As for you statement on random, i would gladly help the community making better solves but i am unsure how. => Which part: scripting in general, or specifically for randoms?
I have a spare member account if anyone need it i would be glad to offer it to the community. => Spare member accounts are needed so much as accounts that happen to currently be in "x" unsolved random so devs can work on that random while it's happening (with teleport randoms being a tad harder to force for testing).

Also can i ask you why you don't use spacing between every 2-4 lines ? :P => I space my lines based on paragraphs. It was a long paragraph, so no spacing. English teachers did a solid job in making me do that. :p


As for you statement on random, i would gladly help the community making better solves but i am unsure how. => Which part: scripting in general, or specifically for randoms?
By contributing any way possible, though the only scripting language i know is LUA and that's not even a lot.

I have a spare member account if anyone need it i would be glad to offer it to the community. => Spare member accounts are needed so much as accounts that happen to currently be in "x" unsolved random so devs can work on that random while it's happening (with teleport randoms being a tad harder to force for testing).
Can you explain me how it works ? Do i just give them the account details or do i have to get into a random and then message them ?

Also can i ask you why you don't use spacing between every 2-4 lines ? :P => I space my lines based on paragraphs. It was a long paragraph, so no spacing. English teachers did a solid job in making me do that. :p
I've never heard of a English teacher who learns students to write in paragraphs.
My English teacher always told me that i should use spacing somewhere between 2-5 lines.

double codes

2013-06-27 13:49:31

From: Officer Barbrady
Just call it like you would mmouse

humanmmouse(x,y, rx, ry);


I see, thanks for learning me some Simba then :)

Kevin

2013-06-27 13:56:43

By contributing any way possible, though the only scripting language i know is LUA and that's not even a lot. Well if you would you like to learn: http://villavu.com/forum/forumdisplay.php?f=490

Can you explain me how it works ? Do i just give them the account details or do i have to get into a random and then message them? You wait until you get into the random, then you discuss with temporary account detail sharing with specifically one of the devs (SSRL or SRL Dev+) then share it with them when they're ready.

I've never heard of a English teacher who learns students to write in paragraphs.
My English teacher always told me that i should use spacing somewhere between 2-5 lines.
You were just taught to do that at random with absolutely no reasoning besides how large it is? That doesn't seem very reasonable.

Flight

2013-06-27 21:35:03

By default, SRL (all versions) and SRL-OSR both have antiban files with premade anti-ban routines. You can find them in "SRL(SRL-OSR) / SRL / core / antiban.simba". Everyone is welcome to use these. We also have a number of users who post snippets of their custom anti-bans here on the forums, that you won't find in any include by default. And, as always, you're more than welcome to whip something up of your own, which is always encouraged. :)

Olly

2013-06-27 22:25:33

Heh, antiban isn't all about calling functions in antiban.simba, though its basically just making your script human and we all have different views of what that should be.

Kevin

2013-06-27 22:33:10

From: Ollybest
Heh, antiban isn't all about calling functions in antiban.simba, though its basically just making your script human and we all have different views of what that should be.


That's mostly what I said. Except in like 500 more words.

Then again Olly is efficient enough to right a negative 450 line procedure ;)

Ashaman88

2013-06-27 23:02:49

Antiban is for the weak!!