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); } }
private static void DemonStage_Enter() { int error = 0; VCBotScript.image = BotCore.ImageCapture(); while (!BotCore.RGBComparer(VCBotScript.image, new Point(415, 678), Color.FromArgb(223, 192, 63), 10)) { if (!BotCore.GameIsForeground("com.nubee.valkyriecrusade")) { ScriptErrorHandler.Reset("Game close, restarting..."); return; } error++; if (error > 10) { ScriptErrorHandler.Reset("Event Locate Failed!"); BotCore.KillGame("com.nubee.valkyriecrusade"); return; } BotCore.Delay(1000, false); VCBotScript.image = BotCore.ImageCapture(); } error = 0; Variables.ScriptLog("Demon Realm Event Located", Color.Lime); List <Point> BlackListedLocation = new List <Point>(); Variables.ScriptLog("Fetching stage images", Color.White); List <Image> Stage = new List <Image>(); foreach (var file in Directory.GetFiles("Img\\DemonRealm", "*.png").OrderBy(f => f)) { Stage.Add(Image.FromFile(file)); } Point?p = null; while (error < 10 && p == null) { if (!BotCore.GameIsForeground("com.nubee.valkyriecrusade")) { return; } VCBotScript.image = BotCore.ImageCapture(); var crop = BotCore.CropImage(VCBotScript.image, new Point(0, 0), new Point(1280, 615)); Variables.ScriptLog("Trying to find stages to enter", Color.LightSkyBlue); Bitmap screen = BotCore.Decompress(crop); foreach (var blacklist in BlackListedLocation) { using (Graphics grf = Graphics.FromImage(screen)) { using (Brush brsh = new SolidBrush(ColorTranslator.FromHtml("#000000"))) { grf.FillEllipse(brsh, blacklist.X, blacklist.Y, 5, 5); } } } foreach (var stage in Stage) { for (int x = 0; x < 4; x++) { p = BotCore.FindImage(screen, (Bitmap)stage, false); if (p != null) { if (!BlackListedLocation.Contains(p.Value)) { Variables.ScriptLog("Stage found!", Color.Lime); BotCore.SendTap(p.Value); BotCore.Delay(2000, false); BotCore.SendTap(768, 536); BotCore.Delay(5000, false); VCBotScript.image = BotCore.ImageCapture(); crop = BotCore.CropImage(VCBotScript.image, new Point(948, 623), new Point(1141, 694)); if (BotCore.FindImage(crop, Img.Red_Button, false) != null) { Variables.ScriptLog("Ops, looks like the stage is not able to enter!", Color.Red); BlackListedLocation.Add(p.Value); using (Graphics grf = Graphics.FromImage(screen)) { using (Brush brsh = new SolidBrush(ColorTranslator.FromHtml("#000000"))) { grf.FillEllipse(brsh, p.Value.X, p.Value.Y, 5, 5); } } p = null; continue; } BotCore.SendTap(970, 614); BotCore.Delay(2000, false); BotCore.SendTap(753, 423); break; } } } if (p != null) { break; } else { p = BotCore.FindImage(screen, Img.Boss, true); if (p != null) { Variables.ScriptLog("Boss Stage found!", Color.Lime); if (VCBotScript.runes == 3 && VCBotScript.energy != 5) { VCBotScript.StuckRune(); return; } BotCore.SendTap(p.Value); break; } } } VCBotScript.image = BotCore.ImageCapture(); Point?p2 = BotCore.FindImage(crop, Img.GreenButton, false); if (p2 != null) { BotCore.SendTap(p2.Value); BotCore.Delay(1000, false); continue; } error++; } if (error > 9) { Variables.ScriptLog("Looks like we are in the trouble!", Color.Red); error = 0; BotCore.KillGame("com.nubee.valkyriecrusade"); ScriptErrorHandler.Reset("Restarting game as unable to detect stages properly!"); } Point?point = null; BotCore.Delay(5000, false); for (int x = 0; x < 20; x++) { VCBotScript.image = BotCore.ImageCapture(); Point?p2 = BotCore.FindImage(VCBotScript.image, Img.GreenButton, false); if (p2 != null) { BotCore.SendTap(p2.Value); BotCore.Delay(1000, false); continue; } if (!BotCore.GameIsForeground("com.nubee.valkyriecrusade")) { return; } VCBotScript.image = BotCore.ImageCapture(); point = BotCore.FindImage(VCBotScript.image, Img.Red_Button, false); if (point != null) { break; } BotCore.Delay(1000, false); } if (point == null) { BotCore.KillGame("com.nubee.valkyriecrusade"); ScriptErrorHandler.Reset("No expected UI is shown, restarting game!"); return; } BotCore.SendTap(point.Value); PrivateVariable.Battling = true; VCBotScript.stop.Start(); }
public static void Demon_Realm() { Debug_.WriteLine(); Point?point = null; int error = 0; while (true) { var image = BotCore.ImageCapture(); point = BotCore.FindImage(image, Img.Close2, false); if (point != null) { BotCore.SendTap(new Point(point.Value.X, point.Value.Y)); BotCore.Delay(1000, false); continue; } point = BotCore.FindImage(image, Img.GreenButton, false); if (point != null) { BotCore.SendTap(new Point(point.Value.X, point.Value.Y)); BotCore.Delay(1000, false); continue; } if (!BotCore.GameIsForeground("com.nubee.valkyriecrusade")) { return; } if (BotCore.RGBComparer(image, new Point(415, 678), Color.FromArgb(223, 192, 63), 10)) { PrivateVariable.VCevent = PrivateVariable.EventType.DemonRealm; PrivateVariable.InEventScreen = true; DemonStage_Enter(); return; } image = BotCore.ImageCapture(); Variables.ScriptLog("Locating Demon Realm Event UI!", Color.White); if (BotCore.RGBComparer(image, new Point(600, 405), Color.FromArgb(59, 30, 37), 15)) { VCBotScript.Tower_Floor = OCR.OcrImage(BotCore.CropImage(image, new Point(300, 115), new Point(484, 142)), "eng"); VCBotScript.Tower_Rank = OCR.OcrImage(BotCore.CropImage(image, new Point(300, 150), new Point(458, 170)), "eng"); Variables.ScriptLog("Demon Realm Event Found!", Color.Lime); PrivateVariable.InEventScreen = true; VCBotScript.energy = VCBotScript.GetEnergy(); VCBotScript.runes = VCBotScript.GetRune(); break; } else { BotCore.Delay(1000, false); error++; if (error > 20) { ScriptErrorHandler.Reset("Unable to locate event. Going back to main screen"); return; } } } if (VCBotScript.energy == 0) { Variables.ScriptLog("Waiting for energy", Color.Yellow); Variables.ScriptLog("Close game and wait for energy because of no energy left", Color.Yellow); VCBotScript.NoEnergy(); PrivateVariable.InEventScreen = false; PrivateVariable.InMainScreen = false; PrivateVariable.Battling = false; return; } Variables.ScriptLog("Enterting Stage", Color.White); BotCore.SendSwipe(new Point(307, 249), new Point(305, 403), 300); BotCore.Delay(1500); switch (MainScreen.Level) { case 0: BotCore.SendTap(250, 284); break; case 1: if (BotCore.RGBComparer(VCBotScript.image, new Point(143, 355), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); BotCore.SendTap(250, 284); break; } BotCore.SendTap(362, 283); break; case 2: if (BotCore.RGBComparer(VCBotScript.image, new Point(143, 355), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("上级还没被解锁!自动往下挑战中!", Color.Red); if (BotCore.RGBComparer(VCBotScript.image, new Point(324, 270), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); BotCore.SendTap(250, 284); break; } BotCore.SendTap(362, 283); break; } BotCore.SendTap(214, 370); break; case 3: if (BotCore.RGBComparer(VCBotScript.image, new Point(324, 355), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("超上级还没被解锁!自动往下挑战中!", Color.Red); if (BotCore.RGBComparer(VCBotScript.image, new Point(143, 355), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("上级还没被解锁!自动往下挑战中!", Color.Red); if (BotCore.RGBComparer(VCBotScript.image, new Point(324, 270), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); BotCore.SendTap(250, 284); break; } BotCore.SendTap(362, 283); break; } } BotCore.SendTap(353, 371); break; case 4: if (BotCore.RGBComparer(VCBotScript.image, new Point(324, 355), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("超上级还没被解锁!自动往下挑战中!", Color.Red); if (BotCore.RGBComparer(VCBotScript.image, new Point(143, 355), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("上级还没被解锁!自动往下挑战中!", Color.Red); if (BotCore.RGBComparer(VCBotScript.image, new Point(324, 270), Color.FromArgb(51, 16, 5), 20)) { Variables.ScriptLog("中级还没被解锁!自动往下挑战中!", Color.Red); BotCore.SendTap(250, 284); break; } BotCore.SendTap(362, 283); break; } } BotCore.SendTap(353, 371); break; } bool EnteredStage = false; error = 0; do { VCBotScript.image = BotCore.ImageCapture(); if (BotCore.RGBComparer(VCBotScript.image, new Point(959, 656), 31, 102, 26, 4)) { Variables.ScriptLog("Start battle", Color.Lime); BotCore.SendTap(new Point(959, 656)); BotCore.Delay(2000, false); if (VCBotScript.runes == 4 && VCBotScript.energy == 5) { BotCore.SendSwipe(new Point(640, 473), new Point(640, 280), 1000); BotCore.Delay(500, false); } BotCore.SendTap(new Point(758, 566)); BotCore.Delay(6000, 8000); BotCore.SendTap(640, 400); //Tap away Round Battle Text BotCore.Delay(2000, false); VCBotScript.stop.Start(); VCBotScript.energy--; //Calculate Energy used if ((VCBotScript.nextOnline - DateTime.Now) < new TimeSpan(3, 15, 0)) { VCBotScript.nextOnline = VCBotScript.nextOnline.AddMinutes(45); } EnteredStage = true; BotCore.Delay(5000, false); break; } else { BotCore.Delay(1000, 1500); error++; if (error > 10) { return; } } if (!BotCore.GameIsForeground("com.nubee.valkyriecrusade")) { ScriptErrorHandler.Reset("Game is closed! Restarting all!"); return; } }while (!EnteredStage); DemonStage_Enter(); }
private static void Attack() { do { BotCore.Delay(1500); VCBotScript.image = BotCore.ImageCapture(); }while (BotCore.RGBComparer(VCBotScript.image, new Point(400, 400), Color.Black, 10)); Variables.ScriptLog("Running stage!", Color.Lime); int error = 0; do { Random rnd = new Random(); VCBotScript.image = BotCore.ImageCapture(); var crop = BotCore.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 430)); Point?buttons = BotCore.FindImage(crop, Img.GreenButton, false); if (buttons != null) { ArchwitchEvent.CheckWalkEnergy(); if (ArchwitchEvent.CurrentWalkEnergy < 15) { //No energy Variables.ScriptLog("SoulWeapon 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; } buttons = BotCore.FindImage(VCBotScript.image, Img.Return, true); if (buttons != null) { BotCore.SendTap(buttons.Value); BotCore.Delay(1000, 1500); continue; } buttons = BotCore.FindImage(VCBotScript.image, Img.Close2, true); if (buttons != null) { BotCore.SendTap(buttons.Value); BotCore.Delay(1000, 1500); continue; } buttons = BotCore.FindImage(crop, Img.Red_Button, false); if (buttons != null) { ArchwitchEvent.CheckBossEnergy(); if (ArchwitchEvent.CurrentBossEnergy == 0) { Variables.ScriptLog("SoulWeapon 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); PrivateVariable.Battling = true; VCBotScript.Battle(); continue; } buttons = BotCore.FindImage(VCBotScript.image, Img.ShopKeeper, true); if (buttons != null) { BotCore.SendTap(530, 660); BotCore.Delay(1500); continue; } if (BotCore.FindImage(VCBotScript.image, Img.SoulWeapon, true) != null) { //Stage completed return; } error++; if (error > 30) { BotCore.Decompress(VCBotScript.image).Save("Profiles\\Logs\\error.png"); UnhandledException = true; Variables.ScriptLog("Unhandled exception. Contact PoH98 for fix!", Color.Red); return; } else { BotCore.Delay(1000, 1500); } }while (true); }
private void MainScreen_Load(object sender, EventArgs e) { Thread load = new Thread(Loading); load.SetApartmentState(ApartmentState.STA); load.Start(); if (!IsRunAsAdministrator()) { var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase) { // The following properties run the new process as administrator UseShellExecute = true, Verb = "runas" }; // Start the new process try { Process.Start(processInfo); } catch (Exception) { // The user did not allow the application to run as administrator MessageBox.Show("挂机需要权限才能运行!"); } // Shut down the current process Application.Exit(); } CheckVersion.CheckUpdate(); if (!Directory.Exists("Img")) { File.WriteAllBytes("Img.zip", Img.Images); ZipFile.ExtractToDirectory("Img.zip", Environment.CurrentDirectory); File.Delete("Img.zip"); } comboBox1.Items.Clear(); OCR.PrepairOcr(whitelist: "$0123456789", blacklist: "!?@#$%&*()<>_-+=/:;'\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); Variables.EmulatorPath(); if (File.Exists("bot.ini")) { if (File.Exists(Environment.CurrentDirectory + "\\Profiles\\" + BotCore.profilePath + "\\bot.ini")) { File.Delete(Environment.CurrentDirectory + "\\Profiles\\" + BotCore.profilePath + "\\bot.ini"); } try { File.Copy("bot.ini", Environment.CurrentDirectory + "\\Profiles\\" + BotCore.profilePath + "\\bot.ini", true); File.Delete("bot.ini"); } catch { } } Variables.ReadConfig(); string _NET = Get45PlusFromRegistry(); if (!Directory.Exists("Language")) { MessageBox.Show("Lost files, please reinstall the bot!"); Environment.Exit(0); } foreach (var lang in Directory.GetFiles("Language")) { comboBox1.Items.Add(lang.Replace("Language\\", "").Replace(".ini", "")); } if (Variables.FindConfig("General", "Lang", out string output)) { int index = comboBox1.Items.IndexOf(output); if (index < 0) { comboBox1.SelectedIndex = 0; } else { comboBox1.SelectedIndex = index; } } else { comboBox1.SelectedIndex = 0; } label3.Text = Variables.VBoxManagerPath; label4.Text = Variables.SharedPath; if (Variables.FindConfig("General", "Level", out output)) { switch (output) { case "0": chk_begin.Checked = true; break; case "1": chk_inter.Checked = true; break; case "2": chk_advan.Checked = true; break; case "3": chk_extre.Checked = true; break; case "4": chk_ultim.Checked = true; break; } } else { Variables.ModifyConfig("General", "Level", "0"); } if (Variables.FindConfig("General", "Double_Event", out output)) { if (output == "true") { chk_twoE.Checked = true; } } if (Variables.FindConfig("General", "Manual_Rune", out output)) { if (output == "true") { chk_manuRT.Checked = true; } } if (Variables.FindConfig("General", "Suspend_PC", out output)) { if (output == "true") { Suspend_Chk.Checked = true; } } if (Variables.FindConfig("General", "biubiu", out output)) { if (output == "true") { Biubiu.Checked = true; } } if (Variables.FindConfig("General", "ArWiEv", out output)) { if (output == "true") { Chk_Archwitch.Checked = true; } } if (Variables.FindConfig("General", "SoWeEv", out output)) { if (output == "true") { Chk_SoulWeapon.Checked = true; } } if (Variables.FindConfig("General", "ArWiSt", out output)) { string temp = output.Replace(".", "-"); Combo_Archwitch.SelectedItem = temp; } else { Combo_Archwitch.SelectedIndex = 0; } if (Variables.FindConfig("General", "SoWeSt", out output)) { string temp = output.Replace(".", "-"); Combo_Weapon.SelectedItem = temp; } else { Combo_Weapon.SelectedIndex = 0; } if (Variables.ForceWinApiCapt) { WinAPi.Checked = true; WinAPi.Enabled = false; } else { if (Variables.FindConfig("General", "WinApi", out output)) { if (output == "true") { WinAPi.Checked = true; } } } if (Variables.FindConfig("GuildWar", "Manual", out output)) { if (output == "true") { chk_GWW.Checked = true; } } if (Variables.FindConfig("Version", "Version", out output)) { if (output != CheckVersion.currentVersion) { CheckVersion.UpdateText = "# Thanks for supporting VCBot! \n" + CheckVersion.BufferUpdateText; Variables.ModifyConfig("Version", "Version", CheckVersion.currentVersion); } } else { CheckVersion.UpdateText = "# Thanks for supporting VCBot! \n" + CheckVersion.BufferUpdateText; Variables.ModifyConfig("Version", "Version", CheckVersion.currentVersion); } webBrowser1.ScriptErrorsSuppressed = true; webBrowser3.ScriptErrorsSuppressed = true; PrivateVariable.nospam = DateTime.Now; string ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"; DllImport.UrlMkSetSessionOption(DllImport.URLMON_OPTION_USERAGENT, ua, ua.Length, 0); webBrowser3.Navigating += OnNavigating; webBrowser3.Navigated += WebBrowser3_Navigated; GetEventXML.LoadXMLEvent(); webBrowser3.Navigate(new Uri("http://www-valkyriecrusade.nubee.com/" + GetEventXML.Eventlink.Replace("/en/", "/" + comboBox1.SelectedItem.ToString() + "/") + ".html")); VCBotScript.Read_Plugins(); foreach (var s in PrivateVariable.BattleScript) { tabControl2.TabPages.Add(s.ScriptName()); tabControl2.TabPages[tabControl2.TabPages.Count - 1].BackColor = Color.Black; tabControl2.TabPages[tabControl2.TabPages.Count - 1].ForeColor = Color.White; CheckBox chk = new CheckBox { Text = "使用脚本", Checked = false }; chk.CheckedChanged += Chk_CheckedChanged; chk.Location = new Point(10, 250); chk.AutoSize = true; tabControl2.TabPages[tabControl2.TabPages.Count - 1].Controls.Add(chk); customScriptEnable.Add(chk); foreach (var c in s.CreateUI()) { tabControl2.TabPages[tabControl2.TabPages.Count - 1].Controls.Add(c); } } if (Variables.FindConfig("General", "Selected_Script", out string n)) { try { int i = Convert.ToInt32(n); if (i > customScriptEnable.Count) { i = 0; } customScriptEnable[i].Checked = true; } catch { customScriptEnable[0].Checked = true; } } else { customScriptEnable[0].Checked = true; } if (GetEventXML.RandomImage != null) { var request = WebRequest.Create("http://www-valkyriecrusade.nubee.com/" + GetEventXML.RandomImage); using (var response = request.GetResponse()) using (var stream = response.GetResponseStream()) { pictureBox4.Image = Image.FromStream(stream); } } foreach (Control box in ED_Box.Controls) { foreach (Control control in box.Controls) { control.MouseDown += Tp_MouseDown; } box.MouseDown += Tp_MouseDown; } ED_Box.MouseDown += Tp_MouseDown; metroTabControl1.SelectedIndex = 0; chk_item.Enabled = chk_autoRT.Checked; Login.LoadCompleted = true; PrivateVariable.VCevent = PrivateVariable.EventType.Unknown; timer2.Start(); }
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); VCBotScript.image = BotCore.ImageCapture(); }while (BotCore.RGBComparer(VCBotScript.image, new Point(400, 400), Color.Black, 10)); Variables.ScriptLog("Running stage!", Color.Lime); do { Variables.ScriptLog("Detecting UIs...", Color.White); Random rnd = new Random(); VCBotScript.image = BotCore.ImageCapture(); var crop = BotCore.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 430)); Point?buttons = BotCore.FindImage(crop, Img.GreenButton, false); 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; } buttons = BotCore.FindImage(VCBotScript.image, Img.Close2, true); if (buttons != null) { VCBotScript.image = BotCore.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.NoEnergy, true) != 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 = BotCore.ImageCapture(); } crop = BotCore.CropImage(VCBotScript.image, new Point(665, 610), new Point(935, 685)); buttons = BotCore.FindImage(crop, Img.GreenButton, false); if (buttons != null) { BotCore.SendTap(buttons.Value.X + rnd.Next(675, 940), buttons.Value.Y + rnd.Next(620, 650)); BotCore.Delay(1000, 1500); continue; } crop = BotCore.CropImage(VCBotScript.image, new Point(665, 565), new Point(970, 640)); buttons = BotCore.FindImage(crop, Img.Red_Button, false); if (buttons != null) { BotCore.SendTap(buttons.Value.X + rnd.Next(675, 960), buttons.Value.Y + rnd.Next(575, 630)); BotCore.Delay(3000, 5000); do { BotCore.Delay(1500); VCBotScript.image = BotCore.ImageCapture(); }while (BotCore.RGBComparer(VCBotScript.image, new Point(400, 400), Color.Black, 10)); buttons = null; do { VCBotScript.image = BotCore.ImageCapture(); crop = BotCore.CropImage(VCBotScript.image, new Point(665, 565), new Point(970, 640)); buttons = BotCore.FindImage(crop, Img.Red_Button, false); if (buttons != null) { BotCore.SendTap(buttons.Value.X + rnd.Next(675, 960), buttons.Value.Y + rnd.Next(575, 630)); } crop = BotCore.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 430)); buttons = BotCore.FindImage(crop, Img.Red_Button, false); 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.Battling = true; VCBotScript.Battle(); if (CurrentBossEnergy == 0) { Variables.ScriptLog("Archwitch Event have no energy. Exiting now! ", Color.Yellow); return; } } crop = BotCore.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 430)); buttons = BotCore.FindImage(crop, Img.Red_Button, false); if (buttons != null) { BotCore.SendTap(buttons.Value.X + rnd.Next(430, 845), buttons.Value.Y + rnd.Next(370, 420)); BotCore.Delay(2000, 3000); PrivateVariable.Battling = true; VCBotScript.Battle(); //End Event return; } BotCore.Delay(1000, 2000); BotCore.SendTap(635, 390); }while (true); }
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; }
private static void Attack() { do { BotCore.Delay(1500); VCBotScript.image = Screenshot.ImageCapture(); }while (BotCore.RGBComparer(new Point(400, 400), Color.Black, 10, VCBotScript.image)); Variables.ScriptLog("Running stage!", Color.Lime); int error = 0; do { Random rnd = new Random(); VCBotScript.image = Screenshot.ImageCapture(); var crop = Screenshot.CropImage(VCBotScript.image, new Point(420, 360), new Point(855, 450)); Point?buttons = BotCore.FindImage(crop, Img.GreenButton, false, 0.9); if (buttons != null) { ArchwitchEvent.CheckWalkEnergy(); if (ArchwitchEvent.CurrentWalkEnergy <= 15 || (ArchwitchEvent.CurrentBossEnergy <= 3 && ArchwitchEvent.FullBossEnergy > 0)) { //No energy Variables.ScriptLog("SoulWeapon Event have no energy. Exiting now! ", Color.Yellow); TimeSpan delay = new TimeSpan(0, ((ArchwitchEvent.FullWalkEnergy - ArchwitchEvent.CurrentWalkEnergy) * 5), 0); VCBotScript.nextOnline = DateTime.Now + delay; Variables.ScriptLog("Estimate online time is " + VCBotScript.nextOnline, Color.Lime); BotCore.KillGame(VCBotScript.game); BotCore.Delay(delay); PrivateVariable.Instance.InEventScreen = false; PrivateVariable.Instance.InMainScreen = false; PrivateVariable.Instance.Battling = false; PrivateVariable.Instance.InMap = false; ArchwitchEvent.CurrentBossEnergy = ArchwitchEvent.FullBossEnergy; ArchwitchEvent.CurrentWalkEnergy = ArchwitchEvent.FullWalkEnergy; BotCore.StartGame(VCBotScript.game + VCBotScript.activity); return; } BotCore.SendTap(buttons.Value.X + rnd.Next(430, 845), buttons.Value.Y + rnd.Next(370, 420)); BotCore.Delay(2000, 3000); continue; } buttons = BotCore.FindImage(VCBotScript.image, Img.Return, true, 0.9); if (buttons != null) { BotCore.SendTap(buttons.Value); BotCore.Delay(1000, 1500); continue; } buttons = BotCore.FindImage(VCBotScript.image, Img.Close2, true, 0.9); if (buttons != null) { BotCore.SendTap(buttons.Value); BotCore.Delay(1000, 1500); continue; } buttons = BotCore.FindImage(crop, Img.Red_Button, false, 0.87); if (buttons != null) { ArchwitchEvent.CheckBossEnergy(); BotCore.SendTap(buttons.Value.X + rnd.Next(430, 845), buttons.Value.Y + rnd.Next(370, 420)); BotCore.Delay(2000, 3000); PrivateVariable.Instance.Battling = true; VCBotScript.Battle(); continue; } buttons = BotCore.FindImage(VCBotScript.image, Img.ShopKeeper, true, 0.9); if (buttons != null) { BotCore.SendTap(770, 640); Variables.ScriptLog("Shop keeper found! Getting in and see what to buy!", Color.White); BotCore.Delay(3000); VCBotScript.image = Screenshot.ImageCapture(); if (BotCore.FindImage(VCBotScript.image, Img.MisteryBox, true, 0.9) != null) { Variables.ScriptLog("Mistory Box found! Purchasing all products!", Color.Lime); BotCore.Delay(10000); for (int x = 0; x < 3; x++) { switch (x) { case 0: Variables.ScriptLog("Purchasing First Item", Color.Wheat); BotCore.SendTap(1030, 220); break; case 1: Variables.ScriptLog("Purchasing Second Item", Color.Wheat); BotCore.SendTap(1030, 390); break; case 2: Variables.ScriptLog("Purchasing Third Item", Color.Wheat); BotCore.SendTap(1030, 550); break; } BotCore.Delay(3000); Point?greenButton; do { BotCore.SendTap(2, 2); BotCore.Delay(300); VCBotScript.image = Screenshot.ImageCapture(); greenButton = BotCore.FindImage(VCBotScript.image, Img.GreenButton, false, 0.9); }while (greenButton == null); BotCore.SendTap(greenButton.Value); for (int y = 0; y < 10; y++) { BotCore.SendTap(2, 2); BotCore.Delay(500); } BotCore.Delay(5000); } } BotCore.SendTap(1110, 875); BotCore.Delay(500); continue; } if (BotCore.FindImage(VCBotScript.image, Img.ArchwitchHunt, true, 0.9) != null) { //Stage completed return; } error++; if (error > 30) { Screenshot.Decompress(VCBotScript.image).Save("Profiles\\Logs\\error.png"); //UnhandledException = true; Variables.ScriptLog("Unhandled exception. Contact PoH98 for fix!", Color.Red); return; } else { BotCore.Delay(1000, 1500); } }while (true); }
//Guild wars private static void GuildWar(TimeSpan time) { var image = Screenshot.ImageCapture(); //Read energy var greenbutton = BotCore.FindImage(image, Img.GreenButton, false, 0.9); if (greenbutton != null) { BotCore.SendTap(greenbutton.Value); BotCore.Delay(1000); return; } VCBotScript.energy = VCBotScript.GetEnergy(); VCBotScript.runes = VCBotScript.GetRune(); if (VCBotScript.energy > 0) { if (time.Minutes < 50) { if (VCBotScript.energy < 5 && VCBotScript.runes > 3 && VCBotScript.runes < 6) { if (waittime == 0) { Variables.ScriptLog("Waiting Energy before Fever", Color.Yellow); } else if (waittime % 5 == 0) { BotCore.SendTap(797, 187); BotCore.Delay(5000); waittime = 0; } BotCore.Delay(5000); waittime++; return; } } PrivateVariable.Instance.Battling = true; var redbutton = BotCore.FindImage(image, Img.Red_Button, false, 0.9); if (redbutton != null) { BotCore.SendTap(redbutton.Value); int x = 0; do { if (BotCore.RGBComparer(new Point(247, 356), Color.Black, 10)) { break; } else { BotCore.Delay(1000); x++; } }while (x < 20); VCBotScript.Battle(); } } else { if (waittime == 0) { Variables.ScriptLog("Waiting Energy", Color.Yellow); } else if (waittime % 5 == 0) { Variables.ScriptLog("Refreshing Map", Color.Cyan); BotCore.SendTap(797, 187); BotCore.Delay(5000); waittime = 0; } BotCore.Delay(5000); waittime++; return; } }
public static void Enter() { var tempEvent = PrivateVariable.Instance.VCevent; var Japan = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time"); var time = TimeZoneInfo.ConvertTime(DateTime.Now, Japan).TimeOfDay; var hour = time.Hours; while (guildwartime.Contains(hour)) { if (!PrivateVariable.Instance.LocatedGuildWar) { Variables.ScriptLog("Entering Guildwar!", Color.Lime); PrivateVariable.Instance.VCevent = PrivateVariable.EventType.GuildWar; for (int x = 0; x < 30; x++) { while (!BotCore.GameIsForeground(VCBotScript.game)) { PrivateVariable.Instance.LocatedGuildWar = false; BotCore.StartGame(VCBotScript.game + VCBotScript.activity); BotCore.Delay(5000); VCBotScript.LocateMainScreen(); x = 0; } var image = Screenshot.ImageCapture(); var point = BotCore.FindImage(image, Img.GreenButton, false, 0.9); if (point != null) { BotCore.SendTap(point.Value); BotCore.Delay(500); x--; continue; } point = BotCore.FindImage(Screenshot.CropImage(image, new Point(319, 525), new Point(588, 591)), Img.Start_Game, false, 0.8); if (point != null && BotCore.RGBComparer(new Point(379, 642), Color.FromArgb(37, 37, 37), 15, image)) { Variables.ScriptLog("Start Game Button Located!", Color.Lime); BotCore.SendTap(point.Value); PrivateVariable.Instance.InMainScreen = false; PrivateVariable.Instance.LocatedGuildWar = false; VCBotScript.LocateMainScreen(); } if (BotCore.FindImage(image, "Img\\GuildWar\\Locate.png", false, 0.85) != null) { PrivateVariable.Instance.LocatedGuildWar = true; break; } if (x > 10) { Variables.ScriptLog("Somehing is not right! No guild war locate found! Lets get in with different method!", Color.Yellow); if (Variables.FindConfig("GuildWar", "EnterPosX", out string p_x) && Variables.FindConfig("GuildWar", "EnterPosY", out string p_y)) { if (BotCore.FindImage(image, Img.MainScreen, true, 0.9) == null) { BotCore.SendTap(point.Value); BotCore.Delay(1000, false); Variables.ScriptLog("Returning main screen", Color.Lime); BotCore.SendTap(942, 630); BotCore.Delay(5000, false); //We are not at mainscreen and having nothing to do point = BotCore.FindImage(image, Img.Back_to_Village, true, 0.9); if (point != null) { Variables.ScriptLog("Going back to Main screen", Color.Lime); BotCore.SendTap(point.Value); do { BotCore.Delay(3000); VCBotScript.image = Screenshot.ImageCapture(); }while (BotCore.FindImage(VCBotScript.image, Img.MainScreen, true, 0.9) == null); } } Variables.ScriptLog("Screen Located", Color.Lime); BotCore.SendTap(170, 655); BotCore.Delay(5000, false); try { BotCore.SendTap(Convert.ToInt32(p_x), Convert.ToInt32(p_y)); } catch { Variables.ModifyConfig("GuildWar", "EnterPosX", "620"); Variables.ModifyConfig("GuildWar", "EnterPosY", "90"); continue; } } else { Variables.ModifyConfig("GuildWar", "EnterPosX", "620"); Variables.ModifyConfig("GuildWar", "EnterPosY", "90"); } x = 0; error++; if (error > 3) { Variables.ScriptLog("Unable to get into guildwar!", Color.Red); Variables.ModifyConfig("GuildWar", "Manual", "true"); return; } continue; } } } GuildWar(time); time = TimeZoneInfo.ConvertTime(DateTime.Now, Japan).TimeOfDay; hour = time.Hours; } PrivateVariable.Instance.VCevent = tempEvent; PrivateVariable.Instance.LocatedGuildWar = false; return; }