SRL Archive - Research & Development Lounge

Client Spam Opening Membership button


Itankbots

2013-02-17 11:31:26

Fix On my last post below!
—————————————————————————————————————————————————————————————————————————————————
I have been having this problem, when my guy logs out, there is a 1/10 chance it will Spam Click the Renew Membership or Membership button in the lobby. I know other people are having this problem too. Someone else made a thread in the Help section, but since the forum's rework the help section hasn't been getting as many views so i figured id post it here. Also since its not a scripts fault, its a client issue. i figure Here would be a better place.

Two out of the last 3 nights ive woken up and had 110+ Runescape tabs open, so we need to find a fix for this. I believe its a problem When the script you are using uses the world picker. (for instance has it log into w84 each time to mine)

http://gyazo.com/e43611ab4a732bd993cdd957b998fd14

Thats the button ive found it just spam clicking(the blue one), It will click it 5-10 times really fast and then finally stop and go to World select screen and log in like normal.

Im guessing it clicks it thinking its the world select button? Since there both similar colors of blue, but i Dont exactly know.

Ive had to take out the If Not LoggedIn then Loginplayer; Part to my scripts cause the spam opening of 10-20 google tabs has killed me at nex while i was gaming :s

Ive looked at the includes for loggin in/world choosing but my coding skills are not to the point i can edit those and find the problem yet. So if someone could take the time and look/fix it would be Much appreciated.

Also if there is anyone i should Tell this bug to please let me Know

Edit: heres a link to the thread made about this in help the other week: http://villavu.com/forum/showthread.php?t=96480&p=1172970#post1172970

And another : http://villavu.com/forum/showthread.php?t=96508&highlight=open+tabs

Edit 2: I believe i found the problem!


Ive found out what i believe the problem is. Its the Blue color Of the renew membership button, and the World globe it clicks on for world switcher, are similar and it gets the two confused if the mouse is in the middle of the screen when the bot lobbys.

So i Believe its a problem with the world switcher/selecter include. If anyone could please look at it and fix it would be much appreciated! I dont really understand how the include is written :c ive tried looking at it :/ (or even which include exactly it is)

The Problem spots ive noticed the mouse hovering over and spam clicking are circled in red in this picture

http://gyazo.com/86d99f2c943986031e13226b2ac57497

It mistakes the Click "here" button in blue, as the blue world globe icon.

Runehack123

2013-02-17 12:03:55

Sorry to hear that you died in the game! :(
I've been having exactly the same problem and nothing I did so far has fixed it… (EDIT: just realised you're referring to the thread I started!)
All my functions/procedures have checks to see if the player is logged in and it's still happening.

Itankbots

2013-02-17 12:46:15

Yeah same here =/ Idk whats causing it. Hopefully someone can figure it out

Another Thread about it earlier this Month:

http://villavu.com/forum/showthread.php?t=96508&highlight=open+tabs

Really need someone who knows how to edit the includes to find a fix for this =/ Its happening alot all a sudden to me.

DannyRS

2013-02-17 13:36:38

update to smart 8.0+

Runehack123

2013-02-17 13:51:06

From: DannyRS
update to smart 8.0+

I was getting this problem whilst using Smart 8.0 :o

CHEATGOD

2013-02-17 13:52:59

Wait, you had over 100 RS opened? How can your PC handle it?

Itankbots

2013-02-17 14:04:33

From: DannyRS
update to smart 8.0+


Im using smart 8.0

and @Cheatg0d i have a $3600 PC, but Google Chrome crashes after 120 some odd tabs are opened.

Itankbots

2013-02-17 15:26:22

Ughh…its doing this around 4 times a day now, not even when it hits 6hr log. Just when it accidently logs out or hits a fail safe. This is ridiculous

Edit: Ive found out what i believe the problem is. Its the Blue color Of the renew membership button, and the World globe it clicks on for world switcher, are similar and it gets the two confused if the mouse is in the middle of the screen when the bot lobbys.

So i Believe its a problem with the world switcher/selecter include. If anyone could please look at it and fix it would be much appreciated! I dont really understand how the include is written :c (or even the exact one it is) ive tried looking at it :/

The Problem spots ive noticed the mouse hovering over and spam clicking are circled in red in this picture

http://gyazo.com/86d99f2c943986031e13226b2ac57497

It mistakes the Click "here" button in blue, as the blue world globe icon.

Itankbots

2013-02-19 13:58:21

