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; } } }