跳到主要内容

百家乐 (BACCARAT)

游戏代码

  • GameType: BACCARAT
  • 数值: 16

游戏说明

百家乐数据格式,有靴,有庄闲例牌补牌位置各4-6张,使用卡牌类型为扑克牌(POKERCARD),当开玩家手牌后,会更新局数据内左庄闲Normal/Extra牌位置(BANKER/PLAYER)的手上卡牌,并通过数据推送接口,通知运营商。

百家乐子类型

子类型描述
BACCARAT_CLASSIC经典百家乐
BACCARAT_TRADITIONAL传统百家乐
BACCARAT_SPEED极速百家乐
BACCARAT_PEEK眯牌百家乐
BACCARAT_FORTUNE财神百家乐
BACCARAT_BLOCKCHAIN区块链百家乐
BACCARAT_SPEED_BLOCKCHAIN区块链极速百家乐
BACCARAT_PEEK_BLOCKCHAIN区块链眯牌百家乐

使用座位&资源

座位资源描述
pbGames.FlowSeat_PLAYERpbBaccarat.ResourceType_NORMAL本局结果,闲家例牌
pbGames.FlowSeat_PLAYERpbBaccarat.ResourceType_EXTRA本局结果,闲家补牌
pbGames.FlowSeat_BANKERpbBaccarat.ResourceType_NORMAL本局结果,庄家例牌
pbGames.FlowSeat_BANKERpbBaccarat.ResourceType_EXTRA本局结果,庄家补牌

扑克牌专用卡牌

黑桃卡牌红心卡牌梅花卡牌方块卡牌描述
SPADE_AHEART_ACLUB_ADIAMOND_A1 点
SPADE_2HEART_2CLUB_2DIAMOND_22 点
SPADE_3HEART_3CLUB_3DIAMOND_33 点
SPADE_4HEART_4CLUB_4DIAMOND_44 点
SPADE_5HEART_5CLUB_5DIAMOND_55 点
SPADE_6HEART_6CLUB_6DIAMOND_66 点
SPADE_7HEART_7CLUB_7DIAMOND_77 点
SPADE_8HEART_8CLUB_8DIAMOND_88 点
SPADE_9HEART_9CLUB_9DIAMOND_99 点
SPADE_10HEART_10CLUB_10DIAMOND_1010 点
SPADE_JHEART_JCLUB_JDIAMOND_J11 点
SPADE_QHEART_QCLUB_QDIAMOND_Q12 点
SPADE_KHEART_KCLUB_KDIAMOND_K13 点

执行步骤(经典、财神、急速、传统)

每经过一个step recorder.process会写入数据

顺序步骤描述
1Step_ROUND_START本局开始 (NOTIFY_ROUND_START)
2Step_ROUND_BET开始下注(NOTIFY_ROUND_BET)
Duration: 下注秒数
ex Duration:45 = 45秒
3Step_NO_MORE_BET停止下注 (NOTIFY_ROUND_NO_MORE_BET)
Duration: 下注秒数
ex Duration:45 = 45秒
4Step_SHOW_PLAYER_1开闲侧玩家手牌1 NOTIFY_ROUND_STEP(取得开牌结果)
5Step_SHOW_BANKER_1开庄侧玩家手牌1 NOTIFY_ROUND_STEP(取得开牌结果)
6Step_SHOW_PLAYER_2开闲侧玩家手牌2 NOTIFY_ROUND_STEP(取得开牌结果)
7Step_SHOW_BANKER_2开庄侧玩家手牌2 NOTIFY_ROUND_STEP(取得开牌结果)
8Step_DEAL_PLAYER_EXTRA开闲侧玩家补牌 NOTIFY_ROUND_STEP(取得开牌结果)
9Step_DEAL_BANKER_EXTRA开庄侧玩家补牌 NOTIFY_ROUND_STEP(取得开奖结果)
10Step_DEALER_CONFIRM荷官确认结果阶段 NOTIFY_ROUND_STEP
11Step_ROUND_FINISHED本局结束,发送 NOTIFY_ROUND_FINISH 通知结算

