public void Bet(BetSide side) { var add_score = balance >= (int)denomination ? (int)denomination : balance; balance -= add_score; bet_score[side] += add_score; }
private void KillBig() { try { if (!_isKillBig) { return; } var b_profit = Desk.GetProfit((int)BetSide.banker, Desk.Instance.desk_amount[BetSide.banker], Desk.Instance.desk_amount[BetSide.player], Desk.Instance.desk_amount[BetSide.tie]); var p_profit = Desk.GetProfit((int)BetSide.player, Desk.Instance.desk_amount[BetSide.banker], Desk.Instance.desk_amount[BetSide.player], Desk.Instance.desk_amount[BetSide.tie]); //var t_profit = Desk.GetProfit((int)BetSide.player, Desk.Instance.desk_amount[BetSide.banker], // Desk.Instance.desk_amount[BetSide.player], Desk.Instance.desk_amount[BetSide.tie]); BetSide winner = BetSide.banker; if (b_profit == p_profit) { return; } if (b_profit < p_profit && CurrentRound.Winner.Item1 == BetSide.banker) { winner = BetSide.player; } if (p_profit < b_profit && CurrentRound.Winner.Item1 == BetSide.player) { winner = BetSide.banker; } var round = Session.CreateRoundByWinner(winner); var roundidx = Game.Instance.RoundIndex == -1 ? 0 : Game.Instance.RoundIndex; Game.Instance.CurrentSession.RoundsOfSession[roundidx] = round; } catch (Exception ex) { } }
private bool CanHeBet(Player p, BetSide side) { var bet_amount = (int)p.denomination; //待加入其他限制规则 var can_he = LimitRed(bet_amount, side) && true; return(can_he); }
public int CalcPlayerEarning(BetSide winner, int[] p_bets) { var cost = p_bets[(int)winner]; float native_odds; if (winner == BetSide.banker) { native_odds = cost >= 10 ? odds_map[(int)winner] : 1; } else { native_odds = odds_map[(int)winner]; } var earning = cost + cost * native_odds; return(Mathf.FloorToInt(earning)); }
/// <summary> /// 检测限红 /// </summary> /// <param name="bet_amount">押注大小</param> /// <param name="side">押注哪边</param> /// <returns></returns> private bool LimitRed(int bet_amount, BetSide side) { var b_amount = desk_amount[BetSide.banker]; var t_amount = desk_amount[BetSide.tie]; var p_amount = desk_amount[BetSide.player]; var desk_limit = Setting.Instance.GetIntSetting("desk_limit_red"); if (side == BetSide.banker) { var desk_red = Mathf.Abs(bet_amount + b_amount - p_amount); if (desk_red > desk_limit) { return(false); } } if (side == BetSide.player) { var desk_red = Mathf.Abs(bet_amount + p_amount - b_amount); if (desk_red > desk_limit) { return(false); } } if (side == BetSide.tie) { var tie_limit = Setting.Instance.GetIntSetting("tie_limit_red"); var desk_tie_red = Mathf.Abs(bet_amount + t_amount); if (desk_tie_red > tie_limit) { return(false); } } return(true); }
public static int Bet(int moneyType, string connectionId, long accountId, string username, string clientIP, BetSide betSide, long betAmount, out long sumaryBet, out long newBalance, out string messageError, bool botBet = false) { if (moneyType == 1) { return(_gameLoopGold.Bet(connectionId, accountId, username, clientIP, betSide, betAmount, out sumaryBet, out newBalance, out messageError)); } else { return(_gameLoopCoin.Bet(connectionId, accountId, username, clientIP, betSide, betAmount, out sumaryBet, out newBalance, out messageError)); } }
public int Bet(string connectionId, long accountId, string username, string clientIP, BetSide betSide, long betAmount, out long sumaryBet, out long newBalance, out string messageError, bool botBet = false) { newBalance = 0; sumaryBet = 0; messageError = string.Empty; try { if (Monitor.TryEnter(_locker, 60000)) { try { if (betAmount <= 100)//toi thieu dat cuoc 100 xu { messageError = "Sai số đặt cược!"; return(-999); } if (CurrentState != GameState.Betting) { messageError = "Không thể đặt cửa vào lúc này!"; return(-998); } if (betSide == BetSide.Tai) { if (BetXiu.ContainsKey(accountId)) { messageError = "Bạn chỉ có thể đặt một cửa!"; return(-997); } } else { if (BetTai.ContainsKey(accountId)) { messageError = "Bạn chỉ có thể đặt một cửa!"; return(-996); } } long logId = -1; long logSumId = -1; bool addLog = false; if (betSide == BetSide.Tai) { addLog = !BetTai.ContainsKey(accountId); } else { addLog = !BetXiu.ContainsKey(accountId); } if (!addLog) { logSumId = LogSumary[accountId]; } int response = Lddb.Instance.Bet(SessionID, accountId, username, clientIP, (int)betSide, betAmount, out newBalance, out logId, addLog, ref logSumId, botBet, long.Parse($"{_createdTime}{accountId}")); switch (response) { case -1: messageError = "Phiên không tồn tại!"; return(response); case -51: messageError = "Số dư không đủ!"; return(response); } NLogManager.LogMessage("LuckdyDiece Bet:" + response); if (response < 0) { messageError = "Lỗi không xác định!"; return(response); } if (MoneyType == 1) { ThreadPool.QueueUserWorkItem(_ => { long addedValue = Lddb.Instance.AddRecentBetting(betAmount, accountId); if (addedValue > 0) { _cache.UpdateRecentBetting(accountId, username, addedValue, true); } }); } if (addLog) { LogSumary.AddOrUpdate(accountId, logSumId, (k, v) => v = logSumId); } if (betSide == BetSide.Tai) { sumaryBet = BetTai.AddOrUpdate(accountId, betAmount, (k, v) => v += betAmount); if (connectionId != "") { BetTaiUser.AddOrUpdate(accountId, betAmount, (k, v) => v += betAmount); } _betInfo.Push(new BetInfo { AccountID = accountId, AccountName = username, Money = betAmount, Side = 0, CreatedTime = DateTime.Now, LogId = logId, LogSumId = logSumId, IsBotBet = botBet ? 1 : 0 }); NLogManager.LogMessage("add OverBets:" + username + " => " + betAmount + " => " + botBet); _overBets.Push((new BetInfo { AccountID = accountId, AccountName = username, Money = betAmount, Side = 0, CreatedTime = DateTime.Now, LogId = logId, LogSumId = logSumId, IsBotBet = botBet ? 1 : 0 })); foreach (var betInfo in _overBets) { NLogManager.LogMessage("betInfo Push:" + betInfo.AccountName + " => " + betInfo.Money + " => " + betInfo.IsBotBet); } } else { sumaryBet = BetXiu.AddOrUpdate(accountId, betAmount, (k, v) => v += betAmount); if (connectionId != "") { BetXiuUser.AddOrUpdate(accountId, betAmount, (k, v) => v += betAmount); } _betInfo.Push(new BetInfo { AccountID = accountId, AccountName = username, Money = betAmount, Side = 1, CreatedTime = DateTime.Now, LogId = logId, LogSumId = logSumId, IsBotBet = botBet ? 1 : 0 }); _underBets.Push((new BetInfo { AccountID = accountId, AccountName = username, Money = betAmount, Side = 1, CreatedTime = DateTime.Now, LogId = logId, LogSumId = logSumId, IsBotBet = botBet ? 1 : 0 })); } if (_isBetKingEvent) { _eventBetKing.AddOrUpdate(accountId, new BetKingState { ID = $"{_createdTime}{accountId}", Award = 0, Lose = betAmount }, (k, v) => v = new BetKingState { ID = v.ID, Award = v.Award, Lose = v.Lose += betAmount }); } OnChangedBettingData(); PrepareResult(); return(1); } finally { Monitor.Exit(_locker); } } else { messageError = "Hệ thống của chúng tôi đang bận, xin bạn vui lòng thử lại!"; return(-995); } } catch (Exception ex) { NLogManager.PublishException(ex); messageError = ex.Message; return(-994); } }
public void Count(BetSide winner) { balance += count_rule(winner, bet_score); }