예제 #1
0
        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);
                }
            }
        }