private void PrepareResult() { if (isHaveResult == false) { Result.GetNewResult(); isHaveResult = true; } if (_botManager.EnableRunBot() && MoneyType == 1) { try { ConcurrentStack <BetInfo> _overBetsTmp = new ConcurrentStack <BetInfo>(_overBets); ConcurrentStack <BetInfo> _underBetsTmp = new ConcurrentStack <BetInfo>(_underBets); var sumaryTai = _overBetsTmp.Sum(x => x.Money); var sumaryXiu = _underBetsTmp.Sum(x => x.Money); if (sumaryTai != sumaryXiu) { var diff = Math.Abs(sumaryTai - sumaryXiu); if (sumaryTai > sumaryXiu) // Neu ve tai thi refund can cua { while (diff > 0) { _overBetsTmp.TryPop(out var result); if (result == null) { continue; } var diff1 = diff - result.Money; if (diff1 > 0) { diff = diff1; continue; } if (diff1 <= 0) { NLogManager.LogMessage("add OverBets----:" + Math.Abs(diff1) + " => " + result.IsBotBet); _overBetsTmp.Push(new BetInfo() { Money = Math.Abs(diff1), IsBotBet = result.IsBotBet }); break; } } } else // Neu ve xiu thi refund can cua { while (diff > 0) { _underBetsTmp.TryPop(out var result); if (result == null) { continue; } long diff1 = diff - result.Money; if (diff1 > 0) { diff = diff1; continue; } if (diff1 <= 0) { _underBetsTmp.Push(new BetInfo() { Money = Math.Abs(diff1), IsBotBet = result.IsBotBet }); break; } } } } var acceptedOver = _overBetsTmp.Sum(x => x.Money); // tổng số tiền cân cửa tài var acceptedUnder = _underBetsTmp.Sum(x => x.Money); // tổng số tiền cân cửa xỉu var totalBetTai = _overBetsTmp.Where(x => x.IsBotBet == 1).Sum(x => x.Money); // tổng số tiền bot đặt tài khi cân cửa var totalBetXiu = _underBetsTmp.Where(x => x.IsBotBet == 1).Sum(x => x.Money); // tổng số tiền bot đặt xỉu khi cân cửa var playerMoneyOver = acceptedOver - totalBetTai; var playerMoneyUnder = acceptedUnder - totalBetXiu; foreach (var betInfo in _overBetsTmp) { NLogManager.LogMessage("betInfo:" + betInfo.AccountName + " => " + betInfo.Money + " => " + betInfo.IsBotBet); } NLogManager.LogMessage("totalBetTai : " + totalBetTai); NLogManager.LogMessage("totalBetXiu : " + totalBetXiu); NLogManager.LogMessage("-------------------------------------"); var botMoneyChange = Math.Abs(totalBetTai - totalBetXiu); // số tiền bot cân với người chơi var playerMoneyChange = Math.Abs(playerMoneyOver - playerMoneyUnder); // số tiền người chơi cân với bot var botWin = false; // Neu bot thang // Kiếm tra kết quả if (acceptedOver == totalBetTai && acceptedUnder == totalBetXiu) { NLogManager.LogMessage("Players dont play"); } else { var sumDice = Result.Dice1 + Result.Dice2 + Result.Dice3; if (sumDice > 10) // Về tài { botWin = true; if (totalBetXiu > totalBetTai) // Nếu bot đặt xỉu nhiều hơn { botWin = false; if (_botManager.Fund - botMoneyChange < playerMoneyChange) // Quỹ bot âm { while (Result.Dice1 + Result.Dice2 + Result.Dice3 > 10) // Chuyển kết quả về xỉu { Result.GetNewResult(); } botWin = true; } } } else // Về xỉu { botWin = true; if (totalBetTai > totalBetXiu) // Nếu bot đặt tài nhiều hơn { botWin = false; if (_botManager.Fund - botMoneyChange < playerMoneyChange) // Quỹ bot âm { while (Result.Dice1 + Result.Dice2 + Result.Dice3 <= 10) // Chuyển kết quả về tài { Result.GetNewResult(); } botWin = true; } } } } totalBotBet = botWin ? botMoneyChange : -botMoneyChange; NLogManager.LogMessage($"Session:{SessionID}|BotWin:{botWin}|TotalBotBet:{totalBotBet}|acceptedOver:{acceptedOver}|acceptedUnder{acceptedUnder}|botOver{totalBetTai}|botunder:{totalBetXiu}|playerOver:{playerMoneyOver}|playerUnder:{playerMoneyUnder}"); } catch (Exception ex) { NLogManager.PublishException(ex); } } }