Beispiel #1
0
 public BetResultRepresentation(BetResult betResult)
 {
     BetResult         = betResult;
     BetRepresentation = new BetRepresentation(betResult.Bet);
     IsSidi            = !betResult.IsBarrani && betResult.IsSidi;
     IsBarrani         = betResult.IsBarrani;
 }
Beispiel #2
0
        public async Task <IActionResult> PutBetAsync(PutBetModel model)
        {
            //输赢结果
            var result = 1;
            //输赢金额
            decimal amount = 0;

            Random random = new Random(DateTime.Now.Millisecond);
            var    npc    = random.Next(0, 3);
            //生成订单号
            var orderNumber = Guid.NewGuid().ToString();

            //记录投注结果
            //投注时间 - 提交的玩法 - 金额- 结果 - 随机订单号
            System.DateTime currentTime = DateTime.Now;

            var betResult = new BetResult()
            {
                Createtime   = currentTime,
                PlayerBet    = model.BetInput,
                PcBet        = npc.ToString(),
                Amount       = amount,
                ResultAmount = amount,
                OrderNumber  = orderNumber,
                Coin         = model.Coin,
                Result       = result
            };

            //加入数据库
            //_context.betResult.Add(betResult);
            return(Ok(betResult));
        }
Beispiel #3
0
        public IHttpActionResult Get()
        {
            var database = 1;
            var matches  = BetResult.GetBetResult(database);

            return(Ok(matches));
        }
Beispiel #4
0
 private void SingleCycle_OnBetCompleted(BetResult result)
 {
     if (Count > 0)
     {
         Betting();
         Count--;
     }
 }
Beispiel #5
0
 private void MultiBet_OnBetCompleted(BetResult result)
 {
     if (Count > 0)
     {
         MBetting();
         Count--;
     }
 }