How come everyone is ignoring this post/bug? I looked through the forums and its been happening to different people for many months yet no one seems to comment on it? I even messaged the people who wrote the login includes or people who wrote other includes and they ignore my Messages :l Its getting pretty frustrating since i have this happen 4-5 times a day when running multi accounts on different scripts. Making simba barely usable for me, And Yes ive already tried looking at the include to fix it, but im fairly new to scripting and dont fully understand whats all there.

Kevin

2013-02-19 14:31:58

I'm sorry, but this is a long-standing issue with SIMBA and f2p accounts. The original authors aren't as active as they used to be and most other people feel that code is too deep for them to want to deal with (and many of the oldest developers don't approve of bot armies, so announcing that as part of the issue may not be beneficial).

I can see how that issue could be fairly frustrating, but if you can't find an original developer to help you and you aren't capable of fixing it yourself directly, I recommend looking into at least adding a timer so it will shut the failing script down after 30 seconds (or 3 clicks) or something along those lines. Most methods are named to be easy to find and you should be able to follow into the portion of the code in the lobby login that this occurs for you to add the timer.

If that fails, I recommend looking to talk to someone else who is noted to run a bot army. Read a few posts a day that may not be related to what you want directly and you should be able to find a bigger developer or two that may be able to help you in this with fixing the actual issue as opposed to the work-around I suggest.

Itankbots

2013-02-19 15:50:34

Yeah i guess so, Thank you for replying, I just find it rude when everyone seems to ignore the post or pm's . Usually everyone is kind and helpful around here. Ill add the timer idea once i feel better, really sick atm. Didnt think to just add a timer to it. But that really doesnt fix the problem. Hopefully someone out there will post a fix , or ill just have to wait till my coding skills get that good lol.

O yay went to bathroom and had only 1 client running and it opened 120 chrome tabs by the time i got back lol.. : http://gyazo.com/a82b2a1372e782157c20663bde3db6e4

J J

2013-02-19 16:23:48

Some stuff that I used to use
procedure InsertDetails;
var
i: Integer;
UB, PB: TBox;
Boxes: TBoxArray;

begin
UB := IntToBox(278, 202 + Y_OFFSET_LOGIN, 487, 222 + Y_OFFSET_LOGIN); // Username
PB := IntToBox(276, 249 + Y_OFFSET_LOGIN, 486, 268 + Y_OFFSET_LOGIN); // Password
Boxes := [UB, PB];

for i:=0 to high(Boxes) do
begin
MouseBox(Boxes[i].X1, Boxes[i].Y1, Boxes[i].X2, Boxes[i].Y2, 1);
Wait(RandomRange(300, 600));
case i of
0: TypeSendEx(Players[CurrentPlayer].Name, False);
1: TypeSend(Players[CurrentPlayer].Pass);
end;
Wait(RandomRange(300, 600));
end;

//Mousebox(306, 292 + Y_OFFSET_LOGIN, 460, 308 + Y_OFFSET_LOGIN, 1); // Login
end;

procedure CloseOneWeekScreen;
var
Lock, X, Y, T: Integer;

begin
Lock := BitmapFromString(25, 16, 'meJzTiyiyaJ5jU9qu3rxEZsVt2RW3LTfccV96BA9Sn3lYFqwSiPQnblOrnunUNssiNM512iagXoi40OTjQNMgSJYQAiqGs4EmpJ5+AXQMUBAXQtOLR5nLhqtA5+FXA/SCdmoNfhuBCOhxPEYBvWkz/aC4giojA4O4vCp+04BGAQMcyOBv3YImBRQBhgAwRoDmABEHGwvQbbhUohmFiYC+85pyQN7QHGgUkIS4CqtKiFFAu7DKQhAwMMOnLgP6Eeg8YBrApYwYo4B+dMoq5ebmBipTmLgbj1HAUMVjFFCB5aLTcA/iMoq3YimQBKZPiFFALiYCGmXYvljLyVvO0BxIAsMKl0qIUXoRRXgUAF0CdDkQAVMXLmXIRuFSAFcG9wgeNTb9qyFG8ZTOpQQhG0UJghsFyV+UI8/elQDhcgZz');
MarkTime(T);
while TimeFromMark(T) < 5000 do
begin
if FindBitmapToleranceIn(Lock, X, Y, 258, 205 + Y_OFFSET_LOGIN, 507, 398 + Y_OFFSET_LOGIN, 20) then
begin
Mousebox(309, 368 + Y_OFFSET_LOGIN, 457, 383 + Y_OFFSET_LOGIN, 1); // close coords
Wait(RandomRange(500, 1000));
break;
end;
Wait(RandomRange(250, 500));
end;
Wait(RandomRange(2000, 3000));
FreeBitmap(Lock);
end;

procedure OpenWorlds;
begin
Mousebox(169, 76 + Y_OFFSET_LOGIN, 264, 97 + Y_OFFSET_LOGIN, 1); // Coords
Wait(RandomRange(1000, 2000));
end;

function FindTheWorld(W: integer): Boolean;
Var
WPos, SPos, CurPos, i, H, CurW, TextColor: integer;
BarHeight, WorldsOnScreen: integer;
p: TPoint;
TPA, TPA2, TPA3: TPointArray;
SP, SB: TBox;
begin
WS_CurrentWorld(CurW);
if (W = CurW) then
begin
Result := True;
WriteLn('Already on world ' + IntToStr(W));
Exit;
end;

if not WorldsOrdered then
begin
if not OrderWorlds('w', True) then
begin
Writeln('FindWorld: Could not order worlds properly.');
Exit;
end;
WorldsOrdered := true;
wait(400+random(200));
end;

FindColorsTolerance(TPA, SRL_WS_SCROLLCOLOR1, 680, 1, 705, 500, 0);//These coords determine the scroll bars general area, it deviates everything.
SB := GetTPABounds(TPA);
With SB do
begin
FindColorsTolerance(TPA2, SRL_WS_SCROLLCOLOR1, x1+3, y1, x1+3, y2, 0);//SRL_WS_SCROLLCOLOR1
FindColorsTolerance(TPA3, SRL_WS_SCROLLCOLOR2, x1+3, y1, x1+3, y2, 0);//SRL_WS_SCROLLCOLOR2
end;
TPA2 := CombineTPA(TPA2, TPA3);
SP := GetTPABounds(TPA2);

BarHeight := (SP.Y2-SP.Y1);
WorldsOnScreen := (SB.y2-SB.y1+32) div 42;//This is HALF of the worlds on screen. I don't use the full amount.

if Length(WorldArray) < 1 then
LoadWorldArrays;
WPos := -1;
H := High(WorldArray);
for i := 0 to H do
if (WorldArray[i].Number = W) then
begin
WPos := i;
if i < (WorldsOnScreen) then
WPos := 0;
if i > (H+1-(WorldsOnScreen)) then
WPos := (H+1);
if WorldArray[i].Members then
TextColor := SRL_WS_YELLOWCOLOR
else
TextColor := SRL_WS_WHITECOLOR;
Break;
end;

if WPos = -1 then
begin
srl_Warn('FindWorld', 'World '+IntToStr(W)+' does not exist in worlds.ini ', warn_AllVersions);
Exit;
end;

SPos := (SB.y1+BarHeight div 2) + (WPos)*(SB.y2-SB.y1-BarHeight) div (H+1-WorldsOnScreen);//need the 0.0 to make it extended inside ()
CurPos := (SP.y1 + BarHeight div 2);
Debugln('SCROLLINFO: CurPos: '+ToStr(CurPos)+' WPos: '+ToStr(WPos)+' H+1: '+ToSTr(H+1)+' SPos: '+ToStr(SPos));
if InRange(SPos, CurPos - BarHeight, CurPos + BarHeight) then
begin//if its too close the scroll bar won't move to correct position
if (CurPos < ((SB.y1+BarHeight/2)+ (SB.y2-SB.y1-BarHeight)/2)) then//half point
Mouse((SB.x1 + (SB.x2-SB.x1)div 2), SB.y2, 0, 0, mouse_left)
else
Mouse((SB.x1 + (SB.x2-SB.x1)div 2), SB.y1, 0, 0, mouse_left);
end;

//Writeln('SPos := '+ToStr(SPos));
Mouse((SB.x1 + (SB.x2-SB.x1)div 2), SPos, 0, 0, mouse_left);
wait(300+Random(100));
Result := IsTextInAreaEx(84, 134, 134, 440, p.X, p.Y, IntToStr(W) + ' ', 0, StatChars, False, False, -1, 2, TextColor);
end;

procedure PlayWorld(W: integer);
var
x, y, xx, yy, CurW: integer;
WRec: TWorld;

begin
WS_CurrentWorld(CurW);
if (W = CurW) then
begin
WriteLn('Already on world ' + IntToStr(W));
Exit;
end;

if FindTheWorld(W) then
begin
wait(200 + random(200));
if GetWorldInfo(W, WRec) then
begin
Writeln('World: '+inttostr(WRec.Number)+', Players: '+inttostr(WRec.PlayerNo)+', Members: '+Booltostr(WRec.Members)+', PvP: '+Booltostr(WRec.PVP));
if FindText(x, y, ' '+inttostr(W)+' ', StatChars, 84, 134, 140, 440) then
begin
MMouse(x, y, 400, 4);
GetMousePos(x, y);
wait(400+random(100));
if FindColor(xx, yy, 6316128, x-20, y-2, x+20, y+2) then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, mouse_left);
if FindColor(xx, yy, 19890, x-20, y-2, x+20, y+2) then
Writeln('World '+inttostr(W)+' selected.');
end;
end;
end else
if WRec.PlayerNo = -2 then
WriteLn('World ' + IntToStr(W) + ' is FULL.')
else
WriteLn('World ' + IntToStr(W) + ' is OFFLINE.')
end else
WriteLn('Failed to find World ' + IntToStr(W) + '!');
end;

