Mancubus 8 Share Posted September 18, 2020 The RandomSolver that handles the Too many login attempts screen will get stuck on there trying to login over and over again for hours on end. The problem is obviously that it doesnt wait enough time before it tries to login again. Because they are fixed if I pause the script for 20 mins or so and then start it again. Can this issue get looked into? just making it wait 20-30 mins would fix it I imagine. Link to comment Share on other sites More sharing options...
Tweeboy 14 Share Posted September 18, 2020 There's a lot of variables to when the "too many login attempts" clears. Sometimes the login attempt limit clears within a minutes, other times 10+. Sometimes after a few world hops, other times 20+ hops. Because of this, 20-30 min wait may be a nuisance for some scripts if implemented as a blanket solution (though I'd personally love to see it implemented, but I'm biased as I usually run scripts that hop worlds a lot!) Think you'd be better off writing something yourself to handle waiting that timer out. That way you have control over wait times to find the perfect fit. EDIT: Found this snippet from one of my old scripts, very poorly written lmao but can use as a starting point. I had used gameState to determine if I was at the login screen for too long, and then disabling the login handler & waiting 15 mins if that was the case. public int onLoop() { if (Client.getGameState()==GameState.LOGIN_SCREEN){ //If at login screen BreakT.reset(); //Start break timer this.getRandomManager().enableSolver(RandomEvent.LOGIN); log("Login Enabled"); while (Client.getGameState()!=GameState.LOGGED_IN){ log("Logging in"); if (Client.getGameState()==GameState.LOGGED_IN){ break; } if (BreakT.elapsed()>60000){ log("Login attempts exceeded, waiting 15 minutes"); this.getRandomManager().disableSolver(RandomEvent.LOGIN); sleepUntil(() -> Client.getGameState() != GameState.LOGIN_SCREEN, 900000); //I used sleepUntil because sometimes the login handler would try one last time. It'd end up successfully logging in but then sleeping. This seems to prevent that from happening BreakT.reset(); this.getRandomManager().enableSolver(RandomEvent.LOGIN); } } log("Is it looping?"); } else { this.getRandomManager().disableSolver(RandomEvent.LOGIN); } for (Node node : nodes) { if(node.validate()){ return node.execute(); } } // log("No node valid"); return 200; } Link to comment Share on other sites More sharing options...
Mancubus 8 Author Share Posted September 18, 2020 21 minutes ago, roflme said: There's a lot of variables to when the "too many login attempts" clears. Sometimes the login attempt limit clears within a minutes, other times 10+. Sometimes after a few world hops, other times 20+ hops. Because of this, 20-30 min wait may be a nuisance for some scripts if implemented as a blanket solution (though I'd personally love to see it implemented, but I'm biased as I usually run scripts that hop worlds a lot!) Think you'd be better off writing something yourself to handle waiting that timer out. That way you have control over wait times to find the perfect fit. EDIT: Found this snippet from one of my old scripts, very poorly written lmao but can use as a starting point. I had used gameState to determine if I was at the login screen for too long, and then disabling the login handler & waiting 15 mins if that was the case. public int onLoop() { if (Client.getGameState()==GameState.LOGIN_SCREEN){ //If at login screen BreakT.reset(); //Start break timer this.getRandomManager().enableSolver(RandomEvent.LOGIN); log("Login Enabled"); while (Client.getGameState()!=GameState.LOGGED_IN){ log("Logging in"); if (Client.getGameState()==GameState.LOGGED_IN){ break; } if (BreakT.elapsed()>60000){ log("Login attempts exceeded, waiting 15 minutes"); this.getRandomManager().disableSolver(RandomEvent.LOGIN); sleepUntil(() -> Client.getGameState() != GameState.LOGIN_SCREEN, 900000); //I used sleepUntil because sometimes the login handler would try one last time. It'd end up successfully logging in but then sleeping. This seems to prevent that from happening BreakT.reset(); this.getRandomManager().enableSolver(RandomEvent.LOGIN); } } log("Is it looping?"); } else { this.getRandomManager().disableSolver(RandomEvent.LOGIN); } for (Node node : nodes) { if(node.validate()){ return node.execute(); } } // log("No node valid"); return 200; } Thank you very much for your detailed response! I will definately try to create some solution myself with your snippet, looks good. I'm not familair with the Node part at the end but Ill figure something out 😛 Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.