public int showVillage(int villageID) { if (!this.FilterActive || (InterfaceMgr.Instance.WorldMapMode != 0)) { return(villageID); } WorldMap.VillageData village = GameEngine.Instance.World.getVillageData(villageID); if ((village != null) && this.showVillage(village)) { return(villageID); } return(-1); }
public void SHK() { Console.WriteLine("Инжект выполнен!"); while (!GameEngine.Instance.World.isDownloadComplete()) { Thread.Sleep(1500); // 1.5 sec } Console.WriteLine(); Console.WriteLine("Мир загружен! Начало выполнения операций ядра."); Console.WriteLine("\n======| DEBUG INFO |======"); Console.WriteLine(RemoteServices.Instance.UserID); Console.WriteLine(RemoteServices.Instance.UserName); List <int> VillageIDs = GameEngine.Instance.World.getListOfUserVillages(); foreach (int VillageID in VillageIDs) { WorldMap.VillageData Village = GameEngine.Instance.World.getVillageData(VillageID); Console.WriteLine("[Инициализация] " + Village.m_villageName + " - " + VillageID); InterfaceMgr.Instance.selectVillage(VillageID); GameEngine.Instance.GameDisplayMode = GameEngine.GameDisplays.DISPLAY_VILLAGE; GameEngine.Instance.downloadCurrentVillage(); } Console.WriteLine("======| ========== |======\n"); Thread OutThread = new Thread(OutTh); OutThread.Start(); Console.WriteLine("Основной поток логики запущен!"); while (true) { try { } catch (Exception ex) { Console.WriteLine("\n======| EX INFO |======"); Console.WriteLine(ex); Console.WriteLine("======| ======= |======\n"); } } }
public void Trade() { #if DEBUG Log("Trade!"); #endif int sleep = 0; while (true) { try { sleep = 8 + new Random().Next(-5, 5); if (trading) // Если торгуем { Log("Step with \"" + listBox_ResList.SelectedItem.ToString() + "\""); // Получаем ID товара из списка int resID = GetID(listBox_ResList.SelectedItem.ToString()); int targetID = -1; //List<int> villageIDs = GameEngine.Instance.World.getListOfUserVillages(); // Получаем список наших деревень for (int i = 0; i < listBox_ActiveVillages.Items.Count; i++) //foreach (int villageID in villageIDs) // Перебираем их { if (!listBox_ActiveVillages.GetSelected(i)) { continue; } int villageID = GetID(listBox_ActiveVillages.Items[i].ToString()); // Если деревня прогружена (открывалась ее карта в текущей сессии хоть раз) if (GameEngine.Instance.getVillage(villageID) != null) { // Получаем базовую информацию о нашей деревни WorldMap.VillageData village = GameEngine.Instance.World.getVillageData(villageID); VillageMap map = GameEngine.Instance.getVillage(villageID); // Получаем полную информацию int merchantsCount = map.calcTotalTradersAtHome(); // Кол-во торговцев в ней if (merchantsCount == 0) { continue; } int resAmount = (int)map.getResourceLevel(resID); // Кол-во ресурса на складе Log("At village " + villageID + " (" + village.villageName + ") " + merchantsCount + " traders"); // Дебаг int sendWithOne = int.Parse(textBox_ResCount.Text); // Кол-во ресурса на торговца int maxAmount = merchantsCount * sendWithOne; // Кол-во ресурсов отправим if (resAmount < maxAmount) // Если торговцы могут увезти больше чем есть { merchantsCount = (int)(resAmount / sendWithOne); // Считаем сколько смогут увезти реально } if (merchantsCount > 0) // Если трейдеры дома есть { if (radioButton1.Checked) // Parish { targetID = GameEngine.Instance.World.getRegionCapitalVillage(village.regionID); } else if (radioButton2.Checked) // Target { targetID = int.Parse(textBox_TradeTargetID.Text); } else if (radioButton3.Checked) // Resell { InterfaceMgr.Instance.selectStockExchange(-1); GameEngine.Instance.SkipVillageTab(); InterfaceMgr.Instance.getMainTabBar().changeTab(1); InterfaceMgr.Instance.setVillageTabSubMode(3); InterfaceMgr.Instance.resetVillageReportPanelData(); InterfaceMgr.Instance.selectStockExchange(int.Parse(listBox_ParishList.Items[0].ToString())); } // if target - player // GameEngine.Instance.getVillage(id).sendResources() // Вызываем высокоуровневую функцию торговли с рядом каллбеков GameEngine.Instance.getVillage(villageID).stockExchangeTrade(targetID, resID, merchantsCount * sendWithOne, false); AllVillagesPanel.travellersChanged(); // Подтверждаем изменения (ушли трейдеры) в GUI-клиента } } } Log("Again in " + sleep + " seconds - " + DateTime.Now.AddSeconds(sleep).ToString("HH:mm:ss")); Console.WriteLine(); } } catch (Exception ex) { WriteLog(ex); } Thread.Sleep(sleep * 1000); // Спим, чтобы не спамить. Так меньше палева. } }
public void Trade() { Log("Торговый поток создан!"); int Sleep = 0; while (true) { try { Sleep = 60 + new Random().Next(-5, 60); if (IsTrading) // Если торгуем { Log("Заход с \"" + listBox_ResList.SelectedItem.ToString() + "\""); // Получаем ID товара из списка int ResID = GetItemID(listBox_ResList.SelectedItem.ToString()); int TargetID = int.Parse(textBox_TradeTargetID.Text); // Получаем ID деревни-цели List <int> VillageIDs = GameEngine.Instance.World.getListOfUserVillages(); // Получаем список наших деревень foreach (int VillageID in VillageIDs) // Перебираем их { // Если деревня прогружена (открывалась ее карта в текущей сессии хоть раз) if (GameEngine.Instance.getVillage(VillageID) != null) { // Получаем базовую информацию о нашей деревни WorldMap.VillageData Village = GameEngine.Instance.World.getVillageData(VillageID); VillageMap Map = GameEngine.Instance.getVillage(VillageID); // Получаем полную информацию int ResAmount = (int)Map.getResourceLevel(ResID); // Кол-во ресурса на складе int MerchantsCount = Map.calcTotalTradersAtHome(); // Кол-во торговцев в ней Log("В деревне " + VillageID + " есть " + MerchantsCount + " торговцев"); // Дебаг int SendWithOne = int.Parse(textBox_ResCount.Text); // Кол-во ресурса на торговца int MaxAmount = MerchantsCount * SendWithOne; // Кол-во ресурсов отправим if (ResAmount < MaxAmount) // Если торговцы могут увезти больше чем есть { MerchantsCount = (int)(ResAmount / SendWithOne); // Считаем сколько смогут увезти реально } if (MerchantsCount > 0) // Если трейдеры дома есть { TargetID = (checkBox_Parish.Checked ? GameEngine.Instance.World.getRegionCapitalVillage(Village.regionID) : int.Parse(textBox_TradeTargetID.Text)); //textBox_TradeTargetID.Text = TargetID.ToString(); // Вызываем высокоуровневую функцию торговли с рядом каллбеков GameEngine.Instance.getVillage(VillageID).stockExchangeTrade(TargetID, ResID, MerchantsCount * SendWithOne, false); AllVillagesPanel.travellersChanged(); // Подтверждаем изменения (ушли трейдеры) в GUI-клиента } } } Log("Повтор цикла торговли через " + Sleep + " секунд(ы) в " + DateTime.Now.AddSeconds(Sleep).ToString("HH:mm:ss")); Console.WriteLine(); } } catch (Exception ex) { Console.WriteLine("\n======| EX INFO |======"); Console.WriteLine(ex); Console.WriteLine("======| ======= |======\n"); } Thread.Sleep(Sleep * 1000); // Спим, чтобы не спамить. Так меньше палева. } }
public bool showVillage(WorldMap.VillageData village) { if (!this.FilterActive || (InterfaceMgr.Instance.WorldMapMode != 0)) { return(true); } if (this.filterAlwaysShowYourVillages && (village.userID == RemoteServices.Instance.UserID)) { return(true); } switch (this.filterMode) { case 1: if (village.userID >= 0) { if (village.userID != RemoteServices.Instance.UserID) { int userFactionID = RemoteServices.Instance.UserFactionID; if ((userFactionID < 0) || (village.factionID < 0)) { return(false); } if (village.factionID != userFactionID) { goto Label_02AE; } } return(true); } return(false); case 2: if (village.userID >= 0) { if (village.userID != RemoteServices.Instance.UserID) { int factionID = RemoteServices.Instance.UserFactionID; if ((factionID < 0) || (village.factionID < 0)) { return(false); } if (village.factionID == factionID) { return(true); } FactionData data2 = GameEngine.Instance.World.getFaction(factionID); FactionData data3 = GameEngine.Instance.World.getFaction(village.factionID); if ((data2 == null) || (data3 == null)) { return(false); } if ((data2.houseID != data3.houseID) || (data2.houseID == 0)) { goto Label_02AE; } } return(true); } return(false); case 3: if (!GameEngine.Instance.World.isForagingSpecial(village.id)) { if (GameEngine.Instance.World.isForagingVillage(village.id)) { return(true); } goto Label_02AE; } return(true); case 4: case 5: if (!GameEngine.Instance.World.isVillageTrading(village.id)) { if (village.Capital || GameEngine.Instance.World.isVillageMarketTrading(village.id)) { return(true); } goto Label_02AE; } return(true); case 6: if (!GameEngine.Instance.World.isVillageInvolvedInAttacks(village.id)) { goto Label_02AE; } return(true); case 7: if (village.userID >= 0) { if (village.userID != RemoteServices.Instance.UserID) { if ((RemoteServices.Instance.UserFactionID >= 0) || (village.factionID < 0)) { return(false); } FactionData data = GameEngine.Instance.World.getFaction(village.factionID); if (data == null) { return(false); } if (!data.openForApplications) { goto Label_02AE; } } return(true); } return(false); case 8: switch (village.special) { case 3: case 5: case 7: case 9: case 11: case 13: case 15: case 0x11: return(true); } break; default: goto Label_02AE; } if (GameEngine.Instance.World.isVillageInvolvedInAIAttacks(village.id)) { return(true); } if (SpecialVillageTypes.IS_TREASURE_CASTLE(village.special)) { return(true); } Label_02AE: return(false); }