# 哈希色碟 定義表 --- 下注, 輸贏, 籌碼限額 ... ``` [雙, 單, 4紅, 4白, 1白3紅, 1紅三白] ``` ## client -> server 为cli端请求srv端的cmd, 透过 cbId 做消息配对, 响应后c端先判断 err 字段是否为空作例外处理. RoomStatus --- 请求参数: { "svr": "xocdia", // <string> 游戏名 "route": "xocdia.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" >[雙, 單, 4紅, 4白, 1白3紅, 1紅三白] 比值 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" >[雙, 單, 4紅, 4白, 1白3紅, 1紅三白] 比值 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" >[雙, 單, 4紅, 4白, 1白3紅, 1紅三白] 比值 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": { "23": { "id": 23, "name": "X123", "gametype_name": "哈希色碟", "from_wallet": "TCTfPcF1wTRDK1qFAb7w2zGjF11WE9v8DA", "to_wallet": "TRCJhQw5u4F3wZ1PkY199p3jm2XN4WjKYR", "bet_level": [ 10000000, 50000000, 100000000, 200000000, 500000000, 1000000000 ], "player_bet_upper_limit": [ 1000000000, 1000000000, 1000000000, 1000000000, 1000000000, 1000000000 ], "player_bet_lower_limit": [ 10000000, 10000000, 10000000, 10000000, 10000000, 10000000 ], "area_bet_upper_limit": [ 100000000000, 100000000000, 100000000000, 100000000000, 100000000000, 100000000000 ], "tmp_bet_balance_limit": 10000000000 } }, "err": null } ``` JoinGame --- 请求参数: ``` { "svr": "xocdia", "route": "xocdia.joinGame", "args": { "room_id":23 }, "cbId": 3 } ``` 返回数据: ``` { "svr": "", "route": "", "cbId": 3, "args": { "info": { "id": 23, "name": "X123", "gametype_name": "哈希色碟", "from_wallet": "TCTfPcF1wTRDK1qFAb7w2zGjF11WE9v8DA", "to_wallet": "TRCJhQw5u4F3wZ1PkY199p3jm2XN4WjKYR", "bet_level": [ 10000000, 50000000, 100000000, 200000000, 500000000, 1000000000 ], "player_bet_upper_limit": [ 1000000000, 1000000000, 1000000000, 1000000000, 1000000000, 1000000000 ], "player_bet_lower_limit": [ 10000000, 10000000, 10000000, 10000000, 10000000, 10000000 ], "area_bet_upper_limit": [ 100000000000, 100000000000, 100000000000, 100000000000, 100000000000, 100000000000 ], "tmp_bet_balance_limit": 10000000000 }, "self": { "id": 9896316, "nickname": "666666" }, "player_count": 2, "history": { "history": [ { "code": [ 原始哈希末四碼 "f", "0", "a", "7" ], "Color": [ 哈希轉顏色1白2紅 EX:[1,1,2,1] 白 白 紅 白 2, 1, 2, 1 ], "win_area": [ 1, 雙 -1, 單 -1, 4紅 -1, 4白 -1, 1白3紅 -1 1紅3白 ], "OddEven": 0 }, ], "win_ratio": [ 52, 雙 雙單為選桌廳館使用 48, 單 6, 4紅 [4紅 4白 1白3紅 1紅3白] 桌內使用 4, 4白 13, 1白3紅 15 1紅3白 ], "good_road": 0, const: 0, 1, 2, 3, 4, "good_road_name": "沒有" "沒有""雙跳" "單跳" "4連單" "4連雙" }, "room_chips": [ 0, 0, 0, 0, 0, 0 ], "bets": [ 0, 0, 0, 0, 0, 0 ], "room_remain_chips": [ 100000000000, 100000000000, 100000000000, 100000000000, 100000000000, 100000000000 ], "round_uuid": "BXDX1232210190020", "bet_ratio": [ 55, 雙 45 單 ] }, "err": null } ``` Leave --- 请求参数: ``` { "svr": "xocdia", "route": "xocdia.leave", "args": {}, "cbId": 3 } ``` 返回数据: ``` { "svr": "", "route": "", "cbId": 3, "args": "成功啦", "err": "" } ``` Bet --- 请求参数: ``` { "svr": "football", "route": "football.bet", "args": { "bets":[0,10000000,0,0,0,10000000], //雙,單,4紅,4白,1白3紅,1紅三白, "room_id":23 }, "cbId": 3 } ``` 返回数据: ``` { "svr": "", "route": "", "cbId": 3, "args": { "room_id": 23, "room_chips": [ 10000000, 10000000, 0, 0, 0, 20000000 ], "room_remain_chips": [ 100000000000, 100000000000, 100000000000, 100000000000, 100000000000, 99980000000 ], "my_bets": [ 0, 10000000, 0, 0, 0, 10000000 ], "before_balance": 100530000000, "after_balance": 100510000000, "bet_ratio": [ 50, 50 ] }, "err": null } ``` server -> client -- RestStage --- 推送时间: 休息阶段开始 route:"xocdia.restStage" ``` { "svr": "", "route": "xocdia.restStage", "cbId": 0, "args": { "cd": 5, "cd_max": 5, "msg": "等待開局", "round_uuid": "BXDX1232210190039" }, "err": "" } ``` RestStageMid --- 推送时间: 中途加入休息阶段 route:"xocdia.restStageMid" ``` { "svr": "", "route": "xocdia.restStageMid", "cbId": 0, "args": { "cd": 2, "cd_max": 5, "msg": "等待開局" }, "err": "" } ``` BetStage --- 推送时间: 下注阶段开始 route:"xocdia.restStage" ``` { "svr": "", "route": "xocdia.betStage", "cbId": 0, "args": { "cd": 25, "cd_max": 25, "msg": "開始下注" }, "err": "" } ``` BetStageMid --- 推送时间: 中途加入下注阶段 route:"xocdia.restStageMid" ``` { "svr": "", "route": "xocdia.betStageMid", "cbId": 0, "args": { "cd": 10, "cd_max": 25, "msg": "開放下注" }, "err": "" } ``` HashStage --- 推送时间: 開始取得哈希 route:"xocdia.restStage" { "svr": "", "route": "xocdia.hashStage", "cbId": 0, "args": { "cd": 30, "cd_max": 30, "msg": "等待哈希值" }, "err": "" } HashStageMid --- 推送时间: 中途加入取哈希阶段 route:"xocdia.restStageMid" ``` { "svr": "", "route": "xocdia.hashStageMid", "cbId": 0, "args": { "cd": 6, "cd_max": 30, "msg": "等待哈希值" }, "err": "" } ``` SettleStage --- ``` 返回數據: { "svr": "", "route": "xocdia.settleStage", "cbId": 0, "args": { "cd": 23, "cd_max": 23, "msg": "結算階段", "block_hash": "0000000001b1a4816b66cf135eab40f292471a501a41883572f60db0a3652b6c", "block_number": 28419201, "block_tx_id": "b885dff3d54b7908b20ca7bfecb8af801c88a8258b6c83e134686b4670f458f5", "code": [ "2", "b", "6", "c" ], "color": [ 1, 2, 1, 2 ], "win_area": [ 1, -1, -1, -1, -1, -1 ], "win_ratio": [ 53, 47, 4, 6, 12, 15 ] }, "err": null } ``` SettleStageMid --- 推送时间: 中途加入結算階段 返回數據: ``` { "svr": "", "route": "xocdia.settleStageMid", "cbId": 0, "args": { "cd": 7, "cd_max": 23, "msg": "结算完成", "block_hash": "0000000001b1a6d8eb0d541c434bbca071e26f00095ea7b0f9b33967dc72a29b", "block_number": 28419800, "block_tx_id": "5d69df12a6760ab616c8986c267af4ad62b3ae1c8ddbe4b9a2418cd4dd61cfab", "code": [ "a", "2", "9", "b" ], "color": [ 2, 1, 2, 2 ], "win_area": [ -1, 1, -1, -1, -1, 1 ], "win_ratio": [ 53, 47, 4, 6, 14, 14 ] }, "err": null } ``` RoomPlayerCounter --- 推送时间: 每n秒同步給房內玩家 route: "football.roomPlayerCounter" ``` { "svr": "", "route": "xocdia.roomPlayerCounter", "cbId": 0, "args": 1, // 人數 "err": "" } ``` ChangeStage --- 推送时间: 加入观察者后, 每局切换都以这个做路子 route: "football.changeStage" 返回數據: ``` { "svr": "", "route": "xocdia.changeStage", "cbId": 0, "args": { "id": 23, "stage": 1, "stage_name": "下注階段", "cd": 11, "cd_max": 20, "history": { "history": [ { "code": [ "3", "3", "3", "e" ], "Color": [ 1, 1, 1, 2 ], "win_area": [ -1, 1, -1, -1, 1, -1 ], "OddEven": 0 }, { "code": [ "a", "a", "1", "0" ], "Color": [ 2, 2, 1, 1 ], "win_area": [ 1, -1, -1, -1, -1, -1 ], "OddEven": 0 }, "win_ratio": [ 56, 44, 3, 4, 17, 10 ], "good_road": 0, "good_road_name": "沒有" }, "player_count": 1, "bets": [ 0, 0, 0, 0, 0, 0 ] }, "err": null } ``` SettleReport --- 返回數據: ``` {"svr":"", "route":"xocdia.settleReport", "cbId":0, "args":{ "id":"BXDX1232210190118-07902186", "round_uuid":"BXDX1232210190118", "game_type":21, "game_code":"BXD", "game_name":"哈希色碟", "room_id":23, "round":118, "sub_round":0, "player_id":7902186, "dealer_id":0, "total_bet":50000000, "you_xiao_tou_zhu":50000000, "you_xiao_ying_fen":0, "total_winlose":-50000000, "bets":[ 0, 50000000, 0, 0, 0, 0 ], "total_real_bet":0, "prepay":0, "winloses":[ 0, -50000000, 0, 0, 0, 0 ], "date":"" ,"created_at":"2022-10-19T15:03:07.90767289+08:00", "type":1, "status":1, "currency":"TWD"}, "err":null } ```