public static void SoulWeaponEnter() { if (UnhandledException) { Variables.ScriptLog("Unhandled exception had found in SoulWeapon event UI. Skip it! ", Color.Red); return; } do { VCBotScript.LocateMainScreen(); }while (!PrivateVariable.InMainScreen); BotCore.SendTap(170, 630); BotCore.Delay(5000, false); for (int x = 0; x < 5; x++) { VCBotScript.image = BotCore.ImageCapture(); Point?located = BotCore.FindImage(VCBotScript.image, Environment.CurrentDirectory + "\\Img\\LocateEventSwitch.png", true); if (located == null) { x -= 1; BotCore.Delay(1000, false); if (error > 10) { ScriptErrorHandler.Reset("Unable to locate Event Switch screen! Returning main screen!"); error = 0; return; } error++; ScriptErrorHandler.ErrorHandle(); continue; } else { break; } } if (File.Exists("Img\\WeaponEvent.png")) { var point = BotCore.FindImage(VCBotScript.image, "Img\\WeaponEvent.png", false); if (point != null) { BotCore.SendTap(point.Value); //Enter event SwitchStage(); } else { Variables.ScriptLog("Unable to find WeaponEvent.png at event page. Exiting function! ", Color.Red); } } else { Variables.ScriptLog("WeaponEvent.png not found! Exiting function! ", Color.Red); } }
public static void ArchwitchEnter() { do { VCBotScript.LocateMainScreen(); }while (!PrivateVariable.InMainScreen); //Enter battle screen BotCore.SendTap(170, 630); BotCore.Delay(5000, false); for (int x = 0; x < 5; x++) { VCBotScript.image = BotCore.ImageCapture(); Point?located = BotCore.FindImage(VCBotScript.image, Environment.CurrentDirectory + "\\Img\\LocateEventSwitch.png", true); if (located == null) { x -= 1; BotCore.Delay(1000, false); if (error > 10) { ScriptErrorHandler.Reset("Unable to locate Event Switch screen! Returning main screen!"); error = 0; return; } error++; ScriptErrorHandler.ErrorHandle(); continue; } else { break; } } //ArchwitchHunt capture detected, try to get into event if (File.Exists("Img\\ArchEvent.png")) { var point = BotCore.FindImage(VCBotScript.image, "Img\\ArchEvent.png", false); if (point != null) { BotCore.SendTap(point.Value); //Enter event SwitchStage(); } else { Variables.ScriptLog("Unable to find ArchEvent.png at event page. Exiting function! ", Color.Red); } } else { Variables.ScriptLog("ArchEvent.png not found! Exiting function! ", Color.Red); } //not found, we have to exit now! //Our next online time had passed. Online it NOWWWWWW!!!!! if (VCBotScript.nextOnline < DateTime.Now) { do { VCBotScript.LocateMainScreen(); }while (!PrivateVariable.InMainScreen); VCBotScript.Stuck = false; } else { BotCore.KillGame("com.nubee.valkyriecrusade"); } return; }
public static void Tower() { Debug_.WriteLine(); BotCore.Delay(1000, false); var image = Screenshot.ImageCapture(); Point?point = BotCore.FindImage(image, Img.Close2, false, 0.8); if (point != null) { BotCore.SendTap(new Point(point.Value.X, point.Value.Y)); BotCore.Delay(1000, false); } image = Screenshot.ImageCapture(); Variables.ScriptLog("Locating Tower Event UI!", Color.White); if (BotCore.FindImage(image, Img.Locate_Tower, true, 0.8) != null) { image = Screenshot.ImageCapture(); VCBotScript.Tower_Floor = OCR.OcrImage(Screenshot.CropImage(image, new Point(280, 110), new Point(440, 145)), "eng"); VCBotScript.Tower_Rank = OCR.OcrImage(Screenshot.CropImage(image, new Point(280, 145), new Point(410, 170)), "eng"); Variables.ScriptLog("Tower Event Found!", Color.Lime); PrivateVariable.Instance.InEventScreen = true; } else { PrivateVariable.Instance.InMainScreen = false; PrivateVariable.Instance.InEventScreen = false; return; } image = Screenshot.ImageCapture(); while (!BotCore.RGBComparer(new Point(135, 526), 13, 46, 74, 10)) { BotCore.Delay(1000, true); image = Screenshot.ImageCapture(); } VCBotScript.energy = VCBotScript.GetEnergy(); VCBotScript.runes = VCBotScript.GetRune(); Variables.ScriptLog("Current have " + VCBotScript.energy + " energy and " + VCBotScript.runes + " runes", Color.LightSkyBlue); if (VCBotScript.energy == 0) { Variables.ScriptLog("Waiting for energy", Color.Yellow); if (PrivateVariable.Instance.TakePartInNormalStage) { BotCore.SendTap(1218, 662); BotCore.Delay(400, 600); BotCore.SendTap(744, 622); } else { if (PrivateVariable.Instance.Use_Item) { if (VCBotScript.runes == 5) { Variables.ScriptLog("Use item as it is now rune!", Color.White); } else { Variables.ScriptLog("Close game and wait for energy because of no energy left", Color.White); VCBotScript.NoEnergy(); PrivateVariable.Instance.InEventScreen = false; PrivateVariable.Instance.InMainScreen = false; PrivateVariable.Instance.Battling = false; return; } } else { Variables.ScriptLog("Close game and wait for energy because of no energy left", Color.White); VCBotScript.NoEnergy(); PrivateVariable.Instance.InEventScreen = false; PrivateVariable.Instance.InMainScreen = false; PrivateVariable.Instance.Battling = false; return; } } } Variables.ScriptLog("Entering Stage!", Color.Lime); image = Screenshot.ImageCapture(); if (BotCore.FindImage(image, Img.GreenButton, false, 0.9) == null) { Variables.ScriptLog("Rune Boss found!", Color.Lime); } else { var templevel = MainScreen.Level; Loop: switch (templevel) { case 0: for (int x = 0; x < 5; x++) { VCBotScript.image = Screenshot.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.LV0, true, 0.85) == null) { BotCore.SendTap(rnd.Next(410, 420), rnd.Next(650, 660)); BotCore.Delay(500); } } BotCore.SendTap(785, 618); break; case 1: for (int x = 0; x < 5; x++) { VCBotScript.image = Screenshot.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.LV1, true, 0.85) == null) { BotCore.SendTap(rnd.Next(410, 420), rnd.Next(650, 660)); BotCore.Delay(500); } } if (BotCore.FindImage(VCBotScript.image, Img.LV1, true, 0.85) == null) { Variables.ScriptLog("Unable to switch to stage. Stage not unlocked?", Color.Red); templevel--; goto Loop; } BotCore.SendTap(785, 618); break; case 2: for (int x = 0; x < 5; x++) { VCBotScript.image = Screenshot.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.LV2, true, 0.85) == null) { BotCore.SendTap(rnd.Next(410, 420), rnd.Next(650, 660)); BotCore.Delay(500); } else if (BotCore.FindImage(VCBotScript.image, Img.LV3, true, 0.85) != null) { //This is not 上级,this is f*****g 超上级 BotCore.SendTap(rnd.Next(410, 420), rnd.Next(650, 660)); BotCore.Delay(500); } } if (BotCore.FindImage(VCBotScript.image, Img.LV2, true, 0.85) == null) { Variables.ScriptLog("Unable to switch to stage. Stage not unlocked?", Color.Red); templevel--; goto Loop; } BotCore.SendTap(785, 618); break; case 3: for (int x = 0; x < 5; x++) { VCBotScript.image = Screenshot.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.LV3, true, 0.85) == null) { BotCore.SendTap(rnd.Next(410, 420), rnd.Next(650, 660)); BotCore.Delay(500); } } if (BotCore.FindImage(VCBotScript.image, Img.LV3, true, 0.85) == null) { Variables.ScriptLog("Unable to switch to stage. Stage not unlocked?", Color.Red); templevel--; goto Loop; } BotCore.SendTap(785, 618); break; case 4: for (int x = 0; x < 5; x++) { VCBotScript.image = Screenshot.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.LV4, true, 0.85) == null) { BotCore.SendTap(rnd.Next(410, 420), rnd.Next(650, 660)); BotCore.Delay(500); } } if (BotCore.FindImage(VCBotScript.image, Img.LV4, true, 0.85) == null) { Variables.ScriptLog("Unable to switch to stage. Stage not unlocked?", Color.Red); templevel--; goto Loop; } BotCore.SendTap(785, 618); break; } } BotCore.Delay(2000); BotCore.SendTap(800, 660); /* * image = Screenshot.ImageCapture(); * switch (MainScreen.Level) * { * case 0: * BotCore.SendTap(196, 648); * break; * case 1: * if (BotCore.RGBComparer( new Point(328, 621), Color.FromArgb(13, 12, 12), 35)) * { * Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); * BotCore.SendTap(196, 648); * break; * } * BotCore.SendTap(391, 648); * break; * case 2: * if (BotCore.RGBComparer( new Point(515, 625), Color.FromArgb(12, 11, 12), 35)) * { * Variables.ScriptLog("上级还没被解锁!自动往下挑战中!", Color.Red); * if (BotCore.RGBComparer( new Point(328, 621), Color.FromArgb(13, 12, 12), 5)) * { * Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); * BotCore.SendTap(196, 648); * break; * } * BotCore.SendTap(391, 648); * break; * } * BotCore.SendTap(581, 646); * break; * case 3: * if (BotCore.RGBComparer( new Point(703, 622), Color.FromArgb(32, 30, 30), 35)) * { * Variables.ScriptLog("超上级还没被解锁!自动往下挑战中!", Color.Red); * if (BotCore.RGBComparer( new Point(515, 625), Color.FromArgb(12, 11, 12), 35)) * { * Variables.ScriptLog("上级还没被解锁!自动往下挑战中!", Color.Red); * if (BotCore.RGBComparer( new Point(328, 621), Color.FromArgb(13, 12, 12), 35)) * { * Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); * BotCore.SendTap(196, 648); * break; * } * BotCore.SendTap(391, 648); * break; * } * BotCore.SendTap(581, 646); * break; * } * BotCore.SendTap(741, 623); * break; * case 4: * if (BotCore.RGBComparer( new Point(885, 621), Color.FromArgb(107, 100, 100), 90)) * { * Variables.ScriptLog("霸级还没被解锁!自动往下挑战中!", Color.Red); * if (BotCore.RGBComparer( new Point(703, 621), Color.FromArgb(107, 100, 100), 90)) * { * Variables.ScriptLog("超上级还没被解锁!自动往下挑战中!", Color.Red); * if (BotCore.RGBComparer( new Point(515, 621), Color.FromArgb(107, 100, 100), 90)) * { * Variables.ScriptLog("上级还没被解锁!自动往下挑战中!", Color.Red); * if (BotCore.RGBComparer( new Point(328, 621), Color.FromArgb(117, 100, 100), 90)) * { * Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); * BotCore.SendTap(196, 648); * break; * } * BotCore.SendTap(391, 648); * break; * } * BotCore.SendTap(581, 646); * break; * } * BotCore.SendTap(741, 623); * break; * } * BotCore.SendTap(921, 620); * break; * }*/ BotCore.Delay(3000, false); do { if (!BotCore.GameIsForeground("com.nubee.valkyriecrusade")) { return; } /*if (PrivateVariable.Use_Item && VCBotScript.energy == 0 && VCBotScript.runes == 5) * { * image = Screenshot.ImageCapture(); * if (BotCore.GetPixel(new Point(798, 313), image) != Color.FromArgb(27, 95, 22)) * { * BotCore.Delay(1000, false); * continue; * } * BotCore.SendTap(798, 313); * image = Screenshot.ImageCapture(); * Point? p = BotCore.FindImage(image, Img.GreenButton, false); * while (p == null) * { * if (!BotCore.GameIsForeground("com.nubee.valkyriecrusade")) * { * return; * } * BotCore.Delay(400, 600); * image = Screenshot.ImageCapture(); * p = BotCore.FindImage(image, Img.GreenButton, false); * } * BotCore.SendTap(p.Value); * VCBotScript.energy = 5; * BotCore.Delay(5000, false); * }*/ image = Screenshot.ImageCapture(); if (BotCore.RGBComparer(new Point(959, 656), 31, 102, 26, 4)) { Variables.ScriptLog("Start battle", Color.Lime); BotCore.SendTap(new Point(959, 656)); BotCore.Delay(7000, false); BotCore.SendTap(640, 400); //Tap away Round Battle Text BotCore.Delay(2000, false); VCBotScript.stop.Start(); PrivateVariable.Instance.Battling = true; VCBotScript.energy--; //Calculate Energy used if (VCBotScript.nextOnline < DateTime.Now) { VCBotScript.nextOnline = DateTime.Now; } VCBotScript.nextOnline = VCBotScript.nextOnline.AddMinutes(45); BotCore.Delay(1000, false); break; } else { image = Screenshot.ImageCapture(); var crop = Screenshot.CropImage(image, new Point(125, 600), new Point(1270, 10)); point = BotCore.FindImage(crop, Img.Red_Button, false, 0.9); if (point != null) { Variables.ScriptLog("Rune boss found!", Color.Yellow); BotCore.SendTap(new Point(point.Value.X + 125, point.Value.Y)); VCBotScript.RuneBoss = true; BotCore.Delay(9000, 12000); } else { ScriptErrorHandler.ErrorHandle(); } } image = Screenshot.ImageCapture(); ScriptErrorHandler.ErrorHandle(); }while (!PrivateVariable.Instance.Battling); }
private static void Attack() { do { BotCore.Delay(1500); }while (BotCore.RGBComparer(new Point(400, 400), Color.Black, 10)); Variables.ScriptLog("Running stage!", Color.Lime); do { Variables.ScriptLog("Detecting UIs...", Color.White); if (!BotCore.GameIsForeground(VCBotScript.game)) { ScriptErrorHandler.Reset("Game closed!"); return; } ScriptErrorHandler.ErrorHandle(); Random rnd = new Random(); VCBotScript.image = Screenshot.ImageCapture(); var crop = Screenshot.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 430)); Point?buttons = BotCore.FindImage(crop, Img.GreenButton, false, 0.9); if (buttons != null) { CheckWalkEnergy(); if (error > 10) { Variables.ScriptLog("Unable to OCR energy! Exiting Event now!", Color.Red); CurrentWalkEnergy = 0; } if (CurrentWalkEnergy < 15) { //No energy Variables.ScriptLog("Archwitch Event have no energy. Exiting now! ", Color.Yellow); return; } BotCore.SendTap(buttons.Value.X + rnd.Next(430, 845), buttons.Value.Y + rnd.Next(370, 420)); BotCore.Delay(2000, 3000); continue; } crop = Screenshot.CropImage(VCBotScript.image, new Point(532, 624), new Point(732, 667)); buttons = BotCore.FindImage(crop, Img.GreenButton, false, 0.88); if (buttons != null) { BotCore.SendTap(635, 648); continue; } buttons = BotCore.FindImage(VCBotScript.image, Img.Close2, true, 0.9); if (buttons != null) { VCBotScript.image = Screenshot.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.NoEnergy, true, 0.8) != null) { //Means we should kill it as no energy left Variables.ScriptLog("Archwitch Event have no energy. Exiting now! ", Color.Yellow); return; } BotCore.SendTap(buttons.Value); BotCore.Delay(1000, 1500); VCBotScript.image = Screenshot.ImageCapture(); } crop = Screenshot.CropImage(VCBotScript.image, new Point(665, 565), new Point(970, 640)); buttons = BotCore.FindImage(crop, Img.Red_Button, false, 0.9); if (buttons != null) { BotCore.SendTap(buttons.Value.X + rnd.Next(675, 960), buttons.Value.Y + rnd.Next(575, 630)); BotCore.Delay(5000); do { BotCore.Delay(1500); }while (BotCore.RGBComparer(new Point(400, 400), Color.Black, 0)); buttons = null; do { VCBotScript.image = Screenshot.ImageCapture(); crop = Screenshot.CropImage(VCBotScript.image, new Point(665, 565), new Point(970, 640)); buttons = BotCore.FindImage(crop, Img.Red_Button, false, 0.9); if (buttons != null) { BotCore.SendTap(buttons.Value.X + rnd.Next(675, 960), buttons.Value.Y + rnd.Next(575, 630)); } crop = Screenshot.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 430)); buttons = BotCore.FindImage(crop, Img.Red_Button, false, 0.9); if (buttons != null) { CheckBossEnergy(); if (error > 10) { Variables.ScriptLog("Unable to OCR energy! Exiting Event now!", Color.Red); CurrentBossEnergy = 0; return; } CurrentBossEnergy--; BotCore.SendTap(buttons.Value.X + rnd.Next(430, 845), buttons.Value.Y + rnd.Next(370, 420)); BotCore.Delay(300, 500); BotCore.SendTap(buttons.Value.X + rnd.Next(430, 845), buttons.Value.Y + rnd.Next(370, 420)); BotCore.Delay(300, 500); BotCore.SendTap(buttons.Value.X + rnd.Next(430, 845), buttons.Value.Y + rnd.Next(370, 420)); BotCore.Delay(2000, 3000); break; } else { BotCore.Delay(1000, 1200); } }while (buttons == null); PrivateVariable.Instance.Battling = true; VCBotScript.Battle(); if (CurrentBossEnergy == 0) { Variables.ScriptLog("Archwitch Event have no energy. Exiting now! ", Color.Yellow); return; } } crop = Screenshot.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 430)); buttons = BotCore.FindImage(crop, Img.Red_Button, false, 0.88); if (buttons != null) { BotCore.SendTap(buttons.Value.X + rnd.Next(410, 880), buttons.Value.Y + rnd.Next(330, 450)); BotCore.SendTap(buttons.Value.X + rnd.Next(410, 880), buttons.Value.Y + rnd.Next(330, 450)); BotCore.SendTap(buttons.Value.X + rnd.Next(410, 880), buttons.Value.Y + rnd.Next(330, 450)); BotCore.Delay(2000, 3000); PrivateVariable.Instance.Battling = true; VCBotScript.Battle(); //End Event return; } BotCore.Delay(1000, 2000); BotCore.SendTap(635, 390); }while (true); }