procedure TalkFast(Text: String; PressEnter: Boolean);
var
i: Integer;

begin
for i:=1 to length(Text) do
SendKeys(Text[i], 50 + Random(50), 50 + Random(50));

if (PressEnter) then
TypeByte(VK_RETURN);
end;

Mainloop something like
begin
SetupSRL;
Accounts := ['test123@outlook.com',
'test456@outlook.com',
'etc........'
];
Passwords := ['blue123',
'blue123',
'blue123'];
DeclarePlayers;
for Counter:=0 to high(Accounts) do
begin
if not(LoggedIn) then
begin
DeclarePlayers;
InsertDetails;
CloseOneWeekScreen;
OpenWorldScreen;
SelectWorld(53);
LoginPlayer;
Wait(3000 + Random(3000));
end;

Itankbots

2013-02-19 16:47:47

From: J J
Some stuff that I used to use
procedure InsertDetails;
var
i: Integer;
UB, PB: TBox;
Boxes: TBoxArray;

begin
UB := IntToBox(278, 202 + Y_OFFSET_LOGIN, 487, 222 + Y_OFFSET_LOGIN); // Username
PB := IntToBox(276, 249 + Y_OFFSET_LOGIN, 486, 268 + Y_OFFSET_LOGIN); // Password
Boxes := [UB, PB];

