public static void doLogic() { if (checkReconnect()) { int reconnectTime = Settings.getInstance().reconnectTime; BotHelper.Log("Reconnect Button found. Pressing it in " + reconnectTime + " minutes."); int sleepTime = 0; if (reconnectTime != 0) { sleepTime = reconnectTime * 1000 * 60; } else { sleepTime = 5000; //wait 5 seconds anyways, just to be sure } System.Threading.Thread.Sleep(sleepTime); Bitmap button_reconnect = BotHelper.getResourceByName("button_reconnect"); Point reconnectButton = ImageRecognition.getPictureLocation(button_reconnect, 0.90f); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(reconnectButton, button_reconnect)); BotHelper.Log("Reconnect Button pressed."); } else { BotHelper.Log("Reconnect Button check completed; Button not found.", true, true); } }
public static bool checkForLeagueEnd() { // Does anything happen when you get put in a better league? Gonna have to test that. // If not, this should work already. Bitmap league_end_label = BotHelper.getResourceByName("label_league_over"); Point labelPoint = ImageRecognition.getPictureLocation(comparePic, league_end_label); if (labelPoint != pNull) { // League ended. We gotta press "Claim" now and open that chest. :) BotHelper.randomDelay(1000, 100); Bitmap claimButton = BotHelper.getResourceByName("button_claim_onend"); Point claimPoint = ImageRecognition.getPictureLocation(comparePic, claimButton); if (claimPoint != pNull) { ADBHelper.simulateClick(claimPoint); BotHelper.randomDelay(1000, 100); ChestLogic.openChest(); } else { BotHelper.Log("Couldn't find claim button for leagueEnd. Returning to regular duty."); } return(true); } return(false); }
public static void openChest() { for (int i = 0; i < 16; i++) { // just to make sure it'll still be randomized... ADBHelper.simulateClick(new Point(rnd.Next(270 - 50, 270 + 50), rnd.Next(200 - 50, 200 + 50))); //Click anywhere to unbox BotHelper.randomDelay(200, 20); } ADBHelper.simulateClick(ImageRecognition.getRandomLoc(BotHelper.getResourceByName("button_collect_prizes"), 0.901f)); // Check for Bonus item BotHelper.randomDelay(4000, 100); // it might take a second or two for the bonus chest to appear, better be safe than sorry comparePic = ADBHelper.getScreencap(); Point bonusLabel = ImageRecognition.GetSubPositions(comparePic, BotHelper.getResourceByName("label_bonus")).FirstOrDefault(); if (bonusLabel.X != 0 && bonusLabel.Y != 0) { // Bonus item, yay! Point watchButton = ImageRecognition.GetSubPositions(comparePic, BotHelper.getResourceByName("button_watch"), 0.901f).FirstOrDefault(); if (watchButton.X != 0 && watchButton.Y != 0) { // Ugh, they want us to watch an ad. Close the window. Point closeButton = ImageRecognition.GetSubPositions(comparePic, BotHelper.getResourceByName("button_cancel"), 0.901f).FirstOrDefault(); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(closeButton, BotHelper.getResourceByName("button_cancel"))); } else { ADBHelper.simulateClick(new Point(rnd.Next(270 - 50, 270 + 50), rnd.Next(200 - 50, 200 + 50))); //Click anywhere to unbox BotHelper.randomDelay(300, 20); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(BotHelper.getResourceByName("button_collect_prizes"), 0.901f)); } } }
private static void openClosestChest() { Point closestChest = getClosestChest(); // The sponsor chest is the smallest one, so we use this for our random location algorithm to make sure won't miss a chest ADBHelper.simulateClick(ImageRecognition.getRandomLoc(closestChest, BotHelper.getResourceByName("chest_sponsor"))); BotHelper.randomDelay(5000, 50); // it takes some time to open a chest sometimes openChest(); }
public static void doLogic() { BotHelper.randomDelay(1000, 100); //make sure to screen is cleared from previous tasks, just in case. Will probably be removed after some testing. currentlyUnlocking = true; comparePic = ImageRecognition.CaptureApplication(); currentlyUnlocking = isChestUnlocking(); if (chestsReady()) { BotHelper.Log("Completed box found!"); openClosestChest(); } if (!currentlyUnlocking) { BotHelper.Log("There's no box being unlocked right now, unlocking"); List <Point> regularBoxes = ImageRecognition.GetSubPositions(comparePic, BotHelper.getResourceByName("chest_regular")); List <Point> superBoxes = ImageRecognition.GetSubPositions(comparePic, BotHelper.getResourceByName("chest_super")); Point firstReg = regularBoxes.FirstOrDefault(); Point firstSup = superBoxes.FirstOrDefault(); if (firstReg.X != 0 && firstReg.Y != 0) { // Open a regular box BotHelper.Log(" regular box", false); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(firstReg, BotHelper.getResourceByName("chest_regular"))); BotHelper.randomDelay(1000, 100); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(BotHelper.getResourceByName("button_unlock"))); BotHelper.randomDelay(1000, 100); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(BotHelper.getResourceByName("button_cancel"), 0.901f)); } else if (firstSup.X != 0 && firstSup.Y != 0) { // Open a super box BotHelper.Log(" super box", false); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(firstSup, BotHelper.getResourceByName("chest_super"))); BotHelper.randomDelay(1000, 100); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(BotHelper.getResourceByName("button_unlock"))); BotHelper.randomDelay(1000, 100); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(BotHelper.getResourceByName("button_cancel"), 0.901f)); } else { BotHelper.Log(" ...nevermind. No boxes found.", false); } } BotHelper.Log("Finished ChestLogic!"); }
// Check if we defended, if yes, click that filthy "Claim" button that's preventing us from clicking "QUICK FIGHT" ;) public static bool checkDefense() { Helper.BotHelper.Log("Successful defense check", true, true); Bitmap button_claim = BotHelper.getResourceByName("button_claim"); Point claimPoint = ImageRecognition.getPictureLocation(button_claim); if (claimPoint != pNull) { ADBHelper.simulateClick(ImageRecognition.getRandomLoc(claimPoint, button_claim)); BotHelper.Log("We defended. Free coins! :)"); BotHelper.randomDelay(1200, 100); return(true); } return(false); }
// Check if somebody got an instant promotion, because that window will be blocking the bot even after a restart public static bool checkInstantPromo() { Bitmap button_ok = BotHelper.getResourceByName("button_ok"); Helper.BotHelper.Log("Instant Promo Check", true, true); Point okPoint = ImageRecognition.getPictureLocation(comparePic, button_ok); if (okPoint != pNull) { ADBHelper.simulateClick(ImageRecognition.getRandomLoc(okPoint, button_ok)); BotHelper.Log("Someone got instant promoted."); BotHelper.randomDelay(1200, 100); return(true); } return(false); }
// Try to find the "Quick Fight" button and click on it. public static bool searchDuell() { Bitmap button_fight = BotHelper.getResourceByName("button_fight"); BotHelper.Log("Attempting to press the Duell button", true, true); //BotHelper.setDebugPic(ImageRecognition.CaptureApplication(BotHelper.memu)); //BotHelper.setDebugPic2(ImageRecognition.ConvertToFormat(Properties.Resources.button_fight, System.Drawing.Imaging.PixelFormat.Format24bppRgb, true)); //return false; Point fightPoint = ImageRecognition.getPictureLocation(button_fight); if (fightPoint != pNull) { BotHelper.Log("Button found at: X = " + fightPoint.X + "; Y = " + fightPoint.Y, true, true); ADBHelper.simulateClick(ImageRecognition.getRandomLoc(fightPoint, button_fight)); return(true); } else { BotHelper.Log("Could not find the quick fight button. :/", true, false); return(false); } }
public static bool checkForChampionshipEnd() { // This should work as long as you don't get promoted. If you happen to be promoted, the bot will probably be stuck at the sticker selection. Bitmap league_end_label = BotHelper.getResourceByName("label_championship_over"); Point labelPoint = ImageRecognition.getPictureLocation(comparePic, league_end_label); if (labelPoint != pNull) { // Championship ended. We gotta press "Claim" now and open that chest. :) BotHelper.randomDelay(1000, 100); Bitmap claimButton = BotHelper.getResourceByName("button_claim_onend"); Point claimPoint = ImageRecognition.getPictureLocation(comparePic, claimButton); if (claimPoint != pNull) { ADBHelper.simulateClick(claimPoint); BotHelper.randomDelay(1000, 100); ChestLogic.openChest(); BotHelper.randomDelay(2000, 100); Bitmap backButton = BotHelper.getResourceByName("button_champ_back"); Point backPoint = ImageRecognition.getPictureLocation(backButton); ADBHelper.simulateClick(backPoint); BotHelper.randomDelay(1000, 100); ADBHelper.simulateClick(backPoint); BotHelper.randomDelay(1000, 100); } else { BotHelper.Log("Couldn't find claim button for champEnd. Returning to regular duty."); } return(true); } return(false); }
// Start the fight by clicking anywhere and wait for it to end (by searching for the "OK" button) public static bool startDuell(int attempt = 1) { Bitmap button_ok = BotHelper.getResourceByName("button_ok"); ADBHelper.simulateClick(new Point(rnd.Next(670 - 100, 670 + 100), rnd.Next(400 - 100, 400 + 100))); //Click anywhere to start the battle // wait for the duell to end and click on ok BotHelper.Log("Waiting for the duell to end."); int checks = 0; Point locOK = new Point(); do { BotHelper.Log(" " + checks, false); checks++; locOK = ImageRecognition.getPictureLocation(button_ok); } while ((locOK == pNull) && checks <= 55); if (checks >= 55) { BotHelper.Log("We timed out. :("); } BotHelper.randomDelay(500, 50); if (locOK.X == 0 && locOK.Y == 0) //something went wrong (note: the code should never enter this) { BotHelper.Log("Something weird happened."); if (attempt < 3) { return(startDuell(attempt + 1)); } else { return(false); // TODO: Restart CATS? } } else //we won! { BotHelper.Log("Battle finished.", true, false); int winloss = checkWin(); if (winloss == 1) { BotHelper.Log(" We won!", false, false); wins++; winsInARow++; if ((winsInARow % 5) == 0) { crowns++; } } else if (winloss == 2) { BotHelper.Log(" We lost. :(", false, false); losses++; winsInARow = 0; } else { BotHelper.Log("Error checking win/loss, not counting stats", true, false); } BotHelper.updateStats(wins, losses, crowns); Point rndP = ImageRecognition.getRandomLoc(locOK, button_ok); BotHelper.Log("Clicked on: X = " + rndP.X + "; Y = " + rndP.Y, true, true); ADBHelper.simulateClick(rndP); } //BotHelper.UpdateStats(wins, losses, crowns); BotHelper.Log("Returning to main screen"); return(true); }