执行步骤(眯牌)

每经过一个step recorder.process会写入数据

顺序步骤描述
1Step_ROUND_START本局开始 (NOTIFY_ROUND_START)
2Step_ROUND_BET开始下注 发送 NOTIFY_ROUND_BET 通知下注
Duration: 下注秒数
ex Duration:45 = 45秒
3Step_NO_MORE_BET停止下注 NOTIFY_ROUND_NO_MORE_BET 通知停止下注
Duration: 下注秒数
ex Duration:45 = 45秒
4Step_PEEK_NORMAL眯场上例牌 NOTIFY_ROUND_STEP(取得开牌结果)
Duration: 眯牌时间
5Step_PEEK_SHOW_NORMAL开场上例牌 NOTIFY_ROUND_STEP(取得开牌结果)
6Step_PEEK_DEAL_PLAYER_EXTRA眯闲家补牌 NOTIFY_ROUND_STEP(取得开牌结果)
Duration: 眯牌时间
7Step_PEEK_SHOW_PLAYER_EXTRA开闲家补牌 NOTIFY_ROUND_STEP
8Step_PEEK_DEAL_BANKER_EXTRA眯庄家补牌 NOTIFY_ROUND_STEP(取得开牌结果)
Duration: 眯牌时间
9Step_PEEK_SHOW_BANKER_EXTRA开庄家补牌 NOTIFY_ROUND_STEP
10Step_DEALER_CONFIRM荷官确认结果阶段 NOTIFY_ROUND_STEP
11Step_ROUND_FINISHED本局结束,发送 NOTIFY_ROUND_FINISH 通知事件

执行步骤(电子类)

每经过一个step recorder.process会写入数据

顺序步骤描述
1Step_ROUND_START本局开始 (NOTIFY_ROUND_START)
2Step_DEAL_PLAYER_1派发闲家玩家手牌1 NOTIFY_ROUND_STEP(电子类预先发盖牌)
3Step_DEAL_BANKER_1派发庄家玩家手牌1 NOTIFY_ROUND_STEP(电子类预先发盖牌)
4Step_DEAL_PLAYER_2派发闲家玩家手牌2 NOTIFY_ROUND_STEP(电子类预先发盖牌)
5Step_DEAL_BANKER_2派发庄家玩家手牌2 NOTIFY_ROUND_STEP(电子类预先发盖牌)
6Step_ROUND_BET开始下注 (NOTIFY_ROUND_BET)
Duration: 下注秒数
ex Duration:45 = 45秒
7Step_NO_MORE_BET停止下注(NOTIFY_ROUND_NO_MORE_BET)
Duration: 下注秒数
ex Duration:45 = 45秒
8Step_SHOW_PLAYER_1开闲侧玩家手牌1 NOTIFY_ROUND_STEP(取得开牌结果)
9Step_SHOW_BANKER_1开庄侧玩家手牌1 NOTIFY_ROUND_STEP(取得开牌结果)
10Step_SHOW_PLAYER_2开闲侧玩家手牌2 NOTIFY_ROUND_STEP(取得开牌结果)
11Step_SHOW_BANKER_2开庄侧玩家手牌2 NOTIFY_ROUND_STEP(取得开牌结果)
12Step_DEAL_PLAYER_EXTRA开闲侧玩家补牌 NOTIFY_ROUND_STEP(取得开牌结果)
13Step_DEAL_BANKER_EXTRA开庄侧玩家补牌 NOTIFY_ROUND_STEP(取得开奖结果)
14Step_DEALER_CONFIRM荷官确认结果阶段 NOTIFY_ROUND_STEP
15Step_ROUND_FINISHED本局结束,发送 NOTIFY_ROUND_FINISH 通知结算

游戏事件通知

该桌事件通知 (provider 解析)

事件类型描述
GameNotifyType_NOTIFY_GAME_PROVIDE_STATE_CHANGE桌状态变更
GameNotifyType_NOTIFY_GAME_DEALER_LOGIN荷官登入 代码名字相关
GameNotifyType_NOTIFY_GAME_DEALER_LOGOUT荷官登出 代码名字相关
GameNotifyType_NOTIFY_GAME_CHANGING_SHOE换靴
GameNotifyType_NOTIFY_GAME_CAPTURE荷官拍照使用的缩图画面

