示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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));
                }
            }
        }
示例#4
0
        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();
        }
示例#5
0
        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!");
        }
示例#6
0
        // 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);
        }
示例#7
0
        // 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);
        }
示例#8
0
        // 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);
            }
        }
示例#9
0
        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);
        }
示例#10
0
        // 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);
        }