for i:=0 to high(Boxes) do
begin
MouseBox(Boxes[i].X1, Boxes[i].Y1, Boxes[i].X2, Boxes[i].Y2, 1);
Wait(RandomRange(300, 600));
case i of
0: TypeSendEx(Players[CurrentPlayer].Name, False);
1: TypeSend(Players[CurrentPlayer].Pass);
end;
Wait(RandomRange(300, 600));
end;

//Mousebox(306, 292 + Y_OFFSET_LOGIN, 460, 308 + Y_OFFSET_LOGIN, 1); // Login
end;

procedure CloseOneWeekScreen;
var
Lock, X, Y, T: Integer;

begin
Lock := BitmapFromString(25, 16, 'meJzTiyiyaJ5jU9qu3rxEZsVt2RW3LTfccV96BA9Sn3lYFqwSiPQnblOrnunUNssiNM512iagXoi40OTjQNMgSJYQAiqGs4EmpJ5+AXQMUBAXQtOLR5nLhqtA5+FXA/SCdmoNfhuBCOhxPEYBvWkz/aC4giojA4O4vCp+04BGAQMcyOBv3YImBRQBhgAwRoDmABEHGwvQbbhUohmFiYC+85pyQN7QHGgUkIS4CqtKiFFAu7DKQhAwMMOnLgP6Eeg8YBrApYwYo4B+dMoq5ebmBipTmLgbj1HAUMVjFFCB5aLTcA/iMoq3YimQBKZPiFFALiYCGmXYvljLyVvO0BxIAsMKl0qIUXoRRXgUAF0CdDkQAVMXLmXIRuFSAFcG9wgeNTb9qyFG8ZTOpQQhG0UJghsFyV+UI8/elQDhcgZz');
MarkTime(T);
while TimeFromMark(T) < 5000 do
begin
if FindBitmapToleranceIn(Lock, X, Y, 258, 205 + Y_OFFSET_LOGIN, 507, 398 + Y_OFFSET_LOGIN, 20) then
begin
Mousebox(309, 368 + Y_OFFSET_LOGIN, 457, 383 + Y_OFFSET_LOGIN, 1); // close coords
Wait(RandomRange(500, 1000));
break;
end;
Wait(RandomRange(250, 500));
end;
Wait(RandomRange(2000, 3000));
FreeBitmap(Lock);
end;

