Beispiel #1
0
        private async Task TrainNextHero() {
            var index = trainingIndex % barracks.Heroes.Count;
            ++trainingIndex;

            // Tướng đang được duyệt.
            var hero = barracks.Heroes[index];
            if (!IsHeroAutoTrain(hero.Id)) {
                // Không được đánh dấu.
                return;
            }

            if (hero.IsTraining) {
                // Đang được huấn luyện.
                return;
            }

            if (barracks.CurrentSlots == barracks.MaxSlots) {
                // Hết vị trí huấn luyện.
                if (barracks.Heroes.Count(item => item.IsTraining) < barracks.CurrentSlots) {
                    // Có vị trí nào đó hết thời gian huấn luyện.
                    // Cập nhật lại thao trường.
                    await RefreshHeroesAsync();
                    return;
                }
            } else {
                logModel.Log(String.Format("Bắt đầu huấn luyện tướng {0} Lv. {1} Exp {2}/{3}",
                    hero.Name, hero.Level, hero.Exp, hero.NextExp));
                await packetWriter.TrainHeroAsync(hero.Id);
                await RefreshHeroesAsync();
            }
        }
Beispiel #2
0
        private async void chkAutoRaiseBird_CheckedChanged(object sender, EventArgs e)
        {
            if (chkAutoRaiseBird.Checked)
            {
                try
                {
                    while (await CheckConditionAsync() && chkAutoRaiseBird.Checked)
                    {
                        int type   = 1;
                        var packet = await packetWriter.RaiseBirdAsync(type);

                        if (packet == null)
                        {
                            messageLogModel.Log("Lỗi nuôi chim.");
                        }
                        Parse66004(packet);
                        await Task.Delay(40);
                    }
                    chkAutoRaiseBird.Checked = false;
                    messageLogModel.Log("Hết bạc.");
                }
                catch (Exception ee)
                {
                    Console.WriteLine(ee.Message.ToString());
                    messageLogModel.Log(ee.Message.ToString());
                }
            }
        }
Beispiel #3
0
        private async void playerList_ButtonClick(object sender, CellClickEventArgs e)
        {
            var item   = e.Item;
            var player = (ArenaPlayer)item.RowObject;

            messageLog.Log(String.Format("[Võ đài] Khiêu chiến với {0} Lv. {1}",
                                         player.Name, player.Level));
            await Duel(player.Id, player.Rank);
        }
Beispiel #4
0
        private async Task <bool> ChangeBetterStats(int techId)
        {
            if (asyncLock)
            {
                return(false);
            }
            try {
                asyncLock = true;
                if (instituteInfo == null)
                {
                    return(false);
                }
                var tech = instituteInfo.Techs.Find(item => item.Id == techId);
                if (tech.NewValue == 0)
                {
                    return(true);
                }
                if (tech.NewValue <= tech.Value)
                {
                    return(true);
                }
                messageLogModel.Log(String.Format("[SNC] {0}: {1} +{2}{3} => +{4}{5}",
                                                  tech.Name, tech.Desc, tech.Value, tech.ValueUnit, tech.NewValue, tech.ValueUnit));
                var p = await packetWriter.ChangeInstituteTechAsync(techId);

                if (p == null || p.HasError)
                {
                    return(false);
                }
                return(true);
            } finally {
                asyncLock = false;
            }
        }
Beispiel #5
0
        private void Parse34108(Packet packet)
        {
            var token  = JToken.Parse(packet.Message);
            var report = ArmyReport.Parse(token);

            foreach (var detail in report.Reports)
            {
                messageLogModel.Log(detail);
            }
            if (report.Gains.Length > 0)
            {
                messageLogModel.Log(String.Format("Tấn công quân đoàn nhận được: {0}", report.Gains));
            }
            else
            {
                messageLogModel.Log("Tấn công quân đoàn nhận thất bại.");
            }
        }
Beispiel #6
0
        private async void miningTimer_Tick(object sender, EventArgs e)
        {
            if (miningLocking)
            {
                return;
            }

            if (autoDrillBox.Checked)
            {
                try {
                    miningLocking = true;
                    if (cooldownModel.DrillCooldown > 0)
                    {
                        return;
                    }

                    // Kiểm tra lại đóng băng.
                    var packet = await packetWriter.RefreshOutsideAsync(infoModel.PlayerId);

                    if (packet == null)
                    {
                        return;
                    }

                    if (cooldownModel.DrillCooldown > 0)
                    {
                        return;
                    }

                    var token         = JToken.Parse(packet.Message);
                    var extraBaseInfo = (JArray)token["extraBaseInfo"];
                    if (extraBaseInfo.Count == 0)
                    {
                        messageLogModel.Log("[Khoan] Chưa mở ngoại thành!");
                        autoDrillBox.Checked = false;
                        return;
                    }

                    var drillToken   = extraBaseInfo[extraBaseInfo.Count - 3];
                    var axeDtoList   = (JArray)drillToken["axeDtoList"];
                    var normalMining = axeDtoList[0];
                    var rewardTime   = (long)normalMining["rewardTime"];
                    if (rewardTime != 0)
                    {
                        // Có quà chưa nhận.
                        var p1 = await packetWriter.GetDrillResultAsync();

                        if (p1 == null)
                        {
                            return;
                        }

                        messageLogModel.Log(String.Format("[Khoan] Tiến hành mở kết quả khoan."));
                        var result = DrillResult.Parse(JToken.Parse(p1.Message));
                        if (result == null)
                        {
                            return;
                        }
                        foreach (var reward in result.Rewards)
                        {
                            messageLogModel.Log(String.Format("[Khoan] Nhận được {0} {1}.", reward.Award, reward.Name));
                        }
                    }

                    messageLogModel.Log("[Khoan] Bắt đầu khoan...");
                    await packetWriter.DrillAsync();
                } finally {
                    miningLocking = false;
                }
            }
        }
Beispiel #7
0
        public async Task <bool> LogIn(bool parallel)
        {
            if (State == ClientState.Connected)
            {
                systemLog.Log("Đã đăng nhập, không cần đăng nhập lại!");
                return(false);
            }
            if (State == ClientState.Connecting)
            {
                systemLog.Log("Đang đang nhập, không cần đăng nhập lại!");
                return(false);
            }
            if (State == ClientState.Disconnecting)
            {
                systemLog.Log("Đang đang xuất, không thể đăng nhập!");
                return(false);
            }
            try {
                await LogIn(Config.ServerId, Config.Username, Config.Password, parallel);

                return(true);
            } catch (WebException ex) {
                systemLog.Log(ex.Message);
                systemLog.Log("Đăng nhập thất bại!");
                State = ClientState.Disconnected;
                return(false);
            }
        }