跳至主要内容

百家樂 (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
}