procedure OpenWorlds;
begin
Mousebox(169, 76 + Y_OFFSET_LOGIN, 264, 97 + Y_OFFSET_LOGIN, 1); // Coords
Wait(RandomRange(1000, 2000));
end;

function FindTheWorld(W: integer): Boolean;
Var
WPos, SPos, CurPos, i, H, CurW, TextColor: integer;
BarHeight, WorldsOnScreen: integer;
p: TPoint;
TPA, TPA2, TPA3: TPointArray;
SP, SB: TBox;
begin
WS_CurrentWorld(CurW);
if (W = CurW) then
begin
Result := True;
WriteLn('Already on world ' + IntToStr(W));
Exit;
end;

if not WorldsOrdered then
begin
if not OrderWorlds('w', True) then
begin
Writeln('FindWorld: Could not order worlds properly.');
Exit;
end;
WorldsOrdered := true;
wait(400+random(200));
end;

FindColorsTolerance(TPA, SRL_WS_SCROLLCOLOR1, 680, 1, 705, 500, 0);//These coords determine the scroll bars general area, it deviates everything.
SB := GetTPABounds(TPA);
With SB do
begin
FindColorsTolerance(TPA2, SRL_WS_SCROLLCOLOR1, x1+3, y1, x1+3, y2, 0);//SRL_WS_SCROLLCOLOR1
FindColorsTolerance(TPA3, SRL_WS_SCROLLCOLOR2, x1+3, y1, x1+3, y2, 0);//SRL_WS_SCROLLCOLOR2
end;
TPA2 := CombineTPA(TPA2, TPA3);
SP := GetTPABounds(TPA2);

BarHeight := (SP.Y2-SP.Y1);
WorldsOnScreen := (SB.y2-SB.y1+32) div 42;//This is HALF of the worlds on screen. I don't use the full amount.

if Length(WorldArray) < 1 then
LoadWorldArrays;
WPos := -1;
H := High(WorldArray);
for i := 0 to H do
if (WorldArray[i].Number = W) then
begin
WPos := i;
if i < (WorldsOnScreen) then
WPos := 0;
if i > (H+1-(WorldsOnScreen)) then
WPos := (H+1);
if WorldArray[i].Members then
TextColor := SRL_WS_YELLOWCOLOR
else
TextColor := SRL_WS_WHITECOLOR;
Break;
end;

if WPos = -1 then
begin
srl_Warn('FindWorld', 'World '+IntToStr(W)+' does not exist in worlds.ini ', warn_AllVersions);
Exit;
end;

SPos := (SB.y1+BarHeight div 2) + (WPos)*(SB.y2-SB.y1-BarHeight) div (H+1-WorldsOnScreen);//need the 0.0 to make it extended inside ()
CurPos := (SP.y1 + BarHeight div 2);
Debugln('SCROLLINFO: CurPos: '+ToStr(CurPos)+' WPos: '+ToStr(WPos)+' H+1: '+ToSTr(H+1)+' SPos: '+ToStr(SPos));
if InRange(SPos, CurPos - BarHeight, CurPos + BarHeight) then
begin//if its too close the scroll bar won't move to correct position
if (CurPos < ((SB.y1+BarHeight/2)+ (SB.y2-SB.y1-BarHeight)/2)) then//half point
Mouse((SB.x1 + (SB.x2-SB.x1)div 2), SB.y2, 0, 0, mouse_left)
else
Mouse((SB.x1 + (SB.x2-SB.x1)div 2), SB.y1, 0, 0, mouse_left);
end;

//Writeln('SPos := '+ToStr(SPos));
Mouse((SB.x1 + (SB.x2-SB.x1)div 2), SPos, 0, 0, mouse_left);
wait(300+Random(100));
Result := IsTextInAreaEx(84, 134, 134, 440, p.X, p.Y, IntToStr(W) + ' ', 0, StatChars, False, False, -1, 2, TextColor);
end;

