コード例 #1
0
 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);
 }
コード例 #2
0
        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");
                }
            }
        }
コード例 #3
0
        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); // Спим, чтобы не спамить. Так меньше палева.
            }
        }
コード例 #4
0
        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); // Спим, чтобы не спамить. Так меньше палева.
            }
        }
コード例 #5
0
        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);
        }