# 龍虎鬥 ## 定義表 下注, 輸贏, 籌碼限額 ... [虎, 龍, 和,] ## client -> server 为cli端请求srv端的cmd, 透过 cbId 做消息配对, 响应后c端先判断 err 字段是否为空作例外处理. ### RoomStatus 请求参数: { "svr": "drogontiger", // <string> 游戏名 "route": "drogontiger.roomStatus", // <string> 游戏名.的cmd "args": null, // <any> "cbId": 3 } <table> <thead class="ant-table-thead"> <tr> <th key="name" style="width: 500px">名称</th> <th key="type">类型</th> <th key="required">是否必须</th> <th key="default">默认值</th> <th key="desc">备注</th> <th key="sub">其他信息</th> </tr> </thead> <tbody className="ant-table-tbody"> <tr key="0-0"> <td key="0"> <span style="padding-left: 0px" ><span style="color: #8c8a8a"></span> svr</span > </td> <td key="1"><span>string</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap"></span></td> <td key="5"></td> </tr> <tr key="0-1"> <td key="0"> <span style="padding-left: 0px" ><span style="color: #8c8a8a"></span> route</span > </td> <td key="1"><span>string</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap"></span></td> <td key="5"></td> </tr> <tr key="0-2"> <td key="0"> <span style="padding-left: 0px" ><span style="color: #8c8a8a"></span> cbId</span > </td> <td key="1"><span>number</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap"></span></td> <td key="5"></td> </tr> <tr key="0-3"> <td key="0"> <span style="padding-left: 0px" ><span style="color: #8c8a8a"></span> args</span > </td> <td key="1"><span>object</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap"></span></td> <td key="5"></td> </tr> <tr key="0-3-0"> <td key="0"> <span style="padding-left: 20px" ><span style="color: #8c8a8a">├-</span> 1</span > </td> <td key="1"><span>object</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap"></span></td> <td key="5"></td> </tr> <tr key="0-3-0-0"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> id</span > </td> <td key="1"><span>number</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap"></span></td> <td key="5"></td> </tr> <tr key="0-3-0-1"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> name</span > </td> <td key="1"><span>string</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap">房间标题</span></td> <td key="5"></td> </tr> <tr key="0-3-0-2"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> gametype_name</span > </td> <td key="1"><span>string</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap">游戏代号</span></td> <td key="5"></td> </tr> <tr key="0-3-0-3"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> from_wallet</span > </td> <td key="1"><span>string</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap">钱包 from</span></td> <td key="5"></td> </tr> <tr key="0-3-0-4"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> to_wallet</span > </td> <td key="1"><span>string</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap">钱包 to</span></td> <td key="5"></td> </tr> <tr key="0-3-0-5"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> bet_level</span > </td> <td key="1"><span>number []</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap">筹码 下注阵列</span></td> <td key="5"> <p key="3"> <span style="font-weight: '700'">item 类型: </span><span>number</span> </p> </td> </tr> <tr key="array-1"> <td key="0"> <span style="padding-left: 60px" ><span style="color: #8c8a8a">├─</span> </span> </td> <td key="1"><span></span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"> <span style="white-space: pre-wrap">筹码 比值 1: 10000</span> </td> <td key="5"></td> </tr> <tr key="0-3-0-6"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> player_bet_upper_limit</span > </td> <td key="1"><span>number []</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"> <span style="white-space: pre-wrap">个人上限 比值 1: 10000</span> </td> <td key="5"> <p key="3"> <span style="font-weight: '700'">item 类型: </span><span>number</span> </p> </td> </tr> <tr key="array-2"> <td key="0"> <span style="padding-left: 60px" ><span style="color: #8c8a8a">├─</span> </span> </td> <td key="1"><span></span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"> <span style="white-space: pre-wrap" >[虎,龍,和,] 比值 1: 10000</span > </td> <td key="5"></td> </tr> <tr key="0-3-0-7"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> player_bet_lower_limit</span > </td> <td key="1"><span>number []</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"> <span style="white-space: pre-wrap">个人下限 比值 1: 10000</span> </td> <td key="5"> <p key="3"> <span style="font-weight: '700'">item 类型: </span><span>number</span> </p> </td> </tr> <tr key="array-3"> <td key="0"> <span style="padding-left: 60px" ><span style="color: #8c8a8a">├─</span> </span> </td> <td key="1"><span></span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"> <span style="white-space: pre-wrap" >[虎,龍,和,] 比值 1: 10000</span > </td> <td key="5"></td> </tr> <tr key="0-3-0-8"> <td key="0"> <span style="padding-left: 40px" ><span style="color: #8c8a8a">├─</span> area_bet_upper_limit</span > </td> <td key="1"><span>number []</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"> <span style="white-space: pre-wrap">单区上限 比值 1: 10000</span> </td> <td key="5"> <p key="3"> <span style="font-weight: '700'">item 类型: </span><span>number</span> </p> </td> </tr> <tr key="array-4"> <td key="0"> <span style="padding-left: 60px" ><span style="color: #8c8a8a">├─</span> </span> </td> <td key="1"><span></span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"> <span style="white-space: pre-wrap" >[虎,龍,和,] 比值 1: 10000</span > </td> <td key="5"></td> </tr> <tr key="0-4"> <td key="0"> <span style="padding-left: 0px" ><span style="color: #8c8a8a"></span> err</span > </td> <td key="1"><span>string</span></td> <td key="2">必须</td> <td key="3"></td> <td key="4"><span style="white-space: pre-wrap">错误提示</span></td> <td key="5"></td> </tr> </tbody> </table> 返回数据: ``` {** "svr": "", "route": "", "cbId": 3, "args": { "6": { "id": 6, "name": "B106", "gametypename": "區塊龍虎", "fromwallet": "TCTfPcF1wTRDK1qFAb7w2zGjF11WE9v8DA", "towallet": "TRCJhQw5u4F3wZ1PkY199p3jm2XN4WjKYR", "betlevel": [ 5000000, 10000000, 20000000, 50000000, 100000000, 250000000 ], "playerbetupperlimit": [ 500000000, 500000000, 500000000 ], "playerbetlowerlimit": [ 5000000, 5000000, 5000000 ], "areabetupperlimit": [ 20000000000, 20000000000, 20000000000 ] } }, "err": null }* ``` ### JoinGame 请求参数: { "svr": "drogontiger", "route": "drogontiger.joinGame", "args": { "room_id":6 }, "cbId": 3 } 返回数据: ``` { "svr": "", "route": "", "cbId": 3, "args": { "info": { "id": 6, "name": "B106", "gametype_name": "區塊龍虎", "from_wallet": "TCTfPcF1wTRDK1qFAb7w2zGjF11WE9v8DA", "to_wallet": "TRCJhQw5u4F3wZ1PkY199p3jm2XN4WjKYR", "bet_level": [ 5000000, 10000000, 20000000, 50000000, 100000000, 250000000 ], "player_bet_upper_limit": [ 500000000, 500000000, 500000000 ], "player_bet_lower_limit": [ 5000000, 5000000, 5000000 ], "area_bet_upper_limit": [ 20000000000, 20000000000, 20000000000 ] }, "self": { "id": 1116126, "nickname": "player888" }, "player_count": 1, "history": { "history": [ [ 1, -1, -1, 0 ], [ 1, -1, -1, 0 ], [ -1, 1, -1, 0 ], [ -1, 1, -1, 0 ], [ -1, 1, -1, 0 ], "win_ratio": [ 50, 44, 5 ], "count_win": [ 29, 26, 3 ], "good_road": 0, "good_road_name": "沒有" }, "room_chips": [ 0, 0, 0 ], "bets": [ 0, 0, 0 ], "room_remain_chips": [ 20000000000, 20000000000, 20000000000 ], "round_uuid": "BDTB1062208230631", "bet_ratio": [ 0,虎 0,龍 ] }, "err": null } ``` ### Leave 请求参数: { "svr": "drogontiger", "route": "drogontiger.leave", "args": {}, "cbId": 3 } 返回数据: { "svr": "", "route": "", "cbId": 3, "args": "成功啦", "err": "" } ### Bet 请求参数: { "svr": "drogontiger", "route": "drogontiger.bet", "args": { "bets":[0,0,100000], // 虎,龍,和, "room_id":6 }, "cbId": 3 } 返回数据: ``` { "svr": "", "route": "", "cbId": 3, "args": { "room_id": 6, "room_chips": [ 130000000, 0, 0, 0 ], "room_remain_chips": [ 19870000000, 20130000000, 20000000000, 20000000000 ], "my_bets": [ 130000000, 0, 0, 0 ], "before_balance": 27855000000, "after_balance": 27845000000, "bet_ratio": [ 100, 0 ] }, "err": null } `````` ## server -> client RestStage 推送时间: 休息阶段开始 route:"drogontiger.restStage" ``` { "svr": "", "route": "drogontiger.restStage", "cbId": 0, "args": { "cd": 5, "cd_max": 5, "msg": "等待開局", "round_uuid": "BBJB1022207270313" }, "err": "" } ``` ### RestStageMid 推送时间: 中途加入休息阶段 route:"drogontiger.restStageMid" ``` { "svr": "", "route": "drogontiger.restStageMid", "cbId": 0, "args": { "cd": 2, "cd_max": 5, "msg": "等待開局" }, "err": "" } ``` ### BetStage 推送时间: 下注阶段开始 route:"drogontiger.restStage" ``` { "svr": "", "route": "drogontiger.betStage", "cbId": 0, "args": { "cd": 25, "cd_max": 25, "msg": "開始下注" }, "err": "" } ``` ### BetStageMid 推送时间: 中途加入下注阶段 route:"dorgontiger.restStageMid" ``` { "svr": "", "route": "dorgontiger.betStageMid", "cbId": 0, "args": { "cd": 10, "cd_max": 25, "msg": "開放下注" }, "err": "" } ``` ### HashStage 推送时间: 開始取得哈希 route:"drogontiger.restStage" { "svr": "", "route": "drogontiger.hashStage", "cbId": 0, "args": { "cd": 30, "cd_max": 30, "msg": "等待哈希值" }, "err": "" } ### HashStageMid 推送时间: 中途加入取哈希阶段 route:"dorgontiger.restStageMid" ``` { "svr": "", "route": "dorgontiger.hashStageMid", "cbId": 0, "args": { "cd": 6, "cd_max": 30, "msg": "等待哈希值" }, "err": "" } ``` ### SettleStage 推送时间: 結算 ``` { "svr": "", "route": "drogontiger.settleStage", "cbId": 0, "args": { "cd": 25, "cd_max": 25, "msg": "結算階段", "block_hash": "00000000019e5cb6def9d896731339247c080d6b46de9db8239039fc85e9e372", "block_number": 27155638, "block_tx_id": "9f67d2cc475219002c4dbc26f8bc55e00c198fd20d6df7b1bc4a41b809de1a1f", "Tiger_cards": [ { "code": 40, "color": 4, "point": 2, "value": 2 } ], "Drogon_cards": [ { "code": 6, "color": 1, "point": 7, "value": 7 } ], "win_area": [ -1, 1, -1 ], "win_ratio": [ 41, 虎 51, 龍 8, 和 ] }, "err": null } ``` ### SettleStageMid 推送时间: 結算 ``` { "svr": "", "route": "drogontiger.settleStageMid", "cbId": 0, "args": { "cd": 14, "cd_max": 25, "msg": "结算完成", "block_hash": "00000000019b9eec51779bca49e94692d761863dc8c81c92a87fbcaeb568f2b7", "block_number": 26975980, "block_tx_id": "d35f54ab98749094e2aa2699fcb072f94ee58b2ab0b10dfed2b8524f461d23fe", "Drogon_cards": [ { "code": 24, "color": 2, "point": 12, "value": 12 } ], "Tiger_cards": [ { "code": 45, "color": 4, "point": 7, "value": 7 } ], "win_area": [ -1, 1, -1 ], "win_ratio": [ 48, 49, 3 ] }, "err": null } ``` ### RoomPlayerCounter ``` { "svr": "", "route": "drogontiger.roomPlayerCounter", "cbId": 0, "args": 1, // 人數 "err": "" } ``` ### ChangeStage 推送时间: 加入观察者后, 每局切换都以这个做路子 route: "drogontiger.changeStage" ### RoomPlayerBet ``` { "svr": "", "route": "", "cbId": 3, "args": { "room_chips": [ 10000000, 0, 0 ], "self": { "id": 1116126, // 內部ID "nickname": "player888"//玩家暱稱 }, "room_remain_chips": [ 19990000000, 20010000000, 20000000000 ], "my_bets": [ 10000000, 0, 0 ], "before_balance": 995200000, "after_balance": 985200000, "bet_ratio": [ 100, 0 ] }, "err": null } ``` ### SettleReport ``` 返回數據: { "svr":"", "route":"drogontiger.settleReport", "cbId":0, "args":{ "id":"BDTB1062208290953-08455549", "round_uuid":"BDTB1062208290953", "game_type":18, "game_code":"BDT", "game_name":"區塊龍虎", "room_id":6, "round":953, "sub_round":0, "player_id":8455549, "dealer_id":0, "total_bet":100000000, "you_xiao_tou_zhu":100000000, "you_xiao_ying_fen":100000000, "total_winlose":100000000, "bets": [ 100000000, 0, 0 ], "prepay":0, "winloses": [ 100000000, 0, 0 ], "date":"", "created_at":"2022-08-29T16:25:46.066370477+08:00", "type":1, "status":1, "currency":"TWD"}, "err":null } ```