procedure PlayWorld(W: integer);
var
x, y, xx, yy, CurW: integer;
WRec: TWorld;

begin
WS_CurrentWorld(CurW);
if (W = CurW) then
begin
WriteLn('Already on world ' + IntToStr(W));
Exit;
end;

if FindTheWorld(W) then
begin
wait(200 + random(200));
if GetWorldInfo(W, WRec) then
begin
Writeln('World: '+inttostr(WRec.Number)+', Players: '+inttostr(WRec.PlayerNo)+', Members: '+Booltostr(WRec.Members)+', PvP: '+Booltostr(WRec.PVP));
if FindText(x, y, ' '+inttostr(W)+' ', StatChars, 84, 134, 140, 440) then
begin
MMouse(x, y, 400, 4);
GetMousePos(x, y);
wait(400+random(100));
if FindColor(xx, yy, 6316128, x-20, y-2, x+20, y+2) then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, mouse_left);
if FindColor(xx, yy, 19890, x-20, y-2, x+20, y+2) then
Writeln('World '+inttostr(W)+' selected.');
end;
end;
end else
if WRec.PlayerNo = -2 then
WriteLn('World ' + IntToStr(W) + ' is FULL.')
else
WriteLn('World ' + IntToStr(W) + ' is OFFLINE.')
end else
WriteLn('Failed to find World ' + IntToStr(W) + '!');
end;

procedure TalkFast(Text: String; PressEnter: Boolean);
var
i: Integer;

begin
for i:=1 to length(Text) do
SendKeys(Text[i], 50 + Random(50), 50 + Random(50));

if (PressEnter) then
TypeByte(VK_RETURN);
end;

Mainloop something like
begin
SetupSRL;
Accounts := ['test123@outlook.com',
'test456@outlook.com',
'etc........'
];
Passwords := ['blue123',
'blue123',
'blue123'];
DeclarePlayers;
for Counter:=0 to high(Accounts) do
begin
if not(LoggedIn) then
begin
DeclarePlayers;
InsertDetails;
CloseOneWeekScreen;
OpenWorldScreen;
SelectWorld(53);
LoginPlayer;
Wait(3000 + Random(3000));
end;


Awesome ty! I already had something similar for the Oneweekscreen but login was what i was looking for ^^ thank you, that helps point me in the right direction, much appreciated.

Edit: dangit, just had this happen on a members acc for the first time, thought it only happened on trial accs :( welp guess i will be working on a perm fix then lol

Sawyer

2013-02-19 22:30:57

I've had one with literally 400 tabs opened… my computer was dead until forced a shut down.

Ashaman88

2013-02-19 23:50:17

Honestly would love to help if I could reproduce it, but I have no idea what is causing it and haven't had this happen or caught it in the act myself.

Itankbots

2013-03-01 07:02:31

I have found the problem and got a solution! Just a warning, im not the best scripter, so im sure there are WAY better ways to do this, but this has worked for me 99% of the time for the last week straight, so i figured i would post it here so anyone else with the problem can use it.

Basically what was causing it to spam click the membership button was when you had a little lagg or multi accounts running, it would believe its still on login screen, when in reality it is on the lobby screen. So it would try to click the Box to type your username in, but since it was on the lobby screen, the renew membership button was there instead of the username box :P


Procedure LoginCheck;


begin
If LobbyScreen then
MouseBox( 172, 28, 258, 48, Mouse_left);
Wait(500 + Random(400));
If WorldScreen then LoginPlayer;
Wait(1500 + Random(400));
If Not(LobbyScreen or Loggedin) then
LoginPlayerToLob;
If LobbyScreen then
MouseBox( 172, 28, 258, 48, Mouse_left);
Wait(500 + Random(400));
If WorldScreen then LoginPlayer;
end; ]

Just replace where you would normally call LoginPlayer, instead call LoginCheck. Like so: If not (LoggedIN) Then LoginCheck;


Also, if your running more then one account, sometimes there is a problem where it will say "login limit exceeded" even if your not trying to log into same world, just trying to get into lobby.
For that, change this part of the Login include. Around Line 809



      Actions := ['Invalid Username / Password',           0,    2,    'PlayerFalse',   'Wrong User/Pass'];
