SRL Archive - OSR News and General

Need a new auto login for PVP worlds


Bearzs

2014-03-19 11:42:14

I would be very thankful if someone could whip together or edit the current auto login for the bot but give it a few extra clicks so it can click on the continue part of logging into a pvp world so this will allow people to bot longer in PVP worlds without having to login themselves. Shouldn't be to difficult to make.

Thanks!

Kevin

2014-03-19 15:53:56

Why do you specifically want to bot on PvP worlds?

Frement

2014-03-19 15:55:32

From: Kevin
Why do you specifically want to bot on PvP worlds?


No randoms.

The Killer

2014-03-19 15:56:15

From: Kevin
Why do you specifically want to bot on PvP worlds?


No randoms? :P Would be handy if you were doing something with no equipment, e.g. Potato picking (Wetish ;))
edit: ninja'd -.-

Solar

2014-03-19 16:02:42

From: Frement
No randoms.


Thanks, wasn't even aware of this.

Kevin

2014-03-19 16:15:08

From: Frement
No randoms.


Ooooooh, OSR. My bad.

Sk1nyNerd

2014-03-19 16:43:30

you just need to add an extra mousebox and waittime in the current login procedure found in core> login

heres the coords, ill leave the finding the spot to put it in for you

  Wait(RandomRange(1000, 2000));
MouseBox(238, 309, 362, 332 ,mouse_left); //Continue

weeks ahead of all you ;) :f:

Bearzs

2014-03-21 11:47:39

Sorry for my reply, Yeah Botting PVP worlds is handy for skills you don't need to bank for and that are far away from people.

Bearzs

2014-03-21 11:48:51

Thanks Sk1ny!

Hoodz

2014-03-21 12:57:37

From: Sk1nyNerd
you just need to add an extra mousebox and waittime in the current login procedure found in core> login

heres the coords, ill leave the finding the spot to put it in for you

  Wait(RandomRange(1000, 2000));
MouseBox(238, 309, 362, 332 ,mouse_left); //Continue

weeks ahead of all you ;) :f:

all? dont think so ;)

Sk1nyNerd

2014-03-21 13:53:48

From: Bearzs
Thanks Sk1ny!


np :)

From: hoodz
all? dont think so ;)

"most" hehe :P

Bearzs

2014-03-21 17:59:50

So i tried implementing the new coords into the login script but i couldn't get it to work properly with out errors. If someone wouldn't mind adding in the coords for clicking continue after clicking existing user for PVP worlds i would be very grateful!

Thanks again!
Bearzs

samerdl

2014-03-31 12:07:47

From: Bearzs
So i tried implementing the new coords into the login script but i couldn't get it to work properly with out errors. If someone wouldn't mind adding in the coords for clicking continue after clicking existing user for PVP worlds i would be very grateful!

Thanks again!
Bearzs


It works well, you need to add it at the correct spot if you haven't already :).

Go to the login file and at line 512 make it look like this:


if (CountColor(16777215, 408, 279, 518, 299) = 281) then //Existing User text
begin
WriteLn('Welcome to Runescape.');
MouseBox(395, 275, 529, 307, mouse_Left); //Existing User
Wait(RandomRange(1000, 2000));
MouseBox(238, 309, 362, 332 ,mouse_left); //Continue
end;

Edit May 6th, 2014:


You can also simply replace then loginplayer function with this one (adds check if player is stuck on the 'click here to play' screen, and checks if you are on 308,316,325,337 or 365 and clicks the ok button if you are.


function LoginPlayer: Boolean;
var
RetryLogin: Boolean;
typtmp, t, w, i: integer;
Actions: TVariantArray;
Attempts: LongInt;
p: TPoint;
//ATPA: T2dPointArray;
TPA: TPointArray;
Boxes : TIntegerArray;
//B: TBox;
badworlds: TIntegerArray;
OurCurrentworld: Integer;
label
ProcStart;
begin
ActivateClient;

if (LoggedIn) then Exit;
if (LobbyScreen) then
begin
MouseBox(WDx1, WDy1, WDx2, WDy2, mouse_Left); //Click To Play
i := 0;
repeat
i := i+1;
Wait(100 + Random(100));
until (LoggedIn) or (i > 30);
end;

Wait(100 + Random(200));
TypeByte(vk_Escape);
Wait(200 + Random(200));

{Check for lobby screen already open/ already logged in}

Result := (LoggedIn);
if (Result) then Exit;

if (LobbyScreen) then
begin
MouseBox(WDx1, WDy1, WDx2, WDy2, mouse_Left); //Click To Play
i := 0;
repeat
i := i+1;
Wait(100 + Random(100));
until (LoggedIn) or (i > 30);
end;

{Check for active player.}

if (not (Players[CurrentPlayer].Active)) then
begin
WriteLn('Player is not Active...');
if (AllPlayersInActive) then
begin
WriteLn('All players not active!');
Exit;
end;
NextPlayer(False);
Exit;
end;

{Wait for the client to finish loading.}

T := GetSystemTime;
repeat
if (RSReady) then
Break;
if ((GetSystemTime - T) > 180000) then
begin
WriteLn('It has been 3 minutes and Runescape is not yet ready... Terminating.');
TerminateScript;
end;
Wait(RandomRange(1000, 2000));
until (False);
if (CountColor(16777215, 408, 279, 518, 299) = 281) then //Existing User text
begin
WriteLn('Welcome to Runescape.');
badworlds := [308, 316, 325, 337, 365];
MouseBox(395, 275, 529, 307, mouse_Left); //Existing User
Wait(RandomRange(1000, 2000));
OurCurrentworld := currentworldls;
if InIntArray(Badworlds, OurCurrentworld) then //If its a bad one then exist
MouseBox(238, 309, 362, 332 ,mouse_left); //Continue
end;

if Length(Players[CurrentPlayer].WorldInfo) > 0 then
SelectWorld(Players[CurrentPlayer].WorldInfo[0]);
ProcStart:
{Type in username and pass}

if (loggedIn) then
exit;

for W:= 0 to 1 do
begin
if W = 0 then
Boxes:= [UBX1, UBY1, UBX2, UBY2]
else
Boxes:= [PBX1, PBY1, PBX2, PBY2];

t := (getSystemTime + (60000 * 2));
FindColors(TPA, LOGIN_TEXTCOLOUR, Boxes[0], Boxes[1], Boxes[2], Boxes[3]);
repeat
if (Length(TPA) > 0) then
begin
SortTPAFrom(TPA, Point(Boxes[2], Boxes[1] + (Boxes[3] - Boxes[2]) div 2));
p := point(TPA[0].X + 20, TPA[0].Y);
if (not pointInBox(p, intToBox(Boxes[0], Boxes[1], Boxes[2], Boxes[3]))) then
p := point(UBX2 - (10 + random(10)), p.y);
Mouse(p.x, p.y, 2, 2, mouse_left);
end else
MouseBox(Boxes[0], Boxes[1], Boxes[2], Boxes[3], mouse_left);

typtmp := 0;
while (CountColor(LOGIN_TEXTCOLOUR, Boxes[0], Boxes[1], Boxes[2], Boxes[3]) > 0) do
begin
Inc(typtmp);
TypeByte(VK_BACK);
Wait(50+Random(50));
if (typtmp >= RandomRange(30, 35)) then
Break;
end;
until(not FindColors(TPA, LOGIN_TEXTCOLOUR, Boxes[0], Boxes[1], Boxes[2], Boxes[3]) or (getSystemTime > t));

Wait(100 + Random(200));
if W = 0 then
begin
WriteLn(Capitalize(Players[CurrentPlayer].Name));
TypeSend(Players[CurrentPlayer].Name);
end else
begin
TypeSendEx(Players[CurrentPlayer].Pass, False);
MouseBox(234, 304, 369, 338, mouse_Left); //Login
end;
end;

{Check responses}

T := GetSystemTime;
repeat
// so the lobby appears (gets rid of black screen)
if (countColorTolerance(clBlack, 0, 0, 500, 500, 20) > 245000) then
begin
wait(2000 + random(1500));
mouseBox(0, 0, 750, 490, mouse_Move);
end;

SetLength(Actions, 0);

if ((GetSystemTime - T) > 60000) then
Actions := ['One minute has passed... Debug: ' + ToStr(CountColor(LOGIN_STATUSCOLOUR, 224, 190, 532, 250)), 0, 5, 'PlayerFalse', 'Login Failed']
else
// writeln(CountColor(LOGIN_STATUSCOLOUR, 224, 190, 532, 250));
case (CountColor(LOGIN_STATUSCOLOUR, 224, 190, 532, 250)) of //text colour points
// WriteLn Error Wait for Retrys Action Player[CurrentPlayer].Loc
738: Actions := ['Invalid Username / Password', 0, 2, 'PlayerFalse', 'Wrong User/Pass']; //Updated
1539: Actions := ['Your account has been disabled', 0, 0, 'PlayerFalse', 'Acc Disabled']; //Updated
1073: Actions := ['Your account is already logged in', 5000, 5, 'PlayerTrue', 'Already logged in']; //Updated
1573: Actions := ['Not a Members Account', 0, 1, 'PlayerTrue', '']; //Updated
492: Actions := ['Error Connecting.', 20000, 9, 'Terminate', 'Error Connecting']; //Updated
1721: Actions := ['Too many incorrect logins.', 5 * 60000, 2, 'PlayerFalse', 'Too many logins']; //Updated
906: Actions := ['This world is full.', 5000, 10, 'PlayerFalse', 'World is full']; //Updated
1136: Actions := ['Runescape has been updated.', 0, 0, 'RSUpdate', 'RS Updated'];
777: Actions := ['Login limit exceeded.', 20000, 10, '', 'Waiting for login.'];
1700: Actions := ['You will need a members account to login to this world. Please subscribe, or use a different world.', 0, 0, 'PlayerFalse', 'Acc Disabled']; //Updated
end;
{Respond}

if (Length(Actions) > 0) then
begin
WriteLn(Actions[0]);
if (Actions[0] <> 'Not a Members Account') then
begin
Wait(1000 + Random(500));
end;
Wait(Actions[1] + Random(100));
if (Actions[2] <> 0) then
if (Attempts < Actions[2]) or (Actions[2] = -1) then
begin
if (Actions[0] = 'Not a Members Account') then
begin
Players[CurrentPlayer].Member := False;
if (Length(Players[CurrentPlayer].WorldInfo) > 0) then
Players[CurrentPlayer].WorldInfo[0] := False;
MouseBox(267, 321, 496, 350, mouse_left); //Play free game instead button TODO:Check if this is needed
Wait(3000 + Random(2000));
Result := True;
Exit;
end;
RetryLogin := True;
Wait(2000 + Random(1000));
Break;
end;
if (Actions[4] <> '') then
Players[CurrentPlayer].Loc := Actions[4];
case Actions[3] of
'PlayerFalse': NextPlayer(False);

'PlayerTrue':
begin
//LeaveLobby();
NextPlayer(True);
end;

'Terminate': TerminateScript;

'RSUpdate':
begin
if SRL_HasProc(srl_OnRSUpdate) then
begin
case actions[0] of
'Runescape has been updated.':
begin
Writeln('Runescape has been updated! Waiting 5 minutes to restart SMART!');
Wait(300000);
end;
end;
SRL_Procs[srl_OnRSUpdate]();
Exit;
end;
Writeln('Runescape has been updated! Please restart Simba.');
TerminateScript;
end;
end;
Exit;
end;
Wait(100);
Result := (LobbyScreen) or (LoggedIn);
until (Result);

TakeIPScreen();

if (LobbyScreen) then
begin
MouseBox(WDx1, WDy1, WDx2, WDy2, mouse_Left); //Click To Play
i := 0;
repeat
i := i+1;
Wait(100 + Random(100));
until (LoggedIn) or (i > 30);
end;

Wait(100 + Random(100));

{Back to main screen if needed}

if (RetryLogin) then
begin
RetryLogin := False;
Inc(Attempts);
goto ProcStart;
end;

end;

You wanna find and edit the login file for all of that of course, best thing to do is open a script and type in the function search bar - 'login' and then double click on loginplayer and it will direct you to that function in new tab.. Anyway hopefully this helps some 1 else.