该桌班局事件通知 (ShiftRecord 解析)

事件类型描述
GameNotifyType_NOTIFY_SHIFT_START班次开始
GameNotifyType_NOTIFY_SHIFT_END班次结束

该桌班局事件通知 (ShoeRecord 解析)

事件类型描述
GameNotifyType_NOTIFY_SHOE_START靴号开始
GameNotifyType_NOTIFY_SHOE_END靴号结束

该局相关 (RoundRecord解析)

事件类型描述
GameNotifyType_NOTIFY_ROUND_START通知游戏开始(可用开始下注起始 可忽略)
GameNotifyType_NOTIFY_ROUND_BET通知游戏开始下注
GameNotifyType_NOTIFY_ROUND_NO_MORE_BET通知游戏停止下注
GameNotifyType_NOTIFY_ROUND_STEP通知游戏该局历程
GameNotifyType_NOTIFY_ROUND_FINISH通知游戏该局结果
GameNotifyType_NOTIFY_ROUND_CANCEL通知游戏该局取消
GameNotifyType_NOTIFY_ROUND_PLAYBACK通知游戏该局回放影像网址
GameNotifyType_NOTIFY_ROUND_CANCEL_AFTER_ROUND事后该局取消结果
GameNotifyType_NOTIFY_ROUND_MODIFY_AFTER_ROUND事后异动牌面结果
GameNotifyType_NOTIFY_ROUND_FINISH_AFTER_ROUND通过后台输入结果

解析牌面示例

根据 GameNotifyType_NOTIFY_ROUND_STEP 事件解析 roundRecord 来得到目前场上开了哪些牌型

import (
pbBaccarat "github.com/wecasino/wecasino-proto/pbgo/games/baccarat"
pbRecorder "github.com/wecasino/wecasino-proto/pbgo/recorder"
)

func ParseRoundCardsIndex(ctx context.Context, round *pbRecorder.RoundRecord) (b1, b2, b3, p1, p2, p3 string) {
banker := round.Seats[int32(pbGames.FlowSeat_BANKER)]
bankerNormal := banker.GetCards()[int32(pbBaccarat.ResourceType_NORMAL)].GetList()
if len(bankerNormal) > 0 {
b1 = bankerNormal[0].GetCode()
}
if len(bankerNormal) > 1 {
b2 = bankerNormal[1].GetCode()
}
bankerExtra := banker.GetCards()[int32(pbBaccarat.ResourceType_EXTRA)].GetList()
if len(bankerExtra) > 0 {
b3 = bankerExtra[0].GetCode()
}

player := round.Seats[int32(pbGames.FlowSeat_PLAYER)]
playerNormal := player.GetCards()[int32(pbBaccarat.ResourceType_NORMAL)].GetList()
if len(playerNormal) > 0 {
p1 = playerNormal[0].GetCode()
}
if len(playerNormal) > 1 {
p2 = playerNormal[1].GetCode()
}
playerExtra := player.GetCards()[int32(pbBaccarat.ResourceType_EXTRA)].GetList()
if len(playerExtra) > 0 {
p3 = playerExtra[0].GetCode()
}
return
}

财神号码说明

roundRecord 属性内有 FortuneRate 显示卡牌对应倍率,于停止下注时公布,若场上有中对应牌神照游戏规则赔率调整。

示例:map["CLUB_J":2 "DIAMOND_8":8 "HEART_3":3 "HEART_Q":2]

解析示例

func ParseRoundLucky(ctx context.Context, round *pbRecorder.RoundRecord) map[uint8]uint16 {
roundLuckyMap := map[uint8]uint16{}
for cardCode, rate := range round.FortuneRates {
poker, err := cards.ParsePokerCode(cardCode)
if err == nil {
roundLuckyMap[poker] = uint16(rate)
}
}
return roundLuckyMap
}