1088: Actions := ['Your account has been disabled', 0, 0, 'PlayerFalse', 'Acc Disabled'];
951: Actions := ['Your account is already logged in', 5000, 5, 'PlayerTrue', 'Already logged in'];
1239: Actions := ['Not a Members Account', 0, 1, 'PlayerTrue', ''];
364: Actions := ['Error Connecting.', 20000, 9, 'Terminate', 'Error Connecting'];
1057: Actions := ['Too many incorrect logins.', 5 * 60000, 2, 'PlayerFalse', 'Too many logins'];
732: Actions := ['Runescape has been updated.', 0, 0, 'RSUpdate', 'RS Updated'];
591: Actions := ['Client token changed.', 0, 0, 'RSUpdate', 'Client Token Changed'];
1606: Actions := ['Game session expired.', 0, 0, 'RSUpdate', 'Session Expired'];
777: Actions := ['Login limit exceeded.', 20000, 4, 'RSUpdate', 'Waiting for login.']; <---


The last line with the arrow. This part , lower the attempts to 2-4, and change it so it does a RsUpdate after 4 trys(like i did above), which will spawn a new smart client like for the 6hr logout, which will fix the "Login limit exceeded error' , that way it will always complete the 6hr restart correctly :)


I Hope that helps some people and that i explained it well enough, really tired atm lol. But for me those two changes fix it so it never clicks the membership button anymore :)

GuthixBoss1

2013-03-02 05:36:26

From: Itankbots
I have found the problem and got a solution! Just a warning, im not the best scripter, so im sure there are WAY better ways to do this, but this has worked for me 99% of the time for the last week straight, so i figured i would post it here so anyone else with the problem can use it.

Basically what was causing it to spam click the membership button was when you had a little lagg or multi accounts running, it would believe its still on login screen, when in reality it is on the lobby screen. So it would try to click the Box to type your username in, but since it was on the lobby screen, the renew membership button was there instead of the username box :P


Procedure LoginCheck;


begin
If LobbyScreen then
MouseBox( 172, 28, 258, 48, Mouse_left);
Wait(500 + Random(400));
If WorldScreen then LoginPlayer;
Wait(1500 + Random(400));
If Not(LobbyScreen or Loggedin) then
LoginPlayerToLob;
If LobbyScreen then
MouseBox( 172, 28, 258, 48, Mouse_left);
Wait(500 + Random(400));
If WorldScreen then LoginPlayer;
end; ]

Just replace where you would normally call LoginPlayer, instead call LoginCheck. Like so: If not (LoggedIN) Then LoginCheck;


Also, if your running more then one account, sometimes there is a problem where it will say "login limit exceeded" even if your not trying to log into same world, just trying to get into lobby.
For that, change this part of the Login include. Around Line 809



      Actions := ['Invalid Username / Password',           0,    2,    'PlayerFalse',   'Wrong User/Pass'];
1088: Actions := ['Your account has been disabled', 0, 0, 'PlayerFalse', 'Acc Disabled'];
951: Actions := ['Your account is already logged in', 5000, 5, 'PlayerTrue', 'Already logged in'];
1239: Actions := ['Not a Members Account', 0, 1, 'PlayerTrue', ''];
364: Actions := ['Error Connecting.', 20000, 9, 'Terminate', 'Error Connecting'];
1057: Actions := ['Too many incorrect logins.', 5 * 60000, 2, 'PlayerFalse', 'Too many logins'];
732: Actions := ['Runescape has been updated.', 0, 0, 'RSUpdate', 'RS Updated'];
591: Actions := ['Client token changed.', 0, 0, 'RSUpdate', 'Client Token Changed'];
1606: Actions := ['Game session expired.', 0, 0, 'RSUpdate', 'Session Expired'];
777: Actions := ['Login limit exceeded.', 20000, 4, 'RSUpdate', 'Waiting for login.']; <---


The last line with the arrow. This part , lower the attempts to 2-4, and change it so it does a RsUpdate after 4 trys(like i did above), which will spawn a new smart client like for the 6hr logout, which will fix the "Login limit exceeded error' , that way it will always complete the 6hr restart correctly :)


I Hope that helps some people and that i explained it well enough, really tired atm lol. But for me those two changes fix it so it never clicks the membership button anymore :)


Whoa thanks for this. Waaaay more efficient than my own fix for it HAHAHA

Itankbots

2013-03-02 06:33:36

From: guthixboss1
Whoa thanks for this. Waaaay more efficient than my own fix for it HAHAHA


Your welcome! I was going for the simplest but most effective way to fix it. Im glad it helped someone else to! that defiantly made all the work worth it haha