Beispiel #6
0
        public static string BetResultToLocalizedString(BetResult betResult)
        {
            var dm = new DataManager();
            var localizedStrings = dm.GetLocalizedStrings(LocalizationManager.Language);
            var localBetResult   = localizedStrings.Single(ls => ls.Key.AfterFirst("_") == "BetResult_" + betResult.EnumToString()).Value;

            return(localBetResult);
        }
 public TacticHolder(ITactic tactic, string id)
 {
     Tactic  = tactic;
     Balance = 1000;
     State   = State.Idle;
     LastBet = new BetResult(true, new Bet(true, 0));
     Wins    = 0;
     Losses  = 0;
     ID      = id;
 }
        /// <summary>
        /// 下注
        /// </summary>
        /// <param name="periodNo">期号</param>
        /// <param name="rule">玩法枚举</param>
        /// <param name="number">下注号码</param>
        /// <param name="money">单个号码金额</param>
        public void Bet(long periodNo, Pk10Rule rule, string number, decimal money)
        {
            LotteryData lotteryData = GetLotteryData();

            PrintLog($"{Environment.NewLine}即将下注,账户余额:¥ [{lotteryData.Balance}], 玩法: [{rule.GetAttributeValue()}],号码: [{number}], 下注金额: {money}.");

            string url = $"bet/bet.do?_t={DateTime.UtcNow.Ticks}";

            // 构建表单参数
            var betParam = new BetParam(periodNo, rule, number, money);

            var postBodyBuilder = new StringBuilder();

            postBodyBuilder.Append($"gameId={betParam.GameId}&turnNum={betParam.TurnNum}&totalNums={betParam.TotalNums}");
            postBodyBuilder.Append($"&totalMoney={betParam.TotalMoney}&betSrc={betParam.BetSrc}");

            for (int idx = 0; idx < betParam.BetBeanList.Count; idx++)
            {
                var bean = betParam.BetBeanList[idx];
                postBodyBuilder.Append($"&betBean[{idx}].playId={bean.PlayId}&betBean[{idx}].money={bean.Money}");
            }

            // 提交投注
            try
            {
                BetResult result = _restHelper.Post <BetResult>(url, postBodyBuilder.ToString());

                if (!result.Success)
                {
                    if (result.Msg.Contains("该账号在异地登陆"))
                    {
                        LoginTimeout = true;
                        throw new ArgumentException("该账号在异地登陆, 请重试!");
                    }
                    else
                    {
                        throw new ArgumentException($"{result.Msg}, 状态码: {result.Code}.");
                    }
                }
                else
                {
                    PrintLog($"下注成功, 当前账户余额: {lotteryData.Balance}");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #9
0
 public void ProcessBetAction(BetAction betAction)
 {
     if (BetResult != null)
     {
         var msg = "Inconsistency: Once the Bet phase is over no BetAction can be processed!";
         Log.Error(msg);
         throw new InvalidOperationException(msg);
     }
     BetActionList.Add(betAction);
     BetResult = GetBetResult();
     if (BetResult == null && betAction.PlayerInfo == CurrentPlayer)
     {
         CurrentPlayer = PlayerGroup.GetNextPlayer(CurrentPlayer.PlayerId);
     }
 }
Beispiel #10
0
        public async void StartBet(MultiBetData bet)
        {
            PlaceAutomatedBetsResponse result = await DiceWebAPI.PlaceAutomatedBetsAsync(bet.Session, bet.MultiBetSettings);

            if (result.Success)
            {
                betResult.BetCount++;
                if (result.TotalPayOut == 0)
                {
                    decimal baseBet;
                    if (result.BetCount > 1)
                    {
                        baseBet = result.PayIns[result.BetCount - 1] <= result.PayIns[result.BetCount - 2] ?
                                  2 * result.PayIns[result.BetCount - 1] : 2 * result.PayIns[result.BetCount - 2];
                    }
                    else
                    {
                        baseBet = 2 * result.PayIns[result.BetCount - 1];
                    }

                    SingleBetCycle singlBet = new SingleBetCycle();
                    SingleBetData  sBet     = bet.GetSingleData(baseBet);
                    singlBet.OnNoMoney += SinglBet_OnNoMoney;
                    BetResult singlResult = null;
                    singlBet.StartBet(sBet);
                    betResult.BetCount = result.BetCount + singlResult.BetCount;
                    betResult.Profit   = result.TotalPayOut + result.TotalPayIn + singlResult.Profit;
                }
                else
                {
                    betResult.BetCount = result.BetCount;
                    betResult.Profit   = result.TotalPayOut + result.TotalPayIn;
                    OnBetCompleted?.Invoke(betResult);
                }
            }
            else
            {
                if (result.InsufficientFunds)
                {
                    OnNoMoney?.Invoke(bet.Session.AccountId, bet.Currency);
                    Thread.Sleep(20000);
                }
            }
        }
Beispiel #11
0
        public async Task <Response> CloseRoulette(string id)
        {
            List <Bet>           betList        = null;
            List <UserBetResult> userBetResults = null;
            Roulette             roulette       = null;
            byte      WinnerNumber = 0;
            Response  response     = new Response();
            BetResult betResult    = null;

            roulette = await Context.GetRoulette(id);

            response = ValidateForCloseRoulette(roulette);
            if (!response.Successfull)
            {
                return(response);
            }
            betList = await Context.GetBetsFromRoulette(id);

            if (betList == null || betList.Count <= 0)
            {
                return(new Response(false, "ERROR: There is not any bet on this roulette!", null));
            }
            WinnerNumber   = NumbersUtil.RandomByte(36);
            userBetResults = ConvertToUserBetResults(WinnerNumber, betList);
            response       = await PerformRouletteClosingOnDB(roulette);

            if (!response.Successfull)
            {
                return(new Response(false, "ERROR: Could not close roulette!", null));
            }
            betResult = new BetResult()
            {
                BetsPerformed        = betList,
                UsersBetResults      = userBetResults,
                WinnerNumberAndColor = $"{BetUtils.GetBetColorFromByte(WinnerNumber)} {WinnerNumber}",
            };

            return(new Response(true, $"Roulette was closed successfully", betResult));
        }
        void Flip(TacticHolder tactic)
        {
            //Do not continue if they're broke or disqualified.
            if (tactic.State == State.Broke || tactic.State == State.Disqualified)
            {
                return;
            }

            //Ask the tactic to place a bet.
            Bet bet = tactic.Tactic.Bet(tactic.LastBet, tactic.Balance);

            //If the bet's amount is higher than their balance, disqualify them.
            if (bet.Amount > tactic.Balance)
            {
                tactic.State = State.Disqualified;
                return;
            }

            //Generate a result from the bet.
            BetResult result = new BetResult(bet.IsHeads == (new Random().Next(1, 3) == 1), bet);

            tactic.LastBet = result;

            //If they've won, add a win and give them money.
            if (result.HadWon)
            {
                tactic.Wins++;
                tactic.Balance += bet.Amount;
            }

            //If they've lost, add a loss and take their money.
            else
            {
                tactic.Losses++;
                tactic.Balance -= bet.Amount;
            }
        }
Beispiel #13
0
        public async void StartBet(SingleBetData bet)
        {
            var betResult = new BetResult();

            while (true)
            {
                var result = await DiceWebAPI.PlaceBetAsync(bet.Session, bet.PayIn, bet.GessLow, bet.GessHigh, bet.ClientSeed, bet.Currency);

                if (result.Success)
                {
                    betResult.BetCount++;
                    if (result.PayOut > 0)
                    {
                        betResult.Profit += result.PayOut - bet.PayIn;
                        OnBetCompleted?.Invoke(betResult);
                        break;
                    }
                    else
                    {
                        betResult.Profit -= bet.PayIn;
                        if (betResult.BetCount % bet.Repit == 0 && betResult.BetCount != 0)
                        {
                            bet.PayIn = bet.PayIn * 2;
                        }
                        CalcPercent(betResult.BetCount, bet);
                    }
                }
                else
                {
                    if (result.InsufficientFunds)
                    {
                        OnNoMoney?.Invoke(bet.Session.AccountId, bet.Currency);
                        Thread.Sleep(20000);
                    }
                }
            }
        }
Beispiel #14
0
 public MatchInfoBuilder Result(BetResult result)
 {
     _matchInfo._result = result;
     return(this);
 }
Beispiel #15
0
 internal HitResult(BetResult betResult, BeforeHitParams beforeHitParams)
 {
     _betResult       = betResult;
     _beforeHitParams = beforeHitParams;
 }
Beispiel #16
0
 public MultiBetCycle()
 {
     betResult = new BetResult();
 }
 public static string ToString(BetResult betRes)
 {
     return(strToBetRes.First(keyValue => keyValue.Value == betRes).Key);
 }
        public static bool TryParse(string input, out BetResult res)
        {
            Contract.Requires(!String.IsNullOrEmpty(input));

            return(strToBetRes.TryGetValue(input, out res));
        }