been working on a work-around for when an account gets banned -> transition to next player ( ATM doesn't seem to detect any of the pop-up messages )
2 fricking hours. before i've finally found a solution... well a little more than 2 lines.
This was the last thing i've tried, been trying to deal with this outside of overrides hence why it took so long lol
Before:
Simba Code:
function TPlayer.loginToLobby(): boolean;
var
tries: integer = 1;
reachedMaxTries: boolean;
begin
print('TPlayer.loginToLobby(): ', TDebug.HEADER);
__areDynamicInterfacesSet := false;
if (not self.isActive) then
begin
print('TPlayer.loginToLobby(): Player ' + self.nickname + ' is not active...', TDebug.FOOTER);
exit(false);
end;
if lobby.isOpen() then
begin
print('TPlayer.loginToLobby(): Player ' + self.nickname + ' is already in lobby.', TDebug.FOOTER);
exit(true);
end;
if (not __setInputBoxes()) then
begin
print('TPlayer.loginToLobby(): Failed to find username and/or password box', TDebug.FOOTER);
exit(false);
end;
repeat
if (isLoggedIn() or lobby.isOpen()) then
begin
result := true;
break;
end;
print('Login Attempt ' + toStr(tries) + ': ' + capitalize(self.loginName) + ' (' + capitalize(self.displayName) + ')');
print('Entering username...', TDebug.SUB);
__enterLoginInfo(__boxUsername, self.loginName, true, true);
wait(500 + random(200));
print('Entering password...', TDebug.SUB);
__enterLoginInfo(__boxPassword, self.password, false, true);
wait(800 + random(200));
result := self.__handleLoginPopup(inc(tries), false, reachedMaxTries);
if reachedMaxTries then tries := 1; //'reachedMaxTries' is passed down from __respondToPopup()
until result;
if (not disableIPScreenshots) then takeScreenshot('IP_address.png');
print('TPlayer.loginToLobby(): ' + toStr(result), TDebug.FOOTER);
end;
FIX:
Simba Code:
function TPlayer.loginToLobby(): boolean;
var
timer:TTimeMarker;
begin
print('TPlayer.loginToLobby(): ', TDebug.HEADER);
__areDynamicInterfacesSet := false;
if (not self.isActive) then
begin
print('TPlayer.loginToLobby(): Player ' + self.nickname + ' is not active...', TDebug.FOOTER);
exit(false);
end;
if lobby.isOpen() then
begin
print('TPlayer.loginToLobby(): Player ' + self.nickname + ' is already in lobby.', TDebug.FOOTER);
exit(true);
end;
if (not __setInputBoxes()) then
begin
print('TPlayer.loginToLobby(): Failed to find username and/or password box', TDebug.FOOTER);
exit(false);
end;
timer.reset;
timer.start;
repeat
if (isLoggedIn() or lobby.isOpen()) then
begin
result := true;
break;
end;
print('Login Attempt ' + toStr(tries) + ': ' + capitalize(self.loginName) + ' (' + capitalize(self.displayName) + ')');
print('Entering username...', TDebug.SUB);
__enterLoginInfo(__boxUsername, self.loginName, true, true);
wait(500 + random(200));
print('Entering password...', TDebug.SUB);
__enterLoginInfo(__boxPassword, self.password, false, true);
wait(800 + random(200));
until Lobby.isOpen or (timer.getTime() > 30000);
if (timer.getTime() > 30000) then
begin
typeByte(VK_ESCAPE);
Players.next();
end;
end;