From 4e79f135ce92a283698ad77d3960badf5f8bec29 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:19:43 +0800 Subject: [PATCH 01/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BA=8B=E4=BB=B6=E5=B8=B8=E9=87=8F=E4=B8=8E?= =?UTF-8?q?=20GameState=20=E9=AA=A8=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GameState 是服务端快照的镜像、前端 SSOT:只镜像不派生、字段名对齐协议、 缺字段不兜底。reset 清对局态但保留 mySeat 与 options(跨局不变)。 事件只带「发生了什么」,数据由订阅者从 GameState 读,避免同一份数据两处存。 Co-Authored-By: Claude Opus 5 (1M context) --- client/js/01_SubGame/codes/state/Events.js | 37 +++++++ client/js/01_SubGame/codes/state/GameState.js | 102 ++++++++++++++++++ client/tests/test_gamestate.js | 56 ++++++++++ 3 files changed, 195 insertions(+) create mode 100644 client/js/01_SubGame/codes/state/Events.js create mode 100644 client/js/01_SubGame/codes/state/GameState.js create mode 100644 client/tests/test_gamestate.js diff --git a/client/js/01_SubGame/codes/state/Events.js b/client/js/01_SubGame/codes/state/Events.js new file mode 100644 index 0000000..652ccbc --- /dev/null +++ b/client/js/01_SubGame/codes/state/Events.js @@ -0,0 +1,37 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_Events: 玩法事件常量 /////////////////////////// +/////////////////////////////////////////////////////////////// +// 前端红线:框架保持游戏中立,玩法专属事件由子游戏追加到 EventBus.Events。 +// +// 【事件只带「发生了什么」,不带数据】——订阅者从 EQW_GameState 读。 +// 这样同一份数据不会在事件载荷与状态里各存一份(SSOT)。 +// 唯一例外是 EQW_RPC_FAILED,它带 {rpc, errcode}:那是一次性的错误信息, +// 不属于对局状态、不该进 GameState。 +var EQW_Events = EQW_Events || { + + EQW_RESET: 'eqw.reset', //新一局发牌,全部清场 + EQW_HAND_CHANGED: 'eqw.hand_changed', //自己手牌变化 + EQW_CALL_CHANGED: 'eqw.call_changed', //叫分推进 + EQW_BANKER_SET: 'eqw.banker_set', //上庄 + EQW_MAIN_SET: 'eqw.main_set', //选主 + EQW_BURY_DONE: 'eqw.bury_done', //埋牌完成 + EQW_CARD_PLAYED: 'eqw.card_played', //有人出牌 + EQW_TRICK_END: 'eqw.trick_end', //一轮结束(chupai3 带 maxseat) + EQW_TURN_CHANGED: 'eqw.turn_changed', //控制权或倒计时变化 + EQW_MINGPAI: 'eqw.mingpai', //收到明牌数据 + EQW_TIP: 'eqw.tip', //收到对家提示 + EQW_ASET_RESULT: 'eqw.aset_result', //小局结算 + EQW_ACCOUNT_RESULT: 'eqw.account_result', //大局/解散结算 + EQW_READY_CHANGED: 'eqw.ready_changed', //有人准备 + EQW_RESYNC_ALL: 'eqw.resync_all', //重连/开局全量重画 + EQW_RPC_FAILED: 'eqw.rpc_failed' //失败回包 {rpc, errcode} +}; + +//追加到框架事件总线的事件表(框架不认识玩法事件,由子游戏注册) +if (typeof EventBus !== 'undefined' && EventBus.Events) { + for (var _eqwEvtKey in EQW_Events) { + if (EQW_Events.hasOwnProperty(_eqwEvtKey)) { + EventBus.Events[_eqwEvtKey] = EQW_Events[_eqwEvtKey]; + } + } +} diff --git a/client/js/01_SubGame/codes/state/GameState.js b/client/js/01_SubGame/codes/state/GameState.js new file mode 100644 index 0000000..cd1b747 --- /dev/null +++ b/client/js/01_SubGame/codes/state/GameState.js @@ -0,0 +1,102 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_GameState: 服务端快照的镜像(前端 SSOT)//////// +/////////////////////////////////////////////////////////////// +// 前端红线「视图 = f(服务端快照)」的落点:本对象只存【服务端下发过的字段】, +// 不存任何前端算出来的结论。手牌排序、牌面标记、花色统计等由 core/ 的纯函数 +// 在渲染时现算,不落地成状态。 +// +// 三条硬约束: +// 1. 只镜像不派生——存进来的必须是服务端给过的 +// 2. 字段名对齐协议——协议叫 currcall 就叫 currcall,便于逐条核对 +// 3. 缺字段不兜底——包里没有的保持原值,不填默认值掩盖;必需字段缺失 +// 则 console.error 并跳过该包(服务端漏发,修在服务端) +var EQW_GameState = EQW_GameState || { + + //数据分组名(snapshot / reset 按此遍历;新增分组要同步加进来) + _GROUPS: ['room', 'aset', 'turn', 'call', 'my', 'table', 'result'], + + //—— 房间级(跨小局)—— + room: { + asetCount: 0, //总局数 ← fapai.asetcount / deskinfo.count / setRoomDes + asetIdx: 0, //当前第几局 ← fapai.asetidx / deskinfo.idx + mySeat: -1, //自己的座位 ← 平台 C_Player.seat + playerScores: [], //三家总积分 ← deskinfo.PlayerInfo + options: null //roomtype 解析结果 + }, + + //—— 小局级 —— + aset: { + step: 0, //1叫分 2选主/投降 3埋牌 5出牌 6结算 + banker: -1, + call: -1, //庄家叫分 + multiple: 0, //基础子数 + flower: 0, //主牌花色(0 = 未选主) + curmultiple: 0, //当前抓分倍数(带符号,服务端权威,前端不自算) + grade: 0, //闲家已捡分 + baozhu: 0, //是否已有人报无主 + touxiang: 0 //是否允许投降 + }, + + //—— 当前控制权与倒计时(任何阶段都读这里)—— + turn: { + seat: -1, //该谁操作 + countdown: 0 //展示用秒数;服务端无对应定时器,归零【不做任何界面推进】 + }, + + //—— 叫分过程 —— + call: { + currcall: 0, + calls: [null, null, null] //null 未叫 / 0 不叫 / >0 叫了多少 + }, + + //—— 自己 —— + my: { + cards: [], + mustCard: [], //本轮必出牌(服务端建议,只发给轮到的那家) + bottomCards: [], //底牌(庄家恒有;闲家仅 70 分坐庄时有) + buryCards: [] //埋牌底牌(仅庄家) + }, + + //—— 桌面 —— + table: { + ancard3s: 0, //开底标志(70 分坐庄) + playproc: null, + pushlist: [], + seatlist: [], + liangpai: null, + mingpai: null + }, + + //—— 结算 —— + result: { + chupai: null, + bottom: null, + aset: null, + account: null + }, + + //新一局开局时清空对局态;room.mySeat 与 room.options 跨局不变,不清 + reset: function () { + this.room.asetIdx = 0; + this.room.playerScores = []; + + this.aset = { step: 0, banker: -1, call: -1, multiple: 0, flower: 0, + curmultiple: 0, grade: 0, baozhu: 0, touxiang: 0 }; + this.turn = { seat: -1, countdown: 0 }; + this.call = { currcall: 0, calls: [null, null, null] }; + this.my = { cards: [], mustCard: [], bottomCards: [], buryCards: [] }; + this.table = { ancard3s: 0, playproc: null, pushlist: [], seatlist: [], + liangpai: null, mingpai: null }; + this.result = { chupai: null, bottom: null, aset: null, account: null }; + }, + + //深拷贝快照(只含数据分组,不含方法),供测试做「增量 vs 全量」比对 + snapshot: function () { + var out = {}; + for (var i = 0; i < this._GROUPS.length; i++) { + var g = this._GROUPS[i]; + out[g] = JSON.parse(JSON.stringify(this[g])); + } + return out; + } +}; diff --git a/client/tests/test_gamestate.js b/client/tests/test_gamestate.js new file mode 100644 index 0000000..d8e3a35 --- /dev/null +++ b/client/tests/test_gamestate.js @@ -0,0 +1,56 @@ +// GameState 骨架:初始值、reset 的清空范围、snapshot 深拷贝 +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); + +// ---- 事件常量已追加进 EventBus.Events ---- +t.eq('事件常量非空', Object.keys(EQW_Events).length > 0, true); +t.eq('RESET 已入 EventBus.Events', EventBus.Events.EQW_RESET, EQW_Events.EQW_RESET); +t.eq('事件名互不重复', + Object.keys(EQW_Events).length, + Object.keys(EQW_Events).map(k => EQW_Events[k]).filter((v, i, a) => a.indexOf(v) === i).length); + +// ---- 初始值 ---- +t.eq('初始 mySeat', EQW_GameState.room.mySeat, -1); +t.eq('初始 banker', EQW_GameState.aset.banker, -1); +t.eq('初始 flower', EQW_GameState.aset.flower, 0); +t.eq('初始手牌', EQW_GameState.my.cards, []); +t.eq('初始三家叫分', EQW_GameState.call.calls, [null, null, null]); + +// ---- snapshot 是深拷贝、且不含方法 ---- +EQW_GameState.my.cards = [1, 2, 3]; +const snap = EQW_GameState.snapshot(); +t.eq('snapshot 取到值', snap.my.cards, [1, 2, 3]); +EQW_GameState.my.cards.push(4); +t.eq('snapshot 是深拷贝(不随后续修改)', snap.my.cards, [1, 2, 3]); +t.eq('snapshot 不含方法', typeof snap.reset, 'undefined'); +t.eq('snapshot 含全部分组', + Object.keys(snap).sort(), + ['aset', 'call', 'my', 'result', 'room', 'table', 'turn']); + +// ---- reset:清对局态,但 mySeat / options 不清(跨局不变)---- +EQW_GameState.room.mySeat = 2; +EQW_GameState.room.options = { climb: 1 }; +EQW_GameState.aset.banker = 1; +EQW_GameState.aset.flower = 3; +EQW_GameState.table.pushlist = [[1], [2]]; +EQW_GameState.result.aset = { grade: 5 }; +EQW_GameState.reset(); + +t.eq('reset 后 mySeat 保留', EQW_GameState.room.mySeat, 2); +t.eq('reset 后 options 保留', EQW_GameState.room.options, { climb: 1 }); +t.eq('reset 后 banker 清空', EQW_GameState.aset.banker, -1); +t.eq('reset 后 flower 清空', EQW_GameState.aset.flower, 0); +t.eq('reset 后 pushlist 清空', EQW_GameState.table.pushlist, []); +t.eq('reset 后 result 清空', EQW_GameState.result.aset, null); +t.eq('reset 后手牌清空', EQW_GameState.my.cards, []); + +// ---- reset 两次结果一致(幂等)---- +const afterFirst = EQW_GameState.snapshot(); +EQW_GameState.reset(); +t.eq('reset 幂等', EQW_GameState.snapshot(), afterFirst); + +process.exit(t.done('gamestate') ? 0 : 1); From a82969a23bf22a572b56f792e03c4f925cccea83 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:21:39 +0800 Subject: [PATCH 02/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=20roomtype=20=E4=BD=8D=E4=B8=B2=E8=A7=A3?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 与服务端 class.config.js 的 parse() 同规则;缺失/非字符串/过短一律按 '0', 这是协议 §0.5 明文规定的行为。已逐位对照服务端确认。 Co-Authored-By: Claude Opus 5 (1M context) --- .../js/01_SubGame/codes/state/RoomOptions.js | 34 +++++++++++++++++++ client/tests/test_roomoptions.js | 34 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 client/js/01_SubGame/codes/state/RoomOptions.js create mode 100644 client/tests/test_roomoptions.js diff --git a/client/js/01_SubGame/codes/state/RoomOptions.js b/client/js/01_SubGame/codes/state/RoomOptions.js new file mode 100644 index 0000000..99a64df --- /dev/null +++ b/client/js/01_SubGame/codes/state/RoomOptions.js @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_RoomOptions_Parse: roomtype 位串解析 /////////// +/////////////////////////////////////////////////////////////// +// 协议 §0.5:roomtype 是建房时拼好的定长数字位串(字符串),每一位 '0'/'1'。 +// 服务端解析入口是 class.config.js 的 parse(),本文件必须与之【同规则】。 +// +// 位0 局数 '0'=6局(缺省) '1'=12局 +// 位1 扣卡 '0'=房主扣卡 '1'=AA 每人扣卡 +// 位2 傍王 '0'=关 '1'=开 +// 位3 爬坡 '0'=常规算子 '1'=爬坡 +// 位4 查牌 '0'=可查牌 '1'=不查牌 +// +// 对【缺失、非字符串、过短】的 roomtype 一律按 '0' 处理(与服务端一致), +// 这是协议明文规定的行为,不是隐式兜底。 +var EQW_RoomOptions_Parse = (function() { + //取第 idx 位,越界或非字符串时按 '0' + function _bit(roomtype, idx) { + if (typeof roomtype !== 'string') { return 0; } + if (idx >= roomtype.length) { return 0; } + return roomtype.charAt(idx) === '1' ? 1 : 0; + } + + return { + parse: function (roomtype) { + return { + asetCount: _bit(roomtype, 0) ? 12 : 6, + deductAA: _bit(roomtype, 1), + bangwang: _bit(roomtype, 2), + climb: _bit(roomtype, 3), + nocheck: _bit(roomtype, 4) + }; + } + }; +})(); diff --git a/client/tests/test_roomoptions.js b/client/tests/test_roomoptions.js new file mode 100644 index 0000000..82b4c4c --- /dev/null +++ b/client/tests/test_roomoptions.js @@ -0,0 +1,34 @@ +// roomtype 位串解析(协议 §0.5),必须与服务端 class.config.js 的 parse() 同规则 +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/01_SubGame/codes/state/RoomOptions.js'); + +const P = EQW_RoomOptions_Parse.parse; + +// ---- 缺省 "00000" = 6局 / 房主扣卡 / 无傍王 / 常规算子 / 可查牌 ---- +t.eq('缺省', P('00000'), { asetCount: 6, deductAA: 0, bangwang: 0, climb: 0, nocheck: 0 }); + +// ---- 协议 §0.5 的示例:10100 = 12局 / 房主扣卡 / 傍王开 / 常规算子 / 可查牌 ---- +t.eq('示例 10100', P('10100'), { asetCount: 12, deductAA: 0, bangwang: 1, climb: 0, nocheck: 0 }); + +// ---- 逐位 ---- +t.eq('位0 局数', P('10000').asetCount, 12); +t.eq('位1 AA扣卡', P('01000').deductAA, 1); +t.eq('位2 傍王', P('00100').bangwang, 1); +t.eq('位3 爬坡', P('00010').climb, 1); +t.eq('位4 不查牌', P('00001').nocheck, 1); +t.eq('全开', P('11111'), { asetCount: 12, deductAA: 1, bangwang: 1, climb: 1, nocheck: 1 }); + +// ---- 反面:缺失/非字符串/过短一律按 '0' ---- +t.eq('undefined', P(undefined), { asetCount: 6, deductAA: 0, bangwang: 0, climb: 0, nocheck: 0 }); +t.eq('null', P(null), { asetCount: 6, deductAA: 0, bangwang: 0, climb: 0, nocheck: 0 }); +t.eq('空串', P(''), { asetCount: 6, deductAA: 0, bangwang: 0, climb: 0, nocheck: 0 }); +t.eq('过短只有两位', P('11'), { asetCount: 12, deductAA: 1, bangwang: 0, climb: 0, nocheck: 0 }); +t.eq('非字符串(数字)', P(11111), { asetCount: 6, deductAA: 0, bangwang: 0, climb: 0, nocheck: 0 }); +t.eq('非字符串(数组)', P([]), { asetCount: 6, deductAA: 0, bangwang: 0, climb: 0, nocheck: 0 }); + +// ---- 超长不报错,只取前 5 位 ---- +t.eq('超长', P('1111199999').bangwang, 1); + +process.exit(t.done('roomoptions') ? 0 : 1); From ff46d874c031819562abeaf002661cca7d301e56 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:28:11 +0800 Subject: [PATCH 03/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=AF=AD=E4=B9=89=E5=8C=96=E5=8F=91=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit route 显式写 erqiwang——RpcHelper.sendGameRpc 预设 route="room", 用它包会被路由到平台房间模块、到不了子游戏 mod.js 且不报错。 只做形状校验(牌 id 范围/去重/张数),规则合法性由服务端裁定; 不合形状即抛错、不发残缺包。测试断言发包字段集合不含任何结论字段。 Co-Authored-By: Claude Opus 5 (1M context) --- client/js/01_SubGame/codes/net/Rpc.js | 114 ++++++++++++++++++++++++++ client/tests/test_rpc_send.js | 81 ++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 client/js/01_SubGame/codes/net/Rpc.js create mode 100644 client/tests/test_rpc_send.js diff --git a/client/js/01_SubGame/codes/net/Rpc.js b/client/js/01_SubGame/codes/net/Rpc.js new file mode 100644 index 0000000..34094d2 --- /dev/null +++ b/client/js/01_SubGame/codes/net/Rpc.js @@ -0,0 +1,114 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_Rpc: 语义化发包(一操作一方法)///////////////// +/////////////////////////////////////////////////////////////// +// 前端 04 §1:业务不直接拼包,走两层封装—— +// 业务 → EQW_Rpc.xxx(意图) → RpcHelper(注入平台字段)→ 引擎发送 +// +// 【route 必须是 erqiwang】RpcHelper.sendGameRpc 预设 route="room"(平台房间模块), +// 用它包会被路由到平台、永远到不了子游戏 mod.js,而且不会有任何报错。 +// +// 【请求包只带意图,不带结论】(前端 04 §1 / 服务端 04 §8) +// 可以带:操作类型、目标标识(牌 id / 花色 / 提示类型)、座位号(仅供一致性校验)。 +// 禁止带:分数、番数、判定结果、阶段推进指令、nextSeat、handCards。 +// 前端 shared/ 的计算只用于本地提示与预校验,【结果不回传】。 +// 一句话:前端能自己推出来的东西,就是玩家能改的东西——这是防作弊的根本。 +// +// 本文件只做【形状】校验(牌 id 范围/去重/张数),不做【规则】校验 +// (这手牌能不能出、叫分够不够低由服务端裁定)。形状不合法就 fail-fast 抛错, +// 不发出残缺包——服务端会按 PARAM 拒绝,但让错误暴露在最近处更省事。 +var EQW_Rpc = EQW_Rpc || { + + APP: 'youle', + ROUTE: 'erqiwang', + + //—— 内部:取自己的座位 —— + _seat: function () { + return EQW_GameState.room.mySeat; + }, + + //—— 内部:发送 —— + _send: function (rpc, data) { + var pack = { seat: this._seat() }; + var key; + for (key in data) { + if (data.hasOwnProperty(key)) { + pack[key] = data[key]; + } + } + RpcHelper.sendRpc(this.APP, this.ROUTE, rpc, pack); + }, + + //—— 内部:牌 id 列表形状校验(协议 §0.2)—— + //必须是非空数组,元素是 0–107 的整数,互不重复 + _checkCards: function (cards, expectCount) { + if (Object.prototype.toString.call(cards) !== '[object Array]' || cards.length === 0) { + throw new Error('[EQW_Rpc] cards 必须是非空数组'); + } + if (typeof expectCount === 'number' && cards.length !== expectCount) { + throw new Error('[EQW_Rpc] cards 张数应为 ' + expectCount + ',实际 ' + cards.length); + } + var seen = {}; + for (var i = 0; i < cards.length; i++) { + var c = cards[i]; + if (typeof c !== 'number' || c !== Math.floor(c) || c < 0 || c > 107) { + throw new Error('[EQW_Rpc] 非法牌 id: ' + c + '(须为 0–107 的整数)'); + } + if (seen[c]) { throw new Error('[EQW_Rpc] 牌 id 重复: ' + c); } + seen[c] = true; + } + }, + + //—— 叫分(call: 5–70 的 5 的倍数;0 = 不叫)—— + jiaofen: function (call) { + if (typeof call !== 'number' || call !== Math.floor(call)) { + throw new Error('[EQW_Rpc] call 必须是整数'); + } + if (call !== 0 && (call < 5 || call > 70 || call % 5 !== 0)) { + throw new Error('[EQW_Rpc] 非法叫分: ' + call + '(须为 0 或 5–70 的 5 的倍数)'); + } + this._send('jiaofen', { call: call }); + }, + + //—— 投降(仅 70 分坐庄、选主阶段;合法性由服务端裁定)—— + touxiang: function () { + this._send('touxiang', {}); + }, + + //—— 选主(flower: 1方块 2梅花 3红心 4黑桃)—— + xuanzhu: function (flower) { + if (typeof flower !== 'number' || flower < 1 || flower > 4) { + throw new Error('[EQW_Rpc] 非法花色: ' + flower + '(须为 1–4)'); + } + this._send('xuanzhu', { flower: flower }); + }, + + //—— 埋牌(恒 8 张)—— + maipai: function (cards) { + this._checkCards(cards, 8); + this._send('maipai', { cards: cards }); + }, + + //—— 出牌 —— + chupai: function (cards) { + this._checkCards(cards); + this._send('chupai', { cards: cards }); + }, + + //—— 明牌(查看他家未出主牌)—— + mingpai: function () { + this._send('mingpai', {}); + }, + + //—— 出牌提示(tip: 1踩 2没分 3有分)—— + tishi: function (tip) { + if (tip !== 1 && tip !== 2 && tip !== 3) { + throw new Error('[EQW_Rpc] 非法提示类型: ' + tip + '(须为 1踩 2没分 3有分)'); + } + this._send('tishi', { tip: tip }); + }, + + //—— 准备 —— + zhunbei: function () { + this._send('zhunbei', {}); + } +}; diff --git a/client/tests/test_rpc_send.js b/client/tests/test_rpc_send.js new file mode 100644 index 0000000..50a7253 --- /dev/null +++ b/client/tests/test_rpc_send.js @@ -0,0 +1,81 @@ +// 语义化发包:route 正确、只带意图、参数形状校验 +const { load, throws } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/01_SubGame/codes/state/GameState.js'); + +// 桩掉 RpcHelper,捕获发出的包 +const sent = []; +global.RpcHelper = { + sendRpc: function (app, route, rpc, data) { sent.push({ app, route, rpc, data }); } +}; + +load('client/js/01_SubGame/codes/net/Rpc.js'); + +EQW_GameState.room.mySeat = 2; + +// ---- route 必须是 erqiwang,不是 room ---- +sent.length = 0; +EQW_Rpc.jiaofen(60); +t.eq('发了一个包', sent.length, 1); +t.eq('app', sent[0].app, 'youle'); +t.eq('route 是 erqiwang', sent[0].route, 'erqiwang'); +t.eq('rpc', sent[0].rpc, 'jiaofen'); +t.eq('业务字段', sent[0].data, { seat: 2, call: 60 }); + +// ---- seat 自动从 GameState 带上 ---- +EQW_GameState.room.mySeat = 0; +sent.length = 0; +EQW_Rpc.zhunbei(); +t.eq('seat 自动带上', sent[0].data.seat, 0); +EQW_GameState.room.mySeat = 2; + +// ---- 各方法的字段集合 ---- +const call = (fn) => { sent.length = 0; fn(); return sent[0]; }; + +t.eq('不叫', call(() => EQW_Rpc.jiaofen(0)).data, { seat: 2, call: 0 }); +t.eq('投降', call(() => EQW_Rpc.touxiang()).data, { seat: 2 }); +t.eq('选主', call(() => EQW_Rpc.xuanzhu(3)).data, { seat: 2, flower: 3 }); +t.eq('埋牌', call(() => EQW_Rpc.maipai([1,2,3,4,5,6,7,8])).data, { seat: 2, cards: [1,2,3,4,5,6,7,8] }); +t.eq('出牌', call(() => EQW_Rpc.chupai([10,11])).data, { seat: 2, cards: [10,11] }); +t.eq('明牌', call(() => EQW_Rpc.mingpai()).data, { seat: 2 }); +t.eq('提示', call(() => EQW_Rpc.tishi(1)).data, { seat: 2, tip: 1 }); +t.eq('准备', call(() => EQW_Rpc.zhunbei()).data, { seat: 2 }); + +// ---- 【核心】只带意图:所有发包的字段集合不含任何结论字段 ---- +const FORBIDDEN = ['score', 'isWin', 'phase', 'nextSeat', 'nextseat', 'handCards', + 'grade', 'multiple', 'result', 'banker', 'curmultiple', 'upgrade']; +sent.length = 0; +EQW_Rpc.jiaofen(60); EQW_Rpc.touxiang(); EQW_Rpc.xuanzhu(1); +EQW_Rpc.maipai([1,2,3,4,5,6,7,8]); EQW_Rpc.chupai([9]); +EQW_Rpc.mingpai(); EQW_Rpc.tishi(2); EQW_Rpc.zhunbei(); + +const leaked = []; +sent.forEach(p => Object.keys(p.data).forEach(k => { + if (FORBIDDEN.indexOf(k) >= 0) { leaked.push(p.rpc + '.' + k); } +})); +t.eq('发包不含任何结论字段', leaked, []); + +// ---- 参数形状校验:非法即抛错,不发残缺包 ---- +sent.length = 0; +t.eq('牌 id 非数组抛错', throws(() => EQW_Rpc.chupai('5')), true); +t.eq('空数组抛错', throws(() => EQW_Rpc.chupai([])), true); +t.eq('字符串牌 id 抛错', throws(() => EQW_Rpc.chupai(['5'])), true); +t.eq('小数牌 id 抛错', throws(() => EQW_Rpc.chupai([1.5])), true); +t.eq('越界牌 id 抛错', throws(() => EQW_Rpc.chupai([108])), true); +t.eq('负数牌 id 抛错', throws(() => EQW_Rpc.chupai([-1])), true); +t.eq('重复牌 id 抛错', throws(() => EQW_Rpc.chupai([5, 5])), true); +t.eq('埋牌非 8 张抛错', throws(() => EQW_Rpc.maipai([1,2,3])), true); +t.eq('叫分越界抛错', throws(() => EQW_Rpc.jiaofen(71)), true); +t.eq('叫分非 5 的倍数抛错', throws(() => EQW_Rpc.jiaofen(7)), true); +t.eq('花色越界抛错', throws(() => EQW_Rpc.xuanzhu(5)), true); +t.eq('提示类型越界抛错', throws(() => EQW_Rpc.tishi(4)), true); +t.eq('校验失败时一个包都没发', sent.length, 0); + +// ---- 合法边界值不抛 ---- +t.eq('牌 id 0 合法', throws(() => EQW_Rpc.chupai([0])), false); +t.eq('牌 id 107 合法', throws(() => EQW_Rpc.chupai([107])), false); +t.eq('叫分 5 合法', throws(() => EQW_Rpc.jiaofen(5)), false); +t.eq('叫分 70 合法', throws(() => EQW_Rpc.jiaofen(70)), false); + +process.exit(t.done('rpc_send') ? 0 : 1); From 65674542b3e2ff0331d7a3beb4b53a02d7bf14d1 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:32:44 +0800 Subject: [PATCH 04/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=20FORBIDDEN=20=E5=88=97=E8=A1=A8=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E5=AE=8C=E6=95=B4=E5=8D=8F=E8=AE=AE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FORBIDDEN 列表扩充到覆盖协议中服务端→客户端的全部字段名, 作为回归网防止未来在发包方法中意外泄漏服务端计算结果。 Co-Authored-By: Claude Opus 5 (1M context) --- client/tests/test_rpc_send.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/tests/test_rpc_send.js b/client/tests/test_rpc_send.js index 50a7253..8b61940 100644 --- a/client/tests/test_rpc_send.js +++ b/client/tests/test_rpc_send.js @@ -43,8 +43,15 @@ t.eq('提示', call(() => EQW_Rpc.tishi(1)).data, { seat: 2, tip: 1 }); t.eq('准备', call(() => EQW_Rpc.zhunbei()).data, { seat: 2 }); // ---- 【核心】只带意图:所有发包的字段集合不含任何结论字段 ---- +// FORBIDDEN 列表:协议中服务端→客户端方向的字段名。原则上都不该出现在客户端→服务端的包里。 +// 作为回归网:新增发包方法时若引入了服务端字段名会被它拦下。 const FORBIDDEN = ['score', 'isWin', 'phase', 'nextSeat', 'nextseat', 'handCards', - 'grade', 'multiple', 'result', 'banker', 'curmultiple', 'upgrade']; + 'grade', 'multiple', 'result', 'banker', 'curmultiple', 'upgrade', + 'cardsinhand', 'mustcard', 'seatlist', 'baozhu', 'liangpai', 'bottomcards', 'burycards', + 'ancard3s', 'countdown', 'currcall', 'chongguan', 'wang', 'naward', + 'grade_aw', 'grade_cg', 'grade_bw', 'grade_jf', 'account', 'readystate', + 'shuai', 'shuaicuo', 'cardtype', 'maxseat', 'gradecards', 'others', 'zhucards', + 'playproc', 'pushlist', 'touxiang']; sent.length = 0; EQW_Rpc.jiaofen(60); EQW_Rpc.touxiang(); EQW_Rpc.xuanzhu(1); EQW_Rpc.maipai([1,2,3,4,5,6,7,8]); EQW_Rpc.chupai([9]); From 01eb6c60b506a6a25e3dddf13183006fd5d70894 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:36:15 +0800 Subject: [PATCH 05/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E6=94=B6=E5=8C=85=E5=88=86=E5=8F=91=E5=99=A8=E4=B8=8E=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=9B=9E=E5=8C=85=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 分发器只分发不写业务。判定顺序上先看 data.success,失败包一律先分流给 FailHandler——协议规定失败回包的 rpc 与请求同名(chupai 失败回 chupai, 成功走 chupai1/2/3),不先分流则每个业务 handler 都要自己判一遍。 未知 rpc 只警告不抛错,畸形入参不崩。路由表完整性断言留待全部 handler 就位。 Co-Authored-By: Claude Opus 5 (1M context) --- client/js/01_SubGame/codes/net/Dispatcher.js | 51 +++++++++++++++++ .../codes/net/handlers/FailHandler.js | 24 ++++++++ client/tests/test_dispatcher.js | 55 +++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 client/js/01_SubGame/codes/net/Dispatcher.js create mode 100644 client/js/01_SubGame/codes/net/handlers/FailHandler.js create mode 100644 client/tests/test_dispatcher.js diff --git a/client/js/01_SubGame/codes/net/Dispatcher.js b/client/js/01_SubGame/codes/net/Dispatcher.js new file mode 100644 index 0000000..2d4a3a7 --- /dev/null +++ b/client/js/01_SubGame/codes/net/Dispatcher.js @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_Dispatcher: 唯一收包入口 + 纯路由表 //////////// +/////////////////////////////////////////////////////////////// +// 前端 04 §2:收包统一分发,一 rpc 一处理器。 +// 【本文件只分发,不写业务】——新增一种服务端推送 = 注册一条 rpc → handler。 +// +// 判定顺序(关键):先看 data.success,为 false 一律交 FailHandler、不进业务 handler。 +// 因为协议 §0.2 规定失败回包的 rpc 与【请求】同名(chupai 失败回 chupai, +// 而成功走 chupai1/2/3),不先分流的话每个业务 handler 都得自己判一遍。 +var EQW_Dispatcher = EQW_Dispatcher || { + + _handlers: {}, + + //注册一条 rpc → handler + register: function (rpc, handler) { + if (typeof rpc !== 'string' || typeof handler !== 'function') { + throw new Error('[EQW_Dispatcher] register 参数非法: ' + rpc); + } + if (this._handlers.hasOwnProperty(rpc)) { + throw new Error('[EQW_Dispatcher] rpc 重复注册: ' + rpc); + } + this._handlers[rpc] = handler; + }, + + hasHandler: function (rpc) { + return this._handlers.hasOwnProperty(rpc); + }, + + //唯一收包入口。msg = { rpc, data } + dispatch: function (msg) { + if (!msg || typeof msg.rpc !== 'string') { + console.warn('[EQW_Dispatcher] 畸形数据包,已忽略'); + return; + } + var data = msg.data || {}; + + //成败只认 data.success(前端 04 §4):失败包一律先分流 + if (data.success === false) { + EQW_FailHandler.handle(msg.rpc, data); + return; + } + + var h = this._handlers[msg.rpc]; + if (h) { + h(data); + } else { + //平台日后新增推送不该让前端崩 + console.warn('[EQW_Dispatcher] 未处理的 rpc: ' + msg.rpc); + } + } +}; diff --git a/client/js/01_SubGame/codes/net/handlers/FailHandler.js b/client/js/01_SubGame/codes/net/handlers/FailHandler.js new file mode 100644 index 0000000..634225d --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/FailHandler.js @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_FailHandler: 失败回包 ////////////////////////// +/////////////////////////////////////////////////////////////// +// 协议 §0.2:服务端受理请求时任一校验不通过,回一个【rpc 与请求同名】的失败包, +// data 只含 success:false 与 errcode,且只回给请求者。 +// +// errcode(服务端 youle_erqiwang.ERR): +// 1 PLAYER 玩家/房间/座位校验不通过 2 NODESK 牌桌或牌局不存在 +// 3 STEP 当前阶段不允许该操作 4 SEAT 位置不符或还没轮到 +// 5 PARAM 参数非法 6 RULE 规则不允许 +// +// 失败信息是【一次性】的,不属于对局状态,故不进 GameState,只随事件带出去。 +var EQW_FailHandler = EQW_FailHandler || { + + ERR: { + PLAYER: 1, NODESK: 2, STEP: 3, SEAT: 4, PARAM: 5, RULE: 6 + }, + + handle: function (rpc, data) { + var errcode = (data && typeof data.errcode === 'number') ? data.errcode : 0; + console.warn('[EQW] 请求失败: rpc=' + rpc + ' errcode=' + errcode); + EventBus.emit(EQW_Events.EQW_RPC_FAILED, { rpc: rpc, errcode: errcode }); + } +}; diff --git a/client/tests/test_dispatcher.js b/client/tests/test_dispatcher.js new file mode 100644 index 0000000..6908dd4 --- /dev/null +++ b/client/tests/test_dispatcher.js @@ -0,0 +1,55 @@ +// 分发器:success 优先分流、未知 rpc 不崩、路由表完整性 +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/net/handlers/FailHandler.js'); +load('client/js/01_SubGame/codes/net/Dispatcher.js'); + +// ---- 注册与分发 ---- +const got = []; +EQW_Dispatcher.register('testRpc', function (d) { got.push(d); }); +EQW_Dispatcher.dispatch({ rpc: 'testRpc', data: { success: true, v: 1 } }); +t.eq('成功包进业务 handler', got, [{ success: true, v: 1 }]); + +// ---- success:false 优先走 FailHandler,不进业务 handler ---- +const failed = []; +EventBus.on(EQW_Events.EQW_RPC_FAILED, function (e) { failed.push(e); }); +got.length = 0; +EQW_Dispatcher.dispatch({ rpc: 'testRpc', data: { success: false, errcode: 5 } }); +t.eq('失败包不进业务 handler', got, []); +t.eq('失败包 emit RPC_FAILED', failed, [{ rpc: 'testRpc', errcode: 5 }]); + +// ---- 失败包即使 rpc 没注册过也要被处理(如 chupai 只会以失败包出现)---- +failed.length = 0; +EQW_Dispatcher.dispatch({ rpc: 'chupai', data: { success: false, errcode: 6 } }); +t.eq('未注册 rpc 的失败包也处理', failed, [{ rpc: 'chupai', errcode: 6 }]); + +// ---- 未知 rpc 的成功包:只警告、不抛错 ---- +let threw = false; +try { EQW_Dispatcher.dispatch({ rpc: 'brandNewRpc', data: { success: true } }); } +catch (e) { threw = true; } +t.eq('未知 rpc 不抛错', threw, false); + +// ---- 畸形入参不崩 ---- +[null, undefined, {}, { rpc: 'testRpc' }, { data: {} }].forEach((bad, i) => { + let boom = false; + try { EQW_Dispatcher.dispatch(bad); } catch (e) { boom = true; } + t.eq('畸形入参 #' + i + ' 不崩', boom, false); +}); + +// ---- 路由表完整性:协议里每个服务端推送 rpc 都要有 handler ---- +// (本条在 Task 10 全部 handler 就位后才会真正通过;此刻先写下期望, +// Task 10 完成时它会自动转绿——这正是它存在的意义:漏接一个包就会红) +// Task 10 完成后取消注释以下代码块 +/* +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/state/RoomOptions.js'); +['fapai','jiaofen','shangzhuang','xuanzhu','maipai', + 'chupai1','chupai2','chupai3','mingpai','tishi','jiesuan','zhunbei'].forEach(rpc => { + t.eq('已注册 handler: ' + rpc, EQW_Dispatcher.hasHandler(rpc), true); +}); +*/ + +process.exit(t.done('dispatcher') ? 0 : 1); From 081130b020319bf9f9913cdc478a5a8f35596943 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:41:09 +0800 Subject: [PATCH 06/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=8F=91=E7=89=8C=E4=B8=8E=E5=8F=AB=E5=88=86=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fapai 是一局起点,先 reset 清上局残留(保留 mySeat 与 options)。 叫分里 0(不叫)与 null(还没叫)严格区分。上庄的 bottomcards/cards 只有庄家有, 缺字段时保持原值、不抹掉闲家已有手牌——GameState 的「缺字段不兜底」在此体现。 新增 GameState._apply 助手:按 {目标键:源键} 映射写入,源键不存在就不写。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/CallHandler.js | 61 +++++++++++++++ .../codes/net/handlers/DealHandler.js | 33 ++++++++ client/js/01_SubGame/codes/state/GameState.js | 10 +++ client/tests/test_handlers_call.js | 77 +++++++++++++++++++ 4 files changed, 181 insertions(+) create mode 100644 client/js/01_SubGame/codes/net/handlers/CallHandler.js create mode 100644 client/js/01_SubGame/codes/net/handlers/DealHandler.js create mode 100644 client/tests/test_handlers_call.js diff --git a/client/js/01_SubGame/codes/net/handlers/CallHandler.js b/client/js/01_SubGame/codes/net/handlers/CallHandler.js new file mode 100644 index 0000000..405b30c --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/CallHandler.js @@ -0,0 +1,61 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_CallHandler: 叫分(jiaofen)与上庄(shangzhuang) +/////////////////////////////////////////////////////////////// +// 协议 §3 jiaofen:seat 叫分者 / call 分数(0=不叫) / currcall 当前叫到的分 / +// multiple 该叫分对应基础子数 / nextseat 下一个叫分者 / countdown +// 协议 §4 shangzhuang:seat / call / banker / grade 庄家叫分 / multiple / +// bottomcards 底牌(庄家恒有,闲家仅 70 分时有) / ancard3s 开底标志 / +// cards 摸底后的 36 张(仅庄家) / countdown 选主倒计时 / +// touxiang 是否允许投降 / curmultiple 当前抓分倍数(带符号) +var EQW_CallHandler = EQW_CallHandler || { + + handleJiaofen: function (data) { + if (!data.hasOwnProperty('seat')) { + console.error('[EQW_CallHandler] jiaofen 缺 seat,已跳过该包'); + return; + } + + //记录这一家叫了多少:0 = 不叫,与「还没叫」(null) 区分 + if (data.hasOwnProperty('call') && data.seat >= 0 && data.seat < 3) { + EQW_GameState.call.calls[data.seat] = data.call; + } + EQW_GameState._apply(EQW_GameState.call, data, { currcall: 'currcall' }); + EQW_GameState._apply(EQW_GameState.aset, data, { multiple: 'multiple' }); + EQW_GameState._apply(EQW_GameState.turn, data, { + seat: 'nextseat', + countdown: 'countdown' + }); + + EventBus.emit(EQW_Events.EQW_CALL_CHANGED); + EventBus.emit(EQW_Events.EQW_TURN_CHANGED); + }, + + handleShangzhuang: function (data) { + if (!data.hasOwnProperty('banker')) { + console.error('[EQW_CallHandler] shangzhuang 缺 banker,已跳过该包'); + return; + } + + EQW_GameState._apply(EQW_GameState.aset, data, { + banker: 'banker', + call: 'grade', //协议里庄家叫分叫 grade + multiple: 'multiple', + touxiang: 'touxiang', + curmultiple:'curmultiple' + }); + EQW_GameState._apply(EQW_GameState.table, data, { ancard3s: 'ancard3s' }); + //底牌与摸底后的手牌只有庄家(及 70 分时的闲家)才有,缺就不写、不抹已有值 + EQW_GameState._apply(EQW_GameState.my, data, { + bottomCards: 'bottomcards', + cards: 'cards' + }); + EQW_GameState._apply(EQW_GameState.turn, data, { countdown: 'countdown' }); + + EQW_GameState.aset.step = 2; //进入选主/投降 + EQW_GameState.turn.seat = EQW_GameState.aset.banker; //控制权归庄家 + + EventBus.emit(EQW_Events.EQW_BANKER_SET); + if (data.hasOwnProperty('cards')) { EventBus.emit(EQW_Events.EQW_HAND_CHANGED); } + EventBus.emit(EQW_Events.EQW_TURN_CHANGED); + } +}; diff --git a/client/js/01_SubGame/codes/net/handlers/DealHandler.js b/client/js/01_SubGame/codes/net/handlers/DealHandler.js new file mode 100644 index 0000000..71b36c6 --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/DealHandler.js @@ -0,0 +1,33 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_DealHandler: 发牌(fapai)////////////////////// +/////////////////////////////////////////////////////////////// +// 协议 §1:asetidx 当前局数 / asetcount 总局数 / cards 自己的 28 张 / +// seat 当前等待叫分者 / countdown 叫分倒计时 +// +// fapai 是一局的起点,先 reset 清掉上一局的残留(reset 保留 mySeat 与 options)。 +var EQW_DealHandler = EQW_DealHandler || { + + handle: function (data) { + if (!data.hasOwnProperty('cards')) { + console.error('[EQW_DealHandler] fapai 缺 cards,已跳过该包'); + return; + } + + EQW_GameState.reset(); + + EQW_GameState._apply(EQW_GameState.room, data, { + asetIdx: 'asetidx', + asetCount: 'asetcount' + }); + EQW_GameState._apply(EQW_GameState.my, data, { cards: 'cards' }); + EQW_GameState._apply(EQW_GameState.turn, data, { + seat: 'seat', + countdown: 'countdown' + }); + EQW_GameState.aset.step = 1; //发完牌进入叫分阶段 + + EventBus.emit(EQW_Events.EQW_RESET); + EventBus.emit(EQW_Events.EQW_HAND_CHANGED); + EventBus.emit(EQW_Events.EQW_TURN_CHANGED); + } +}; diff --git a/client/js/01_SubGame/codes/state/GameState.js b/client/js/01_SubGame/codes/state/GameState.js index cd1b747..152d3ca 100644 --- a/client/js/01_SubGame/codes/state/GameState.js +++ b/client/js/01_SubGame/codes/state/GameState.js @@ -98,5 +98,15 @@ var EQW_GameState = EQW_GameState || { out[g] = JSON.parse(JSON.stringify(this[g])); } return out; + }, + + //把包里的字段写进目标分组。map = { 目标键: 源键 }。 + //【缺字段不兜底】源键在包里不存在就不写,保持原值——不填默认值掩盖漏发。 + _apply: function (target, src, map) { + for (var dst in map) { + if (!map.hasOwnProperty(dst)) { continue; } + var srcKey = map[dst]; + if (src.hasOwnProperty(srcKey)) { target[dst] = src[srcKey]; } + } } }; diff --git a/client/tests/test_handlers_call.js b/client/tests/test_handlers_call.js new file mode 100644 index 0000000..f48a9e6 --- /dev/null +++ b/client/tests/test_handlers_call.js @@ -0,0 +1,77 @@ +// 发牌 / 叫分 / 上庄 handler +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/net/handlers/DealHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/CallHandler.js'); + +const S = EQW_GameState; +const evts = []; +Object.keys(EQW_Events).forEach(k => EventBus.on(EQW_Events[k], () => evts.push(k))); + +// ================= fapai ================= +S.reset(); S.room.mySeat = 1; evts.length = 0; +EQW_DealHandler.handle({ success: true, asetidx: 2, asetcount: 6, + cards: [1, 2, 3], seat: 0, countdown: 15 }); + +t.eq('局数', S.room.asetIdx, 2); +t.eq('总局数', S.room.asetCount, 6); +t.eq('手牌', S.my.cards, [1, 2, 3]); +t.eq('当前叫分者', S.turn.seat, 0); +t.eq('倒计时', S.turn.countdown, 15); +t.eq('step 置为叫分', S.aset.step, 1); +t.eq('mySeat 未被 reset 冲掉', S.room.mySeat, 1); +t.eq('fapai 发了 RESET/HAND/TURN 事件', + ['EQW_RESET','EQW_HAND_CHANGED','EQW_TURN_CHANGED'].every(e => evts.indexOf(e) >= 0), true); + +// fapai 必须先 reset:上一局的残留要清掉 +S.aset.banker = 2; S.table.pushlist = [[9]]; +EQW_DealHandler.handle({ success: true, asetidx: 3, asetcount: 6, cards: [4], seat: 1, countdown: 15 }); +t.eq('fapai 清掉上局 banker', S.aset.banker, -1); +t.eq('fapai 清掉上局 pushlist', S.table.pushlist, []); + +// ================= jiaofen ================= +S.reset(); evts.length = 0; +EQW_CallHandler.handleJiaofen({ success: true, seat: 0, call: 60, currcall: 60, + multiple: 3, nextseat: 1, countdown: 15 }); +t.eq('记录该家叫分', S.call.calls, [60, null, null]); +t.eq('当前叫到的分', S.call.currcall, 60); +t.eq('基础子数', S.aset.multiple, 3); +t.eq('下一个叫分者', S.turn.seat, 1); +t.eq('jiaofen 发事件', evts.indexOf('EQW_CALL_CHANGED') >= 0, true); + +// 不叫(call = 0)也要记下来,与「还没叫」(null) 区分 +EQW_CallHandler.handleJiaofen({ success: true, seat: 1, call: 0, currcall: 60, + multiple: 3, nextseat: 2, countdown: 15 }); +t.eq('不叫记为 0,与未叫 null 区分', S.call.calls, [60, 0, null]); + +// ================= shangzhuang ================= +S.reset(); evts.length = 0; +EQW_CallHandler.handleShangzhuang({ success: true, seat: 0, call: 70, banker: 0, grade: 70, + multiple: 2, bottomcards: [1,2,3,4,5,6,7,8], ancard3s: 1, + cards: [1,2,3], countdown: 20, touxiang: 1, curmultiple: 3 }); +t.eq('庄家', S.aset.banker, 0); +t.eq('庄家叫分', S.aset.call, 70); +t.eq('基础子数', S.aset.multiple, 2); +t.eq('允许投降', S.aset.touxiang, 1); +t.eq('抓分倍数', S.aset.curmultiple, 3); +t.eq('开底标志', S.table.ancard3s, 1); +t.eq('底牌', S.my.bottomCards, [1,2,3,4,5,6,7,8]); +t.eq('摸底后手牌', S.my.cards, [1,2,3]); +t.eq('step 置为选主', S.aset.step, 2); +t.eq('控制权给庄家', S.turn.seat, 0); +t.eq('shangzhuang 发事件', + ['EQW_BANKER_SET','EQW_HAND_CHANGED'].every(e => evts.indexOf(e) >= 0), true); + +// 闲家视角:没有 cards / bottomcards(非 70 分),缺字段不能把已有值抹掉 +S.reset(); S.my.cards = [7, 8, 9]; +EQW_CallHandler.handleShangzhuang({ success: true, seat: 0, call: 55, banker: 0, grade: 55, + multiple: 4, countdown: 20, touxiang: 0, curmultiple: 3 }); +t.eq('闲家手牌不被抹', S.my.cards, [7, 8, 9]); +t.eq('闲家无底牌', S.my.bottomCards, []); +t.eq('非 70 分无开底标志', S.table.ancard3s, 0); + +process.exit(t.done('handlers_call') ? 0 : 1); From daf2708af93c181cd6e0a3bca574a7da1e3181c6 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:46:01 +0800 Subject: [PATCH 07/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E9=80=89=E4=B8=BB=E4=B8=8E=E5=9F=8B=E7=89=8C=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 选主后主牌集合变化、手牌需重排,但重排是渲染时由 core/CardOrder 现算, 不在状态里落地——GameState 只镜像不派生。 埋牌区分 burycards(埋牌底牌)与 bottomcards(底牌),两批不同的牌; 闲家无 cards/burycards 但可能有 liangpai,缺字段一律不抹已有值。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/BuryHandler.js | 36 ++++++++++++ .../codes/net/handlers/MainHandler.js | 34 +++++++++++ client/tests/test_handlers_bury.js | 58 +++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 client/js/01_SubGame/codes/net/handlers/BuryHandler.js create mode 100644 client/js/01_SubGame/codes/net/handlers/MainHandler.js create mode 100644 client/tests/test_handlers_bury.js diff --git a/client/js/01_SubGame/codes/net/handlers/BuryHandler.js b/client/js/01_SubGame/codes/net/handlers/BuryHandler.js new file mode 100644 index 0000000..e737619 --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/BuryHandler.js @@ -0,0 +1,36 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_BuryHandler: 埋牌(maipai)//////////////////// +/////////////////////////////////////////////////////////////// +// 协议 §9:cards 埋牌后手牌(仅庄家) / burycards 埋牌底牌(仅庄家) / +// seat 首出者(必为庄家) / countdown 出牌倒计时 / +// liangpai 亮牌(仅闲家 + 可查牌模式 + 庄家固定主牌达门槛) +// +// 注意 burycards(埋牌底牌,庄家埋下的 8 张)与 bottomcards(底牌,发牌留桌的 8 张) +// 是两批不同的牌,协议 §0.0 与验收清单专门警告过别写反。 +var EQW_BuryHandler = EQW_BuryHandler || { + + handle: function (data) { + if (!data.hasOwnProperty('seat')) { + console.error('[EQW_BuryHandler] maipai 缺 seat,已跳过该包'); + return; + } + + //庄家才有的两项,闲家缺字段时保持原值、不抹手牌 + EQW_GameState._apply(EQW_GameState.my, data, { + cards: 'cards', + buryCards: 'burycards' + }); + //闲家才可能有的亮牌 + EQW_GameState._apply(EQW_GameState.table, data, { liangpai: 'liangpai' }); + EQW_GameState._apply(EQW_GameState.turn, data, { + seat: 'seat', + countdown: 'countdown' + }); + + EQW_GameState.aset.step = 5; //进入出牌 + + EventBus.emit(EQW_Events.EQW_BURY_DONE); + if (data.hasOwnProperty('cards')) { EventBus.emit(EQW_Events.EQW_HAND_CHANGED); } + EventBus.emit(EQW_Events.EQW_TURN_CHANGED); + } +}; diff --git a/client/js/01_SubGame/codes/net/handlers/MainHandler.js b/client/js/01_SubGame/codes/net/handlers/MainHandler.js new file mode 100644 index 0000000..dd869f9 --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/MainHandler.js @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_MainHandler: 选主(xuanzhu)/////////////////// +/////////////////////////////////////////////////////////////// +// 协议 §7:banker 庄家 / flower 主牌花色(1方块 2梅花 3红心 4黑桃) / +// countdown 埋牌倒计时 / cards 选主后自己手上的牌 +// +// 选主后正 2 / 正 7 升格、主花色普通牌并入主牌段(design §3),手牌需整体重排—— +// 但【重排是渲染时的事】,由 core/CardOrder 现算,不在这里落地成状态。 +// +// 投降(touxiang)没有成功推送:点投降后服务端直接结算,前端收到的是 jiesuan。 +// 失败时才回一个同名的 touxiang 失败包,由 FailHandler 统一处理。 +var EQW_MainHandler = EQW_MainHandler || { + + handleXuanzhu: function (data) { + if (!data.hasOwnProperty('flower')) { + console.error('[EQW_MainHandler] xuanzhu 缺 flower,已跳过该包'); + return; + } + + EQW_GameState._apply(EQW_GameState.aset, data, { + banker: 'banker', + flower: 'flower' + }); + EQW_GameState._apply(EQW_GameState.my, data, { cards: 'cards' }); + EQW_GameState._apply(EQW_GameState.turn, data, { countdown: 'countdown' }); + + EQW_GameState.aset.step = 3; //进入埋牌 + EQW_GameState.turn.seat = EQW_GameState.aset.banker; //埋牌由庄家做 + + EventBus.emit(EQW_Events.EQW_MAIN_SET); + if (data.hasOwnProperty('cards')) { EventBus.emit(EQW_Events.EQW_HAND_CHANGED); } + EventBus.emit(EQW_Events.EQW_TURN_CHANGED); + } +}; diff --git a/client/tests/test_handlers_bury.js b/client/tests/test_handlers_bury.js new file mode 100644 index 0000000..ca7aeb3 --- /dev/null +++ b/client/tests/test_handlers_bury.js @@ -0,0 +1,58 @@ +// 选主 / 埋牌 handler +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/net/handlers/MainHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/BuryHandler.js'); + +const S = EQW_GameState; +const evts = []; +Object.keys(EQW_Events).forEach(k => EventBus.on(EQW_Events[k], () => evts.push(k))); + +// ================= xuanzhu ================= +S.reset(); evts.length = 0; +EQW_MainHandler.handleXuanzhu({ success: true, banker: 1, flower: 3, + countdown: 30, cards: [5, 6, 7] }); +t.eq('主牌花色', S.aset.flower, 3); +t.eq('庄家', S.aset.banker, 1); +t.eq('选主后手牌', S.my.cards, [5, 6, 7]); +t.eq('step 置为埋牌', S.aset.step, 3); +t.eq('控制权归庄家', S.turn.seat, 1); +t.eq('倒计时', S.turn.countdown, 30); +t.eq('选主发事件', + ['EQW_MAIN_SET','EQW_HAND_CHANGED'].every(e => evts.indexOf(e) >= 0), true); + +// 闲家视角:没有 cards,不抹已有手牌 +S.reset(); S.my.cards = [1, 2]; +EQW_MainHandler.handleXuanzhu({ success: true, banker: 0, flower: 2, countdown: 30 }); +t.eq('闲家手牌不被抹', S.my.cards, [1, 2]); +t.eq('闲家也拿到花色', S.aset.flower, 2); + +// ================= maipai ================= +S.reset(); evts.length = 0; +EQW_BuryHandler.handle({ success: true, cards: [1,2,3], burycards: [9,10,11,12,13,14,15,16], + seat: 1, countdown: 20 }); +t.eq('埋牌后手牌', S.my.cards, [1,2,3]); +t.eq('埋牌底牌', S.my.buryCards, [9,10,11,12,13,14,15,16]); +t.eq('step 置为出牌', S.aset.step, 5); +t.eq('首出者', S.turn.seat, 1); +t.eq('埋牌发事件', + ['EQW_BURY_DONE','EQW_HAND_CHANGED','EQW_TURN_CHANGED'].every(e => evts.indexOf(e) >= 0), true); + +// 闲家视角:无 cards/burycards,但可能有 liangpai +S.reset(); S.my.cards = [4, 5]; evts.length = 0; +EQW_BuryHandler.handle({ success: true, seat: 0, countdown: 20, + liangpai: { cards: [52, 53, 2, 15] } }); +t.eq('闲家手牌不被抹', S.my.cards, [4, 5]); +t.eq('闲家无埋牌底牌', S.my.buryCards, []); +t.eq('亮牌数据', S.table.liangpai, { cards: [52, 53, 2, 15] }); + +// 不达标/不查牌:无 liangpai 字段,保持 null +S.reset(); +EQW_BuryHandler.handle({ success: true, seat: 0, countdown: 20 }); +t.eq('无亮牌时保持 null', S.table.liangpai, null); + +process.exit(t.done('handlers_bury') ? 0 : 1); From 5637d63c3bc818a87bf9de23073badbb9efee006 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:51:36 +0800 Subject: [PATCH 08/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=87=BA=E7=89=8C=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 三个包字段不同:chupai1 带牌型信息、chupai1/2 带 nextseat 与 mustcard, chupai3 带 maxseat 与本轮得分。 两个易错点已覆盖:cardsinhand 只有出牌者自己有,别人出牌时缺该字段不能抹掉 自己的手牌;mustcard 只对当前轮有效,没给就要清空,否则上一轮的建议会残留。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/PlayHandler.js | 84 +++++++++++++++++++ client/tests/test_handlers_play.js | 74 ++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 client/js/01_SubGame/codes/net/handlers/PlayHandler.js create mode 100644 client/tests/test_handlers_play.js diff --git a/client/js/01_SubGame/codes/net/handlers/PlayHandler.js b/client/js/01_SubGame/codes/net/handlers/PlayHandler.js new file mode 100644 index 0000000..fafd2cf --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/PlayHandler.js @@ -0,0 +1,84 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_PlayHandler: 出牌(chupai1 / 2 / 3)/////////// +/////////////////////////////////////////////////////////////// +// 协议 §11–§13。三个包字段不完全相同: +// chupai1 首家独有:shuaicuo 甩错标志 / count 出牌数量 / flower 出牌花色 / +// cardtype 牌型 / shuai 甩牌分量构成 +// chupai1/2 有:nextseat 下一个出牌者 / mustcard 必出牌(只发给 nextseat 那一家) +// chupai3 末家独有:maxseat 本轮谁最大 / grade 本轮闲家得分 +// 共有:seat / cards / seatlist(仅可查牌) / countdown / baozhu / +// cardsinhand(仅出牌者自己有) / curmultiple(1 和 3 有) +// +// 【cardsinhand 只有出牌者自己有】:收到就更新自己的手牌;别人出牌时没这个字段, +// 绝不能抹掉自己的手牌——这正是「缺字段不兜底」要防的。 +// +// 【mustcard 没有就要清空】:它是「本轮跟牌的必出牌」,只对当前这一轮有效。 +// 上一轮的建议残留下来会让界面自动选中错误的牌。 +var EQW_PlayHandler = EQW_PlayHandler || { + + //order: 1/2/3,对应 chupai1/2/3 + handle: function (data, order) { + if (!data.hasOwnProperty('seat') || !data.hasOwnProperty('cards')) { + console.error('[EQW_PlayHandler] chupai' + order + ' 缺 seat 或 cards,已跳过该包'); + return; + } + + //—— 本轮桌面:记下这一手(谁出的、出了什么、首家的牌型信息)—— + if (!EQW_GameState.table.playproc) { EQW_GameState.table.playproc = {}; } + var proc = EQW_GameState.table.playproc; + proc.order = order; + EQW_GameState._apply(proc, data, { + seat: 'seat', + cards: 'cards', + count: 'count', + flower: 'flower', + cardtype: 'cardtype', + shuai: 'shuai', + shuaicuo: 'shuaicuo' + }); + + //—— 自己的手牌:只有出牌者本人才收到 cardsinhand —— + EQW_GameState._apply(EQW_GameState.my, data, { cards: 'cardsinhand' }); + + //—— 必出牌:本轮有效,没给就清空 —— + if (data.hasOwnProperty('mustcard')) { + EQW_GameState.my.mustCard = data.mustcard; + } else { + EQW_GameState.my.mustCard = []; + } + + //—— 牌况与报无主(仅可查牌模式下发)—— + EQW_GameState._apply(EQW_GameState.table, data, { seatlist: 'seatlist' }); + EQW_GameState._apply(EQW_GameState.aset, data, { + baozhu: 'baozhu', + curmultiple: 'curmultiple' + }); + + //—— 控制权与倒计时 —— + EQW_GameState._apply(EQW_GameState.turn, data, { + seat: 'nextseat', + countdown: 'countdown' + }); + + EventBus.emit(EQW_Events.EQW_CARD_PLAYED); + if (data.hasOwnProperty('cardsinhand')) { EventBus.emit(EQW_Events.EQW_HAND_CHANGED); } + + //—— 末家出完:本轮结束,记下谁最大、闲家得了多少分 —— + if (order === 3) { + if (!EQW_GameState.result.chupai) { EQW_GameState.result.chupai = {}; } + EQW_GameState._apply(EQW_GameState.result.chupai, data, { + seat: 'seat', + cards: 'cards', + maxseat: 'maxseat', + grade: 'grade' + }); + //本轮闲家得分累加进小局捡分;没得分时不带 grade,累计值保持不变 + if (data.hasOwnProperty('grade')) { + EQW_GameState.aset.grade = EQW_GameState.aset.grade + data.grade; + } + EventBus.emit(EQW_Events.EQW_TRICK_END); + } + + EventBus.emit(EQW_Events.EQW_TURN_CHANGED); + } +}; diff --git a/client/tests/test_handlers_play.js b/client/tests/test_handlers_play.js new file mode 100644 index 0000000..2a7ad77 --- /dev/null +++ b/client/tests/test_handlers_play.js @@ -0,0 +1,74 @@ +// 出牌 handler(chupai1/2/3) +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/net/handlers/PlayHandler.js'); + +const S = EQW_GameState; +const evts = []; +Object.keys(EQW_Events).forEach(k => EventBus.on(EQW_Events[k], () => evts.push(k))); + +// ================= chupai1(首家出牌,自己出的)================= +S.reset(); S.room.mySeat = 0; S.my.cards = [1,2,3,4]; evts.length = 0; +EQW_PlayHandler.handle({ success: true, seat: 0, cards: [1,2], count: 2, flower: 3, + cardtype: 201, nextseat: 1, countdown: 15, baozhu: 0, + cardsinhand: [3,4], curmultiple: 2, + seatlist: [[0,0,0,0,[5,2]],[0,0,0,0,[6,1]],[0,0,0,0,[7,3]]] }, 1); + +t.eq('出牌者手牌被更新', S.my.cards, [3,4]); +t.eq('下一个出牌者', S.turn.seat, 1); +t.eq('倒计时', S.turn.countdown, 15); +t.eq('抓分倍数', S.aset.curmultiple, 2); +t.eq('牌况表', S.table.seatlist.length, 3); +t.eq('出牌发事件', evts.indexOf('EQW_CARD_PLAYED') >= 0, true); + +// ================= chupai2(别人出牌)================= +// 别人出牌时没有 cardsinhand,不能抹掉自己的手牌 +S.reset(); S.room.mySeat = 0; S.my.cards = [3,4]; evts.length = 0; +EQW_PlayHandler.handle({ success: true, seat: 1, cards: [5,6], nextseat: 2, + countdown: 15, baozhu: 0 }, 2); +t.eq('别人出牌不抹自己手牌', S.my.cards, [3,4]); +t.eq('控制权推进', S.turn.seat, 2); + +// mustcard 只发给下一个出牌者 +S.reset(); S.room.mySeat = 2; +EQW_PlayHandler.handle({ success: true, seat: 1, cards: [5,6], nextseat: 2, + countdown: 15, mustcard: [7,8] }, 2); +t.eq('必出牌', S.my.mustCard, [7,8]); + +// 没有 mustcard 时要清空——否则上一轮的建议会残留 +S.reset(); S.my.mustCard = [7,8]; +EQW_PlayHandler.handle({ success: true, seat: 1, cards: [5,6], nextseat: 0, countdown: 15 }, 2); +t.eq('无 mustcard 时清空', S.my.mustCard, []); + +// ================= chupai3(末家出牌,本轮结束)================= +S.reset(); evts.length = 0; +EQW_PlayHandler.handle({ success: true, seat: 2, cards: [9,10], maxseat: 0, grade: 25, + countdown: 15, baozhu: 1, curmultiple: -2 }, 3); +t.eq('本轮最大者', S.result.chupai.maxseat, 0); +t.eq('本轮闲家得分', S.result.chupai.grade, 25); +t.eq('累计捡分', S.aset.grade, 25); +t.eq('报无主标志', S.aset.baozhu, 1); +t.eq('抓分倍数(带符号)', S.aset.curmultiple, -2); +t.eq('本轮结束发事件', evts.indexOf('EQW_TRICK_END') >= 0, true); + +// 本轮闲家没得分时不带 grade,累计分不该被抹 +S.reset(); S.aset.grade = 40; +EQW_PlayHandler.handle({ success: true, seat: 2, cards: [9,10], maxseat: 1, countdown: 15 }, 3); +t.eq('无 grade 时累计分保持', S.aset.grade, 40); + +// ================= 甩错 ================= +S.reset(); evts.length = 0; +EQW_PlayHandler.handle({ success: true, seat: 0, cards: [11], shuaicuo: 1, count: 1, + flower: 3, cardtype: 101, nextseat: 1, countdown: 15 }, 1); +t.eq('甩错标志', S.table.playproc.shuaicuo, 1); + +// ================= 缺必需字段 ================= +S.reset(); +EQW_PlayHandler.handle({ success: true, cards: [1] }, 1); //缺 seat +t.eq('缺 seat 时跳过该包', S.turn.seat, -1); + +process.exit(t.done('handlers_play') ? 0 : 1); From 5a77e4b132f960020bf369e30caa34649b4a9170 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 17:58:42 +0800 Subject: [PATCH 09/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=87=BA=E7=89=8C=20handler=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E5=B9=B6=E8=A1=A5=E5=BC=BA=20grade=20=E7=B4=AF?= =?UTF-8?q?=E5=8A=A0=E4=B8=8E=20nextseat=20=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 审查发现简报本身两处缺陷: 1. grade 累加测试断言力不足,无法区分"累加"与"仅在字段存在时赋值"两种 实现——补一条跨包连续收两个 grade 的用例(10 再 15,断言最终 25)钉住 累加语义。 2. chupai3 实际也带 nextseat(服务端在 switch 前统一设置三个包),简报 注释误写成"chupai1/2 独有";修正文件头注释,并给 chupai3 测试用例补 上 nextseat 与对应的 turn.seat 断言,使包结构与真实下发一致。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/PlayHandler.js | 4 ++-- client/tests/test_handlers_play.js | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/client/js/01_SubGame/codes/net/handlers/PlayHandler.js b/client/js/01_SubGame/codes/net/handlers/PlayHandler.js index fafd2cf..c883ee8 100644 --- a/client/js/01_SubGame/codes/net/handlers/PlayHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/PlayHandler.js @@ -4,10 +4,10 @@ // 协议 §11–§13。三个包字段不完全相同: // chupai1 首家独有:shuaicuo 甩错标志 / count 出牌数量 / flower 出牌花色 / // cardtype 牌型 / shuai 甩牌分量构成 -// chupai1/2 有:nextseat 下一个出牌者 / mustcard 必出牌(只发给 nextseat 那一家) // chupai3 末家独有:maxseat 本轮谁最大 / grade 本轮闲家得分 -// 共有:seat / cards / seatlist(仅可查牌) / countdown / baozhu / +// 共有:seat / cards / seatlist(仅可查牌) / countdown / baozhu / nextseat / // cardsinhand(仅出牌者自己有) / curmultiple(1 和 3 有) +// mustcard:三个包都可能带,但只发给 nextseat 那一家(其余两家无此属性) // // 【cardsinhand 只有出牌者自己有】:收到就更新自己的手牌;别人出牌时没这个字段, // 绝不能抹掉自己的手牌——这正是「缺字段不兜底」要防的。 diff --git a/client/tests/test_handlers_play.js b/client/tests/test_handlers_play.js index 2a7ad77..a97f483 100644 --- a/client/tests/test_handlers_play.js +++ b/client/tests/test_handlers_play.js @@ -45,21 +45,35 @@ EQW_PlayHandler.handle({ success: true, seat: 1, cards: [5,6], nextseat: 0, coun t.eq('无 mustcard 时清空', S.my.mustCard, []); // ================= chupai3(末家出牌,本轮结束)================= +// 真实的 chupai3 也带 nextseat(下一轮首家):服务端在 switch 前统一设置, +// 只有整轮结束进入结算时才会整体换成 jiesuan rpc(不会以 chupai3 到达 handler) S.reset(); evts.length = 0; EQW_PlayHandler.handle({ success: true, seat: 2, cards: [9,10], maxseat: 0, grade: 25, - countdown: 15, baozhu: 1, curmultiple: -2 }, 3); + nextseat: 0, countdown: 15, baozhu: 1, curmultiple: -2 }, 3); t.eq('本轮最大者', S.result.chupai.maxseat, 0); t.eq('本轮闲家得分', S.result.chupai.grade, 25); t.eq('累计捡分', S.aset.grade, 25); t.eq('报无主标志', S.aset.baozhu, 1); t.eq('抓分倍数(带符号)', S.aset.curmultiple, -2); +t.eq('下一轮首家', S.turn.seat, 0); t.eq('本轮结束发事件', evts.indexOf('EQW_TRICK_END') >= 0, true); // 本轮闲家没得分时不带 grade,累计分不该被抹 S.reset(); S.aset.grade = 40; -EQW_PlayHandler.handle({ success: true, seat: 2, cards: [9,10], maxseat: 1, countdown: 15 }, 3); +EQW_PlayHandler.handle({ success: true, seat: 2, cards: [9,10], maxseat: 1, + nextseat: 1, countdown: 15 }, 3); t.eq('无 grade 时累计分保持', S.aset.grade, 40); +// grade 是「本轮」得分,要跨包累加进小局捡分,不是赋值—— +// 若实现改成 aset.grade = data.grade,这条会把 25 覆盖成 15 而非累加到 25 +S.reset(); +EQW_PlayHandler.handle({ success: true, seat: 2, cards: [1,2], maxseat: 0, grade: 10, + nextseat: 0, countdown: 15 }, 3); +t.eq('第一轮捡分', S.aset.grade, 10); +EQW_PlayHandler.handle({ success: true, seat: 2, cards: [3,4], maxseat: 1, grade: 15, + nextseat: 1, countdown: 15 }, 3); +t.eq('第二轮跨包累加捡分', S.aset.grade, 25); + // ================= 甩错 ================= S.reset(); evts.length = 0; EQW_PlayHandler.handle({ success: true, seat: 0, cards: [11], shuaicuo: 1, count: 1, From 47c8a27d0dfd77838ce51bc4dc81fb2a5e6c8b60 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:01:56 +0800 Subject: [PATCH 10/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=E5=87=BA=E7=89=8C=20handler=20=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E9=87=8C=20chupai3=20=E5=90=84=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E7=9A=84=20turn.seat=20=E6=96=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 三条 chupai3 用例(不带 grade 那条、跨包累加的两条)之前都带了 nextseat 字段却没验证它,读起来像遗漏,也让"chupai3 同样会推进控制权"这件事只被 验证了一次。补齐后四条 chupai3 用例均验证 turn.seat;跨包累加的两条从 turn.seat 由 0 变 1,顺带证明了第二个包确实被处理,不只是看 grade 一个数字。 只改测试文件,PlayHandler.js 未改动。 Co-Authored-By: Claude Opus 5 (1M context) --- client/tests/test_handlers_play.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/tests/test_handlers_play.js b/client/tests/test_handlers_play.js index a97f483..1e4cf27 100644 --- a/client/tests/test_handlers_play.js +++ b/client/tests/test_handlers_play.js @@ -63,6 +63,7 @@ S.reset(); S.aset.grade = 40; EQW_PlayHandler.handle({ success: true, seat: 2, cards: [9,10], maxseat: 1, nextseat: 1, countdown: 15 }, 3); t.eq('无 grade 时累计分保持', S.aset.grade, 40); +t.eq('无 grade 时仍推进控制权', S.turn.seat, 1); // grade 是「本轮」得分,要跨包累加进小局捡分,不是赋值—— // 若实现改成 aset.grade = data.grade,这条会把 25 覆盖成 15 而非累加到 25 @@ -70,9 +71,11 @@ S.reset(); EQW_PlayHandler.handle({ success: true, seat: 2, cards: [1,2], maxseat: 0, grade: 10, nextseat: 0, countdown: 15 }, 3); t.eq('第一轮捡分', S.aset.grade, 10); +t.eq('第一轮下一轮首家', S.turn.seat, 0); EQW_PlayHandler.handle({ success: true, seat: 2, cards: [3,4], maxseat: 1, grade: 15, nextseat: 1, countdown: 15 }, 3); t.eq('第二轮跨包累加捡分', S.aset.grade, 25); +t.eq('第二轮下一轮首家(证明第二个包确被处理)', S.turn.seat, 1); // ================= 甩错 ================= S.reset(); evts.length = 0; From 070ff37db15ffd00602972319b2510193cfd7904 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:04:33 +0800 Subject: [PATCH 11/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E6=98=8E=E7=89=8C=E3=80=81=E6=8F=90=E7=A4=BA=E3=80=81=E5=87=86?= =?UTF-8?q?=E5=A4=87=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 明牌数据进 GameState(面板可反复开关查看);提示不进——它是一次性通知、 不是对局状态,重连也不重放,存下来只会变成幽灵数据,故只随事件带出。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/QueryHandler.js | 33 +++++++++++++ .../codes/net/handlers/ReadyHandler.js | 16 +++++++ client/tests/test_handlers_query.js | 47 +++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 client/js/01_SubGame/codes/net/handlers/QueryHandler.js create mode 100644 client/js/01_SubGame/codes/net/handlers/ReadyHandler.js create mode 100644 client/tests/test_handlers_query.js diff --git a/client/js/01_SubGame/codes/net/handlers/QueryHandler.js b/client/js/01_SubGame/codes/net/handlers/QueryHandler.js new file mode 100644 index 0000000..7f1a2ed --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/QueryHandler.js @@ -0,0 +1,33 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_QueryHandler: 明牌(mingpai)与提示(tishi)/// +/////////////////////////////////////////////////////////////// +// 协议 §13.6 mingpai(只回给请求者): +// seat 请求者 / others 另外两家各自未出的全部主牌 [{seat, zhucards}] +// 受理条件:可查牌模式 + 出牌阶段 + 已有【任一】玩家报无主(design §9.3) +// +// 协议 §13.8 tishi(只转发给对家,即另一闲家): +// seat 发出提示的闲家 / tip 1=踩 2=没分 3=有分 +// 注意:成功时【不给发送者回执】,只转发给对家;只有失败才回给发送者。 +// +// 明牌数据进 GameState(面板可反复开关查看),提示不进—— +// 提示是一次性的通知、不是对局状态,重连也不重放,存下来只会变成幽灵数据。 +var EQW_QueryHandler = EQW_QueryHandler || { + + handleMingpai: function (data) { + if (!data.hasOwnProperty('others')) { + console.error('[EQW_QueryHandler] mingpai 缺 others,已跳过该包'); + return; + } + EQW_GameState.table.mingpai = data.others; + EventBus.emit(EQW_Events.EQW_MINGPAI); + }, + + handleTishi: function (data) { + if (!data.hasOwnProperty('seat') || !data.hasOwnProperty('tip')) { + console.error('[EQW_QueryHandler] tishi 缺 seat 或 tip,已跳过该包'); + return; + } + //一次性通知:不进 GameState,随事件把内容带给订阅者 + EventBus.emit(EQW_Events.EQW_TIP, { seat: data.seat, tip: data.tip }); + } +}; diff --git a/client/js/01_SubGame/codes/net/handlers/ReadyHandler.js b/client/js/01_SubGame/codes/net/handlers/ReadyHandler.js new file mode 100644 index 0000000..d67c8dc --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/ReadyHandler.js @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_ReadyHandler: 准备(zhunbei)////////////////// +/////////////////////////////////////////////////////////////// +// 协议 §16:seat 位置序号。 +// 准备状态由平台的玩家信息 UI 呈现(清单 T-15:准备标识用平台的), +// 子游戏只需把事件发出去,让关心的组件(如结算面板的「下一局」按钮)响应。 +var EQW_ReadyHandler = EQW_ReadyHandler || { + + handle: function (data) { + if (!data.hasOwnProperty('seat')) { + console.error('[EQW_ReadyHandler] zhunbei 缺 seat,已跳过该包'); + return; + } + EventBus.emit(EQW_Events.EQW_READY_CHANGED, { seat: data.seat }); + } +}; diff --git a/client/tests/test_handlers_query.js b/client/tests/test_handlers_query.js new file mode 100644 index 0000000..a558076 --- /dev/null +++ b/client/tests/test_handlers_query.js @@ -0,0 +1,47 @@ +// 明牌 / 提示 / 准备 handler +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/net/handlers/QueryHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/ReadyHandler.js'); + +const S = EQW_GameState; +const payloads = []; +EventBus.on(EQW_Events.EQW_TIP, d => payloads.push(d)); +const evts = []; +Object.keys(EQW_Events).forEach(k => EventBus.on(EQW_Events[k], () => evts.push(k))); + +// ================= mingpai ================= +S.reset(); evts.length = 0; +EQW_QueryHandler.handleMingpai({ success: true, seat: 1, + others: [{ seat: 0, zhucards: [52, 2] }, { seat: 2, zhucards: [53, 15] }] }); +t.eq('明牌数据入状态', S.table.mingpai, + [{ seat: 0, zhucards: [52, 2] }, { seat: 2, zhucards: [53, 15] }]); +t.eq('明牌发事件', evts.indexOf('EQW_MINGPAI') >= 0, true); + +// ================= tishi ================= +// 提示是一次性的,不进 GameState,只随事件带出去 +S.reset(); payloads.length = 0; evts.length = 0; +const before = S.snapshot(); // 处理前的状态快照 +EQW_QueryHandler.handleTishi({ success: true, seat: 2, tip: 1 }); +t.eq('提示发事件', evts.indexOf('EQW_TIP') >= 0, true); +t.eq('提示内容随事件带出', payloads, [{ seat: 2, tip: 1 }]); +t.eq('提示未改动 GameState 任何字段', S.snapshot(), before); + +// ================= zhunbei ================= +S.reset(); evts.length = 0; +EQW_ReadyHandler.handle({ success: true, seat: 1 }); +t.eq('准备发事件', evts.indexOf('EQW_READY_CHANGED') >= 0, true); + +// ================= 缺必需字段 ================= +S.reset(); +EQW_QueryHandler.handleMingpai({ success: true }); //缺 others +t.eq('明牌缺 others 时不写', S.table.mingpai, null); +payloads.length = 0; +EQW_QueryHandler.handleTishi({ success: true, seat: 0 }); //缺 tip +t.eq('提示缺 tip 时不发事件', payloads, []); + +process.exit(t.done('handlers_query') ? 0 : 1); From e8fc3a9bfaf6ce17baff2045b6c9c817cfeca973 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:09:06 +0800 Subject: [PATCH 12/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E4=B8=8E=E8=A7=A3=E6=95=A3=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 三种结算来源组成不同(正常出牌 / 投降 / 解散),共用一套落地逻辑: 有哪组写哪组,缺的保持 null。 解散走平台的 Game_Modify.Free 入口而非收包分发表——它的 route 是 room, 被平台分流走了。取值路径因此比协议文档少一层,且参数可能为 null (首局发牌前解散),已覆盖。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/ResultHandler.js | 60 ++++++++++++++++ client/tests/test_handlers_result.js | 72 +++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 client/js/01_SubGame/codes/net/handlers/ResultHandler.js create mode 100644 client/tests/test_handlers_result.js diff --git a/client/js/01_SubGame/codes/net/handlers/ResultHandler.js b/client/js/01_SubGame/codes/net/handlers/ResultHandler.js new file mode 100644 index 0000000..cb9695e --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/ResultHandler.js @@ -0,0 +1,60 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_ResultHandler: 结算(jiesuan)与解散(Free)/// +/////////////////////////////////////////////////////////////// +// 协议 §14:结算包由 chupai + bottom + aset 拼装,末局再加 account。 +// 三种来源的组成不同: +// 正常出牌结算:chupai + bottom + aset(末局加 account) +// 投降结算: 只有 aset(末局加 account),无 chupai、无 bottom +// 解散结算: 只有 aset + account,且【走另一个入口】,见下 +// +// 【解散的特殊性】(协议 §14.1,已对平台代码核实): +// 解散包的 route 是平台的 "room",平台 12_Logic.js 按 route 分流时把它交给 +// Net[rpc] 而【不是】Game_Modify._ReceiveData——所以它根本进不了子游戏的分发表。 +// 平台另有专门入口:07_Desk.js 的 Game_Modify.Free(Desk.deskfree)。 +// 两个后果: +// 1. 取值路径比协议文档少一层——平台已把 deskfree 取出来传进来, +// 所以是 deskfree.data.aset,不是 data.deskfree.data.aset; +// 2. 参数可能是 null——解散若发生在开战后、首局发牌前,服务端 get_disbandRoom +// 返回 null,平台走「不带 deskfree」分支。这时只做房间收尾、不弹结算。 +var EQW_ResultHandler = EQW_ResultHandler || { + + handleJiesuan: function (data) { + if (!data.hasOwnProperty('aset')) { + console.error('[EQW_ResultHandler] jiesuan 缺 aset,已跳过该包'); + return; + } + this._applyResult(data); + }, + + //平台解散入口。deskfree = { rpc:"jiesuan", data:{ success, aset, account } },可能为 null + handleFree: function (deskfree) { + if (!deskfree || !deskfree.data) { + //首局发牌前解散:没有结算数据,只做房间收尾,不弹结算面板 + console.warn('[EQW_ResultHandler] 解散包无 deskfree 数据(首局发牌前解散)'); + return; + } + var d = deskfree.data; + if (!d.hasOwnProperty('aset')) { + console.error('[EQW_ResultHandler] 解散包缺 aset,已跳过'); + return; + } + this._applyResult(d); + }, + + //三种来源共用的落地逻辑:有哪组就写哪组,缺的保持 null + _applyResult: function (d) { + EQW_GameState._apply(EQW_GameState.result, d, { + chupai: 'chupai', + bottom: 'bottom', + aset: 'aset', + account: 'account' + }); + EQW_GameState.aset.step = 6; + + EventBus.emit(EQW_Events.EQW_ASET_RESULT); + //account 只在末局或解散时才有 + if (d.hasOwnProperty('account')) { + EventBus.emit(EQW_Events.EQW_ACCOUNT_RESULT); + } + } +}; diff --git a/client/tests/test_handlers_result.js b/client/tests/test_handlers_result.js new file mode 100644 index 0000000..94be1b8 --- /dev/null +++ b/client/tests/test_handlers_result.js @@ -0,0 +1,72 @@ +// 结算 / 解散 handler +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/net/handlers/ResultHandler.js'); + +const S = EQW_GameState; +const evts = []; +Object.keys(EQW_Events).forEach(k => EventBus.on(EQW_Events[k], () => evts.push(k))); + +const ASET = { banker: 0, call: 60, multiple: 3, flower: 3, grade: 45, upgrade: 1, + bangwang: 0, climb: 0, + seatlist: [{ grade: 6, score: 6 }, { grade: -3, score: -3 }, { grade: -3, score: -3 }] }; + +// ================= 正常出牌结算 ================= +S.reset(); evts.length = 0; +EQW_ResultHandler.handleJiesuan({ success: true, + chupai: { seat: 2, cards: [9], maxseat: 0, grade: 10 }, + bottom: { cards: [1,2,3,4,5,6,7,8], multiple: 2, grade1: 20, grade2: 40 }, + aset: ASET }); + +t.eq('小局结算入状态', S.result.aset, ASET); +t.eq('抠底入状态', S.result.bottom.grade2, 40); +t.eq('最后一手入状态', S.result.chupai.maxseat, 0); +t.eq('step 置为结算', S.aset.step, 6); +t.eq('结算发事件', evts.indexOf('EQW_ASET_RESULT') >= 0, true); +t.eq('非末局不发大局结算事件', evts.indexOf('EQW_ACCOUNT_RESULT') < 0, true); + +// ================= 投降结算(无 chupai / 无 bottom)================= +S.reset(); evts.length = 0; +EQW_ResultHandler.handleJiesuan({ success: true, aset: { banker: 0, call: 70, multiple: 1, + upgrade: -99, seatlist: [] } }); +t.eq('投降结算入状态', S.result.aset.upgrade, -99); +t.eq('投降无 chupai', S.result.chupai, null); +t.eq('投降无 bottom', S.result.bottom, null); +t.eq('投降也发结算事件', evts.indexOf('EQW_ASET_RESULT') >= 0, true); + +// ================= 末局:带 account ================= +const ACCOUNT = [{ score: 12, grades: [6,6], grade_jf_total: 8, grade_cg_total: 4, grade_bw_total: 0 }, + { score: -6, grades: [-3,-3], grade_jf_total: -4, grade_cg_total: -2, grade_bw_total: 0 }, + { score: -6, grades: [-3,-3], grade_jf_total: -4, grade_cg_total: -2, grade_bw_total: 0 }]; +S.reset(); evts.length = 0; +EQW_ResultHandler.handleJiesuan({ success: true, aset: ASET, account: ACCOUNT }); +t.eq('大局结算入状态', S.result.account, ACCOUNT); +t.eq('末局发大局结算事件', evts.indexOf('EQW_ACCOUNT_RESULT') >= 0, true); + +// ================= 解散:走 Free 入口,取值少一层 ================= +S.reset(); evts.length = 0; +EQW_ResultHandler.handleFree({ rpc: 'jiesuan', + data: { success: true, aset: { banker: -1, call: -1, multiple: 0, upgrade: 0, seatlist: [] }, + account: ACCOUNT } }); +t.eq('解散取到 aset', S.result.aset.multiple, 0); +t.eq('解散取到 account', S.result.account, ACCOUNT); +t.eq('解散发大局结算事件', evts.indexOf('EQW_ACCOUNT_RESULT') >= 0, true); + +// ================= 解散:deskfree 为 null(首局发牌前解散)================= +S.reset(); evts.length = 0; +let boom = false; +try { EQW_ResultHandler.handleFree(null); } catch (e) { boom = true; } +t.eq('deskfree 为 null 不崩', boom, false); +t.eq('deskfree 为 null 不写状态', S.result.aset, null); +t.eq('deskfree 为 null 不发结算事件', evts.indexOf('EQW_ACCOUNT_RESULT') < 0, true); + +// deskfree 存在但 data 缺失也要容忍 +boom = false; +try { EQW_ResultHandler.handleFree({ rpc: 'jiesuan' }); } catch (e) { boom = true; } +t.eq('deskfree.data 缺失不崩', boom, false); + +process.exit(t.done('handlers_result') ? 0 : 1); From a5ca3bc5d93f60921741c917c8681a5fb849e0e4 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:15:04 +0800 Subject: [PATCH 13/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E9=87=8D=E8=BF=9E=E4=B8=8E=E5=BC=80=E5=B1=80=20handler?= =?UTF-8?q?=EF=BC=8C=E8=B7=AF=E7=94=B1=E8=A1=A8=E6=B3=A8=E5=86=8C=E9=BD=90?= =?UTF-8?q?=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重连即重画:断线重连与硬刷新复用同一条路径(填 GameState → emit RESYNC_ALL), 不为重连单写一套渲染。deskinfo 按 step 分组填充,重连不重放 70 分开底那类 一次性事件。StartWar 支持差异化下发,按本座位取自己那份。 路由表 12 条注册齐全,test_dispatcher 的完整性断言随之转绿—— 漏接一个包就会红。 Co-Authored-By: Claude Opus 5 (1M context) --- client/js/01_SubGame/codes/net/Dispatcher.js | 15 ++ .../codes/net/handlers/ResyncHandler.js | 139 ++++++++++++++++++ client/tests/test_dispatcher.js | 18 ++- client/tests/test_resync.js | 105 +++++++++++++ 4 files changed, 270 insertions(+), 7 deletions(-) create mode 100644 client/js/01_SubGame/codes/net/handlers/ResyncHandler.js create mode 100644 client/tests/test_resync.js diff --git a/client/js/01_SubGame/codes/net/Dispatcher.js b/client/js/01_SubGame/codes/net/Dispatcher.js index 2d4a3a7..2f8c38c 100644 --- a/client/js/01_SubGame/codes/net/Dispatcher.js +++ b/client/js/01_SubGame/codes/net/Dispatcher.js @@ -49,3 +49,18 @@ var EQW_Dispatcher = EQW_Dispatcher || { } } }; + +//—— 路由表:一 rpc 一处理器(协议里每个服务端推送都要在这里注册)—— +//新增一种推送 = 加一条注册 + 写对应 handler;本文件不写业务。 +EQW_Dispatcher.register('fapai', function (d) { EQW_DealHandler.handle(d); }); +EQW_Dispatcher.register('jiaofen', function (d) { EQW_CallHandler.handleJiaofen(d); }); +EQW_Dispatcher.register('shangzhuang', function (d) { EQW_CallHandler.handleShangzhuang(d); }); +EQW_Dispatcher.register('xuanzhu', function (d) { EQW_MainHandler.handleXuanzhu(d); }); +EQW_Dispatcher.register('maipai', function (d) { EQW_BuryHandler.handle(d); }); +EQW_Dispatcher.register('chupai1', function (d) { EQW_PlayHandler.handle(d, 1); }); +EQW_Dispatcher.register('chupai2', function (d) { EQW_PlayHandler.handle(d, 2); }); +EQW_Dispatcher.register('chupai3', function (d) { EQW_PlayHandler.handle(d, 3); }); +EQW_Dispatcher.register('mingpai', function (d) { EQW_QueryHandler.handleMingpai(d); }); +EQW_Dispatcher.register('tishi', function (d) { EQW_QueryHandler.handleTishi(d); }); +EQW_Dispatcher.register('jiesuan', function (d) { EQW_ResultHandler.handleJiesuan(d); }); +EQW_Dispatcher.register('zhunbei', function (d) { EQW_ReadyHandler.handle(d); }); diff --git a/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js b/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js new file mode 100644 index 0000000..f1a0e57 --- /dev/null +++ b/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js @@ -0,0 +1,139 @@ +/////////////////////////////////////////////////////////////// +////////// EQW_ResyncHandler: 重连(deskinfo)与开局(StartWar) +/////////////////////////////////////////////////////////////// +// 前端 04 §3:重连 = 重画。断线重连与硬刷新本质相同,复用同一条路径: +// 填 GameState → emit EQW_RESYNC_ALL → 各组件据数据重建界面 +// 【绝不为重连单写一套渲染】。 +// +// deskinfo 按 step 只带对应阶段的分组(协议文末): +// 恒有 count / idx / PlayerInfo / step / MyCards +// CallRun(step1) ChooseMain(step2) BuryCards(step3) PushCards(step5) Balance(step6) +// +// 【重连不重放一次性事件】:70 分坐庄的 3 秒开底是上庄时的一次性事件, +// deskinfo 里没有 ancard3s,前端也不得补播。 +var EQW_ResyncHandler = EQW_ResyncHandler || { + + //平台房间信息(roomcode / 总局数 / roomtype 位串) + handleSetRoomDes: function (roomcode, asetcount, roomtype) { + if (typeof asetcount === 'number') { EQW_GameState.room.asetCount = asetcount; } + EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(roomtype); + }, + + //开局:makewar 可能差异化下发(sendtype:1 + seatlist[]),先取自己那份 + handleStartWar: function (msg) { + if (!msg || !msg.data) { + console.warn('[EQW_ResyncHandler] StartWar 无数据,已忽略'); + return; + } + var raw = msg.data.deskwar || msg.data; + var mine = raw; + if (raw && raw.sendtype === 1 && Object.prototype.toString.call(raw.seatlist) === '[object Array]') { + mine = null; + for (var i = 0; i < raw.seatlist.length; i++) { + if (raw.seatlist[i] && raw.seatlist[i].seat === EQW_GameState.room.mySeat) { + mine = raw.seatlist[i].data; + break; + } + } + if (!mine) { + console.error('[EQW_ResyncHandler] StartWar 差异化下发里没有本座位的数据'); + return; + } + } + this.handleDeskinfo(mine); + }, + + //重连:deskinfo 全量快照 + handleDeskinfo: function (info) { + if (!info) { + console.warn('[EQW_ResyncHandler] deskinfo 为空,已忽略'); + return; + } + + EQW_GameState.reset(); + + //—— 恒有的部分 —— + EQW_GameState._apply(EQW_GameState.room, info, { + asetCount: 'count', + asetIdx: 'idx', + playerScores: 'PlayerInfo' + }); + EQW_GameState._apply(EQW_GameState.aset, info, { step: 'step' }); + EQW_GameState._apply(EQW_GameState.my, info, { cards: 'MyCards' }); + + //—— 按阶段分组 —— + if (info.CallRun) { this._applyCallRun(info.CallRun); } + if (info.ChooseMain) { this._applyChooseMain(info.ChooseMain); } + if (info.BuryCards) { this._applyBuryCards(info.BuryCards); } + if (info.PushCards) { this._applyPushCards(info.PushCards); } + if (info.Balance) { this._applyBalance(info.Balance); } + + EventBus.emit(EQW_Events.EQW_RESYNC_ALL); + }, + + _applyCallRun: function (g) { + EQW_GameState._apply(EQW_GameState.call, g, { + currcall: 'nowcall', + calls: 'call' + }); + EQW_GameState._apply(EQW_GameState.aset, g, { multiple: 'multiple' }); + EQW_GameState._apply(EQW_GameState.turn, g, { + seat: 'seat', + countdown: 'countdown' + }); + }, + + _applyChooseMain: function (g) { + EQW_GameState._apply(EQW_GameState.aset, g, { + banker: 'banker', + call: 'call', + multiple: 'multiple', + touxiang: 'touxiang' + }); + EQW_GameState._apply(EQW_GameState.my, g, { bottomCards: 'bottomcards' }); + EQW_GameState._apply(EQW_GameState.turn, g, { countdown: 'countdown' }); + EQW_GameState.turn.seat = EQW_GameState.aset.banker; //选主由庄家做 + }, + + _applyBuryCards: function (g) { + EQW_GameState._apply(EQW_GameState.aset, g, { + banker: 'banker', + call: 'call', + multiple: 'multiple', + flower: 'flower' + }); + EQW_GameState._apply(EQW_GameState.my, g, { bottomCards: 'bottomcards' }); + EQW_GameState._apply(EQW_GameState.turn, g, { countdown: 'countdown' }); + EQW_GameState.turn.seat = EQW_GameState.aset.banker; //埋牌由庄家做 + }, + + _applyPushCards: function (g) { + EQW_GameState._apply(EQW_GameState.aset, g, { + banker: 'banker', + call: 'call', + multiple: 'multiple', + flower: 'flower', + grade: 'grade', + curmultiple: 'curmultiple' + }); + EQW_GameState._apply(EQW_GameState.my, g, { + buryCards: 'burycards', + mustCard: 'mustcard' + }); + EQW_GameState._apply(EQW_GameState.table, g, { + playproc: 'playproc', + pushlist: 'pushlist', + seatlist: 'seatlist', + liangpai: 'liangpai' + }); + EQW_GameState._apply(EQW_GameState.turn, g, { countdown: 'countdown' }); + //当前该谁出牌由 playproc.currseat 给出(服务端权威,前端不推导) + if (g.playproc && typeof g.playproc.currseat === 'number') { + EQW_GameState.turn.seat = g.playproc.currseat; + } + }, + + _applyBalance: function (g) { + EQW_GameState._apply(EQW_GameState.result, g, { aset: 'aset' }); + } +}; diff --git a/client/tests/test_dispatcher.js b/client/tests/test_dispatcher.js index 6908dd4..42a42c2 100644 --- a/client/tests/test_dispatcher.js +++ b/client/tests/test_dispatcher.js @@ -4,7 +4,18 @@ const t = require('./_assert')(); load('client/js/gameabc-framework/system/EventBus.js'); load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/state/RoomOptions.js'); load('client/js/01_SubGame/codes/net/handlers/FailHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/DealHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/CallHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/MainHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/BuryHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/PlayHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/QueryHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/ReadyHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/ResultHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/ResyncHandler.js'); load('client/js/01_SubGame/codes/net/Dispatcher.js'); // ---- 注册与分发 ---- @@ -40,16 +51,9 @@ t.eq('未知 rpc 不抛错', threw, false); }); // ---- 路由表完整性:协议里每个服务端推送 rpc 都要有 handler ---- -// (本条在 Task 10 全部 handler 就位后才会真正通过;此刻先写下期望, -// Task 10 完成时它会自动转绿——这正是它存在的意义:漏接一个包就会红) -// Task 10 完成后取消注释以下代码块 -/* -load('client/js/01_SubGame/codes/state/GameState.js'); -load('client/js/01_SubGame/codes/state/RoomOptions.js'); ['fapai','jiaofen','shangzhuang','xuanzhu','maipai', 'chupai1','chupai2','chupai3','mingpai','tishi','jiesuan','zhunbei'].forEach(rpc => { t.eq('已注册 handler: ' + rpc, EQW_Dispatcher.hasHandler(rpc), true); }); -*/ process.exit(t.done('dispatcher') ? 0 : 1); diff --git a/client/tests/test_resync.js b/client/tests/test_resync.js new file mode 100644 index 0000000..be82efe --- /dev/null +++ b/client/tests/test_resync.js @@ -0,0 +1,105 @@ +// 重连(deskinfo)与开局(StartWar) +const { load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/state/RoomOptions.js'); +load('client/js/01_SubGame/codes/net/handlers/ResyncHandler.js'); + +const S = EQW_GameState; +const evts = []; +Object.keys(EQW_Events).forEach(k => EventBus.on(EQW_Events[k], () => evts.push(k))); + +// ================= setRoomDes:房间选项 ================= +S.reset(); S.room.options = null; +EQW_ResyncHandler.handleSetRoomDes(123456, 12, '10100'); +t.eq('总局数', S.room.asetCount, 12); +t.eq('傍王开', S.room.options.bangwang, 1); +t.eq('可查牌', S.room.options.nocheck, 0); + +// ================= deskinfo:step 5 出牌阶段 ================= +S.reset(); S.room.mySeat = 1; evts.length = 0; +EQW_ResyncHandler.handleDeskinfo({ + count: 6, idx: 2, PlayerInfo: [10, -5, -5], step: 5, MyCards: [1,2,3], + PushCards: { + banker: 0, call: 60, multiple: 3, flower: 3, countdown: 15, + grade: 25, playproc: { round: 4, currseat: 1, cards: [[9],[],[]] }, + seatlist: [[0,0,0,0,[5,2]],[0,0,0,0,[6,1]],[0,0,0,0,[7,3]]], + liangpai: { cards: [52,53] }, pushlist: [[[1],[2],[3]]], + curmultiple: 2, mustcard: [4,5] + } +}); +t.eq('总局数', S.room.asetCount, 6); +t.eq('当前局', S.room.asetIdx, 2); +t.eq('三家总分', S.room.playerScores, [10, -5, -5]); +t.eq('阶段', S.aset.step, 5); +t.eq('手牌', S.my.cards, [1,2,3]); +t.eq('庄家', S.aset.banker, 0); +t.eq('主牌花色', S.aset.flower, 3); +t.eq('捡分', S.aset.grade, 25); +t.eq('抓分倍数', S.aset.curmultiple, 2); +t.eq('当前轮出牌情况', S.table.playproc.round, 4); +t.eq('出牌历史', S.table.pushlist.length, 1); +t.eq('亮牌', S.table.liangpai, { cards: [52,53] }); +t.eq('必出牌', S.my.mustCard, [4,5]); +t.eq('控制权(由 playproc.currseat 给出)', S.turn.seat, 1); +t.eq('重连发全量重画事件', evts.indexOf('EQW_RESYNC_ALL') >= 0, true); + +// ================= deskinfo:step 1 叫分阶段 ================= +S.reset(); evts.length = 0; +EQW_ResyncHandler.handleDeskinfo({ + count: 6, idx: 1, PlayerInfo: [0,0,0], step: 1, MyCards: [7,8], + CallRun: { seat: 2, countdown: 15, nowcall: 65, multiple: 2, call: [null, 0, 65] } +}); +t.eq('叫分阶段', S.aset.step, 1); +t.eq('当前叫分者', S.turn.seat, 2); +t.eq('当前叫到的分', S.call.currcall, 65); +t.eq('三家叫分', S.call.calls, [null, 0, 65]); + +// ================= deskinfo:step 2 选主阶段(庄家有 bottomcards)================= +S.reset(); evts.length = 0; +EQW_ResyncHandler.handleDeskinfo({ + count: 6, idx: 1, PlayerInfo: [0,0,0], step: 2, MyCards: [1,2], + ChooseMain: { banker: 0, call: 70, multiple: 2, countdown: 20, + bottomcards: [1,2,3,4,5,6,7,8], touxiang: 1 } +}); +t.eq('选主阶段', S.aset.step, 2); +t.eq('底牌', S.my.bottomCards, [1,2,3,4,5,6,7,8]); +t.eq('允许投降', S.aset.touxiang, 1); +t.eq('控制权归庄家', S.turn.seat, 0); + +// 重连【不重放】70 分开底:deskinfo 里没有 ancard3s +t.eq('重连不重放开底', S.table.ancard3s, 0); + +// ================= deskinfo:step 6 结算阶段 ================= +S.reset(); evts.length = 0; +EQW_ResyncHandler.handleDeskinfo({ + count: 6, idx: 6, PlayerInfo: [12,-6,-6], step: 6, MyCards: [], + Balance: { readystate: [1,0,0], aset: { banker: 0, upgrade: 1, seatlist: [] } } +}); +t.eq('结算阶段', S.aset.step, 6); +t.eq('小局结算数据', S.result.aset.upgrade, 1); + +// ================= StartWar:差异化下发 ================= +S.reset(); S.room.mySeat = 2; evts.length = 0; +EQW_ResyncHandler.handleStartWar({ data: { deskwar: { sendtype: 1, seatlist: [ + { seat: 0, data: { count: 6, idx: 1, PlayerInfo: [0,0,0], step: 1, MyCards: [90] } }, + { seat: 2, data: { count: 6, idx: 1, PlayerInfo: [0,0,0], step: 1, MyCards: [11,12] } } +] } } }); +t.eq('按本座位取到自己那份', S.my.cards, [11,12]); + +// 非差异化下发:直接用 data +S.reset(); S.room.mySeat = 0; +EQW_ResyncHandler.handleStartWar({ data: { count: 6, idx: 1, PlayerInfo: [0,0,0], + step: 1, MyCards: [3,4] } }); +t.eq('非差异化下发', S.my.cards, [3,4]); + +// 畸形入参不崩 +let boom = false; +try { EQW_ResyncHandler.handleStartWar(null); EQW_ResyncHandler.handleDeskinfo(null); } +catch (e) { boom = true; } +t.eq('畸形入参不崩', boom, false); + +process.exit(t.done('resync') ? 0 : 1); From e61725da40ccd25e9f307c65c5b1629d9331abb1 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:22:51 +0800 Subject: [PATCH 14/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=B5=8B=E8=AF=95=E7=9A=84=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E7=9C=9F=E5=8C=85=E5=A4=B9=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用服务端 test/_rpc.js + class.desk.js 脚手架跑一局(发牌→叫分→上庄→选主→ 埋牌→28轮出牌→结算),把真实下发包按座位导出成 JSON 供前端回放。不手写假 包——测的是真实契约,协议文档写错或前端理解偏差都会在这里暴露。 _rpc.js 的 setup() 只接受已构造好的 o_paiju,不走 class.desk.js,产不出 fapai;改用 test_flow.js/test_endgame.js 的 mkRoom() 模式(D.new + 全局 youle_erqiwang.app/import 与 mod.app/mod.import 同指一个 sent 数组),两条 既有用法缺一不可。 夹具自检守住质量:覆盖 fapai/jiaofen/shangzhuang/xuanzhu/maipai/ chupai1/2/3/jiesuan 全部阶段、保留座位差异(底牌只发给部分座位)、每个下发 包都带 success。 Co-Authored-By: Claude Opus 5 (1M context) --- client/tests/fixtures/export_packets.js | 167 + client/tests/fixtures/packets.json | 24102 ++++++++++++++++++++++ client/tests/test_fixture.js | 33 + 3 files changed, 24302 insertions(+) create mode 100644 client/tests/fixtures/export_packets.js create mode 100644 client/tests/fixtures/packets.json create mode 100644 client/tests/test_fixture.js diff --git a/client/tests/fixtures/export_packets.js b/client/tests/fixtures/export_packets.js new file mode 100644 index 0000000..49e7286 --- /dev/null +++ b/client/tests/fixtures/export_packets.js @@ -0,0 +1,167 @@ +// 导出脚本(测试代码,跑在 Node,非正式代码): +// 用服务端 test/_rpc.js + class.desk.js 的既有测试脚手架跑一局完整流程 +//(发牌 fapai → 叫分 jiaofen → 上庄 shangzhuang → 选主 xuanzhu → 埋牌 maipai +// → 出牌 chupai1/2/3 若干轮 → 结算 jiesuan),把真实下发包按座位快照导出成 +// client/tests/fixtures/packets.json,供前端测试回放(不手写假包,测的是真实契约)。 +// +// 用法:node client/tests/fixtures/export_packets.js +// +// 装配方式参照服务端既有测试的两种建立法: +// - _rpc.js 的 setup() 只接受"已构造好的 o_paiju",不走 class.desk.js, +// 因此不会产生 fapai(发牌)包——它是给"单个 RPC 处理器"用的轻量桩。 +// - test_flow.js / test_endgame.js 的 mkRoom() 模式改用真实 class.desk.js +// 的 D.new()/D.do_new_paiju(),才会真的下发 fapai;本脚本需要完整流程 +// (含 fapai),故照抄这一种既有用法,而不是 setup()。 +// 两条路径殊途同归:都是把 mod.app / mod.import 指向同一个 sent 捕获数组, +// 区别只在"谁负责建立 o_room/o_desk/o_paiju"。 +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +// 装配 mod.js 及其依赖类,把关键类挂到 global(与 _rpc.js 内部做法一致) +const R = require('../../../server/games/erqiwang/test/_rpc.js'); +const mod = R.mod; +const P = global.cls_youle_erqiwang_paiju; +const A = global.cls_youle_erqiwang_arith; +const D = require('../../../server/games/erqiwang/class.desk.js'); +const E = require('../../../server/games/erqiwang/class.export.js').new(); + +const ROOT = path.resolve(__dirname, '..', '..', '..'); +const OUT = path.join(ROOT, 'client/tests/fixtures/packets.json'); + +// 常规房:可查牌、不爬坡、不傍王(roomtype 位串全 0,见 class.config.js) +const ROOMTYPE = '00000'; + +const clone = function (m) { return JSON.parse(JSON.stringify(m)); }; + +// 装配一个"真实牌桌":D.new() 建牌桌,global.youle_erqiwang.app/import 与 +// mod.app/mod.import 同时指向同一个 sent 捕获数组——class.desk.js 的 fapai/zhunbei +// 走前者(bare 全局引用),mod.js 的 RPC handler 走后者(mod 自身的模块变量), +// 两条路径必须都接上,否则 fapai 会走到 _shim.js 的默认空实现,捕获不到。 +function makeRoom(roomtype) { + const sent = []; + const o_room = { + roomtype: roomtype, asetcount: 6, roomcode: 1, createtime: 'T', makewartime: 'T', + seatlist: [0, 1, 2].map(function (i) { + return { conmode: 0, fromid: i, playerid: 100 + i, nickname: 'P' + i, avatar: '', gameinfo: {} }; + }), + method: { sendpack_toother: function (m) { sent.push(clone(m)); } } + }; + const desk = D.new(o_room); + o_room.o_desk = desk; + global.youle_erqiwang.app = { SendPack: function (m) { sent.push(clone(m)); } }; + global.youle_erqiwang.import = { check_player: function () { return o_room; }, deduct_roomcard: function () { }, save_grade: function () { } }; + mod.import = global.youle_erqiwang.import; + mod.app = global.youle_erqiwang.app; + return { o_room: o_room, desk: desk, sent: sent }; +} + +const pk = function (seat, extra) { + return { + conmode: 0, fromid: seat, + data: Object.assign({ agentid: 'a', playerid: seat, gameid: 'g', roomcode: 1, seat: seat }, extra || {}) + }; +}; + +const room = makeRoom(ROOMTYPE); +const o_room = room.o_room; +const desk = room.desk; +const sent = room.sent; + +// ---- 按座位收集下发包(保留差异化下发:谁收到什么、谁没收到) ---- +// sent 里每一项要么带明确的 fromid(0/1/2,逐座位分别下发,内容可能互不相同), +// 要么是 sendpack_toother(msg, -1) 的整体广播(未逐座位改写 conmode/fromid, +// fromid 为 undefined)——广播内容三家相同,按"三家都收到"处理。 +const seatPackets = [[], [], []]; +const deskinfo = []; +let drained = 0; +function drain() { + for (; drained < sent.length; drained++) { + const raw = sent[drained]; + const packet = { rpc: raw.rpc, data: raw.data }; + if (raw.fromid === 0 || raw.fromid === 1 || raw.fromid === 2) { + seatPackets[raw.fromid].push(packet); + } else { + seatPackets[0].push(packet); + seatPackets[1].push(packet); + seatPackets[2].push(packet); + } + } +} +// packetIndex 是关键对齐锚点:取快照时先 drain,记下该座位此刻已收到的包数, +// 与 Task 12 一致性测试"喂完 seats[seat] 的前 packetIndex 个包"对齐。 +function snap(step, seat) { + drain(); + deskinfo.push({ + step: step, + seat: seat, + packetIndex: seatPackets[seat].length, + info: E.get_deskinfo(o_room, seat) + }); +} + +// ================= 跑一局 ================= + +// 发牌(fapai):class.desk.js 内部随机发牌 + 广播 +D.do_new_paiju(desk, 0); +const pj = desk.method.curr_paiju(); +snap(1, 0); snap(1, 1); snap(1, 2); // 叫分阶段(step1):三家快照,验证 MyCards 各不相同 + +// 叫分:0 号位叫 65,其余不叫 → 0 号位上庄(触发 jiaofen 广播 + shangzhuang 差异化下发) +mod.jiaofen(pk(pj.method.get_callgrade_seat(), { call: 65 })); +mod.jiaofen(pk(pj.method.get_callgrade_seat(), { call: 0 })); +mod.jiaofen(pk(pj.method.get_callgrade_seat(), { call: 0 })); +snap(2, 0); snap(2, 1); snap(2, 2); // 选主阶段(step2):庄家有 cards/bottomcards,闲家没有 + +// 选主:庄家选方块为主 +mod.xuanzhu(pk(pj.banker, { flower: 1 })); +snap(3, pj.banker); // 埋牌阶段(step3):庄家视角 + +// 埋牌:庄家埋掉当前手上最后 8 张(get_seat_cards 已按主牌排序,任取8张即可) +mod.maipai(pk(pj.banker, { cards: P.get_seat_cards(pj, pj.banker).slice(-8) })); +snap(5, 0); snap(5, 1); snap(5, 2); // 出牌阶段开局(step5):出牌者 cardsinhand、下一位 mustcard 差异 + +// 出牌:首家出手上最小单张,跟家取第一张能通过 can_followcard 的单张—— +// 与服务端 test/test_endgame.js 的 playAll() 同一套算法,直至打完整副牌进入结算。 +let guard = 0; +let midSnapDone = false; +while (pj.step === 5 && guard < 400) { + guard++; + const seat = pj.playproc.currseat; + const hand = P.get_seat_cards(pj, seat); + let pick = null; + if (seat === pj.playproc.start) { + pick = [hand[hand.length - 1]]; + } else { + for (let i = 0; i < hand.length; i++) { + const c = hand[i]; + if (A.can_followcard(pj.flower, hand, [c], pj.playproc.startcount, pj.playproc.startflower, pj.playproc.starttype).result) { + pick = [c]; + break; + } + } + } + if (!pick) { break; } + mod.chupai(pk(seat, { cards: pick })); + // 出牌进行到中段时额外拍一张 step5 快照,覆盖"打到一半"的重连场景 + if (!midSnapDone && guard === 6 && pj.step === 5) { + midSnapDone = true; + snap(5, pj.playproc.currseat); + } +} +snap(6, 0); snap(6, 1); snap(6, 2); // 结算阶段(step6):jiesuan 广播后 + +drain(); // 保险:吸收循环末尾可能残留的未 drain 包 + +const fixture = { + roomtype: ROOMTYPE, + seats: seatPackets, + deskinfo: deskinfo +}; + +fs.writeFileSync(OUT, JSON.stringify(fixture, null, 2)); +console.log('已写入 ' + OUT); +console.log('座位包数: ' + seatPackets.map(function (a) { return a.length; }).join(' / ')); +console.log('deskinfo 快照数: ' + deskinfo.length); +console.log('paiju.step(结束时)=' + pj.step + ' result=' + pj.result); diff --git a/client/tests/fixtures/packets.json b/client/tests/fixtures/packets.json new file mode 100644 index 0000000..7db6636 --- /dev/null +++ b/client/tests/fixtures/packets.json @@ -0,0 +1,24102 @@ +{ + "roomtype": "00000", + "seats": [ + [ + { + "rpc": "fapai", + "data": { + "success": true, + "asetidx": 1, + "asetcount": 6, + "seat": 0, + "countdown": 15, + "cards": [ + 52, + 86, + 73, + 6, + 60, + 94, + 81, + 14, + 105, + 50, + 98, + 26, + 38, + 90, + 89, + 33, + 67, + 25, + 76, + 22, + 75, + 20, + 0, + 64, + 10, + 63, + 8, + 7 + ] + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 0, + "call": 65, + "currcall": 65, + "multiple": 2, + "nextseat": 1, + "countdown": 15 + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 1, + "call": 0, + "currcall": 65, + "multiple": 2, + "nextseat": 2, + "countdown": 15 + } + }, + { + "rpc": "shangzhuang", + "data": { + "success": true, + "seat": 2, + "call": 0, + "banker": 0, + "grade": 65, + "multiple": 2, + "countdown": 20, + "touxiang": 0, + "curmultiple": 3, + "cards": [ + 52, + 86, + 73, + 6, + 60, + 94, + 81, + 14, + 55, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89, + 33, + 67, + 79, + 25, + 22, + 76, + 75, + 20, + 71, + 0, + 11, + 64, + 10, + 63, + 8, + 7 + ], + "bottomcards": [ + 55, + 103, + 101, + 47, + 46, + 79, + 71, + 11 + ] + } + }, + { + "rpc": "xuanzhu", + "data": { + "success": true, + "banker": 0, + "flower": 1, + "countdown": 25, + "cards": [ + 52, + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89, + 33, + 67, + 79, + 25, + 22, + 76, + 75, + 20, + 71 + ] + } + }, + { + "rpc": "maipai", + "data": { + "success": true, + "seat": 0, + "countdown": 30, + "cards": [ + 52, + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89, + 33 + ], + "burycards": [ + 67, + 79, + 25, + 22, + 76, + 75, + 20, + 71 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 52, + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 92 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 80 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 18 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 13 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 89 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 36 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 37 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 77 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 6 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 90 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 34 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 23 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 60 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 21 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 38 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 26 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 85 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 39 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 78 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 86 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 64, + 10, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 64, + 10, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 104 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 72 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 106 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 73 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 31 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 101 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 48 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 43 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "cardsinhand": [ + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 50, + 103, + 47 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 44 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 47 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 50, + 103 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 97 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 15 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 100 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 50 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "cardsinhand": [ + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 53 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 45 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 81, + 14, + 0, + 11, + 64, + 10, + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 81 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "cardsinhand": [ + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 107 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 30 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 14 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5, + "cardsinhand": [ + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 59 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 11, + 10, + 64, + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 11 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5, + "cardsinhand": [ + 10, + 64, + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 64, + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 32 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 5 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 68 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 64 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 63, + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 63 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 8, + 7, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 9 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 12 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 8 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 20, + "cardsinhand": [ + 7, + 103 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 65 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "mustcard": [ + 7 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "cardsinhand": [ + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 27 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 54 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 66 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "mustcard": [ + 103 + ] + } + }, + { + "rpc": "jiesuan", + "data": { + "success": true, + "curmultiple": -2, + "chupai": { + "seat": 0, + "cards": [ + 103 + ], + "maxseat": 1, + "grade": 10 + }, + "bottom": { + "cards": [ + 67, + 25, + 79, + 76, + 22, + 75, + 20, + 71 + ], + "multiple": 1, + "grade1": 45, + "grade2": 45 + }, + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 155, + "upgrade": -3, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -12, + "grade": -12, + "score": -12 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + } + ] + } + } + } + ], + [ + { + "rpc": "fapai", + "data": { + "success": true, + "asetidx": 1, + "asetcount": 6, + "seat": 0, + "countdown": 15, + "cards": [ + 53, + 107, + 99, + 32, + 19, + 27, + 39, + 93, + 48, + 44, + 97, + 92, + 36, + 88, + 34, + 87, + 31, + 30, + 13, + 24, + 21, + 74, + 72, + 17, + 54, + 9, + 5, + 58 + ] + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 0, + "call": 65, + "currcall": 65, + "multiple": 2, + "nextseat": 1, + "countdown": 15 + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 1, + "call": 0, + "currcall": 65, + "multiple": 2, + "nextseat": 2, + "countdown": 15 + } + }, + { + "rpc": "shangzhuang", + "data": { + "success": true, + "seat": 2, + "call": 0, + "banker": 0, + "grade": 65, + "multiple": 2, + "countdown": 20, + "touxiang": 0, + "curmultiple": 3 + } + }, + { + "rpc": "xuanzhu", + "data": { + "success": true, + "banker": 0, + "flower": 1, + "countdown": 25, + "cards": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 92, + 36, + 88, + 34, + 87, + 31, + 30, + 13, + 24, + 21, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "maipai", + "data": { + "success": true, + "seat": 0, + "countdown": 30 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 92 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 36, + 34, + 88, + 87, + 31, + 30, + 13, + 24, + 21, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 80 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 18 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 13 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 36, + 34, + 88, + 87, + 31, + 30, + 24, + 21, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 89 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 36 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 34, + 88, + 87, + 31, + 30, + 24, + 21, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 37 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 77 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 6 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 34, + 88, + 87, + 31, + 30, + 21, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 90 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 34 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 88, + 87, + 31, + 30, + 21, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 23 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 60 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 21 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 88, + 87, + 31, + 30, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 38 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 87, + 31, + 30, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 26 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 31, + 30, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 85 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 39 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 93, + 48, + 44, + 97, + 31, + 30, + 74, + 72, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 93, + 48, + 44, + 97, + 31, + 30, + 74, + 72 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 78 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 86 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 48, + 44, + 97, + 31, + 30, + 74, + 72 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 104 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 72 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 48, + 44, + 97, + 31, + 30, + 74 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 106 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 73 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 31 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 48, + 44, + 97, + 30, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 101 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 48 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 44, + 97, + 30, + 74 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 43 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 44 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 97, + 30, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 47 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "mustcard": [ + 97 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 97 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 30, + 74 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 15 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 100 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 50 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 53 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1, + "cardsinhand": [ + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 30, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 30 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 45 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 81 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 107 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1, + "grade": 5, + "cardsinhand": [ + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 30 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 30 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 14 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 59 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "cardsinhand": [ + 32, + 19, + 27, + 54, + 9, + 5, + 58 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 32, + 19, + 27, + 54, + 9, + 5 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 11 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 32 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "cardsinhand": [ + 19, + 27, + 54, + 9, + 5 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 5 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 19, + 27, + 54, + 9 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 68 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 64 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 63 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "grade": 10, + "cardsinhand": [ + 27, + 54, + 9 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 9 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 27, + 54 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 12 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 8 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 20 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 65 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 27 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "maxseat": 1, + "cardsinhand": [ + 54 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 54 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 66 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1 + } + }, + { + "rpc": "jiesuan", + "data": { + "success": true, + "curmultiple": -2, + "chupai": { + "seat": 0, + "cards": [ + 103 + ], + "maxseat": 1, + "grade": 10 + }, + "bottom": { + "cards": [ + 67, + 25, + 79, + 76, + 22, + 75, + 20, + 71 + ], + "multiple": 1, + "grade1": 45, + "grade2": 45 + }, + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 155, + "upgrade": -3, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -12, + "grade": -12, + "score": -12 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + } + ] + } + } + } + ], + [ + { + "rpc": "fapai", + "data": { + "success": true, + "asetidx": 1, + "asetcount": 6, + "seat": 0, + "countdown": 15, + "cards": [ + 106, + 45, + 40, + 68, + 1, + 51, + 104, + 49, + 102, + 100, + 43, + 80, + 37, + 91, + 35, + 85, + 84, + 78, + 77, + 23, + 18, + 66, + 12, + 65, + 62, + 61, + 59, + 4 + ] + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 0, + "call": 65, + "currcall": 65, + "multiple": 2, + "nextseat": 1, + "countdown": 15 + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 1, + "call": 0, + "currcall": 65, + "multiple": 2, + "nextseat": 2, + "countdown": 15 + } + }, + { + "rpc": "shangzhuang", + "data": { + "success": true, + "seat": 2, + "call": 0, + "banker": 0, + "grade": 65, + "multiple": 2, + "countdown": 20, + "touxiang": 0, + "curmultiple": 3 + } + }, + { + "rpc": "xuanzhu", + "data": { + "success": true, + "banker": 0, + "flower": 1, + "countdown": 25, + "cards": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 80, + 37, + 91, + 35, + 85, + 84, + 78, + 77, + 23, + 18 + ] + } + }, + { + "rpc": "maipai", + "data": { + "success": true, + "seat": 0, + "countdown": 30 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 92 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 80 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 37, + 91, + 35, + 85, + 84, + 78, + 23, + 77, + 18 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 18 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 37, + 91, + 35, + 85, + 84, + 78, + 23, + 77 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 13 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 89 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 36 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 37 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 91, + 35, + 85, + 84, + 78, + 23, + 77 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 77 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 91, + 35, + 85, + 84, + 78, + 23 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 6 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 90 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 34 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 35, + 85, + 84, + 78, + 23 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 23 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 35, + 85, + 84, + 78 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 60 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 21 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 38 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 85, + 84, + 78 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 26 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 85 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 84, + 78 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 39 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1, + "grade": 10, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 104, + 49, + 102, + 100, + 43, + 84, + 78 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "mustcard": [ + 78 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 78 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 104, + 49, + 102, + 100, + 43, + 84 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 86 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 104 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1, + "cardsinhand": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 49, + 102, + 100, + 43, + 84 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 72 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 106 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 45, + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59, + 4, + 49, + 102, + 100, + 43, + 84 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 73 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 45, + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59, + 4, + 49, + 102, + 100, + 43 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 31 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 101 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 48 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 10, + "cardsinhand": [ + 45, + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59, + 4, + 102, + 100, + 43 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 43 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 45, + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59, + 4, + 102, + 100 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 44 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 47 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 97 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 15, + "cardsinhand": [ + 45, + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59, + 4, + 100 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 100 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 45, + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59, + 4 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 50 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 53 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 45 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "cardsinhand": [ + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59, + 4 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 1, + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 81 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 107 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 30 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "cardsinhand": [ + 40, + 68, + 66, + 12, + 65, + 62, + 61, + 59 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 14 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 59 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 40, + 68, + 66, + 12, + 65, + 62, + 61 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 68, + 66, + 12, + 65, + 62, + 61 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 11 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 68, + 66, + 12, + 65, + 62 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 32 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 5 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 68 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 12, + 66, + 65, + 62 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 64 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 12, + 66, + 65 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 63 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 9 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 12 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 66, + 65 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 8 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 20 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 65 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 66 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 27 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 54 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101, + "mustcard": [ + 66 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 66 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "cardsinhand": [] + } + }, + { + "rpc": "jiesuan", + "data": { + "success": true, + "curmultiple": -2, + "chupai": { + "seat": 0, + "cards": [ + 103 + ], + "maxseat": 1, + "grade": 10 + }, + "bottom": { + "cards": [ + 67, + 25, + 79, + 76, + 22, + 75, + 20, + 71 + ], + "multiple": 1, + "grade1": 45, + "grade2": 45 + }, + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 155, + "upgrade": -3, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -12, + "grade": -12, + "score": -12 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + } + ] + } + } + } + ] + ], + "deskinfo": [ + { + "step": 1, + "seat": 0, + "packetIndex": 1, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 1, + "MyCards": [ + 52, + 86, + 73, + 6, + 60, + 94, + 81, + 14, + 105, + 50, + 98, + 26, + 38, + 90, + 89, + 33, + 67, + 25, + 76, + 22, + 75, + 20, + 0, + 64, + 10, + 63, + 8, + 7 + ], + "CallRun": { + "seat": 0, + "countdown": 15, + "nowcall": 0, + "multiple": 0, + "call": [ + null, + null, + null + ] + } + } + }, + { + "step": 1, + "seat": 1, + "packetIndex": 1, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 1, + "MyCards": [ + 53, + 107, + 99, + 32, + 19, + 27, + 39, + 93, + 48, + 44, + 97, + 92, + 36, + 88, + 34, + 87, + 31, + 30, + 13, + 24, + 21, + 74, + 72, + 17, + 54, + 9, + 5, + 58 + ], + "CallRun": { + "seat": 0, + "countdown": 15, + "nowcall": 0, + "multiple": 0, + "call": [ + null, + null, + null + ] + } + } + }, + { + "step": 1, + "seat": 2, + "packetIndex": 1, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 1, + "MyCards": [ + 106, + 45, + 40, + 68, + 1, + 51, + 104, + 49, + 102, + 100, + 43, + 80, + 37, + 91, + 35, + 85, + 84, + 78, + 77, + 23, + 18, + 66, + 12, + 65, + 62, + 61, + 59, + 4 + ], + "CallRun": { + "seat": 0, + "countdown": 15, + "nowcall": 0, + "multiple": 0, + "call": [ + null, + null, + null + ] + } + } + }, + { + "step": 2, + "seat": 0, + "packetIndex": 4, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 2, + "MyCards": [ + 52, + 86, + 73, + 6, + 60, + 94, + 81, + 14, + 55, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89, + 33, + 67, + 79, + 25, + 22, + 76, + 75, + 20, + 71, + 0, + 11, + 64, + 10, + 63, + 8, + 7 + ], + "ChooseMain": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 20, + "bottomcards": [ + 55, + 103, + 101, + 47, + 46, + 79, + 71, + 11 + ], + "touxiang": 0 + } + } + }, + { + "step": 2, + "seat": 1, + "packetIndex": 4, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 2, + "MyCards": [ + 53, + 107, + 99, + 32, + 19, + 27, + 39, + 93, + 48, + 44, + 97, + 92, + 36, + 88, + 34, + 87, + 31, + 30, + 13, + 24, + 21, + 74, + 72, + 17, + 54, + 9, + 5, + 58 + ], + "ChooseMain": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 20, + "touxiang": 0 + } + } + }, + { + "step": 2, + "seat": 2, + "packetIndex": 4, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 2, + "MyCards": [ + 106, + 45, + 40, + 68, + 1, + 51, + 104, + 49, + 102, + 100, + 43, + 80, + 37, + 91, + 35, + 85, + 84, + 78, + 77, + 23, + 18, + 66, + 12, + 65, + 62, + 61, + 59, + 4 + ], + "ChooseMain": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 20, + "touxiang": 0 + } + } + }, + { + "step": 3, + "seat": 0, + "packetIndex": 5, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 3, + "MyCards": [ + 52, + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89, + 33, + 67, + 79, + 25, + 22, + 76, + 75, + 20, + 71 + ], + "BuryCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 25, + "bottomcards": [ + 55, + 11, + 103, + 101, + 47, + 46, + 79, + 71 + ], + "flower": 1 + } + } + }, + { + "step": 5, + "seat": 0, + "packetIndex": 6, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 52, + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89, + 33 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "burycards": [ + 67, + 25, + 79, + 76, + 22, + 75, + 20, + 71 + ], + "grade": 0, + "curmultiple": 3, + "playproc": { + "round": 28, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1114, + "cards": [ + [ + 103 + ], + [ + 54 + ], + [ + 66 + ] + ], + "shuai_demand": null + }, + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "pushlist": [] + } + } + }, + { + "step": 5, + "seat": 1, + "packetIndex": 6, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 53, + 107, + 99, + 32, + 19, + 27, + 54, + 9, + 5, + 58, + 39, + 93, + 48, + 44, + 97, + 92, + 36, + 88, + 34, + 87, + 31, + 30, + 13, + 24, + 21, + 74, + 72, + 17 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "gradecards": [], + "grade": 0, + "curmultiple": 3, + "playproc": { + "round": 28, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1114, + "cards": [ + [ + 103 + ], + [ + 54 + ], + [ + 66 + ] + ], + "shuai_demand": null + }, + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "pushlist": [] + } + } + }, + { + "step": 5, + "seat": 2, + "packetIndex": 6, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 106, + 45, + 1, + 40, + 68, + 12, + 66, + 65, + 62, + 61, + 59, + 4, + 51, + 104, + 49, + 102, + 100, + 43, + 80, + 37, + 91, + 35, + 85, + 84, + 78, + 77, + 23, + 18 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "gradecards": [], + "grade": 0, + "curmultiple": 3, + "playproc": { + "round": 28, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1114, + "cards": [ + [ + 103 + ], + [ + 54 + ], + [ + 66 + ] + ], + "shuai_demand": null + }, + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "pushlist": [] + } + } + }, + { + "step": 5, + "seat": 0, + "packetIndex": 12, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 6, + 60, + 86, + 73, + 55, + 94, + 81, + 14, + 0, + 11, + 10, + 64, + 63, + 8, + 7, + 105, + 50, + 103, + 47, + 101, + 46, + 98, + 26, + 38, + 90, + 89 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "burycards": [ + 67, + 25, + 79, + 76, + 22, + 75, + 20, + 71 + ], + "grade": 10, + "curmultiple": 2, + "playproc": { + "round": 28, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1114, + "cards": [ + [ + 103 + ], + [ + 54 + ], + [ + 66 + ] + ], + "shuai_demand": null + }, + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "pushlist": [ + [ + [ + 33 + ], + [ + 92 + ], + [ + 80 + ] + ], + [ + [ + 52 + ], + [ + 13 + ], + [ + 18 + ] + ] + ] + } + } + }, + { + "step": 6, + "seat": 0, + "packetIndex": 90, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + -12, + 6, + 6 + ], + "step": 6, + "MyCards": [], + "Balance": { + "readystate": [ + 0, + 0, + 0 + ], + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 155, + "upgrade": -3, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -12, + "grade": -12, + "score": -12 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + } + ] + } + } + } + }, + { + "step": 6, + "seat": 1, + "packetIndex": 90, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + -12, + 6, + 6 + ], + "step": 6, + "MyCards": [], + "Balance": { + "readystate": [ + 0, + 0, + 0 + ], + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 155, + "upgrade": -3, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -12, + "grade": -12, + "score": -12 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + } + ] + } + } + } + }, + { + "step": 6, + "seat": 2, + "packetIndex": 90, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + -12, + 6, + 6 + ], + "step": 6, + "MyCards": [], + "Balance": { + "readystate": [ + 0, + 0, + 0 + ], + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 155, + "upgrade": -3, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -12, + "grade": -12, + "score": -12 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 6, + "grade": 6, + "score": 6 + } + ] + } + } + } + } + ] +} \ No newline at end of file diff --git a/client/tests/test_fixture.js b/client/tests/test_fixture.js new file mode 100644 index 0000000..aa27376 --- /dev/null +++ b/client/tests/test_fixture.js @@ -0,0 +1,33 @@ +// 夹具自检:真包必须覆盖全部阶段,且保留座位差异 +const fs = require('fs'); +const path = require('path'); +const { ROOT } = require('./_load'); +const t = require('./_assert')(); + +const fx = JSON.parse(fs.readFileSync(path.join(ROOT, 'client/tests/fixtures/packets.json'), 'utf8')); + +t.eq('三个座位', fx.seats.length, 3); + +const rpcsOf = seat => fx.seats[seat].map(p => p.rpc); +const allRpcs = [].concat(rpcsOf(0), rpcsOf(1), rpcsOf(2)); + +['fapai','jiaofen','shangzhuang','xuanzhu','maipai','chupai1','chupai2','chupai3','jiesuan'] + .forEach(rpc => t.eq('夹具覆盖 ' + rpc, allRpcs.indexOf(rpc) >= 0, true)); + +// 差异化下发确实存在:bottomcards 不该三家都有 +const withBottom = [0,1,2].filter(s => + fx.seats[s].some(p => p.rpc === 'shangzhuang' && p.data.hasOwnProperty('bottomcards'))); +t.eq('底牌只发给部分座位', withBottom.length < 3, true); + +// deskinfo 快照覆盖多个阶段 +const steps = fx.deskinfo.map(d => d.step).filter((v, i, a) => a.indexOf(v) === i).sort(); +t.eq('deskinfo 覆盖 ≥3 个阶段', steps.length >= 3, true); + +// 每个包都有 success(协议 §0.1:每个下发包的 data 必带 success) +const noSuccess = []; +[0,1,2].forEach(s => fx.seats[s].forEach(p => { + if (!p.data || !p.data.hasOwnProperty('success')) { noSuccess.push(s + ':' + p.rpc); } +})); +t.eq('每个下发包都带 success', noSuccess, []); + +process.exit(t.done('fixture') ? 0 : 1); From e2d470d37f2ab06814fffa8f4280681cfa548f79 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:35:02 +0800 Subject: [PATCH 15/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=B9=E5=85=B7=E5=AF=BC=E5=87=BA=E7=9A=84?= =?UTF-8?q?=E6=B4=BB=E5=BC=95=E7=94=A8=E6=B1=A1=E6=9F=93=E5=B9=B6=E5=BC=95?= =?UTF-8?q?=E5=85=A5=E5=9B=BA=E5=AE=9A=E7=A7=8D=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 审查发现 C-1(阻塞):export_packets.js 的 snap() 直接存了 class.export.js get_deskinfo() 返回的 PushCards.playproc/seatlist——这两个 字段在服务端是无拷贝的活引用赋值,脚本却在整局跑完后才统一 JSON.stringify 写盘,导致中途出牌不断原地改写这两个对象,已存的 step5 快照被事后篡改成终 局状态。修法是在 snap() 里对 get_deskinfo 的返回值套一层已有的 clone()。这 是导出脚本"延后序列化"这个用法本身的缺陷,不动 server/。 同时按裁决引入固定种子:min_random 只在 class.paiju.js 的发牌洗牌里用到, 原始实现走 Math.random();改为在导出脚本进程内 monkey-patch 一个 xorshift32 确定性 PRNG(写法与服务端既有测试 test_flow.js 等一致),种子值 DEAL_SEED 写 成具名常量。连跑两次导出脚本,packets.json 逐字节无 diff。 test_fixture.js 补强三条断言:底牌"只发给部分座位"改为精确断言恰好1个座位; 新增 packetIndex/roomtype/step 自洽性检查;step5 快照的 playproc 回归锁直接 捕获本次的活引用污染类缺陷;deskinfo 阶段覆盖从"≥3个"改为显式钉死 [1,2,3,5,6]。 Co-Authored-By: Claude Opus 5 (1M context) --- client/tests/fixtures/export_packets.js | 25 +- client/tests/fixtures/packets.json | 34425 +++++++++++----------- client/tests/test_fixture.js | 35 +- 3 files changed, 17253 insertions(+), 17232 deletions(-) diff --git a/client/tests/fixtures/export_packets.js b/client/tests/fixtures/export_packets.js index 49e7286..815494d 100644 --- a/client/tests/fixtures/export_packets.js +++ b/client/tests/fixtures/export_packets.js @@ -33,6 +33,22 @@ const OUT = path.join(ROOT, 'client/tests/fixtures/packets.json'); // 常规房:可查牌、不爬坡、不傍王(roomtype 位串全 0,见 class.config.js) const ROOMTYPE = '00000'; +// 固定种子:只在本导出脚本进程内替换 global.min_random(不改 server/_shim.js), +// 让「同一份脚本重复运行」产出逐字节相同的 packets.json,便于 review diff 与回归。 +// 写法与服务端既有测试(test_flow.js/test_fuzz.js/test_leak.js)的 xorshift 种子一致。 +// 改这个值会重新生成整局牌(发牌结果、叫分走向、出牌过程全变),产物 diff 会很大。 +const DEAL_SEED = 0x5A5A2026; +(function seedDeal(seed) { + let state = seed >>> 0; + const rnd = function (n) { + state ^= state << 13; state >>>= 0; + state ^= state >>> 17; + state ^= state << 5; state >>>= 0; + return state % n; + }; + global.min_random = function (min, max) { return min + rnd(max - min + 1); }; +})(DEAL_SEED); + const clone = function (m) { return JSON.parse(JSON.stringify(m)); }; // 装配一个"真实牌桌":D.new() 建牌桌,global.youle_erqiwang.app/import 与 @@ -91,13 +107,20 @@ function drain() { } // packetIndex 是关键对齐锚点:取快照时先 drain,记下该座位此刻已收到的包数, // 与 Task 12 一致性测试"喂完 seats[seat] 的前 packetIndex 个包"对齐。 +// +// 【必须 clone】class.export.js 的 get_deskinfo 在 step5 分支对 PushCards.playproc / +// PushCards.seatlist 是【无拷贝的活引用赋值】(deskinfo.PushCards.playproc = paiju.playproc)。 +// 真实链路里这份返回值被平台立刻序列化下发,活引用不会被观测到;但本脚本要跑完整局之后才 +// 统一 JSON.stringify 写盘,若不在这里当场拷贝一份,写盘时这些字段会被后续出牌篡改成终局 +// 状态,导致同一座位不同 packetIndex 下的快照"逐字节相同"——这是本脚本自身的缺陷,与服务端 +// 无关(服务端没有"延后序列化"这个用法)。 function snap(step, seat) { drain(); deskinfo.push({ step: step, seat: seat, packetIndex: seatPackets[seat].length, - info: E.get_deskinfo(o_room, seat) + info: clone(E.get_deskinfo(o_room, seat)) }); } diff --git a/client/tests/fixtures/packets.json b/client/tests/fixtures/packets.json index 7db6636..9a13644 100644 --- a/client/tests/fixtures/packets.json +++ b/client/tests/fixtures/packets.json @@ -12,33 +12,33 @@ "countdown": 15, "cards": [ 52, - 86, - 73, - 6, - 60, + 19, 94, - 81, + 68, 14, + 55, + 93, 105, - 50, - 98, - 26, - 38, + 103, + 102, + 46, + 92, + 37, + 36, 90, - 89, - 33, 67, - 25, - 76, - 22, 75, - 20, + 18, + 72, + 71, + 54, 0, - 64, 10, + 64, 63, - 8, - 7 + 62, + 7, + 59 ] } }, @@ -80,51 +80,51 @@ "curmultiple": 3, "cards": [ 52, - 86, - 73, - 6, - 60, + 19, 94, - 81, + 68, 14, 55, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, + 100, + 92, + 37, + 36, 90, - 89, 33, 67, 79, - 25, - 22, - 76, + 23, 75, 20, + 72, + 18, 71, 0, - 11, - 64, + 54, + 66, 10, + 64, 63, - 8, - 7 + 62, + 7, + 59 ], "bottomcards": [ - 55, - 103, + 51, 101, - 47, - 46, + 100, + 33, 79, - 71, - 11 + 23, + 20, + 66 ] } }, @@ -137,40 +137,40 @@ "countdown": 25, "cards": [ 52, - 6, - 60, - 86, - 73, + 19, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, + 100, + 92, + 37, + 36, 90, - 89, 33, 67, 79, - 25, - 22, - 76, + 23, 75, 20, + 72, + 18, 71 ] } @@ -183,42 +183,42 @@ "countdown": 30, "cards": [ 52, - 6, - 60, - 86, - 73, + 19, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, + 100, + 92, + 37, + 36, 90, - 89, 33 ], "burycards": [ 67, 79, - 25, - 22, - 76, + 23, 75, 20, + 72, + 18, 71 ] } @@ -308,32 +308,32 @@ "cardtype": 101, "cardsinhand": [ 52, - 6, - 60, - 86, - 73, + 19, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, - 90, - 89 + 100, + 92, + 37, + 36, + 90 ] } }, @@ -343,7 +343,7 @@ "success": true, "seat": 1, "cards": [ - 92 + 80 ], "seatlist": [ [ @@ -425,7 +425,90 @@ "success": true, "seat": 2, "cards": [ - 80 + 26 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 ], "seatlist": [ [ @@ -497,19 +580,20 @@ ], "nextseat": 2, "countdown": 30, - "curmultiple": 2, + "curmultiple": 3, "baozhu": 0, - "maxseat": 2, - "grade": 10 + "count": 1, + "flower": 2, + "cardtype": 101 } }, { - "rpc": "chupai1", + "rpc": "chupai2", "data": { "success": true, "seat": 2, "cards": [ - 18 + 13 ], "seatlist": [ [ @@ -581,15 +665,12 @@ ], "nextseat": 0, "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 + "curmultiple": 3, + "baozhu": 0 } }, { - "rpc": "chupai2", + "rpc": "chupai3", "data": { "success": true, "seat": 0, @@ -664,121 +745,39 @@ ] ] ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 6, - 60, - 86, - 73, - 55, - 94, - 81, - 14, - 0, - 11, - 10, - 64, - 63, - 8, - 7, - 105, - 50, - 103, - 47, - 101, - 46, - 98, - 26, - 38, - 90, - 89 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 13 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], "nextseat": 0, "countdown": 30, - "curmultiple": 2, + "curmultiple": 3, "baozhu": 0, - "maxseat": 0 + "maxseat": 0, + "cardsinhand": [ + 19, + 55, + 94, + 68, + 14, + 54, + 0, + 66, + 64, + 10, + 63, + 62, + 7, + 59, + 93, + 51, + 105, + 103, + 102, + 101, + 46, + 100, + 92, + 37, + 36, + 90 + ] } }, { @@ -787,7 +786,7 @@ "success": true, "seat": 0, "cards": [ - 89 + 90 ], "seatlist": [ [ @@ -859,37 +858,37 @@ ], "nextseat": 1, "countdown": 30, - "curmultiple": 2, + "curmultiple": 3, "baozhu": 0, "count": 1, "flower": 3, "cardtype": 101, "cardsinhand": [ - 6, - 60, - 86, - 73, + 19, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, - 90 + 100, + 92, + 37, + 36 ] } }, @@ -899,7 +898,7 @@ "success": true, "seat": 1, "cards": [ - 36 + 34 ], "seatlist": [ [ @@ -971,7 +970,7 @@ ], "nextseat": 2, "countdown": 30, - "curmultiple": 2, + "curmultiple": 3, "baozhu": 0 } }, @@ -981,7 +980,7 @@ "success": true, "seat": 2, "cards": [ - 37 + 38 ], "seatlist": [ [ @@ -1065,7 +1064,7 @@ "success": true, "seat": 2, "cards": [ - 77 + 74 ], "seatlist": [ [ @@ -1150,7 +1149,7 @@ "success": true, "seat": 0, "cards": [ - 6 + 19 ], "seatlist": [ [ @@ -1225,30 +1224,30 @@ "curmultiple": 2, "baozhu": 0, "cardsinhand": [ - 60, - 86, - 73, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, - 90 + 100, + 92, + 37, + 36 ] } }, @@ -1341,7 +1340,7 @@ "success": true, "seat": 0, "cards": [ - 90 + 36 ], "seatlist": [ [ @@ -1419,29 +1418,29 @@ "flower": 3, "cardtype": 101, "cardsinhand": [ - 60, - 86, - 73, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38 + 100, + 92, + 37 ] } }, @@ -1451,7 +1450,7 @@ "success": true, "seat": 1, "cards": [ - 34 + 88 ], "seatlist": [ [ @@ -1616,7 +1615,7 @@ "success": true, "seat": 2, "cards": [ - 23 + 76 ], "seatlist": [ [ @@ -1701,7 +1700,7 @@ "success": true, "seat": 0, "cards": [ - 60 + 55 ], "seatlist": [ [ @@ -1776,28 +1775,28 @@ "curmultiple": 2, "baozhu": 0, "cardsinhand": [ - 86, - 73, - 55, 94, - 81, + 68, 14, 0, - 11, - 10, + 54, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38 + 100, + 92, + 37 ] } }, @@ -1807,7 +1806,7 @@ "success": true, "seat": 1, "cards": [ - 21 + 78 ], "seatlist": [ [ @@ -1890,7 +1889,7 @@ "success": true, "seat": 0, "cards": [ - 38 + 37 ], "seatlist": [ [ @@ -1968,27 +1967,27 @@ "flower": 3, "cardtype": 101, "cardsinhand": [ - 86, - 73, - 55, 94, - 81, + 68, 14, 0, - 11, - 10, + 54, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26 + 100, + 92 ] } }, @@ -1998,7 +1997,7 @@ "success": true, "seat": 1, "cards": [ - 88 + 87 ], "seatlist": [ [ @@ -2163,7 +2162,7 @@ "success": true, "seat": 0, "cards": [ - 26 + 92 ], "seatlist": [ [ @@ -2241,26 +2240,26 @@ "flower": 3, "cardtype": 101, "cardsinhand": [ - 86, - 73, - 55, 94, - 81, + 68, 14, 0, - 11, - 10, + 54, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98 + 100 ] } }, @@ -2270,7 +2269,7 @@ "success": true, "seat": 1, "cards": [ - 87 + 31 ], "seatlist": [ [ @@ -2352,7 +2351,7 @@ "success": true, "seat": 2, "cards": [ - 85 + 89 ], "seatlist": [ [ @@ -2435,7 +2434,7 @@ "success": true, "seat": 0, "cards": [ - 98 + 100 ], "seatlist": [ [ @@ -2513,23 +2512,23 @@ "flower": 4, "cardtype": 101, "cardsinhand": [ - 86, - 73, - 55, 94, - 81, + 68, 14, 0, - 11, - 10, + 54, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46 ] @@ -2540,6 +2539,88 @@ "data": { "success": true, "seat": 1, + "cards": [ + 50 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, "cards": [ 39 ], @@ -2614,16 +2695,102 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, - "baozhu": 0 + "baozhu": 0, + "maxseat": 2 } }, { - "rpc": "chupai3", + "rpc": "chupai1", "data": { "success": true, "seat": 2, "cards": [ - 51 + 25 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 94 ], "seatlist": [ [ @@ -2697,184 +2864,35 @@ "countdown": 30, "curmultiple": 2, "baozhu": 0, - "maxseat": 1, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 17 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 78 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 + "cardsinhand": [ + 14, + 68, + 54, + 0, + 66, + 10, + 64, + 63, + 62, + 7, + 59, + 93, + 51, + 105, + 103, + 102, + 101, + 46 + ] } }, { "rpc": "chupai3", "data": { "success": true, - "seat": 0, + "seat": 1, "cards": [ - 86 + 77 ], "seatlist": [ [ @@ -2948,27 +2966,7 @@ "countdown": 30, "curmultiple": 2, "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 73, - 55, - 94, - 81, - 14, - 0, - 11, - 64, - 10, - 63, - 8, - 7, - 105, - 50, - 103, - 47, - 101, - 46 - ] + "maxseat": 0 } }, { @@ -3055,22 +3053,22 @@ "flower": 4, "cardtype": 101, "cardsinhand": [ - 73, - 55, - 94, - 81, 14, + 68, + 54, 0, - 11, - 64, + 66, 10, + 64, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101 ] } @@ -3081,7 +3079,7 @@ "success": true, "seat": 1, "cards": [ - 93 + 49 ], "seatlist": [ [ @@ -3233,279 +3231,11 @@ ] ] ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 72 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], "nextseat": 2, "countdown": 30, "curmultiple": 2, "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 106 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 73 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2, - "cardsinhand": [ - 55, - 94, - 81, - 14, - 0, - 11, - 10, - 64, - 63, - 8, - 7, - 105, - 50, - 103, - 47, - 101 - ] + "maxseat": 2 } }, { @@ -3514,7 +3244,7 @@ "success": true, "seat": 2, "cards": [ - 84 + 30 ], "seatlist": [ [ @@ -3567,8 +3297,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -3599,7 +3329,7 @@ "success": true, "seat": 0, "cards": [ - 55 + 14 ], "seatlist": [ [ @@ -3652,8 +3382,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -3674,20 +3404,21 @@ "curmultiple": 2, "baozhu": 0, "cardsinhand": [ - 94, - 81, - 14, + 68, + 54, 0, - 11, + 66, 10, 64, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101 ] } @@ -3698,7 +3429,7 @@ "success": true, "seat": 1, "cards": [ - 31 + 84 ], "seatlist": [ [ @@ -3751,8 +3482,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -3834,8 +3565,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -3859,20 +3590,21 @@ "flower": 4, "cardtype": 101, "cardsinhand": [ - 94, - 81, - 14, + 68, + 54, 0, - 11, + 66, 10, 64, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47 + 102 ] } }, @@ -3935,8 +3667,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -3964,7 +3696,7 @@ "success": true, "seat": 2, "cards": [ - 49 + 98 ], "seatlist": [ [ @@ -4017,8 +3749,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -4034,203 +3766,21 @@ ] ] ], - "nextseat": 2, + "nextseat": 1, "countdown": 30, - "curmultiple": 1, + "curmultiple": 2, "baozhu": 0, - "maxseat": 2, + "maxseat": 1, "grade": 10 } }, { "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 43 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 105 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "cardsinhand": [ - 94, - 81, - 14, - 0, - 11, - 10, - 64, - 63, - 8, - 7, - 50, - 103, - 47 - ] - } - }, - { - "rpc": "chupai3", "data": { "success": true, "seat": 1, "cards": [ - 44 + 21 ], "seatlist": [ [ @@ -4282,10 +3832,6 @@ 0, 0 ], - [ - 1, - 1 - ], [ 0, 0 @@ -4294,184 +3840,6 @@ 0, 0 ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 47 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 94, - 81, - 14, - 0, - 11, - 10, - 64, - 63, - 8, - 7, - 50, - 103 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 97 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], [ 0, 0 @@ -4484,176 +3852,10 @@ ], "nextseat": 2, "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 102 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 2, - "grade": 15 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 100 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, + "curmultiple": 2, "baozhu": 0, "count": 1, - "flower": 4, + "flower": 2, "cardtype": 101 } }, @@ -4661,102 +3863,7 @@ "rpc": "chupai2", "data": { "success": true, - "seat": 0, - "cards": [ - 50 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "cardsinhand": [ - 94, - 81, - 14, - 0, - 11, - 10, - 64, - 63, - 8, - 7, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, + "seat": 2, "cards": [ 53 ], @@ -4796,178 +3903,10 @@ 0, 0 ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ [ 0, 0 ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 74 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 45 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], [ -1, -1 @@ -4998,7 +3937,7 @@ ], "nextseat": 0, "countdown": 30, - "curmultiple": 1, + "curmultiple": 2, "baozhu": 0 } }, @@ -5008,7 +3947,7 @@ "success": true, "seat": 0, "cards": [ - 94 + 68 ], "seatlist": [ [ @@ -5047,8 +3986,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ -1, @@ -5080,20 +4019,24 @@ ], "nextseat": 2, "countdown": 30, - "curmultiple": 1, + "curmultiple": 2, "baozhu": 0, "maxseat": 2, "cardsinhand": [ - 81, - 14, 0, - 11, + 54, + 66, 64, 10, 63, - 8, + 62, 7, - 103 + 59, + 93, + 51, + 105, + 103, + 102 ] } }, @@ -5103,7 +4046,7 @@ "success": true, "seat": 2, "cards": [ - 4 + 85 ], "seatlist": [ [ @@ -5142,8 +4085,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ -1, @@ -5175,536 +4118,13 @@ ], "nextseat": 0, "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 81 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "cardsinhand": [ - 14, - 0, - 11, - 10, - 64, - 63, - 8, - 7, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 107 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 1, - "grade": 5 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 30 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, + "curmultiple": 2, "baozhu": 0, "count": 1, "flower": 3, "cardtype": 101 } }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 1 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 14 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2, - "grade": 5, - "cardsinhand": [ - 0, - 11, - 10, - 64, - 63, - 8, - 7, - 103 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 59 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, { "rpc": "chupai2", "data": { @@ -5750,8 +4170,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ -1, @@ -5768,8 +4188,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -5783,5401 +4203,33 @@ ], "nextseat": 1, "countdown": 30, - "curmultiple": -1, + "curmultiple": 2, "baozhu": 0, "cardsinhand": [ - 11, + 54, + 66, + 64, 10, - 64, 63, - 8, + 62, 7, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 99 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 58 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 40 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 11 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2, - "grade": 5, - "cardsinhand": [ - 10, - 64, - 63, - 8, - 7, - 103 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 61 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 10 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "cardsinhand": [ - 64, - 63, - 8, - 7, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 32 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 5 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 68 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 64 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2, - "cardsinhand": [ - 63, - 8, - 7, - 103 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 62 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 63 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "cardsinhand": [ - 8, - 7, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 19 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 9 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 12 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 8 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2, - "grade": 20, - "cardsinhand": [ - 7, - 103 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 65 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "mustcard": [ - 7 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 7 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1, - "cardsinhand": [ - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 27 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 54 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 66 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1, - "mustcard": [ - 103 - ] - } - }, - { - "rpc": "jiesuan", - "data": { - "success": true, - "curmultiple": -2, - "chupai": { - "seat": 0, - "cards": [ - 103 - ], - "maxseat": 1, - "grade": 10 - }, - "bottom": { - "cards": [ - 67, - 25, - 79, - 76, - 22, - 75, - 20, - 71 - ], - "multiple": 1, - "grade1": 45, - "grade2": 45 - }, - "aset": { - "banker": 0, - "call": 65, - "multiple": 2, - "flower": 1, - "grade": 155, - "upgrade": -3, - "bangwang": 0, - "climb": 0, - "seatlist": [ - { - "cards": [ - 52 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": -12, - "grade": -12, - "score": -12 - }, - { - "cards": [ - 53, - 107 - ], - "chongguan": 0, - "wang": 2, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - }, - { - "cards": [ - 106 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - } - ] - } - } - } - ], - [ - { - "rpc": "fapai", - "data": { - "success": true, - "asetidx": 1, - "asetcount": 6, - "seat": 0, - "countdown": 15, - "cards": [ - 53, - 107, - 99, - 32, - 19, - 27, - 39, + 59, 93, - 48, - 44, - 97, - 92, - 36, - 88, - 34, - 87, - 31, - 30, - 13, - 24, - 21, - 74, - 72, - 17, - 54, - 9, - 5, - 58 - ] - } - }, - { - "rpc": "jiaofen", - "data": { - "success": true, - "seat": 0, - "call": 65, - "currcall": 65, - "multiple": 2, - "nextseat": 1, - "countdown": 15 - } - }, - { - "rpc": "jiaofen", - "data": { - "success": true, - "seat": 1, - "call": 0, - "currcall": 65, - "multiple": 2, - "nextseat": 2, - "countdown": 15 - } - }, - { - "rpc": "shangzhuang", - "data": { - "success": true, - "seat": 2, - "call": 0, - "banker": 0, - "grade": 65, - "multiple": 2, - "countdown": 20, - "touxiang": 0, - "curmultiple": 3 - } - }, - { - "rpc": "xuanzhu", - "data": { - "success": true, - "banker": 0, - "flower": 1, - "countdown": 25, - "cards": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 92, - 36, - 88, - 34, - 87, - 31, - 30, - 13, - 24, - 21, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "maipai", - "data": { - "success": true, - "seat": 0, - "countdown": 30 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 33 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 3, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 92 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 3, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 36, - 34, - 88, - 87, - 31, - 30, - 13, - 24, - 21, - 74, - 72, - 17 + 51, + 105, + 103, + 102 ] } }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 80 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 18 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 52 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, { "rpc": "chupai3", "data": { "success": true, "seat": 1, - "cards": [ - 13 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 36, - 34, - 88, - 87, - 31, - 30, - 24, - 21, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 89 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 36 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 34, - 88, - 87, - 31, - 30, - 24, - 21, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 37 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 77 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 6 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 24 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 34, - 88, - 87, - 31, - 30, - 21, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 90 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 34 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 88, - 87, - 31, - 30, - 21, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 91 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 23 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 60 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 21 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 88, - 87, - 31, - 30, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 38 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 88 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 87, - 31, - 30, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 35 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 26 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 87 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 39, - 93, - 48, - 44, - 97, - 31, - 30, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 85 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 98 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 39 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 93, - 48, - 44, - 97, - 31, - 30, - 74, - 72, - 17 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 51 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 1, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 17 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 93, - 48, - 44, - 97, - 31, - 30, - 74, - 72 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 78 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 86 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 46 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 93 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 48, - 44, - 97, - 31, - 30, - 74, - 72 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 104 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 72 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 48, - 44, - 97, - 31, - 30, - 74 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, "cards": [ 106 ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 73 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 84 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 55 - ], "seatlist": [ [ [ @@ -11206,24 +4258,6 @@ 0, 0 ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ [ 0, 0 @@ -11236,170 +4270,6 @@ 0, 0 ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 31 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 48, - 44, - 97, - 30, - 74 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 101 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], [ -1, -1 @@ -11432,18 +4302,16 @@ "countdown": 30, "curmultiple": 2, "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 + "maxseat": 1 } }, { - "rpc": "chupai2", + "rpc": "chupai1", "data": { "success": true, "seat": 1, "cards": [ - 48 + 22 ], "seatlist": [ [ @@ -11478,8 +4346,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 0, @@ -11517,1248 +4385,8 @@ "countdown": 30, "curmultiple": 2, "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 44, - 97, - 30, - 74 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 49 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 43 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 105 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 44 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 97, - 30, - 74 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 47 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "mustcard": [ - 97 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 97 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "cardsinhand": [ - 53, - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 30, - 74 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 102 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 2, - "grade": 15 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 100 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 50 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 53 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 1, - "cardsinhand": [ - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 30, - 74 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 74 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, "count": 1, "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 107, - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 30 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 45 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 94 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 4 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 1, "cardtype": 101 } }, @@ -12766,89 +4394,7 @@ "rpc": "chupai2", "data": { "success": true, - "seat": 0, - "cards": [ - 81 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, + "seat": 2, "cards": [ 107 ], @@ -12884,79 +4430,6 @@ 0, 0 ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 1, - "grade": 5, - "cardsinhand": [ - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58, - 30 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 30 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], [ 1, 1 @@ -12970,28 +4443,6 @@ -1 ] ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], [ [ 0, @@ -13015,104 +4466,9 @@ ] ] ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 99, - 32, - 19, - 27, - 54, - 9, - 5, - 58 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 1 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], "nextseat": 0, "countdown": 30, - "curmultiple": 1, + "curmultiple": 2, "baozhu": 0 } }, @@ -13122,7 +4478,7 @@ "success": true, "seat": 0, "cards": [ - 14 + 54 ], "seatlist": [ [ @@ -13156,14 +4512,14 @@ 0, 0 ], - [ - 0, - 0 - ], [ 1, 1 ], + [ + 0, + 0 + ], [ -1, -1 @@ -13179,8 +4535,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -13194,10 +4550,24 @@ ], "nextseat": 2, "countdown": 30, - "curmultiple": -1, + "curmultiple": 2, "baozhu": 0, "maxseat": 2, - "grade": 5 + "grade": 10, + "cardsinhand": [ + 66, + 64, + 10, + 63, + 62, + 7, + 59, + 93, + 51, + 105, + 103, + 102 + ] } }, { @@ -13206,7 +4576,7 @@ "success": true, "seat": 2, "cards": [ - 59 + 97 ], "seatlist": [ [ @@ -13240,14 +4610,14 @@ 0, 0 ], - [ - 0, - 0 - ], [ 1, 1 ], + [ + 0, + 0 + ], [ -1, -1 @@ -13263,8 +4633,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -13278,10 +4648,10 @@ ], "nextseat": 0, "countdown": 30, - "curmultiple": -1, + "curmultiple": 2, "baozhu": 0, "count": 1, - "flower": 1, + "flower": 4, "cardtype": 101 } }, @@ -13291,7 +4661,7 @@ "success": true, "seat": 0, "cards": [ - 0 + 93 ], "seatlist": [ [ @@ -13325,6 +4695,20 @@ 0, 0 ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ [ 0, 0 @@ -13333,11 +4717,48 @@ 1, 1 ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], [ -1, -1 ] - ], + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 66, + 64, + 10, + 63, + 62, + 7, + 59, + 51, + 105, + 103, + 102 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 47 + ], + "seatlist": [ [ [ 0, @@ -13359,16 +4780,158 @@ -1, -1 ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] ] ], "nextseat": 1, "countdown": 30, - "curmultiple": -1, - "baozhu": 0 + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 66, + 64, + 10, + 63, + 62, + 7, + 59, + 51, + 105, + 103 + ] } }, { - "rpc": "chupai3", + "rpc": "chupai2", "data": { "success": true, "seat": 1, @@ -13403,5628 +4966,6 @@ 0, 0 ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1, - "cardsinhand": [ - 32, - 19, - 27, - 54, - 9, - 5, - 58 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 58 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 32, - 19, - 27, - 54, - 9, - 5 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 40 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 11 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2, - "grade": 5 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 61 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 10 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 32 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1, - "cardsinhand": [ - 19, - 27, - 54, - 9, - 5 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 5 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 19, - 27, - 54, - 9 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 68 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 64 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 62 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 63 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 19 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1, - "grade": 10, - "cardsinhand": [ - 27, - 54, - 9 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 9 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 27, - 54 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 12 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 8 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2, - "grade": 20 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 65 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 7 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 27 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1, - "maxseat": 1, - "cardsinhand": [ - 54 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 54 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 66 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 1 - } - }, - { - "rpc": "jiesuan", - "data": { - "success": true, - "curmultiple": -2, - "chupai": { - "seat": 0, - "cards": [ - 103 - ], - "maxseat": 1, - "grade": 10 - }, - "bottom": { - "cards": [ - 67, - 25, - 79, - 76, - 22, - 75, - 20, - 71 - ], - "multiple": 1, - "grade1": 45, - "grade2": 45 - }, - "aset": { - "banker": 0, - "call": 65, - "multiple": 2, - "flower": 1, - "grade": 155, - "upgrade": -3, - "bangwang": 0, - "climb": 0, - "seatlist": [ - { - "cards": [ - 52 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": -12, - "grade": -12, - "score": -12 - }, - { - "cards": [ - 53, - 107 - ], - "chongguan": 0, - "wang": 2, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - }, - { - "cards": [ - 106 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - } - ] - } - } - } - ], - [ - { - "rpc": "fapai", - "data": { - "success": true, - "asetidx": 1, - "asetcount": 6, - "seat": 0, - "countdown": 15, - "cards": [ - 106, - 45, - 40, - 68, - 1, - 51, - 104, - 49, - 102, - 100, - 43, - 80, - 37, - 91, - 35, - 85, - 84, - 78, - 77, - 23, - 18, - 66, - 12, - 65, - 62, - 61, - 59, - 4 - ] - } - }, - { - "rpc": "jiaofen", - "data": { - "success": true, - "seat": 0, - "call": 65, - "currcall": 65, - "multiple": 2, - "nextseat": 1, - "countdown": 15 - } - }, - { - "rpc": "jiaofen", - "data": { - "success": true, - "seat": 1, - "call": 0, - "currcall": 65, - "multiple": 2, - "nextseat": 2, - "countdown": 15 - } - }, - { - "rpc": "shangzhuang", - "data": { - "success": true, - "seat": 2, - "call": 0, - "banker": 0, - "grade": 65, - "multiple": 2, - "countdown": 20, - "touxiang": 0, - "curmultiple": 3 - } - }, - { - "rpc": "xuanzhu", - "data": { - "success": true, - "banker": 0, - "flower": 1, - "countdown": 25, - "cards": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 80, - 37, - 91, - 35, - 85, - 84, - 78, - 77, - 23, - 18 - ] - } - }, - { - "rpc": "maipai", - "data": { - "success": true, - "seat": 0, - "countdown": 30 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 33 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 3, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 92 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 3, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 80 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2, - "grade": 10, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 37, - 91, - 35, - 85, - 84, - 78, - 23, - 77, - 18 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 18 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 37, - 91, - 35, - 85, - 84, - 78, - 23, - 77 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 52 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 13 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 89 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 36 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 37 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2, - "grade": 10, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 91, - 35, - 85, - 84, - 78, - 23, - 77 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 77 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 91, - 35, - 85, - 84, - 78, - 23 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 6 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 24 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 90 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 34 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 91 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 35, - 85, - 84, - 78, - 23 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 23 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 35, - 85, - 84, - 78 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 60 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 21 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 38 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 88 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 35 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 85, - 84, - 78 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 26 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 87 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 85 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 51, - 104, - 49, - 102, - 100, - 43, - 84, - 78 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 98 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 39 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 51 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 1, - "grade": 10, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 104, - 49, - 102, - 100, - 43, - 84, - 78 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 17 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "mustcard": [ - 78 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 78 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 104, - 49, - 102, - 100, - 43, - 84 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 86 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 46 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 93 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 104 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 1, - "cardsinhand": [ - 106, - 45, - 1, - 40, - 68, - 12, - 66, - 65, - 62, - 61, - 59, - 4, - 49, - 102, - 100, - 43, - 84 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 72 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 106 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "cardsinhand": [ - 45, - 1, - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59, - 4, - 49, - 102, - 100, - 43, - 84 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 73 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 84 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 45, - 1, - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59, - 4, - 49, - 102, - 100, - 43 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 55 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 31 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 101 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 48 - ], - "seatlist": [ - [ [ 0, 0 @@ -19037,32 +4978,6 @@ 1, 1 ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], [ -1, -1 @@ -19102,288 +5017,6 @@ "data": { "success": true, "seat": 2, - "cards": [ - 49 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 2, - "grade": 10, - "cardsinhand": [ - 45, - 1, - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59, - 4, - 102, - 100, - 43 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 43 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 45, - 1, - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59, - 4, - 102, - 100 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 105 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, "cards": [ 44 ], @@ -19415,63 +5048,6 @@ 0, 0 ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 47 - ], - "seatlist": [ - [ [ 0, 0 @@ -19484,32 +5060,6 @@ 1, 1 ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], [ -1, -1 @@ -19542,18 +5092,17 @@ "countdown": 30, "curmultiple": 1, "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 + "maxseat": 1, + "grade": 10 } }, { - "rpc": "chupai2", + "rpc": "chupai1", "data": { "success": true, "seat": 1, "cards": [ - 97 + 4 ], "seatlist": [ [ @@ -19588,12 +5137,12 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ - 0, - 0 + 1, + 1 ], [ -1, @@ -19626,16 +5175,19 @@ "nextseat": 2, "countdown": 30, "curmultiple": 1, - "baozhu": 0 + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 } }, { - "rpc": "chupai3", + "rpc": "chupai2", "data": { "success": true, "seat": 2, "cards": [ - 102 + 6 ], "seatlist": [ [ @@ -19669,6 +5221,28 @@ 0, 0 ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], [ 0, 0 @@ -19681,6 +5255,66 @@ -1, -1 ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 66 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] ], [ [ @@ -19712,18 +5346,15 @@ "maxseat": 2, "grade": 15, "cardsinhand": [ - 45, - 1, - 40, - 68, - 66, - 12, - 65, + 10, + 64, + 63, 62, - 61, + 7, 59, - 4, - 100 + 51, + 105, + 103 ] } }, @@ -19733,7 +5364,7 @@ "success": true, "seat": 2, "cards": [ - 100 + 43 ], "seatlist": [ [ @@ -19768,12 +5399,12 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ - 0, - 0 + 1, + 1 ], [ -1, @@ -19809,373 +5440,16 @@ "baozhu": 0, "count": 1, "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 45, - 1, - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59, - 4 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 50 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 53 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 74 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 2, "cardtype": 101 } }, { "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 45 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "cardsinhand": [ - 1, - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59, - 4 - ] - } - }, - { - "rpc": "chupai3", "data": { "success": true, "seat": 0, "cards": [ - 94 + 51 ], "seatlist": [ [ @@ -20209,189 +5483,10 @@ 0, 0 ], - [ - 0, - 0 - ], [ 1, 1 ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 4 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 1, - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 81 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], [ 1, 1 @@ -20427,7 +5522,17 @@ "nextseat": 1, "countdown": 30, "curmultiple": 1, - "baozhu": 0 + "baozhu": 0, + "cardsinhand": [ + 10, + 64, + 63, + 62, + 7, + 59, + 105, + 103 + ] } }, { @@ -20436,7 +5541,7 @@ "success": true, "seat": 1, "cards": [ - 107 + 73 ], "seatlist": [ [ @@ -20471,8 +5576,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -20508,530 +5613,10 @@ ], "nextseat": 1, "countdown": 30, - "curmultiple": 1, + "curmultiple": -1, "baozhu": 0, "maxseat": 1, - "grade": 5 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 30 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 1 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "baozhu": 0, - "cardsinhand": [ - 40, - 68, - 66, - 12, - 65, - 62, - 61, - 59 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 14 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 2, - "grade": 5 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 59 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 40, - 68, - 66, - 12, - 65, - 62, - 61 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 0 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 99 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1 + "grade": 15 } }, { @@ -21075,8 +5660,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21097,8 +5682,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21125,7 +5710,7 @@ "success": true, "seat": 2, "cards": [ - 40 + 60 ], "seatlist": [ [ @@ -21160,8 +5745,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21182,8 +5767,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21198,15 +5783,7 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, - "baozhu": 0, - "cardsinhand": [ - 68, - 66, - 12, - 65, - 62, - 61 - ] + "baozhu": 0 } }, { @@ -21215,7 +5792,7 @@ "success": true, "seat": 0, "cards": [ - 11 + 10 ], "seatlist": [ [ @@ -21250,8 +5827,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21272,8 +5849,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21290,7 +5867,16 @@ "curmultiple": -1, "baozhu": 0, "maxseat": 2, - "grade": 5 + "grade": 5, + "cardsinhand": [ + 64, + 63, + 62, + 7, + 59, + 105, + 103 + ] } }, { @@ -21334,8 +5920,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21356,8 +5942,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21375,14 +5961,7 @@ "baozhu": 0, "count": 1, "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 68, - 66, - 12, - 65, - 62 - ] + "cardtype": 101 } }, { @@ -21391,7 +5970,7 @@ "success": true, "seat": 0, "cards": [ - 10 + 64 ], "seatlist": [ [ @@ -21426,8 +6005,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21448,8 +6027,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21464,7 +6043,15 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, - "baozhu": 0 + "baozhu": 0, + "cardsinhand": [ + 63, + 62, + 7, + 59, + 105, + 103 + ] } }, { @@ -21473,7 +6060,7 @@ "success": true, "seat": 1, "cards": [ - 32 + 81 ], "seatlist": [ [ @@ -21508,8 +6095,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21530,8 +6117,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21591,8 +6178,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21613,8 +6200,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21640,6 +6227,5321 @@ "data": { "success": true, "seat": 2, + "cards": [ + 45 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 63 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 10, + "cardsinhand": [ + 62, + 7, + 59, + 105, + 103 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 27 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 7, + 59, + 105, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 12 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 59, + 105, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 11 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "mustcard": [ + 59 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 59 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "cardsinhand": [ + 105, + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 65 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 86 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "cardsinhand": [ + 103 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 9 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -2, + "baozhu": 1, + "maxseat": 2, + "grade": 20 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 32 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -2, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101, + "mustcard": [ + 103 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 103 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -2, + "baozhu": 1, + "cardsinhand": [] + } + }, + { + "rpc": "jiesuan", + "data": { + "success": true, + "curmultiple": -2, + "chupai": { + "seat": 1, + "cards": [ + 8 + ], + "maxseat": 2 + }, + "bottom": { + "cards": [ + 67, + 79, + 23, + 75, + 20, + 18, + 72, + 71 + ], + "multiple": 1, + "grade1": 15, + "grade2": 15 + }, + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 130, + "upgrade": -2, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -8, + "grade": -8, + "score": -8 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 + } + ] + } + } + } + ], + [ + { + "rpc": "fapai", + "data": { + "success": true, + "asetidx": 1, + "asetcount": 6, + "seat": 0, + "countdown": 15, + "cards": [ + 106, + 99, + 73, + 81, + 50, + 49, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4 + ] + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 0, + "call": 65, + "currcall": 65, + "multiple": 2, + "nextseat": 1, + "countdown": 15 + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 1, + "call": 0, + "currcall": 65, + "multiple": 2, + "nextseat": 2, + "countdown": 15 + } + }, + { + "rpc": "shangzhuang", + "data": { + "success": true, + "seat": 2, + "call": 0, + "banker": 0, + "grade": 65, + "multiple": 2, + "countdown": 20, + "touxiang": 0, + "curmultiple": 3 + } + }, + { + "rpc": "xuanzhu", + "data": { + "success": true, + "banker": 0, + "flower": 1, + "countdown": 25, + "cards": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "maipai", + "data": { + "success": true, + "seat": 0, + "countdown": 30 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 80 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 34, + 88, + 87, + 31, + 84, + 24, + 78, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 26 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 34, + 88, + 87, + 31, + 84, + 24, + 78, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 13 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 90 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 34 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 88, + 87, + 31, + 84, + 24, + 78, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 38 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 88, + 87, + 31, + 84, + 78, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 36 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 87, + 31, + 84, + 78, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 76 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 78 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 87, + 31, + 84, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 37 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 31, + 84, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 92 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 31 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 50, + 49, + 48, + 47, + 84, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 89 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 100 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 50 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 49, + 48, + 47, + 84, + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 39 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 25 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 77 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 49, + 48, + 47, + 84, + 22, + 21 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 48, + 47, + 84, + 22, + 21 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 104 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 30 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 14 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "mustcard": [ + 84 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 48, + 47, + 22, + 21 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 101 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 48 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 47, + 22, + 21 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 21 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4, + 47, + 22 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 53 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, "cards": [ 68 ], @@ -21680,14 +11582,53 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ -1, -1 ] ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 85 + ], + "seatlist": [ [ [ 0, @@ -21709,22 +11650,1905 @@ -1, -1 ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 106 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1, + "cardsinhand": [ + 99, + 73, + 81, + 12, + 65, + 11, + 9, + 8, + 5, + 4, + 58, + 47, + 22 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 22 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 99, + 73, + 81, + 12, + 65, + 11, + 9, + 8, + 5, + 4, + 58, + 47 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 107 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 54 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 97 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "mustcard": [ + 47 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 47 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 99, + 73, + 81, + 12, + 65, + 11, + 9, + 8, + 5, + 4, + 58 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 44 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 73, + 81, + 12, + 11, + 65, + 9, + 8, + 5, + 58 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 6 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 66 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 15 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 43 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 73 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "grade": 15, + "cardsinhand": [ + 81, + 12, + 65, + 11, + 9, + 8, + 5, + 58 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 81, + 12, + 65, + 11, + 9, + 8, + 5 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 60 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] ] ], "nextseat": 0, "countdown": 30, "curmultiple": -1, "baozhu": 0, - "cardsinhand": [ - 12, - 66, - 65, - 62 - ] + "count": 1, + "flower": 1, + "cardtype": 101 } }, { - "rpc": "chupai3", + "rpc": "chupai2", "data": { "success": true, "seat": 0, @@ -21764,8 +13588,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21786,8 +13610,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -21799,20 +13623,19 @@ ] ] ], - "nextseat": 2, + "nextseat": 1, "countdown": 30, "curmultiple": -1, - "baozhu": 0, - "maxseat": 2 + "baozhu": 0 } }, { - "rpc": "chupai1", + "rpc": "chupai3", "data": { "success": true, - "seat": 2, + "seat": 1, "cards": [ - 62 + 81 ], "seatlist": [ [ @@ -21847,8 +13670,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21859,6 +13682,53 @@ -1 ] ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "cardsinhand": [ + 12, + 11, + 65, + 9, + 8, + 5 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 5 + ], + "seatlist": [ [ [ 0, @@ -21880,9 +13750,53 @@ -1, -1 ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] ] ], - "nextseat": 0, + "nextseat": 2, "countdown": 30, "curmultiple": -1, "baozhu": 0, @@ -21891,13 +13805,97 @@ "cardtype": 101, "cardsinhand": [ 12, - 66, - 65 + 11, + 65, + 9, + 8 ] } }, { "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 45 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", "data": { "success": true, "seat": 0, @@ -21937,8 +13935,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -21958,10 +13956,179 @@ 1, 1 ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 27 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], [ 1, 1 ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], [ 0, 0 @@ -21983,175 +14150,6 @@ "data": { "success": true, "seat": 1, - "cards": [ - 19 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "maxseat": 1, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 9 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, "cards": [ 12 ], @@ -22188,8 +14186,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -22209,96 +14207,10 @@ 1, 1 ], - [ - 1, - 1 - ], [ 0, 0 ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "baozhu": 0, - "cardsinhand": [ - 66, - 65 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 8 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], [ 0, 0 @@ -22314,7 +14226,13 @@ "curmultiple": -1, "baozhu": 0, "maxseat": 2, - "grade": 20 + "grade": 10, + "cardsinhand": [ + 11, + 65, + 9, + 8 + ] } }, { @@ -22323,7 +14241,7 @@ "success": true, "seat": 2, "cards": [ - 65 + 40 ], "seatlist": [ [ @@ -22358,8 +14276,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -22380,8 +14298,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -22399,10 +14317,7 @@ "baozhu": 0, "count": 1, "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 66 - ] + "cardtype": 101 } }, { @@ -22413,6 +14328,261 @@ "cards": [ 7 ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 11 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 65, + 9, + 8 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 59 + ], "seatlist": [ [ [ @@ -22445,6 +14615,20 @@ 0, 0 ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 3, + 0 + ] + ], + [ [ 0, 0 @@ -22453,6 +14637,161 @@ 1, 1 ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 65 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "maxseat": 2, + "cardsinhand": [ + 9, + 8 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 86 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], [ 2, 0 @@ -22467,10 +14806,95 @@ 1, 1 ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105 + ], + "seatlist": [ + [ [ 1, 1 ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], [ 0, 0 @@ -22493,7 +14917,7 @@ "success": true, "seat": 1, "cards": [ - 27 + 9 ], "seatlist": [ [ @@ -22528,8 +14952,8 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ 1, @@ -22549,10 +14973,7504 @@ 1, 1 ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -2, + "baozhu": 1, + "maxseat": 2, + "grade": 20, + "cardsinhand": [ + 8 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 32 + ], + "seatlist": [ + [ [ 1, 1 ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -2, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 103 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -2, + "baozhu": 1, + "mustcard": [ + 8 + ] + } + }, + { + "rpc": "jiesuan", + "data": { + "success": true, + "curmultiple": -2, + "chupai": { + "seat": 1, + "cards": [ + 8 + ], + "maxseat": 2 + }, + "bottom": { + "cards": [ + 67, + 79, + 23, + 75, + 20, + 18, + 72, + 71 + ], + "multiple": 1, + "grade1": 15, + "grade2": 15 + }, + "aset": { + "banker": 0, + "call": 65, + "multiple": 2, + "flower": 1, + "grade": 130, + "upgrade": -2, + "bangwang": 0, + "climb": 0, + "seatlist": [ + { + "cards": [ + 52 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": -8, + "grade": -8, + "score": -8 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 + }, + { + "cards": [ + 53, + 107 + ], + "chongguan": 0, + "wang": 2, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 + } + ] + } + } + } + ], + [ + { + "rpc": "fapai", + "data": { + "success": true, + "asetidx": 1, + "asetcount": 6, + "seat": 0, + "countdown": 15, + "cards": [ + 53, + 107, + 45, + 86, + 32, + 6, + 60, + 40, + 27, + 1, + 39, + 104, + 44, + 98, + 97, + 43, + 26, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74, + 61 + ] + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 0, + "call": 65, + "currcall": 65, + "multiple": 2, + "nextseat": 1, + "countdown": 15 + } + }, + { + "rpc": "jiaofen", + "data": { + "success": true, + "seat": 1, + "call": 0, + "currcall": 65, + "multiple": 2, + "nextseat": 2, + "countdown": 15 + } + }, + { + "rpc": "shangzhuang", + "data": { + "success": true, + "seat": 2, + "call": 0, + "banker": 0, + "grade": 65, + "multiple": 2, + "countdown": 20, + "touxiang": 0, + "curmultiple": 3 + } + }, + { + "rpc": "xuanzhu", + "data": { + "success": true, + "banker": 0, + "flower": 1, + "countdown": 25, + "cards": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 26, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "maipai", + "data": { + "success": true, + "seat": 0, + "countdown": 30 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 80 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 26 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "maxseat": 1, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 13 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 38, + 91, + 89, + 35, + 85, + 30, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 90 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 34 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 38 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 91, + 89, + 35, + 85, + 30, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 91, + 89, + 35, + 85, + 30, + 25, + 76 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 36 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 35, + 89, + 85, + 30, + 25, + 76 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 76 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 35, + 89, + 85, + 30, + 25 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 78 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 37 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 89, + 85, + 30, + 25 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 92 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 31 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 89 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 39, + 104, + 44, + 98, + 97, + 43, + 85, + 30, + 25 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 100 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 50 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 39 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 104, + 44, + 98, + 97, + 43, + 85, + 30, + 25 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 25 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 104, + 44, + 98, + 97, + 43, + 85, + 30 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 77 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 104 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 98, + 44, + 43, + 97, + 85, + 30 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 30 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 98, + 44, + 43, + 97, + 85 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 14 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 101 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 48 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1, + "grade": 10, + "cardsinhand": [ + 53, + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 44, + 97, + 43, + 85 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 21 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 53 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 44, + 97, + 43, + 85 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 68 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 85 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 107, + 60, + 6, + 45, + 86, + 32, + 1, + 40, + 27, + 61, + 44, + 97, + 43 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 106 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 22 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 107 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "cardsinhand": [ + 6, + 60, + 45, + 32, + 86, + 1, + 40, + 27, + 61, + 44, + 43, + 97 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 54 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 97 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 6, + 60, + 45, + 32, + 86, + 1, + 40, + 27, + 61, + 44, + 43 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 47 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 44 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 1, + "grade": 10, + "cardsinhand": [ + 6, + 60, + 45, + 32, + 86, + 1, + 40, + 27, + 61, + 43 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 6 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "cardsinhand": [ + 60, + 45, + 32, + 86, + 1, + 40, + 27, + 61, + 43 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 66 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "maxseat": 2, + "grade": 15 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 43 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0, + "count": 1, + "flower": 4, + "cardtype": 101, + "cardsinhand": [ + 60, + 45, + 32, + 86, + 1, + 40, + 27, + 61 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 73 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1, + "grade": 15 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 60 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 45, + 32, + 86, + 1, + 40, + 27, + 61 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 45, + 32, + 86, + 1, + 40, + 27 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 64 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 81 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 5 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 45 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "cardsinhand": [ + 32, + 86, + 1, + 40, + 27 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 63 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 27 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 32, + 86, + 1, + 40 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 12 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 32, + 86, + 1 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 11 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 0, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 32, + 86 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 59 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 65 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 86 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -1, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [ + 32 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], [ 0, 0 @@ -22566,17 +22484,16 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, - "baozhu": 1, - "maxseat": 1 + "baozhu": 1 } }, { - "rpc": "chupai1", + "rpc": "chupai3", "data": { "success": true, "seat": 1, "cards": [ - 54 + 9 ], "seatlist": [ [ @@ -22602,13 +22519,9 @@ ] ], [ - [ - 1, - 1 - ], [ 0, - 0 + 1 ], [ 0, @@ -22619,7 +22532,11 @@ 1 ], [ - 0, + 1, + 1 + ], + [ + 1, 0 ] ], @@ -22633,8 +22550,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -22648,23 +22565,19 @@ ], "nextseat": 2, "countdown": 30, - "curmultiple": -1, + "curmultiple": -2, "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101, - "mustcard": [ - 66 - ] + "maxseat": 2, + "grade": 20 } }, { - "rpc": "chupai2", + "rpc": "chupai1", "data": { "success": true, "seat": 2, "cards": [ - 66 + 32 ], "seatlist": [ [ @@ -22690,6 +22603,32 @@ ] ], [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 1, + 1 + ], [ 1, 1 @@ -22702,15 +22641,31 @@ 0, 0 ], - [ - 1, - 1 - ], [ 0, 0 ] - ], + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": -2, + "baozhu": 1, + "count": 1, + "flower": 1, + "cardtype": 101, + "cardsinhand": [] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 103 + ], + "seatlist": [ [ [ 1, @@ -22732,13 +22687,56 @@ 0, 0 ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] ] ], - "nextseat": 0, + "nextseat": 1, "countdown": 30, - "curmultiple": -1, - "baozhu": 1, - "cardsinhand": [] + "curmultiple": -2, + "baozhu": 1 } }, { @@ -22747,35 +22745,34 @@ "success": true, "curmultiple": -2, "chupai": { - "seat": 0, + "seat": 1, "cards": [ - 103 + 8 ], - "maxseat": 1, - "grade": 10 + "maxseat": 2 }, "bottom": { "cards": [ 67, - 25, 79, - 76, - 22, + 23, 75, 20, + 18, + 72, 71 ], "multiple": 1, - "grade1": 45, - "grade2": 45 + "grade1": 15, + "grade2": 15 }, "aset": { "banker": 0, "call": 65, "multiple": 2, "flower": 1, - "grade": 155, - "upgrade": -3, + "grade": 130, + "upgrade": -2, "bangwang": 0, "climb": 0, "seatlist": [ @@ -22789,9 +22786,23 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -12, - "grade": -12, - "score": -12 + "grade_jf": -8, + "grade": -8, + "score": -8 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -22804,23 +22815,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - }, - { - "cards": [ - 106 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 + "grade_jf": 4, + "grade": 4, + "score": 4 } ] } @@ -22844,33 +22841,33 @@ "step": 1, "MyCards": [ 52, - 86, - 73, - 6, - 60, + 19, 94, - 81, + 68, 14, + 55, + 93, 105, - 50, - 98, - 26, - 38, + 103, + 102, + 46, + 92, + 37, + 36, 90, - 89, - 33, 67, - 25, - 76, - 22, 75, - 20, + 18, + 72, + 71, + 54, 0, - 64, 10, + 64, 63, - 8, - 7 + 62, + 7, + 59 ], "CallRun": { "seat": 0, @@ -22899,34 +22896,34 @@ ], "step": 1, "MyCards": [ - 53, - 107, + 106, 99, - 32, - 19, - 27, - 39, - 93, + 73, + 81, + 50, + 49, 48, - 44, - 97, - 92, - 36, - 88, + 47, + 80, 34, + 88, 87, 31, - 30, - 13, + 84, + 78, 24, + 77, + 22, 21, - 74, - 72, 17, - 54, + 12, + 11, + 65, 9, + 8, 5, - 58 + 58, + 4 ], "CallRun": { "seat": 0, @@ -22955,34 +22952,34 @@ ], "step": 1, "MyCards": [ - 106, + 53, + 107, 45, + 86, + 32, + 6, + 60, 40, - 68, + 27, 1, - 51, + 39, 104, - 49, - 102, - 100, + 44, + 98, + 97, 43, - 80, - 37, + 26, + 38, 91, + 89, 35, 85, - 84, - 78, - 77, - 23, - 18, - 66, - 12, - 65, - 62, - 61, - 59, - 4 + 30, + 13, + 25, + 76, + 74, + 61 ], "CallRun": { "seat": 0, @@ -23012,41 +23009,41 @@ "step": 2, "MyCards": [ 52, - 86, - 73, - 6, - 60, + 19, 94, - 81, + 68, 14, 55, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, + 100, + 92, + 37, + 36, 90, - 89, 33, 67, 79, - 25, - 22, - 76, + 23, 75, 20, + 72, + 18, 71, 0, - 11, - 64, + 54, + 66, 10, + 64, 63, - 8, - 7 + 62, + 7, + 59 ], "ChooseMain": { "banker": 0, @@ -23054,14 +23051,14 @@ "multiple": 2, "countdown": 20, "bottomcards": [ - 55, - 103, + 51, 101, - 47, - 46, + 100, + 33, 79, - 71, - 11 + 23, + 20, + 66 ], "touxiang": 0 } @@ -23081,34 +23078,34 @@ ], "step": 2, "MyCards": [ - 53, - 107, + 106, 99, - 32, - 19, - 27, - 39, - 93, + 73, + 81, + 50, + 49, 48, - 44, - 97, - 92, - 36, - 88, + 47, + 80, 34, + 88, 87, 31, - 30, - 13, + 84, + 78, 24, + 77, + 22, 21, - 74, - 72, 17, - 54, + 12, + 11, + 65, 9, + 8, 5, - 58 + 58, + 4 ], "ChooseMain": { "banker": 0, @@ -23133,34 +23130,34 @@ ], "step": 2, "MyCards": [ - 106, + 53, + 107, 45, + 86, + 32, + 6, + 60, 40, - 68, + 27, 1, - 51, + 39, 104, - 49, - 102, - 100, + 44, + 98, + 97, 43, - 80, - 37, + 26, + 38, 91, + 89, 35, 85, - 84, - 78, - 77, - 23, - 18, - 66, - 12, - 65, - 62, - 61, - 59, - 4 + 30, + 13, + 25, + 76, + 74, + 61 ], "ChooseMain": { "banker": 0, @@ -23186,40 +23183,40 @@ "step": 3, "MyCards": [ 52, - 6, - 60, - 86, - 73, + 19, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, + 100, + 92, + 37, + 36, 90, - 89, 33, 67, 79, - 25, - 22, - 76, + 23, 75, 20, + 72, + 18, 71 ], "BuryCards": { @@ -23228,14 +23225,14 @@ "multiple": 2, "countdown": 25, "bottomcards": [ - 55, - 11, - 103, + 66, + 51, 101, - 47, - 46, + 100, + 33, 79, - 71 + 23, + 20 ], "flower": 1 } @@ -23256,32 +23253,32 @@ "step": 5, "MyCards": [ 52, - 6, - 60, - 86, - 73, + 19, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, + 100, + 92, + 37, + 36, 90, - 89, 33 ], "PushCards": { @@ -23292,51 +23289,41 @@ "flower": 1, "burycards": [ 67, - 25, 79, - 76, - 22, + 23, 75, 20, + 18, + 72, 71 ], "grade": 0, "curmultiple": 3, "playproc": { - "round": 28, - "start": 1, + "round": 1, + "start": 0, "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1114, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, "cards": [ - [ - 103 - ], - [ - 54 - ], - [ - 66 - ] + null, + null, + null ], "shuai_demand": null }, "seatlist": [ [ [ - 1, - 1 + 0, + 0 ], [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 0, @@ -23345,12 +23332,20 @@ [ 0, 0 + ], + [ + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 + ], + [ + 0, + 0 ], [ 0, @@ -23361,26 +23356,18 @@ 0 ], [ - 1, - 1 - ], - [ - 0, - 0 + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 ], [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 0, @@ -23389,6 +23376,10 @@ [ 0, 0 + ], + [ + -1, + -1 ] ] ], @@ -23410,33 +23401,33 @@ ], "step": 5, "MyCards": [ - 53, - 107, + 106, 99, - 32, - 19, - 27, - 54, + 73, + 81, + 12, + 11, + 65, 9, + 8, 5, 58, - 39, - 93, + 4, + 50, + 49, 48, - 44, - 97, - 92, - 36, - 88, + 47, + 80, 34, + 88, 87, 31, - 30, - 13, + 84, + 78, 24, + 77, + 22, 21, - 74, - 72, 17 ], "PushCards": { @@ -23449,40 +23440,30 @@ "grade": 0, "curmultiple": 3, "playproc": { - "round": 28, - "start": 1, + "round": 1, + "start": 0, "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1114, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, "cards": [ - [ - 103 - ], - [ - 54 - ], - [ - 66 - ] + null, + null, + null ], "shuai_demand": null }, "seatlist": [ [ [ - 1, - 1 + 0, + 0 ], [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 0, @@ -23491,12 +23472,20 @@ [ 0, 0 + ], + [ + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 + ], + [ + 0, + 0 ], [ 0, @@ -23507,26 +23496,18 @@ 0 ], [ - 1, - 1 - ], - [ - 0, - 0 + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 ], [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 0, @@ -23535,6 +23516,10 @@ [ 0, 0 + ], + [ + -1, + -1 ] ] ], @@ -23556,34 +23541,34 @@ ], "step": 5, "MyCards": [ - 106, + 53, + 107, + 60, + 6, 45, + 86, + 32, 1, 40, - 68, - 12, - 66, - 65, - 62, + 27, 61, - 59, - 4, - 51, + 39, 104, - 49, - 102, - 100, + 44, + 98, + 97, 43, - 80, - 37, + 26, + 38, 91, + 89, 35, 85, - 84, - 78, - 77, - 23, - 18 + 30, + 13, + 25, + 76, + 74 ], "PushCards": { "banker": 0, @@ -23595,40 +23580,30 @@ "grade": 0, "curmultiple": 3, "playproc": { - "round": 28, - "start": 1, + "round": 1, + "start": 0, "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1114, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, "cards": [ - [ - 103 - ], - [ - 54 - ], - [ - 66 - ] + null, + null, + null ], "shuai_demand": null }, "seatlist": [ [ [ - 1, - 1 + 0, + 0 ], [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 0, @@ -23637,12 +23612,20 @@ [ 0, 0 + ], + [ + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 + ], + [ + 0, + 0 ], [ 0, @@ -23653,26 +23636,18 @@ 0 ], [ - 1, - 1 - ], - [ - 0, - 0 + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 ], [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 0, @@ -23681,6 +23656,10 @@ [ 0, 0 + ], + [ + -1, + -1 ] ] ], @@ -23702,32 +23681,32 @@ ], "step": 5, "MyCards": [ - 6, - 60, - 86, - 73, + 19, 55, 94, - 81, + 68, 14, + 54, 0, - 11, - 10, + 66, 64, + 10, 63, - 8, + 62, 7, + 59, + 93, + 51, 105, - 50, 103, - 47, + 102, 101, 46, - 98, - 26, - 38, - 90, - 89 + 100, + 92, + 37, + 36, + 90 ], "PushCards": { "banker": 0, @@ -23737,47 +23716,37 @@ "flower": 1, "burycards": [ 67, - 25, 79, - 76, - 22, + 23, 75, 20, + 18, + 72, 71 ], - "grade": 10, - "curmultiple": 2, + "grade": 0, + "curmultiple": 3, "playproc": { - "round": 28, - "start": 1, + "round": 3, + "start": 0, "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1114, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, "cards": [ - [ - 103 - ], - [ - 54 - ], - [ - 66 - ] + null, + null, + null ], "shuai_demand": null }, "seatlist": [ [ [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 1, @@ -23790,12 +23759,20 @@ [ 0, 0 + ], + [ + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 + ], + [ + 0, + 0 ], [ 0, @@ -23806,26 +23783,18 @@ 0 ], [ - 1, - 1 - ], - [ - 0, - 0 + -1, + -1 ] ], [ [ - 1, - 1 + 0, + 0 ], [ - 1, - 1 - ], - [ - 1, - 1 + 0, + 0 ], [ 0, @@ -23834,6 +23803,10 @@ [ 0, 0 + ], + [ + -1, + -1 ] ] ], @@ -23843,10 +23816,10 @@ 33 ], [ - 92 + 80 ], [ - 80 + 26 ] ], [ @@ -23854,10 +23827,10 @@ 52 ], [ - 13 + 17 ], [ - 18 + 13 ] ] ] @@ -23872,9 +23845,9 @@ "count": 6, "idx": 1, "PlayerInfo": [ - -12, - 6, - 6 + -8, + 4, + 4 ], "step": 6, "MyCards": [], @@ -23889,8 +23862,8 @@ "call": 65, "multiple": 2, "flower": 1, - "grade": 155, - "upgrade": -3, + "grade": 130, + "upgrade": -2, "bangwang": 0, "climb": 0, "seatlist": [ @@ -23904,9 +23877,23 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -12, - "grade": -12, - "score": -12 + "grade_jf": -8, + "grade": -8, + "score": -8 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -23919,23 +23906,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - }, - { - "cards": [ - 106 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 + "grade_jf": 4, + "grade": 4, + "score": 4 } ] } @@ -23950,9 +23923,9 @@ "count": 6, "idx": 1, "PlayerInfo": [ - -12, - 6, - 6 + -8, + 4, + 4 ], "step": 6, "MyCards": [], @@ -23967,8 +23940,8 @@ "call": 65, "multiple": 2, "flower": 1, - "grade": 155, - "upgrade": -3, + "grade": 130, + "upgrade": -2, "bangwang": 0, "climb": 0, "seatlist": [ @@ -23982,9 +23955,23 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -12, - "grade": -12, - "score": -12 + "grade_jf": -8, + "grade": -8, + "score": -8 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -23997,23 +23984,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - }, - { - "cards": [ - 106 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 + "grade_jf": 4, + "grade": 4, + "score": 4 } ] } @@ -24028,9 +24001,9 @@ "count": 6, "idx": 1, "PlayerInfo": [ - -12, - 6, - 6 + -8, + 4, + 4 ], "step": 6, "MyCards": [], @@ -24045,8 +24018,8 @@ "call": 65, "multiple": 2, "flower": 1, - "grade": 155, - "upgrade": -3, + "grade": 130, + "upgrade": -2, "bangwang": 0, "climb": 0, "seatlist": [ @@ -24060,9 +24033,23 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -12, - "grade": -12, - "score": -12 + "grade_jf": -8, + "grade": -8, + "score": -8 + }, + { + "cards": [ + 106 + ], + "chongguan": 0, + "wang": 1, + "naward": 0, + "grade_aw": 0, + "grade_cg": 0, + "grade_bw": 0, + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -24075,23 +24062,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 - }, - { - "cards": [ - 106 - ], - "chongguan": 0, - "wang": 1, - "naward": 0, - "grade_aw": 0, - "grade_cg": 0, - "grade_bw": 0, - "grade_jf": 6, - "grade": 6, - "score": 6 + "grade_jf": 4, + "grade": 4, + "score": 4 } ] } diff --git a/client/tests/test_fixture.js b/client/tests/test_fixture.js index aa27376..ba22b99 100644 --- a/client/tests/test_fixture.js +++ b/client/tests/test_fixture.js @@ -14,14 +14,39 @@ const allRpcs = [].concat(rpcsOf(0), rpcsOf(1), rpcsOf(2)); ['fapai','jiaofen','shangzhuang','xuanzhu','maipai','chupai1','chupai2','chupai3','jiesuan'] .forEach(rpc => t.eq('夹具覆盖 ' + rpc, allRpcs.indexOf(rpc) >= 0, true)); -// 差异化下发确实存在:bottomcards 不该三家都有 +// 差异化下发确实存在:bottomcards 恰好只发给庄家一人(不是"少于三家"这种可被空集合蒙混过去的弱断言) const withBottom = [0,1,2].filter(s => fx.seats[s].some(p => p.rpc === 'shangzhuang' && p.data.hasOwnProperty('bottomcards'))); -t.eq('底牌只发给部分座位', withBottom.length < 3, true); +t.eq('底牌恰好发给1个座位(庄家)', withBottom.length, 1); -// deskinfo 快照覆盖多个阶段 -const steps = fx.deskinfo.map(d => d.step).filter((v, i, a) => a.indexOf(v) === i).sort(); -t.eq('deskinfo 覆盖 ≥3 个阶段', steps.length >= 3, true); +// deskinfo 快照必须覆盖全部 5 个阶段(下游任务要用 step3 埋牌快照做回归断言) +const steps = fx.deskinfo.map(d => d.step).filter((v, i, a) => a.indexOf(v) === i).sort((a,b) => a - b); +t.eq('deskinfo 覆盖全部阶段 1/2/3/5/6', steps, [1, 2, 3, 5, 6]); + +// roomtype 必须存在且非空,Task 12 要用它还原房间选项 +t.eq('roomtype 存在且非空', typeof fx.roomtype === 'string' && fx.roomtype.length > 0, true); + +// packetIndex 必须落在 (0, 该座位包总数] 区间内,且与 info.step 自洽 +fx.deskinfo.forEach(d => { + const inRange = d.packetIndex > 0 && d.packetIndex <= fx.seats[d.seat].length; + t.eq('packetIndex 落在有效区间 (step' + d.step + ' seat' + d.seat + ')', inRange, true); + t.eq('deskinfo.step 与 info.step 一致 (seat' + d.seat + ' pi' + d.packetIndex + ')', d.step, d.info.step); +}); + +// C-1 回归锁:同一座位的两条 step5 快照,playproc(当前轮桌面牌/currseat/round)不得相同—— +// 否则说明 deskinfo 快照存的是活引用,被后续出牌篡改成了终局状态(曾经的真实缺陷) +const step5BySeat = {}; +fx.deskinfo.filter(d => d.step === 5).forEach(d => { + (step5BySeat[d.seat] = step5BySeat[d.seat] || []).push(d); +}); +Object.keys(step5BySeat).forEach(seat => { + const list = step5BySeat[seat]; + if (list.length < 2) { return; } + for (let i = 1; i < list.length; i++) { + const same = JSON.stringify(list[0].info.PushCards.playproc) === JSON.stringify(list[i].info.PushCards.playproc); + t.eq('seat' + seat + ' 两条 step5 快照 playproc 不相同(未被活引用污染)', same, false); + } +}); // 每个包都有 success(协议 §0.1:每个下发包的 data 必带 success) const noSuccess = []; From 33c18a2c176b27f7bcb843a9ce8994bf6454607a Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:48:08 +0800 Subject: [PATCH 16/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=A2=9E=E9=87=8F=20vs=20=E5=85=A8=E9=87=8F=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E6=80=A7=E6=B5=8B=E8=AF=95=EF=BC=88B=20=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E6=A0=B8=E5=BF=83=E9=AA=8C=E6=94=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 把前端红线「视图 = f(服务端快照)」变成可执行断言:按序喂推送包累积出的 GameState,必须与同一时点 deskinfo 全量重建的完全相等。 不一致只有两种可能,都要修:前端私存了服务端不知道的状态,或服务端漏发了字段。 EXCLUDE 白名单只收「一次性事件」与「重连不重放」两类,每条都写明理由。 本测试当前保持失败:比对发现了 7 处前端 handler 缺陷(含 table.playproc 字段 结构与协议不符等高优先级问题)与 1 处疑似服务端下发顺序不一致,均未在本次 改动中修复,详见 task-12-report.md,留待裁决。 Co-Authored-By: Claude Opus 5 (1M context) --- client/tests/test_consistency.js | 95 ++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 client/tests/test_consistency.js diff --git a/client/tests/test_consistency.js b/client/tests/test_consistency.js new file mode 100644 index 0000000..7ee45c6 --- /dev/null +++ b/client/tests/test_consistency.js @@ -0,0 +1,95 @@ +// 【核心验收】增量累积的 GameState 必须与 deskinfo 全量重建的完全相等 +const fs = require('fs'); +const path = require('path'); +const { ROOT, load } = require('./_load'); +const t = require('./_assert')(); + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/state/RoomOptions.js'); +load('client/js/01_SubGame/codes/net/handlers/DealHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/CallHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/MainHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/BuryHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/PlayHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/QueryHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/ReadyHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/ResultHandler.js'); +load('client/js/01_SubGame/codes/net/handlers/ResyncHandler.js'); +load('client/js/01_SubGame/codes/net/Dispatcher.js'); + +const fx = JSON.parse(fs.readFileSync(path.join(ROOT, 'client/tests/fixtures/packets.json'), 'utf8')); + +// 这些字段是「一次性事件」或「重连不重放」的,不参与一致性比对。 +// 每加一条都必须写清理由——这个白名单是本测试唯一的松口处,滥用它等于废掉这条守卫。 +const EXCLUDE = [ + // 70 分坐庄的 3 秒开底是上庄时的一次性事件,协议明确 deskinfo 不重放 + 'table.ancard3s', + // 本轮必出牌只对当前轮有效;deskinfo 仅在轮到本家时才带 mustcard + 'my.mustCard', + // 结算明细来自 jiesuan 包,deskinfo 的 Balance 只在结算阶段带 aset + 'result.chupai', 'result.bottom', 'result.account' +]; + +function pick(snap, exclude) { + const out = JSON.parse(JSON.stringify(snap)); + exclude.forEach(p => { + const parts = p.split('.'); + let o = out; + for (let i = 0; i < parts.length - 1; i++) { o = o && o[parts[i]]; } + if (o) { delete o[parts[parts.length - 1]]; } + }); + return out; +} + +// 对每个座位、每个 deskinfo 快照点做比对 +let compared = 0; +fx.deskinfo.forEach(snapPoint => { + const seat = snapPoint.seat; + + // —— 路径 A:增量累积 —— + EQW_GameState.reset(); + EQW_GameState.room.mySeat = seat; + EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(fx.roomtype); + fx.seats[seat].slice(0, snapPoint.packetIndex).forEach(p => { + EQW_Dispatcher.dispatch({ rpc: p.rpc, data: p.data }); + }); + const incremental = EQW_GameState.snapshot(); + + // —— 路径 B:deskinfo 全量重建 —— + EQW_GameState.reset(); + EQW_GameState.room.mySeat = seat; + EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(fx.roomtype); + EQW_ResyncHandler.handleDeskinfo(snapPoint.info); + const full = EQW_GameState.snapshot(); + + t.eq('座位' + seat + ' step' + snapPoint.step + ' 增量 == 全量', + pick(incremental, EXCLUDE), pick(full, EXCLUDE)); + compared++; +}); + +t.eq('比对点数量 > 0', compared > 0, true); + +// ================= Ruling 3:step3(埋牌)deskinfo 直读断言 ================= +// 一致性比对无法单独覆盖 ResyncHandler._applyBuryCards 的字段映射正确性—— +// 若增量路径压根不写某字段,两边可能「同为初始值」而比对照样绿。 +// 这里独立取 step3 快照,逐字段直读 GameState 并核对具体值。 +const step3 = fx.deskinfo.filter(d => d.step === 3)[0]; +if (!step3) { + console.warn('[test_consistency] 夹具里没有 step3 快照,Ruling 3 的直读断言无法执行'); +} else { + EQW_GameState.reset(); + EQW_ResyncHandler.handleDeskinfo(step3.info); + const bc = step3.info.BuryCards; + t.eq('step3 直读 aset.banker', EQW_GameState.aset.banker, bc.banker); + t.eq('step3 直读 aset.call', EQW_GameState.aset.call, bc.call); + t.eq('step3 直读 aset.multiple', EQW_GameState.aset.multiple, bc.multiple); + t.eq('step3 直读 aset.flower', EQW_GameState.aset.flower, bc.flower); + t.eq('step3 直读 my.bottomCards', EQW_GameState.my.bottomCards, bc.bottomcards); + t.eq('step3 直读 turn.countdown', EQW_GameState.turn.countdown, bc.countdown); + t.eq('step3 直读 turn.seat(埋牌由庄家做)', EQW_GameState.turn.seat, bc.banker); + t.eq('step3 直读 aset.step', EQW_GameState.aset.step, step3.info.step); +} + +process.exit(t.done('consistency') ? 0 : 1); From c4c061b0e120c124c6aef3ece2c1545566cc9437 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 18:57:54 +0800 Subject: [PATCH 17/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=89=E5=A4=84=E5=89=8D=E7=AB=AF=E6=BC=8F?= =?UTF-8?q?=E8=AF=BB=EF=BC=88Task=2012=20=E4=B8=80=E8=87=B4=E6=80=A7?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=20Fix=20Round=201=20=C2=B7=20=E7=B1=BB?= =?UTF-8?q?=E5=88=AB=20A=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一致性测试发现的 8 处不一致中,分诊出 3 处确属"deskinfo 里有、增量 handler 没读"的前端缺陷,本次修复: - room.playerScores:reset() 不再清空,改为跨局保留字段;ResultHandler 从 jiesuan 的 aset.seatlist[i].score(协议 §14「累积得分」)回填,避免一局 中段(fapai 后至 jiesuan 前)总积分持续为空。 - call.currcall/call.calls:CallHandler.handleShangzhuang(step1→2 转场) 清回默认值——deskinfo 从 ChooseMain 起就不再带 CallRun,这两个叫分过程量 该阶段起无意义。 - ResultHandler._applyResult(jiesuan/解散共用)补齐结算清场:把 aset.*/ turn.*/call.*/table.*/my.bottomCards/buryCards/cards 清回 reset() 默认值, 与 deskinfo step6 只应用 Balance 分组时的重建结果对齐;顺带清掉出完最后一张 牌的座位因 jiesuan.chupai 不带 cardsinhand 留下的幽灵手牌。 发现 3(curmultiple)、发现 6(seatlist 窗口期)判给服务端,发现 4/5 (table.playproc/pushlist)待裁决,均未改动。test_consistency.js 由 9 PASS/14 FAIL 转为 14 PASS/9 FAIL,EXCLUDE 白名单未改一字。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/CallHandler.js | 5 +++ .../codes/net/handlers/ResultHandler.js | 39 +++++++++++++++++++ client/js/01_SubGame/codes/state/GameState.js | 6 +-- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/client/js/01_SubGame/codes/net/handlers/CallHandler.js b/client/js/01_SubGame/codes/net/handlers/CallHandler.js index 405b30c..715c77e 100644 --- a/client/js/01_SubGame/codes/net/handlers/CallHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/CallHandler.js @@ -54,6 +54,11 @@ var EQW_CallHandler = EQW_CallHandler || { EQW_GameState.aset.step = 2; //进入选主/投降 EQW_GameState.turn.seat = EQW_GameState.aset.banker; //控制权归庄家 + //叫分过程量(currcall/calls)step2 起无语义:deskinfo 从 ChooseMain 起就不再带 CallRun, + //这里清成 reset() 的默认值,避免前端留着一份 deskinfo 不会再给的数据(视图=f(快照)) + EQW_GameState.call.currcall = 0; + EQW_GameState.call.calls = [null, null, null]; + EventBus.emit(EQW_Events.EQW_BANKER_SET); if (data.hasOwnProperty('cards')) { EventBus.emit(EQW_Events.EQW_HAND_CHANGED); } EventBus.emit(EQW_Events.EQW_TURN_CHANGED); diff --git a/client/js/01_SubGame/codes/net/handlers/ResultHandler.js b/client/js/01_SubGame/codes/net/handlers/ResultHandler.js index cb9695e..0d0ccdb 100644 --- a/client/js/01_SubGame/codes/net/handlers/ResultHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/ResultHandler.js @@ -43,6 +43,34 @@ var EQW_ResultHandler = EQW_ResultHandler || { //三种来源共用的落地逻辑:有哪组就写哪组,缺的保持 null _applyResult: function (d) { + //结算是"清空过程量、只留结算数据"的快照点:deskinfo step6 只带 Balance(=aset), + //其余分组一律回到 reset() 默认值——jiesuan 也要收敛到同一状态,否则重连前后画面不一致 + //(清单以 ResyncHandler.handleDeskinfo 在 step6 时实际重建出的字段集为准,不多清不少清)。 + EQW_GameState.aset.banker = -1; + EQW_GameState.aset.call = -1; + EQW_GameState.aset.multiple = 0; + EQW_GameState.aset.flower = 0; + EQW_GameState.aset.curmultiple = 0; + EQW_GameState.aset.grade = 0; + EQW_GameState.aset.baozhu = 0; + EQW_GameState.aset.touxiang = 0; + EQW_GameState.turn.seat = -1; + EQW_GameState.turn.countdown = 0; + EQW_GameState.call.currcall = 0; + EQW_GameState.call.calls = [null, null, null]; + //末轮若由 jiesuan.chupai 带出(无 cardsinhand),出牌者自己的手牌不会被清空,这里显式清掉, + //不留幽灵牌——deskinfo 在结算阶段的 MyCards 恒为 [] + EQW_GameState.my.cards = []; + EQW_GameState.my.mustCard = []; + EQW_GameState.my.bottomCards = []; + EQW_GameState.my.buryCards = []; + EQW_GameState.table.ancard3s = 0; + EQW_GameState.table.playproc = null; + EQW_GameState.table.pushlist = []; + EQW_GameState.table.seatlist = []; + EQW_GameState.table.liangpai = null; + EQW_GameState.table.mingpai = null; + EQW_GameState._apply(EQW_GameState.result, d, { chupai: 'chupai', bottom: 'bottom', @@ -51,6 +79,17 @@ var EQW_ResultHandler = EQW_ResultHandler || { }); EQW_GameState.aset.step = 6; + //三家总积分:jiesuan 的 aset.seatlist[i].score 就是"累积得分"(协议 §14), + //与 deskinfo.PlayerInfo 同源同值——deskinfo 恒有的 PlayerInfo 在增量路径上没有对应来源, + //只能从这里回填,否则一局中段(fapai 后至 jiesuan 前)room.playerScores 永远追不上服务端 + if (d.aset && Object.prototype.toString.call(d.aset.seatlist) === '[object Array]') { + var scores = []; + for (var i = 0; i < d.aset.seatlist.length; i++) { + scores.push(d.aset.seatlist[i] && d.aset.seatlist[i].score); + } + EQW_GameState.room.playerScores = scores; + } + EventBus.emit(EQW_Events.EQW_ASET_RESULT); //account 只在末局或解散时才有 if (d.hasOwnProperty('account')) { diff --git a/client/js/01_SubGame/codes/state/GameState.js b/client/js/01_SubGame/codes/state/GameState.js index 152d3ca..fcd0a45 100644 --- a/client/js/01_SubGame/codes/state/GameState.js +++ b/client/js/01_SubGame/codes/state/GameState.js @@ -20,7 +20,7 @@ var EQW_GameState = EQW_GameState || { asetCount: 0, //总局数 ← fapai.asetcount / deskinfo.count / setRoomDes asetIdx: 0, //当前第几局 ← fapai.asetidx / deskinfo.idx mySeat: -1, //自己的座位 ← 平台 C_Player.seat - playerScores: [], //三家总积分 ← deskinfo.PlayerInfo + playerScores: [], //三家总积分 ← deskinfo.PlayerInfo / jiesuan.aset.seatlist[].score,跨局不清 options: null //roomtype 解析结果 }, @@ -75,10 +75,10 @@ var EQW_GameState = EQW_GameState || { account: null }, - //新一局开局时清空对局态;room.mySeat 与 room.options 跨局不变,不清 + //新一局开局时清空对局态;room.mySeat / room.options / room.playerScores 跨局不变,不清 + //(playerScores 由 deskinfo.PlayerInfo 或 jiesuan.aset.seatlist[].score 增量更新,见 ResyncHandler / ResultHandler) reset: function () { this.room.asetIdx = 0; - this.room.playerScores = []; this.aset = { step: 0, banker: -1, call: -1, multiple: 0, flower: 0, curmultiple: 0, grade: 0, baozhu: 0, touxiang: 0 }; From 84525359fcfd8614078aec3504be20ce6f69d51f Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 19:17:09 +0800 Subject: [PATCH 18/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=AB=AF=E4=B8=8B=E5=8F=91=E9=9D=A2=E5=9B=9B?= =?UTF-8?q?=E5=A4=84=E7=BC=BA=E9=99=B7=E4=BF=AE=E5=A4=8D=EF=BC=88=E5=A2=9E?= =?UTF-8?q?=E9=87=8F=E8=B7=AF=E5=BE=84=E4=B8=8E=E9=87=8D=E8=BF=9E=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E5=AF=B9=E9=BD=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端一致性测试(同一局真包:逐包增量回放 vs 一次性 deskinfo 重连)暴露的四处 服务端缺陷,均属「同一份数据两条路径给的不一样 / 有一条根本没给」: ① chupai1/2/3 补发 playproc(本轮进行态) 与 deskinfo.PushCards 共用新增的 get_playproc() 快照函数,结构取值完全一致。 playproc 是全程复用的活对象(new_playround 就地重置),故快照做逐字段深拷贝, 避免已发出的包被后续出牌回改。可见性:全部字段由桌面公开信息推出, 与既有 PushCards.playproc 一样三家无差别下发。 ② deskinfo ChooseMain(step2)/BuryCards(step3) 补发 curmultiple 与 shangzhuang 推送同源同值;此刻一张牌未出、捡分恒 0,必为 +3(大光)。 原先重连重建为 0,顶部「抓分」角标掉档。 ③ maipai 补发 seatlist 与 chupai/PushCards 同一张表、同一道查牌模式门控;埋牌完成时为初始化空表。 ④ bottomcards / burycards 收敛到单一权威源(SSOT) - burycards:maipai 原样回显了客户端请求包里 cards 的顺序,改取 get_burycard() 权威快照,与 PushCards.burycards 同一函数。请求包只承载「意图」,其顺序不可信。 - bottomcards:get_bottomcards 按「调用时的 flower」排序,导致上庄推送(flower=-1) 与重连 BuryCards(flower 已定) 两种顺序。底牌是选主【之前】就翻给玩家看的、 发牌结束即固定的快照,故改为发牌时算一次并冻结,get_bottomcards 返回其副本 (order_cards 是原地排序,交出本体会被调用方就地重排)。三个调用点无需改动。 协议文档同步 7 处(新增 playproc/seatlist/curmultiple 字段说明与两处排序口径)。 新增 test_rpc.js「下发面一致性」用例组 21 checks,含 28 轮真实牌局逐包逐座位比对 (249 次、0 不一致)与深拷贝守卫;每条均已用「退回修复必转红」反向验证。 既有 649 checks 未改一条断言,全绿(17 脚本 / 670 checks)。未涉及 shared/。 Co-Authored-By: Claude Opus 5 (1M context) --- server/games/erqiwang/class.export.js | 12 +- server/games/erqiwang/class.paiju.js | 73 +++++++++- .../erqiwang/docs/protocol/packet_protocol.md | 20 ++- server/games/erqiwang/mod.js | 27 +++- server/games/erqiwang/test/test_rpc.js | 129 ++++++++++++++++++ 5 files changed, 245 insertions(+), 16 deletions(-) diff --git a/server/games/erqiwang/class.export.js b/server/games/erqiwang/class.export.js index 6525528..2b98d98 100644 --- a/server/games/erqiwang/class.export.js +++ b/server/games/erqiwang/class.export.js @@ -6,6 +6,7 @@ if (typeof require !== "undefined"){ var cls_youle_erqiwang_config = require("./class.config.js"); var cls_youle_erqiwang_arith = require("./class.arith.js"); var cls_youle_erqiwang_desk = require("./class.desk.js"); + var cls_youle_erqiwang_paiju = require("./class.paiju.js"); } var cls_youle_erqiwang_export = cls_youle_erqiwang_export || { @@ -112,6 +113,10 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || { } else { deskinfo.ChooseMain.touxiang = 1; } + //当前抓分倍数(design §7.2.0):与 shangzhuang 推送同源同值。 + //选主阶段一张牌都还没出,捡分恒为 0 → 必为 +3(大光); + //漏发会让重连后顶部「抓分」角标掉回 0,与增量路径不一致 + deskinfo.ChooseMain.curmultiple = paiju.method.get_curmultiple(); break; case 3: //埋牌 deskinfo.BuryCards = {}; @@ -129,6 +134,8 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || { } //主牌花色 deskinfo.BuryCards.flower = paiju.flower; + //当前抓分倍数(design §7.2.0):埋牌阶段同样一张牌未出,捡分恒为 0 → 必为 +3 + deskinfo.BuryCards.curmultiple = paiju.method.get_curmultiple(); //埋牌阶段无投降(投降是选主阶段与选主互斥的选择) break; case 5: //出牌 @@ -157,8 +164,9 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || { deskinfo.PushCards.grade = jian_grade.grade; //当前抓分倍数(design §7.2.0):与 chupai 包同源同值,重连后角标立即正确 deskinfo.PushCards.curmultiple = paiju.method.get_curmultiple(); - //当前的出牌情况 - deskinfo.PushCards.playproc = paiju.playproc; + //当前的出牌情况:与 chupai1/2/3 共用同一处快照函数(结构一致、且是深拷贝, + //不把活对象挂进下发包,见 class.paiju.js get_playproc) + deskinfo.PushCards.playproc = cls_youle_erqiwang_paiju.get_playproc(paiju); //本轮跟牌的必出牌(design §5.2):只在【轮到本座位】且本轮已有人出牌时才有, //算的也只是本座位自己的手牌,不涉及他家(server 红线:按可见性下发) if (paiju.playproc && paiju.playproc.currseat == seat){ diff --git a/server/games/erqiwang/class.paiju.js b/server/games/erqiwang/class.paiju.js index e37e816..56b0f2b 100644 --- a/server/games/erqiwang/class.paiju.js +++ b/server/games/erqiwang/class.paiju.js @@ -116,6 +116,24 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { tmpdeal.length = tmpdeal.length - 1; } + //冻结底牌快照(发牌留桌的 8 张) + //——内容在发牌结束时就已确定(dealowner==0 之后不再变),【显示顺序也必须一并冻结】。 + //理由(SSOT):排序用的 order_cards 依赖主牌花色,而底牌是在【选主之前】的上庄时刻 + //就翻给庄家看的——那时 paiju.flower 还是 -1,根本还没有主牌。若每次调用都按「当时的 + //flower」重排,上庄推送(flower=-1)与重连 BuryCards(step3,flower 已定)会对同一份数据 + //给出两种顺序(实测:主花色的那张 K 被排到队首),前端增量路径与重连路径因此对不上。 + //故在发牌结束时按【翻底那一刻的口径】算一次并冻结,之后所有下发点只取这份快照的副本。 + var init_bottomcards = function(){ + var ary = []; + for (var i = 0; i < paiju.cards.length; i++){ + if (paiju.cards[i].dealowner == 0){ + ary.push(paiju.cards[i].id); + } + } + //此处 paiju.flower 必为 -1(选主在 step2 才发生),即「无主牌」序 = 翻底时的顺序 + paiju.bottomcards = cls_youle_erqiwang_arith.order_cards(paiju.flower, ary); + } + //进入叫分阶段 var start_call = function(){ paiju.step = 1; @@ -149,6 +167,8 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { paiju.call = -1; //主牌花色 paiju.flower = -1; + //底牌快照(发牌留桌的 8 张,含显示顺序):发牌结束时冻结,见 init_bottomcards + paiju.bottomcards = []; //当前出牌情况 paiju.playproc = {}; //输赢结果 0:庄赢 1:闲赢 2:庄投降 3:中途解散 @@ -160,6 +180,8 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { init_seatlist(); //初始化牌列表并发牌 init_cards(); + //冻结底牌快照(必须在发牌之后、选主之前) + init_bottomcards(); //进入叫分阶段 start_call(); @@ -445,15 +467,54 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { } }, - //获取底牌 + //获取底牌(发牌留桌的 8 张):唯一来源是发牌时冻结的快照 o_paiju.bottomcards(见 init_bottomcards)。 + //【返回副本】——order_cards 是原地排序,把快照本体交出去会被调用方就地重排,冻结即失效。 get_bottomcards: function(o_paiju){ - var aryCardIDs = []; - for (var i = 0; i < o_paiju.cards.length; i++){ - if (o_paiju.cards[i].dealowner == 0){ - aryCardIDs.push(o_paiju.cards[i].id); + return o_paiju.bottomcards.concat(); + }, + + //获取【供下发的】当前出牌情况快照:deskinfo.PushCards 与 chupai1/2/3 共用这一处, + //两条路径因此结构完全一致(前端增量回放与重连重建可复用同一份解析)。 + //必须【深拷贝】:playproc 是一个全程复用的活对象(new_playround 就地重置同一个对象, + //do_playcard 也就地改 cards/maxseat/maxcard),直接把它挂进 msg 会让「已发出的包」 + //随后续出牌被回改;平台真实链路虽然立刻序列化看不出来,但这是隐患,不留。 + //structure:round/start/currseat/startcount/startflower/starttype/maxseat/maxcard/ + // cards(定长3、下标=座位)/shuai_demand + get_playproc: function(o_paiju){ + var _p = o_paiju.playproc; + if (!_p){ + return null; + } + var re = {}; + re.round = _p.round; + re.start = _p.start; + re.currseat = _p.currseat; + re.startcount = _p.startcount; + re.startflower = _p.startflower; + re.starttype = _p.starttype; + re.maxseat = _p.maxseat; + re.maxcard = _p.maxcard; + //本轮各位置出的牌:定长 3、下标 = 座位序号;尚未出牌的位置留空(序列化后为 null) + re.cards = []; + re.cards.length = 3; + if (_p.cards){ + for (var i = 0; i < 3; i++){ + if (_p.cards[i]){ + re.cards[i] = _p.cards[i].concat(); + } } } - return cls_youle_erqiwang_arith.order_cards(o_paiju.flower, aryCardIDs); + //首家甩牌的分量需求(§5.4.4);tractors 是数组,同样要拷贝,非甩牌为 null + if (_p.shuai_demand){ + var _sd = {}; + _sd.tractors = _p.shuai_demand.tractors ? _p.shuai_demand.tractors.concat() : []; + _sd.pairs = _p.shuai_demand.pairs; + _sd.singles = _p.shuai_demand.singles; + re.shuai_demand = _sd; + } else { + re.shuai_demand = null; + } + return re; }, //选主 diff --git a/server/games/erqiwang/docs/protocol/packet_protocol.md b/server/games/erqiwang/docs/protocol/packet_protocol.md index 8e21c40..2c7ec9d 100644 --- a/server/games/erqiwang/docs/protocol/packet_protocol.md +++ b/server/games/erqiwang/docs/protocol/packet_protocol.md @@ -183,7 +183,7 @@ | banker | 整数 | 庄家的位置序号 | | grade | 整数 | 庄家的叫分 | | multiple | 整数 | 叫分对应的基础子数 `get_base_bycall(call, climb)`,**随房间「爬坡」开关取值**(roomtype 位3):常规算子 65→2 60→3 55→4 50及以下→6;爬坡 65→2 60→3 55→4 50→6 45→7 40→8 35→9 30→10 25→11 20→12 15→13 10→14 5→15;两种模式下 70→2;无叫分→0。与结算包 `aset.multiple` 同源同值(design §7.1/§7.3.1)| -| bottomcards | 数组 | 8 张**底牌**(发牌时没发给玩家、扣在桌面的 8 张)。**庄家恒有**;**闲家仅当 70 分坐庄时才有**(供 3 秒亮牌用),非 70 分时闲家没有该属性(底牌只有庄家可见,design §4)| +| bottomcards | 数组 | 8 张**底牌**(发牌时没发给玩家、扣在桌面的 8 张)。**庄家恒有**;**闲家仅当 70 分坐庄时才有**(供 3 秒亮牌用),非 70 分时闲家没有该属性(底牌只有庄家可见,design §4)。
**顺序在发牌结束时即冻结**(服务端 `paiju.bottomcards`,按「还没有主牌」的口径排一次):底牌是在**选主之前**翻给庄家看的,那时主牌花色尚不存在,故不按主牌花色排。本包与重连包 `ChooseMain.bottomcards` / `BuryCards.bottomcards` 三处**同序**,客户端存一次即可全程复用(含「查底牌」回看)| | ancard3s | 整数 | **开底**标志。仅 70 分坐庄时出现且为 `1`:表示庄家**摸底**之前,需将 `bottomcards` 这 8 张**底牌**向所有玩家翻开 3 秒(design §4/§7.1);非 70 分无此属性 | | cards | 数组 | 拿了底牌后手上的牌(36 张,含底牌),庄家才有此属性,闲家没有该属性 | | countdown | 整数 | 选主倒计时 | @@ -256,7 +256,8 @@ | 参数名 | 类型 | 说明 | | --- | --- | --- | | cards | 数组 | 埋牌后手上的牌,去掉了埋牌,庄家才有此属性,闲家没有该属性 | -| burycards | 数组 | **埋牌底牌**(庄家埋下的 8 张),庄家才有此属性,闲家没有该属性。注意与 `shangzhuang.bottomcards`(**底牌**,发牌留桌 8 张)是两批不同的牌,见 §0.0 | +| burycards | 数组 | **埋牌底牌**(庄家埋下的 8 张),庄家才有此属性,闲家没有该属性。注意与 `shangzhuang.bottomcards`(**底牌**,发牌留桌 8 张)是两批不同的牌,见 §0.0。
**取服务端权威快照 `get_burycard()`,不是客户端请求包里 `cards` 的原序**:按本局主牌花色从大到小排好,与重连包 `PushCards.burycards` **同源同序** | +| seatlist | 数组 | 三家座位牌况,**仅可查牌模式下发**(不查牌无此属性,design §9),结构与门控同 `chupai1/2/3.seatlist` 与重连包 `PushCards.seatlist`。
埋牌完成时它是刚初始化的**空表**(每家 `[[0,0],[0,0],[0,0],[0,0],[-1,-1]]`)——下发它是为了让「埋牌完成 → 庄家首出」这段窗口内,增量路径与重连路径拿到同一张表,客户端无需为这段窗口特判 | | seat | 整数 | 出牌者的位置序号(即将首出的庄家)| | countdown | 整数 | 出牌倒计时 | | liangpai | json | **亮牌**(design §8.2)。**只有闲家、且可查牌模式、且庄家达门槛时才有**;不达标或不查牌则无此属性。结构:`{ cards: [牌id...] }`——**庄家手中全部固定主牌的具体牌面**,按本局主牌序从大到小排好。
**固定主牌 = 双王 + 全部花色的 2 + 全部花色的 7**,**不含**主花色的普通牌 A/K/Q/J/10/9/8/6/5。
**门槛**(任一满足即下发):固定主牌总数 ≥10 / 王 ≥3 / 7 ≥6 / 2 ≥6。**不限叫分**。
亮出的是**固定的一份**,不随被哪条门槛触发而增减;也**不给数量统计**——数量前端自己数 `cards.length` 即可。
口径是庄家**埋牌后的静态快照**(排除已埋的 8 张,但包含之后已打出的牌),全局固定不随出牌缩水,故重连包里取值一致 | @@ -297,6 +298,7 @@ | baozhu | 整数 | 是否已有玩家报无主(主牌出空)0否 1是;对应服务端 `have_baofu()`(任一玩家 `seatlist[seat][4][0]==0`)。**仅可查牌模式**下才可能为 1,是**余主公示**与"明牌"按钮的开关;**不查牌模式恒为 0**(design §9)| | cardsinhand | 数组 | 出牌者出牌后手上剩下的牌id列表,只有出牌者才有此属性 | | curmultiple | 整数 | **当前抓分倍数**(design §7.2.0):**带符号**,与结算包 `aset.upgrade` 同口径(`3`/`2`/`1` 庄家大光/小光/过庄,`-N` 闲家升 N 级,`0` 叫分未定)。同源同算法,差别仅在此处**不含扣底**。三家同值,随本包下发、不另开推送。符号是「谁赢」的区分,客户端判定动画靠它分辨 | +| playproc | json | **本轮进行态**(design §5.1)。**`chupai1/2/3` 三个包恒有,三家同值**;结构与重连包 [`PushCards.playproc`](#断线重连deskinfo) **完全一致**(服务端同一个快照函数 `get_playproc()`,前端增量回放与重连重建复用同一份解析)。
字段:`round` 第几轮、`start` 本轮首出位置、`currseat` 当前该谁出、`startcount` 首出张数、`startflower` 首出花色、`starttype` 首出牌型、`maxseat` 本轮暂时最大者、`maxcard` 其牌编码、`cards` 本轮三家各自出的牌(**定长 3,下标 = 座位序号**,未出的位置为 `null`)、`shuai_demand` 首家甩牌的分量需求 `{tractors:[连对数...],pairs,singles}`(非甩牌为 `null`)。
⚠️ **`chupai3` 带的是【下一轮】的进行态**(`round+1`、`cards` 全空、`currseat == nextseat == maxseat`):本轮第三家一出完,服务端就地开了新一轮。这与「此刻断线重连拿到的 `PushCards.playproc`」完全相同——本轮那三手牌客户端已由 `chupai1/2/3` 各自的 `seat`+`cards` 收到,收牌动画后即清台。**唯一例外**:`chupai3` 打完最后一张牌时本包会转成 `jiesuan`(见 §14),那种情况下**不带** `playproc`。
**可见性**:全部字段都由桌面公开信息推出(`cards` 就是已摊在桌上的牌,`shuai_demand` 与 `chupai1.shuai` 等价且甩出的牌本身已公开),故三家整体下发、不逐座位裁剪 | | mustcard | 数组 | **下一个出牌者本轮跟牌的必出牌**(design §5.2),供其客户端自动选中。**只发给 `nextseat` 那一家**,其余两家无此属性——它是该玩家自己手牌的子集,整表下发会泄露他家手牌结构。以下情形不下发:`nextseat` 是本轮首家、首家为**甩牌**(甩牌跟牌走逐分量匹配,见 design §5.4.4)、或算出的必出牌为空 | --- @@ -314,6 +316,7 @@ | countdown | 整数 | 出牌倒计时 | | baozhu | 整数 | 是否已有玩家报无主(主牌出空)0否 1是;对应服务端 `have_baofu()`(任一玩家 `seatlist[seat][4][0]==0`)。**仅可查牌模式**下才可能为 1,是**余主公示**与"明牌"按钮的开关;**不查牌模式恒为 0**(design §9)| | cardsinhand | 数组 | 出牌后出牌者手上剩下的牌id列表,只有出牌者才有此属性 | +| playproc | json | **本轮进行态**,恒有、三家同值,结构见 [§11 `playproc`](#11-第一个玩家出牌chupai1)。此时 `cards` 已含首家与本家两手牌,`currseat` 指向第三家 | | mustcard | 数组 | **下一个出牌者本轮跟牌的必出牌**(design §5.2),供其客户端自动选中。**只发给 `nextseat` 那一家**,其余两家无此属性——它是该玩家自己手牌的子集,整表下发会泄露他家手牌结构。以下情形不下发:`nextseat` 是本轮首家、首家为**甩牌**、或算出的必出牌为空 | --- @@ -334,6 +337,7 @@ | maxseat | 整数 | 本轮出牌谁最大,只有本轮最后一个玩家出牌后才有此属性 | | grade | 整数 | 本轮闲家得分,只有本轮最后一个玩家出牌后且闲家有得分才有此属性 | | curmultiple | 整数 | **当前抓分倍数**(design §7.2.0):**带符号**,口径同 `aset.upgrade`。同源同算法,差别仅在此处**不含扣底**。三家同值,随本包下发、不另开推送 | +| playproc | json | **本轮进行态**,三家同值,结构见 [§11 `playproc`](#11-第一个玩家出牌chupai1)。⚠️ 本包带的是**下一轮**的进行态(`round+1`、`cards` 全空、`currseat == nextseat == maxseat`),与此刻重连拿到的 `PushCards.playproc` 一致。**牌局在本包打完(转为 `jiesuan`)时不带此属性** | --- @@ -568,8 +572,9 @@ | call | 整数 | 叫分 | | multiple | 整数 | 叫分对应的基础子数 `get_base_bycall(call, climb)`,**随房间「爬坡」开关取值**(roomtype 位3):常规算子 65→2 60→3 55→4 50及以下→6;爬坡 65→2 60→3 55→4 50→6 45→7 40→8 35→9 30→10 25→11 20→12 15→13 10→14 5→15;两种模式下 70→2;无叫分→0。与结算包 `aset.multiple` 同源同值(design §7.1/§7.3.1)| | countdown | 整数 | 选主倒计时 | -| bottomcards | 数组 | 8 张**底牌**(发牌留桌的 8 张),**只有庄家有此属性**(底牌仅庄家可见;70 分的 3 秒亮牌是上庄时的一次性事件,重连不重放)| +| bottomcards | 数组 | 8 张**底牌**(发牌留桌的 8 张),**只有庄家有此属性**(底牌仅庄家可见;70 分的 3 秒亮牌是上庄时的一次性事件,重连不重放)。顺序取发牌时冻结的快照,与 `shangzhuang.bottomcards`、`BuryCards.bottomcards` **完全同序**(见 §4)| | touxiang | 整数 | 是否允许投降 0:不允许 1:允许(仅 70 分坐庄为 1)。投降与选主互斥、同一决策点,见 touxiang 包与 design §4 | +| curmultiple | 整数 | **当前抓分倍数**(design §7.2.0):**带符号**,与 `shangzhuang.curmultiple` 同源同值。选主阶段一张牌都还没出、捡分恒为 0,故**必为 `3`**(大光)。三家同值。有此字段,重连后顶部「抓分」角标才不会掉回 0 | > 选主阶段前端需在每个花色按钮上显示"该花色在庄家手中的对子数"(design §4/§11)——庄家的完整手牌由 `MyCards` 提供(庄家为 36 张),对子数由前端据此计算,服务端不额外下发。 @@ -582,7 +587,8 @@ | multiple | 整数 | 叫分对应的基础子数 `get_base_bycall(call, climb)`,**随房间「爬坡」开关取值**(roomtype 位3):常规算子 65→2 60→3 55→4 50及以下→6;爬坡 65→2 60→3 55→4 50→6 45→7 40→8 35→9 30→10 25→11 20→12 15→13 10→14 5→15;两种模式下 70→2;无叫分→0。与结算包 `aset.multiple` 同源同值(design §7.1/§7.3.1)| | flower | 整数 | 主牌花色 | | countdown | 整数 | 埋牌倒计时 | -| bottomcards | 数组 | 8 张**底牌**(发牌留桌的 8 张),**只有庄家有此属性**(底牌仅庄家可见;70 分的 3 秒亮牌是上庄时的一次性事件,重连不重放)| +| bottomcards | 数组 | 8 张**底牌**(发牌留桌的 8 张),**只有庄家有此属性**(底牌仅庄家可见;70 分的 3 秒亮牌是上庄时的一次性事件,重连不重放)。顺序取发牌时冻结的快照,与 `shangzhuang.bottomcards`、`ChooseMain.bottomcards` **完全同序**——**不**按本局主牌花色重排(见 §4)| +| curmultiple | 整数 | **当前抓分倍数**(design §7.2.0):**带符号**,与 `shangzhuang.curmultiple` 同源同值。埋牌阶段同样一张牌未出、捡分恒为 0,故**必为 `3`**(大光)。三家同值 | > 埋牌阶段无投降(投降是 step2 与选主互斥的选择,选主后即不可再投降)。 @@ -595,11 +601,11 @@ | multiple | 整数 | 叫分对应的基础子数 `get_base_bycall(call, climb)`,**随房间「爬坡」开关取值**(roomtype 位3):常规算子 65→2 60→3 55→4 50及以下→6;爬坡 65→2 60→3 55→4 50→6 45→7 40→8 35→9 30→10 25→11 20→12 15→13 10→14 5→15;两种模式下 70→2;无叫分→0。与结算包 `aset.multiple` 同源同值(design §7.1/§7.3.1)| | flower | 整数 | 主牌花色 | | countdown | 整数 | 出牌倒计时 | -| burycards | 数组 | **埋牌底牌**(庄家埋下的 8 张),只有庄家有此属性。注意与 `ChooseMain`/`BuryCards.bottomcards`(**底牌**)是两批不同的牌,见 §0.0 | +| burycards | 数组 | **埋牌底牌**(庄家埋下的 8 张),只有庄家有此属性。注意与 `ChooseMain`/`BuryCards.bottomcards`(**底牌**)是两批不同的牌,见 §0.0。与 `maipai.burycards` **同源同序**(同一个 `get_burycard()`,按本局主牌花色从大到小)| | grade | 整数 | 当前的捡分分数 | | gradecards | 数组 | 当前的捡分分牌,只有闲家有此属性 | -| playproc | json | 当前出牌情况 `o_paiju.playproc`:`round` 第几轮、`start` 本轮首出位置、`currseat` 当前出牌位置、`startcount` 首出张数、`startflower` 首出花色、`starttype` 首出牌型、`maxseat` 本轮最大者位置、`maxcard` 最大牌编码、`cards` 本轮三家各自出的牌(数组下标=位置序号)、`shuai_demand` 首家甩牌的分量需求 `{tractors:[连对数...],pairs,singles}`(非甩牌为 null,供跟牌逐分量强制匹配,design §5.4.4)。**两种查牌模式下恒有此属性**——`cards` 是当前这一轮桌面上的牌,不属于「查牌」,屏蔽了后出的人就无从跟牌(design §9 末尾)| -| seatlist | 数组 | 三家座位牌况,与上文 chupai 包的 `seatlist` 同名同结构(每个玩家一个 5 元素数组:4 个花色的 `[无该花色,无对]` + 报副 `[剩余主牌数,剩余主对数]`)。**仅可查牌模式下有此属性**(design §9)| +| playproc | json | **本轮进行态**,与 `chupai1/2/3.playproc` **同源同结构**(服务端同一个 `get_playproc()` 快照函数,见 [§11 `playproc`](#11-第一个玩家出牌chupai1)):`round` 第几轮、`start` 本轮首出位置、`currseat` 当前出牌位置、`startcount` 首出张数、`startflower` 首出花色、`starttype` 首出牌型、`maxseat` 本轮最大者位置、`maxcard` 最大牌编码、`cards` 本轮三家各自出的牌(**定长 3**,下标=位置序号,未出为 `null`)、`shuai_demand` 首家甩牌的分量需求 `{tractors:[连对数...],pairs,singles}`(非甩牌为 null,供跟牌逐分量强制匹配,design §5.4.4)。**两种查牌模式下恒有此属性**——`cards` 是当前这一轮桌面上的牌,不属于「查牌」,屏蔽了后出的人就无从跟牌(design §9 末尾)| +| seatlist | 数组 | 三家座位牌况,与上文 `maipai` / `chupai1/2/3` 包的 `seatlist` 同名同结构(每个玩家一个 5 元素数组:4 个花色的 `[无该花色,无对]` + 报副 `[剩余主牌数,剩余主对数]`)。**仅可查牌模式下有此属性**(design §9)| | liangpai | json | **亮牌**,结构同 maipai 包的 `liangpai`(`{ cards: [牌id...] }`);**仅可查牌模式、且请求者为闲家、且庄家达标时有**(供闲家重连后仍能看到,design §8.2)| | pushlist | 数组 | 出牌历史 `[[[], [], []], [[], [], []], ...]`,外层下标=轮次(从第 1 轮起,含进行中的当前轮),内层**恒为 3 个数组**、按位置序号存该轮各家出的牌id,各自已按**本局主牌花色**从大到小排序。**仅可查牌模式下有此属性**——往轮打出、已被收走的牌属于「查牌」范畴,不查牌模式一律不下发(design §9)。注意当前这一轮桌面上的牌由 `playproc.cards` 恢复,**两种模式下都有**,否则后出的人无从跟牌 | | curmultiple | 整数 | **当前抓分倍数**(design §7.2.0):**带符号**,与 `chupai1/2/3` 同源同值,供重连后顶部「抓分」角标与判定动画状态立即正确 | diff --git a/server/games/erqiwang/mod.js b/server/games/erqiwang/mod.js index 487d885..240d2aa 100644 --- a/server/games/erqiwang/mod.js +++ b/server/games/erqiwang/mod.js @@ -322,6 +322,19 @@ youle_erqiwang.maipai = function(pack){ msg.data.success = true; msg.data.seat = o_paiju.playproc.currseat; msg.data.countdown = o_desk.method.get_countdown_chupai(); + if (!_cfg.nocheck){ + //三家座位牌况(缺门/无对 + 报副统计),仅可查牌下发——与 chupai1/2/3、重连包 + //PushCards.seatlist 同一份数据、同一道门控。埋牌完成时它是刚初始化的空表 + //(每家 [[0,0],[0,0],[0,0],[0,0],[-1,-1]]),本身不含任何信息;但「埋牌完成 → + //庄家首出」这段窗口内前端也要有表可画,漏发会让增量路径此刻为空、重连路径却有表。 + //可见性:表内只有「某家缺某花色/某花色无对」(由公开的跟牌行为推出)与报无主后 + //全场公示的余主数量(design §9 明确要求向全体三人展示),故三家整表下发不构成泄露 + msg.data.seatlist = o_paiju.seatlist; + } + //埋牌底牌(本次埋下的 8 张):取服务端权威快照,【不回显客户端提交的 cards 原序】。 + //get_burycard 与重连包 PushCards.burycards 是同一个函数、同一套按本局主牌花色的排序, + //两条路径因此顺序一致(SSOT);直接回显 cards 会把客户端的选牌顺序当成下发顺序。 + var _burycards = cls_youle_erqiwang_paiju.get_burycard(o_paiju); for (var i = 0; i < o_room.seatlist.length; i++) { msg.conmode = o_room.seatlist[i].conmode; msg.fromid = o_room.seatlist[i].fromid; @@ -329,7 +342,7 @@ youle_erqiwang.maipai = function(pack){ msg.data.cards = o_paiju.method.get_seat_cards(i); //埋牌底牌(本次埋下的 8 张)。与 shangzhuang.bottomcards(底牌,发牌留桌 8 张) //是两批不同的牌,字段名刻意区分,勿混用 - msg.data.burycards = cards; + msg.data.burycards = _burycards; delete msg.data.liangpai; } else { delete msg.data.cards; @@ -474,6 +487,16 @@ youle_erqiwang.chupai = function(pack){ msg.data.countdown = o_desk.method.get_countdown_chupai(); //当前抓分倍数(design §7.2.0):随本包一起下发、不另开推送;三家同值,grade 本就公开 msg.data.curmultiple = o_paiju.method.get_curmultiple(); + //本轮进行态(design §5.1):与重连包 PushCards.playproc 同一个快照函数、同一结构。 + //没有它,前端在非重连时就拿不到「本轮谁先手/谁最大/三家各出了什么/第几轮」,只能自己 + //累积推导——那就是把对局推进逻辑搬到前端(前端红线「数据驱动、前端无对局状态机」)。 + //注意 re.idx==3 时 do_playcard 已在内部调用 new_playround 就地开了新一轮, + //故 chupai3 带的是【新一轮】的进行态(与 nextseat 同步),这与此刻重连拿到的完全一致。 + //可见性:round/start/currseat/startcount/startflower/starttype/maxseat/maxcard 都是 + //由桌面公开信息直接推出的;cards 就是本轮已摊在桌上的牌;shuai_demand 是首家甩牌的 + //分量构成,而甩出的牌本身已公开、chupai1 也已把等价的 shuai 下发给三家。全部对三家可见, + //无需逐座位裁剪(重连包 PushCards.playproc 本就对三家无差别下发,两条路径口径一致) + msg.data.playproc = cls_youle_erqiwang_paiju.get_playproc(o_paiju); if (re.shuaicuo){ msg.data.shuaicuo = 1; //甩错:本次甩牌被收回,只打出了最小一张(§5.4.5) } @@ -550,6 +573,8 @@ youle_erqiwang.chupai = function(pack){ delete msg.data.nextseat; delete msg.data.countdown; delete msg.data.baozhu; + //本轮进行态只对「还要继续出牌」有意义;本包已转为 jiesuan,不带 + delete msg.data.playproc; delete msg.data.cardsinhand; delete msg.data.maxseat; delete msg.data.grade; diff --git a/server/games/erqiwang/test/test_rpc.js b/server/games/erqiwang/test/test_rpc.js index 0292d2d..5503dd4 100644 --- a/server/games/erqiwang/test/test_rpc.js +++ b/server/games/erqiwang/test/test_rpc.js @@ -165,6 +165,135 @@ const cmZhuang = E.get_deskinfo(e.o_room, 0); t.eq('重连 ChooseMain/BuryCards 侧仍用bottomcards命名未被误改', cmZhuang.PushCards.burycards !== undefined && cmZhuang.PushCards.bottomcards === undefined, true); +// ===================== 下发面一致性:增量路径(实时推送) 必须与 全量路径(重连 deskinfo) 给出同一份数据 ===================== +// 背景:前端一致性测试(同一局真包,逐包增量回放 vs 一次性 deskinfo 重建)暴露出 4 处服务端下发面缺陷。 +// 这些都不是"算错了",而是"同一份数据两条路径给的不一样 / 有一条根本没给",前端只能自己补—— +// 而自己补就等于把对局推进逻辑搬到前端(前端红线「数据驱动、前端无对局状态机」)。以下逐条钉死。 +const JS = x => JSON.stringify(x); +const AR = require('../class.arith.js'); // 本文件下方另有同模块的 A,此处在其声明之前,故另起名 + +// ---- ① bottomcards:上庄推送 / ChooseMain(step2) / BuryCards(step3) 三处必须【同序】---- +// 曾经的缺陷:get_bottomcards 每次按"当时的 paiju.flower"重排,而底牌是在【选主之前】翻给庄家看的, +// 于是 step2(flower=-1) 与 step3(flower 已定) 给出两种顺序——主花色的那张牌被顶到队首。 +// 现按发牌时冻结的快照下发。反面守卫:主牌花色刻意选成底牌里真实存在的花色,一旦退回"按当时 flower 排"必红。 +function driveBottom(flowerPick) { + const pj = P.new({ paiju_list: [] }, 0); + const c = setup("00000", pj); + mod.jiaofen(pack(0, { call: 65 })); mod.jiaofen(pack(1, { call: 0 })); mod.jiaofen(pack(2, { call: 0 })); + const sz = c.sent.filter(m => m.rpc === 'shangzhuang').find(m => m.data.cards !== undefined).data; // 庄家包 + const step2 = E.get_deskinfo(c.o_room, 0).ChooseMain; + mod.xuanzhu(pack(0, { flower: flowerPick(pj) })); + const step3 = E.get_deskinfo(c.o_room, 0).BuryCards; + return { pj, c, sz, step2, step3 }; +} +// 主牌花色必须挑一个【会真的改变底牌排序】的:否则本组用例是空转的—— +// 退回"按当时 flower 重排"也照样绿(实测:随手挑底牌里第一张的花色就是空转,它本来就排在队首)。 +let btReorders = false; +const bt = driveBottom(pj => { + const snap = P.get_bottomcards(pj); + for (let f = 1; f <= 4; f++) { + if (JS(AR.order_cards(f, snap.concat())) !== JS(snap)) { btReorders = true; return f; } + } + return 1; +}); +// 先钉住前提:所选花色确实会让"按主牌花色排"与"冻结快照"不同序,下面三条才是有效守卫 +t.eq('底牌 用例前提:所选主牌花色会改变排序(否则本组用例空转)', btReorders, true); +t.eq('底牌 上庄推送 8 张', bt.sz.bottomcards.length, 8); +t.eq('底牌 上庄推送 == 重连 ChooseMain(step2) 同序', JS(bt.step2.bottomcards), JS(bt.sz.bottomcards)); +t.eq('底牌 上庄推送 == 重连 BuryCards(step3) 同序(选主后不得重排)', JS(bt.step3.bottomcards), JS(bt.sz.bottomcards)); +// 快照必须是【副本】:order_cards 是原地排序,调用方就地重排不得污染冻结的快照 +const bcCopy = P.get_bottomcards(bt.pj); bcCopy.reverse(); +t.eq('底牌 get_bottomcards 返回副本(调用方重排不污染快照)', JS(P.get_bottomcards(bt.pj)), JS(bt.sz.bottomcards)); + +// ---- ② curmultiple:ChooseMain(step2) / BuryCards(step3) 必须与 shangzhuang 同源同值 ---- +// 此刻一张牌未出、捡分恒为 0 → 必为 +3(大光)。曾经 deskinfo 不带此字段,重连后前端角标掉回 0。 +t.eq('抓分倍数 上庄推送 curmultiple=3(捡分恒0→大光)', bt.sz.curmultiple, 3); +t.eq('抓分倍数 重连 ChooseMain.curmultiple 与上庄同值', bt.step2.curmultiple, bt.sz.curmultiple); +t.eq('抓分倍数 重连 BuryCards.curmultiple 与上庄同值', bt.step3.curmultiple, bt.sz.curmultiple); + +// ---- ③ maipai.seatlist:与 PushCards.seatlist 同表同门控 ---- +// 曾经的缺陷:maipai 不带 seatlist,「埋牌完成 → 庄家首出」这段窗口增量路径为空、重连路径却有表。 +const mpZhuang3 = mpAll.find(m => m.data.cards !== undefined); +const mpXian3 = mpAll.find(m => m.data.cards === undefined); +t.eq('埋牌 可查牌 maipai 带 seatlist(庄闲同表)', + JS(mpZhuang3.data.seatlist), JS(E.get_deskinfo(e.o_room, 0).PushCards.seatlist)); +t.eq('埋牌 可查牌 maipai 闲家同一张表(seatlist 三家公开、不裁剪)', + JS(mpXian3.data.seatlist), JS(mpZhuang3.data.seatlist)); +t.eq('埋牌 seatlist 埋牌完成时为初始化空表', JS(mpZhuang3.data.seatlist), + JS([0, 1, 2].map(() => [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]]))); +// 反面:不查牌模式一律不下发(与 chupai / PushCards 同一道门控,design §9) +t.eq('埋牌 不查牌 maipai 无 seatlist', + en.sent.filter(m => m.rpc === 'maipai').every(m => m.data.seatlist === undefined), true); + +// ---- ④ burycards:maipai 必须发服务端权威快照,不得回显客户端提交的 cards 原序 ---- +// 曾经的缺陷:msg.data.burycards = cards(请求包原样回显),而 PushCards.burycards 走 get_burycard() +// 按主牌花色排序 —— 同一副埋牌底牌两条路径两种顺序(SSOT)。 +const bu = (() => { + const pj = P.new({ paiju_list: [] }, 0); + const c = setup("00000", pj); + mod.jiaofen(pack(0, { call: 65 })); mod.jiaofen(pack(1, { call: 0 })); mod.jiaofen(pack(2, { call: 0 })); + mod.xuanzhu(pack(0, { flower: 1 })); + // 刻意打乱提交顺序:手牌是从大到小的,取 8 张后【反转】成从小到大提交 + const raw = P.get_seat_cards(pj, 0).slice(0, 8).reverse(); + mod.maipai(pack(0, { cards: raw })); + const mp = c.sent.filter(m => m.rpc === 'maipai').find(m => m.data.burycards !== undefined); + return { pj, c, raw, mp }; +})(); +t.eq('埋牌底牌 maipai == 重连 PushCards 同序(SSOT)', + JS(bu.mp.data.burycards), JS(E.get_deskinfo(bu.c.o_room, 0).PushCards.burycards)); +t.eq('埋牌底牌 maipai 不回显客户端提交的原序', JS(bu.mp.data.burycards) === JS(bu.raw), false); +t.eq('埋牌底牌 maipai 与提交的是同一批牌(只是顺序不同)', + JS(bu.mp.data.burycards.concat().sort((x, y) => x - y)), JS(bu.raw.concat().sort((x, y) => x - y))); + +// ---- ⑤ chupai1/2/3.playproc:结构与取值必须与同一时刻的 PushCards.playproc 完全一致 ---- +// 没有它,前端在非重连时拿不到「本轮谁先手/谁最大/三家各出了什么/第几轮」,只能自己累积推导。 +// 用真实牌局打满 28 轮,每出一手就拿三家的下发包与三家的重连快照逐一比对。 +const pp = (() => { + const pj = P.new({ paiju_list: [] }, 0); + const c = setup("00000", pj); + mod.jiaofen(pack(0, { call: 65 })); mod.jiaofen(pack(1, { call: 0 })); mod.jiaofen(pack(2, { call: 0 })); + mod.xuanzhu(pack(0, { flower: 1 })); + mod.maipai(pack(0, { cards: P.get_seat_cards(pj, 0).slice(-8) })); + // 深拷贝守卫需要【活引用】:setup 的 SendPack 会 JSON 深拷贝每个包,用 c.sent 验不出活引用问题。 + // 故在其之外再挂一层,原样留住服务端交出来的那个 playproc 对象。 + const live = []; + const innerSend = mod.app.SendPack; + mod.app.SendPack = m => { if (/^chupai[123]$/.test(m.rpc)) live.push(m.data.playproc); innerSend(m); }; + let cmp = 0, mism = 0, missing = 0, rounds = 0, guard = 0, jiesuanHasPlayproc = null, firstSnap = null; + while (pj.step === 5 && ++guard < 400) { + const seat = pj.playproc.currseat, hand = P.get_seat_cards(pj, seat); + let pick = null; + if (seat === pj.playproc.start) pick = [hand[hand.length - 1]]; + else for (const x of hand) if (AR.can_followcard(pj.flower, hand, [x], pj.playproc.startcount, pj.playproc.startflower, pj.playproc.starttype).result) { pick = [x]; break; } + if (!pick) break; + c.sent.length = 0; + mod.chupai(pack(seat, { cards: pick })); + const cps = c.sent.filter(m => /^chupai[123]$/.test(m.rpc)); + const js = c.sent.filter(m => m.rpc === 'jiesuan'); + if (js.length) jiesuanHasPlayproc = js.some(m => m.data.playproc !== undefined); + if (!cps.length) continue; + rounds++; + if (cps.some(m => m.data.playproc === undefined)) missing++; + if (firstSnap === null) firstSnap = JS(live[0]); // 第 1 包发出【当时】的样子 + if (pj.step !== 5) continue; // 已进结算,无"当前进行态"可比 + for (let s = 0; s < 3; s++) { + const rec = E.get_deskinfo(c.o_room, s).PushCards.playproc; + cmp++; + if (JS(cps[s].data.playproc) !== JS(rec)) mism++; + } + } + mod.app.SendPack = innerSend; + return { pj, cmp, mism, missing, rounds, jiesuanHasPlayproc, firstSnap, firstRef: live[0] }; +})(); +t.eq('本轮进行态 28轮打完(用例真的走到底)', pp.pj.playproc.round, 28); +t.eq('本轮进行态 chupai1/2/3 恒带 playproc', [pp.rounds > 80, pp.missing], [true, 0]); +t.eq('本轮进行态 增量下发 == 同时刻重连快照(逐包逐座位)', [pp.cmp > 200, pp.mism], [true, 0]); +t.eq('本轮进行态 chupai3 转 jiesuan 时不带 playproc', pp.jiesuanHasPlayproc, false); +// 深拷贝守卫:playproc 是全程复用的活对象(new_playround 就地重置同一个对象)。 +// 若下发挂的是活引用,打完整局后"第一包里的第 1 轮进行态"会变成最后一轮的样子。 +t.eq('本轮进行态 下发的是深拷贝快照(已发出的包不被后续出牌回改)', JS(pp.firstRef), pp.firstSnap); +t.eq('本轮进行态 第1包就是第1轮、cards 定长3', [pp.firstRef.round, pp.firstRef.cards.length], [1, 3]); + // ===================== §5.4 甩牌:chupai1 需下发分量构成 shuai(cardtype 表达不了甩牌)===================== // 主花色=♦(1)。庄家(0) 甩「主♦K对 + 主♦5单张」;两闲家手上一张主牌都没有 → 甩牌合法 function mkShuai(extraToSeat1) { From f7b87f32e8a422d5eb6d3146424f5e645c61fced Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 19:28:13 +0800 Subject: [PATCH 19/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E7=94=9F=E6=88=90=E7=9C=9F=E5=8C=85=E5=A4=B9?= =?UTF-8?q?=E5=85=B7=E3=80=81=E8=A1=A5=E6=8D=95=20StartWar=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E8=87=B4=E6=80=A7=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=E9=97=B4=E6=B1=A1=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 服务端 8452535 改了下发面(chupai1/2/3 新增 playproc、deskinfo step2/3 新增 curmultiple、maipai 新增 seatlist、bottomcards/burycards 顺序统一),前端真包 夹具 packets.json 已过期,重新导出并逐项核对新字段存在与三处/两处顺序一致。 夹具新增顶层 startwar[](每座位一份,结构=deskwar=deskinfo,取自 do_new_paiju 之后、jiaofen 之前的同一时刻),独立存放、不混入 seats[],避免 packetIndex 对 齐锚点错位;test_fixture.js 补相应断言。 修复 test_consistency.js 的用例间污染:EQW_GameState.reset() 按设计不清 room.playerScores(跨局累积量),旧版增量路径从不写它,实际靠"沿用同进程里 上一次全量路径写入的残留"凑出假绿,换座位顺序或调整执行顺序就会转红。改为 每个对齐点独立起步(buildIncremental/buildFull 各自 reset),且增量路径先喂 StartWar 再喂增量包,与真实客户端时序一致,不再依赖任何隐式残留。已验证正 序/倒序跑出的 PASS/FAIL 集合逐条相同。 修完后 23 checks:15 绿、8 红。红项均已归因:3 处为任务已知的前端未接线缺口 (table.playproc 映射、table.pushlist 累积、maipai.seatlist 消费),另发现两 类同类缺口(ResyncHandler 未映射 deskinfo 新增的 curmultiple 字段、BuryHandler 埋牌后未清空 my.bottomCards),均未改动 client/js 正式代码,留给下一个前端任务。 Co-Authored-By: Claude Opus 5 (1M context) --- client/tests/fixtures/export_packets.js | 15 + client/tests/fixtures/packets.json | 4875 ++++++++++++++++++++++- client/tests/test_consistency.js | 47 +- client/tests/test_fixture.js | 15 + 4 files changed, 4928 insertions(+), 24 deletions(-) diff --git a/client/tests/fixtures/export_packets.js b/client/tests/fixtures/export_packets.js index 815494d..02a8b1d 100644 --- a/client/tests/fixtures/export_packets.js +++ b/client/tests/fixtures/export_packets.js @@ -129,6 +129,20 @@ function snap(step, seat) { // 发牌(fapai):class.desk.js 内部随机发牌 + 广播 D.do_new_paiju(desk, 0); const pj = desk.method.curr_paiju(); + +// StartWar(开局握手,前端 04/05 讲的"增量路径真实起点"):真实链路里客户端开局收到的 +// 第一包,结构就是 deskwar —— 即 get_deskinfo() 的返回值(见 server/youle/server_room/ +// rpc.js 里 pack.data.deskwar = youle_room.import.makewar_deskwar(o_room) 一段)。 +// 当前 erqiwang 的 exp.makewar(class.export.js)尚未把 get_deskinfo 接成返回值,这是 +// 另一项任务;本脚本独立调用 get_deskinfo 反映"接线后客户端此刻会收到什么",让前端测试 +// 能提前对齐这条起点(尤其是 room.playerScores 这类 fapai 包不带、只有 StartWar 能给的初值)。 +// 与紧随其后的 step1 快照取同一时刻(do_new_paiju 之后、任何 jiaofen 之前),按座位各存 +// 一份(三家 MyCards 视角不同),套一层 { deskwar: ... } 外壳与生产环境 pack.data.deskwar +// 的包裹方式对齐,供 EQW_ResyncHandler.handleStartWar 直接消费。 +const startwar = [0, 1, 2].map(function (seat) { + return { deskwar: clone(E.get_deskinfo(o_room, seat)) }; +}); + snap(1, 0); snap(1, 1); snap(1, 2); // 叫分阶段(step1):三家快照,验证 MyCards 各不相同 // 叫分:0 号位叫 65,其余不叫 → 0 号位上庄(触发 jiaofen 广播 + shangzhuang 差异化下发) @@ -179,6 +193,7 @@ drain(); // 保险:吸收循环末尾可能残留的未 drain 包 const fixture = { roomtype: ROOMTYPE, + startwar: startwar, seats: seatPackets, deskinfo: deskinfo }; diff --git a/client/tests/fixtures/packets.json b/client/tests/fixtures/packets.json index 9a13644..7359ccf 100644 --- a/client/tests/fixtures/packets.json +++ b/client/tests/fixtures/packets.json @@ -1,5 +1,166 @@ { "roomtype": "00000", + "startwar": [ + { + "deskwar": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 1, + "MyCards": [ + 52, + 19, + 94, + 68, + 14, + 55, + 93, + 105, + 103, + 102, + 46, + 92, + 37, + 36, + 90, + 67, + 75, + 18, + 72, + 71, + 54, + 0, + 10, + 64, + 63, + 62, + 7, + 59 + ], + "CallRun": { + "seat": 0, + "countdown": 15, + "nowcall": 0, + "multiple": 0, + "call": [ + null, + null, + null + ] + } + } + }, + { + "deskwar": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 1, + "MyCards": [ + 106, + 99, + 73, + 81, + 50, + 49, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17, + 12, + 11, + 65, + 9, + 8, + 5, + 58, + 4 + ], + "CallRun": { + "seat": 0, + "countdown": 15, + "nowcall": 0, + "multiple": 0, + "call": [ + null, + null, + null + ] + } + } + }, + { + "deskwar": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 1, + "MyCards": [ + 53, + 107, + 45, + 86, + 32, + 6, + 60, + 40, + 27, + 1, + 39, + 104, + 44, + 98, + 97, + 43, + 26, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74, + 61 + ], + "CallRun": { + "seat": 0, + "countdown": 15, + "nowcall": 0, + "multiple": 0, + "call": [ + null, + null, + null + ] + } + } + } + ], "seats": [ [ { @@ -181,6 +342,74 @@ "success": true, "seat": 0, "countdown": 30, + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], "cards": [ 52, 19, @@ -217,8 +446,8 @@ 23, 75, 20, - 72, 18, + 72, 71 ] } @@ -302,6 +531,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 1, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -416,6 +663,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 1, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 1, + "maxcard": 314, + "cards": [ + [ + 33 + ], + [ + 80 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -498,6 +765,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1 } @@ -581,6 +864,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 205, + "cards": [ + null, + [ + 17 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -666,6 +967,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 214, + "cards": [ + null, + [ + 17 + ], + [ + 13 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -748,6 +1069,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -859,6 +1196,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 90 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -971,6 +1326,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 90 + ], + [ + 34 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -1053,6 +1428,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -1137,6 +1528,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + null, + null, + [ + 74 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -1222,6 +1631,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 7000, + "cards": [ + [ + 19 + ], + null, + [ + 74 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 55, @@ -1330,6 +1759,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -1413,6 +1858,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -1523,6 +1986,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36 + ], + [ + 88 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -1605,6 +2088,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -1688,6 +2187,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 210, + "cards": [ + null, + null, + [ + 76 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -1773,6 +2290,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 3102, + "cards": [ + [ + 55 + ], + null, + [ + 76 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 94, @@ -1879,6 +2416,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -1962,6 +2515,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -2070,6 +2641,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + [ + 87 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -2152,6 +2743,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -2235,6 +2842,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -2342,6 +2967,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + [ + 31 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -2424,6 +3069,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -2507,6 +3168,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 100 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -2613,6 +3292,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 412, + "cards": [ + [ + 100 + ], + [ + 50 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -2695,6 +3394,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -2778,6 +3493,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 213, + "cards": [ + null, + null, + [ + 25 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -2863,6 +3596,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 2000, + "cards": [ + [ + 94 + ], + null, + [ + 25 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 14, @@ -2965,6 +3718,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -3048,6 +3817,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -3152,6 +3939,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 411, + "cards": [ + [ + 46 + ], + [ + 49 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -3234,6 +4041,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -3317,6 +4140,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 305, + "cards": [ + null, + null, + [ + 30 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -3402,6 +4243,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 2000, + "cards": [ + [ + 14 + ], + null, + [ + 30 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 68, @@ -3502,6 +4363,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -3585,6 +4462,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 409, + "cards": [ + [ + 101 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -3687,6 +4582,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 410, + "cards": [ + [ + 101 + ], + [ + 48 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -3769,6 +4684,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 10 @@ -3853,6 +4784,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 209, + "cards": [ + null, + [ + 21 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -3938,6 +4887,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 9554, + "cards": [ + null, + [ + 21 + ], + [ + 53 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -4020,6 +4989,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "cardsinhand": [ @@ -4119,6 +5104,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 306, + "cards": [ + null, + null, + [ + 85 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -4204,6 +5207,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 1114, + "cards": [ + [ + 0 + ], + null, + [ + 85 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 54, @@ -4301,6 +5324,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1 } @@ -4384,6 +5423,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 210, + "cards": [ + null, + [ + 22 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -4469,6 +5526,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 9554, + "cards": [ + null, + [ + 22 + ], + [ + 107 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -4551,6 +5628,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10, @@ -4649,6 +5742,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 2, + "maxcard": 405, + "cards": [ + null, + null, + [ + 97 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -4734,6 +5845,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 414, + "cards": [ + [ + 93 + ], + null, + [ + 97 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 66, @@ -4829,6 +5960,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -4912,6 +6059,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 410, + "cards": [ + [ + 102 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -5009,6 +6174,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 7000, + "cards": [ + [ + 102 + ], + [ + 99 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -5091,6 +6276,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 10 @@ -5175,6 +6376,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1105, + "cards": [ + null, + [ + 4 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -5260,6 +6479,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + [ + 4 + ], + [ + 6 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -5342,6 +6581,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 15, @@ -5437,6 +6692,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 2, + "maxcard": 405, + "cards": [ + null, + null, + [ + 43 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -5522,6 +6795,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 413, + "cards": [ + [ + 51 + ], + null, + [ + 43 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 10, @@ -5614,6 +6907,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 15 @@ -5698,6 +7007,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1105, + "cards": [ + null, + [ + 58 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -5783,6 +7110,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + [ + 58 + ], + [ + 60 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -5865,6 +7212,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 5, @@ -5958,6 +7321,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 1108, + "cards": [ + null, + null, + [ + 61 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -6043,6 +7424,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 0, + "maxcard": 1111, + "cards": [ + [ + 64 + ], + null, + [ + 61 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 63, @@ -6133,6 +7534,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1 } @@ -6216,6 +7633,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1106, + "cards": [ + null, + [ + 5 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -6301,6 +7736,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7000, + "cards": [ + null, + [ + 5 + ], + [ + 45 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -6383,6 +7838,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10, @@ -6474,6 +7945,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2302, + "cards": [ + null, + null, + [ + 27 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -6559,6 +8048,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2302, + "cards": [ + [ + 62 + ], + null, + [ + 27 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 7, @@ -6647,6 +8156,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -6731,6 +8256,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2402, + "cards": [ + null, + null, + [ + 40 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -6816,6 +8359,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2402, + "cards": [ + [ + 7 + ], + null, + [ + 40 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 59, @@ -6903,6 +8466,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -6986,6 +8565,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 3102, + "cards": [ + null, + null, + [ + 1 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -7074,6 +8671,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 3102, + "cards": [ + [ + 59 + ], + null, + [ + 1 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "cardsinhand": [ 105, @@ -7160,6 +8777,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 1, "maxseat": 2 } @@ -7243,6 +8876,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 86 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "count": 1, "flower": 1, @@ -7328,6 +8979,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 105 + ], + null, + [ + 86 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "cardsinhand": [ 103 @@ -7413,6 +9084,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 1, "maxseat": 2, "grade": 20 @@ -7497,6 +9184,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 32 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "count": 1, "flower": 1, @@ -7585,6 +9290,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 103 + ], + null, + [ + 32 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "cardsinhand": [] } @@ -7797,7 +9522,75 @@ "data": { "success": true, "seat": 0, - "countdown": 30 + "countdown": 30, + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ] } }, { @@ -7879,6 +9672,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 1, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -7964,6 +9775,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 1, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 1, + "maxcard": 314, + "cards": [ + [ + 33 + ], + [ + 80 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -8075,6 +9906,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1 } @@ -8158,6 +10005,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 205, + "cards": [ + null, + [ + 17 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -8271,6 +10136,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 214, + "cards": [ + null, + [ + 17 + ], + [ + 13 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -8353,6 +10238,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -8436,6 +10337,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 90 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -8521,6 +10440,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 90 + ], + [ + 34 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -8630,6 +10569,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -8714,6 +10669,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + null, + null, + [ + 74 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -8799,6 +10772,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 7000, + "cards": [ + [ + 19 + ], + null, + [ + 74 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -8881,6 +10874,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -8990,6 +10999,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -9075,6 +11102,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36 + ], + [ + 88 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -9182,6 +11229,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -9265,6 +11328,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 210, + "cards": [ + null, + null, + [ + 76 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -9350,6 +11431,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 3102, + "cards": [ + [ + 55 + ], + null, + [ + 76 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -9432,6 +11533,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -9539,6 +11656,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -9624,6 +11759,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + [ + 87 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -9729,6 +11884,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -9812,6 +11983,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -9897,6 +12086,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + [ + 31 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -10001,6 +12210,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -10084,6 +12309,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 100 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -10169,6 +12412,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 412, + "cards": [ + [ + 100 + ], + [ + 50 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -10272,6 +12535,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -10355,6 +12634,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 213, + "cards": [ + null, + null, + [ + 25 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -10440,6 +12737,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 2000, + "cards": [ + [ + 94 + ], + null, + [ + 25 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -10522,6 +12839,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -10625,6 +12958,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -10710,6 +13061,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 411, + "cards": [ + [ + 46 + ], + [ + 49 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -10811,6 +13182,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -10894,6 +13281,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 305, + "cards": [ + null, + null, + [ + 30 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -10979,6 +13384,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 2000, + "cards": [ + [ + 14 + ], + null, + [ + 30 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "mustcard": [ 84 @@ -11064,6 +13489,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -11165,6 +13606,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 409, + "cards": [ + [ + 101 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -11250,6 +13709,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 410, + "cards": [ + [ + 101 + ], + [ + 48 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 106, @@ -11349,6 +13828,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 10 @@ -11433,6 +13928,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 209, + "cards": [ + null, + [ + 21 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -11534,6 +14047,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 9554, + "cards": [ + null, + [ + 21 + ], + [ + 53 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -11616,6 +14149,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -11699,6 +14248,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 306, + "cards": [ + null, + null, + [ + 85 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -11784,6 +14351,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 1114, + "cards": [ + [ + 0 + ], + null, + [ + 85 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -11866,6 +14453,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "cardsinhand": [ @@ -11964,6 +14567,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 210, + "cards": [ + null, + [ + 22 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -12063,6 +14684,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 9554, + "cards": [ + null, + [ + 22 + ], + [ + 107 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -12145,6 +14786,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -12229,6 +14886,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 2, + "maxcard": 405, + "cards": [ + null, + null, + [ + 97 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -12314,6 +14989,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 414, + "cards": [ + [ + 93 + ], + null, + [ + 97 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "mustcard": [ 47 @@ -12399,6 +15094,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -12495,6 +15206,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 410, + "cards": [ + [ + 102 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -12580,6 +15309,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 7000, + "cards": [ + [ + 102 + ], + [ + 99 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 73, @@ -12674,6 +15423,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 10 @@ -12758,6 +15523,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1105, + "cards": [ + null, + [ + 4 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -12854,6 +15637,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + [ + 4 + ], + [ + 6 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -12936,6 +15739,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 15 @@ -13020,6 +15839,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 2, + "maxcard": 405, + "cards": [ + null, + null, + [ + 43 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -13105,6 +15942,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 413, + "cards": [ + [ + 51 + ], + null, + [ + 43 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -13187,6 +16044,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 15, @@ -13281,6 +16154,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1105, + "cards": [ + null, + [ + 58 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -13375,6 +16266,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + [ + 58 + ], + [ + 60 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -13457,6 +16368,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 5 @@ -13541,6 +16468,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 1108, + "cards": [ + null, + null, + [ + 61 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -13626,6 +16571,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 0, + "maxcard": 1111, + "cards": [ + [ + 64 + ], + null, + [ + 61 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -13708,6 +16673,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "cardsinhand": [ @@ -13799,6 +16780,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1106, + "cards": [ + null, + [ + 5 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -13891,6 +16890,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7000, + "cards": [ + null, + [ + 5 + ], + [ + 45 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -13973,6 +16992,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -14057,6 +17092,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2302, + "cards": [ + null, + null, + [ + 27 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -14142,6 +17195,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2302, + "cards": [ + [ + 62 + ], + null, + [ + 27 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -14224,6 +17297,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10, @@ -14314,6 +17403,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2402, + "cards": [ + null, + null, + [ + 40 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -14399,6 +17506,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2402, + "cards": [ + [ + 7 + ], + null, + [ + 40 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -14481,6 +17608,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "cardsinhand": [ @@ -14569,6 +17712,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 3102, + "cards": [ + null, + null, + [ + 1 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -14654,6 +17815,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 3102, + "cards": [ + [ + 59 + ], + null, + [ + 1 + ] + ], + "shuai_demand": null + }, "baozhu": 1 } }, @@ -14736,6 +17917,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 1, "maxseat": 2, "cardsinhand": [ @@ -14823,6 +18020,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 86 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "count": 1, "flower": 1, @@ -14908,6 +18123,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 105 + ], + null, + [ + 86 + ] + ], + "shuai_demand": null + }, "baozhu": 1 } }, @@ -14990,6 +18225,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 1, "maxseat": 2, "grade": 20, @@ -15077,6 +18328,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 32 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "count": 1, "flower": 1, @@ -15162,6 +18431,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 103 + ], + null, + [ + 32 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "mustcard": [ 8 @@ -15376,7 +18665,75 @@ "data": { "success": true, "seat": 0, - "countdown": 30 + "countdown": 30, + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ] } }, { @@ -15458,6 +18815,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 1, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -15543,6 +18918,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 1, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 1, + "maxcard": 314, + "cards": [ + [ + 33 + ], + [ + 80 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -15625,6 +19020,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "cardsinhand": [ @@ -15737,6 +19148,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 205, + "cards": [ + null, + [ + 17 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -15822,6 +19251,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 2, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 214, + "cards": [ + null, + [ + 17 + ], + [ + 13 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 53, @@ -15932,6 +19381,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -16015,6 +19480,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 90 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -16100,6 +19583,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 3, + "playproc": { + "round": 3, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 90 + ], + [ + 34 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -16182,6 +19685,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10, @@ -16293,6 +19812,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + null, + null, + [ + 74 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -16404,6 +19941,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 7000, + "cards": [ + [ + 19 + ], + null, + [ + 74 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -16486,6 +20043,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -16569,6 +20142,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -16654,6 +20245,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36 + ], + [ + 88 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -16736,6 +20347,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "cardsinhand": [ @@ -16844,6 +20471,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 210, + "cards": [ + null, + null, + [ + 76 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -16953,6 +20598,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 6, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 3102, + "cards": [ + [ + 55 + ], + null, + [ + 76 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -17035,6 +20700,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -17118,6 +20799,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -17203,6 +20902,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + [ + 87 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -17285,6 +21004,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -17391,6 +21126,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -17476,6 +21229,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + [ + 31 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -17558,6 +21331,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0, "cardsinhand": [ @@ -17663,6 +21452,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 100 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -17748,6 +21555,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 412, + "cards": [ + [ + 100 + ], + [ + 50 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -17830,6 +21657,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "cardsinhand": [ @@ -17934,6 +21777,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 213, + "cards": [ + null, + null, + [ + 25 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -18039,6 +21900,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 10, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 0, + "maxcard": 2000, + "cards": [ + [ + 94 + ], + null, + [ + 25 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -18121,6 +22002,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -18204,6 +22101,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -18289,6 +22204,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 411, + "cards": [ + [ + 46 + ], + [ + 49 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -18371,6 +22306,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "cardsinhand": [ @@ -18473,6 +22424,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 305, + "cards": [ + null, + null, + [ + 30 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -18576,6 +22545,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 2000, + "cards": [ + [ + 14 + ], + null, + [ + 30 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -18658,6 +22647,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -18741,6 +22746,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 409, + "cards": [ + [ + 101 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -18826,6 +22849,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 13, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 410, + "cards": [ + [ + 101 + ], + [ + 48 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -18908,6 +22951,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 10, @@ -19009,6 +23068,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 209, + "cards": [ + null, + [ + 21 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -19094,6 +23171,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 14, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 9554, + "cards": [ + null, + [ + 21 + ], + [ + 53 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 107, @@ -19192,6 +23289,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -19275,6 +23388,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 306, + "cards": [ + null, + null, + [ + 85 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 3, @@ -19375,6 +23506,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 15, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 1114, + "cards": [ + [ + 0 + ], + null, + [ + 85 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -19457,6 +23608,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1 } @@ -19540,6 +23707,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 210, + "cards": [ + null, + [ + 22 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 2, @@ -19625,6 +23810,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 16, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 9554, + "cards": [ + null, + [ + 22 + ], + [ + 107 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 6, @@ -19721,6 +23926,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -19805,6 +24026,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 2, + "maxcard": 405, + "cards": [ + null, + null, + [ + 97 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -19903,6 +24142,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 17, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 414, + "cards": [ + [ + 93 + ], + null, + [ + 97 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -19985,6 +24244,22 @@ "nextseat": 0, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 0 } @@ -20068,6 +24343,24 @@ "nextseat": 1, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 410, + "cards": [ + [ + 102 + ], + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -20153,6 +24446,26 @@ "nextseat": 2, "countdown": 30, "curmultiple": 2, + "playproc": { + "round": 18, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 1, + "maxcard": 7000, + "cards": [ + [ + 102 + ], + [ + 99 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -20235,6 +24548,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 10, @@ -20331,6 +24660,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1105, + "cards": [ + null, + [ + 4 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -20416,6 +24763,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 19, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + [ + 4 + ], + [ + 6 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 60, @@ -20509,6 +24876,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 15 @@ -20593,6 +24976,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 2, + "maxcard": 405, + "cards": [ + null, + null, + [ + 43 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 4, @@ -20688,6 +25089,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": 1, + "playproc": { + "round": 20, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 4, + "starttype": 101, + "maxseat": 0, + "maxcard": 413, + "cards": [ + [ + 51 + ], + null, + [ + 43 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -20770,6 +25191,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1, "grade": 15 @@ -20854,6 +25291,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1105, + "cards": [ + null, + [ + 58 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -20939,6 +25394,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 21, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + [ + 58 + ], + [ + 60 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 45, @@ -21030,6 +25505,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 5 @@ -21114,6 +25605,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 1108, + "cards": [ + null, + null, + [ + 61 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -21207,6 +25716,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 22, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 0, + "maxcard": 1111, + "cards": [ + [ + 64 + ], + null, + [ + 61 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -21289,6 +25818,22 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 1 } @@ -21372,6 +25917,24 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 1, + "maxcard": 1106, + "cards": [ + null, + [ + 5 + ], + null + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -21457,6 +26020,26 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 23, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7000, + "cards": [ + null, + [ + 5 + ], + [ + 45 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "cardsinhand": [ 32, @@ -21546,6 +26129,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -21630,6 +26229,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2302, + "cards": [ + null, + null, + [ + 27 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -21721,6 +26338,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 24, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2302, + "cards": [ + [ + 62 + ], + null, + [ + 27 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -21803,6 +26440,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2, "grade": 10 @@ -21887,6 +26540,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2402, + "cards": [ + null, + null, + [ + 40 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -21977,6 +26648,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 25, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 2402, + "cards": [ + [ + 7 + ], + null, + [ + 40 + ] + ], + "shuai_demand": null + }, "baozhu": 0 } }, @@ -22059,6 +26750,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 0, "maxseat": 2 } @@ -22142,6 +26849,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 3102, + "cards": [ + null, + null, + [ + 1 + ] + ], + "shuai_demand": null + }, "baozhu": 0, "count": 1, "flower": 1, @@ -22231,6 +26956,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 26, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 3102, + "cards": [ + [ + 59 + ], + null, + [ + 1 + ] + ], + "shuai_demand": null + }, "baozhu": 1 } }, @@ -22313,6 +27058,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 1, "maxseat": 2 } @@ -22396,6 +27157,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 86 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "count": 1, "flower": 1, @@ -22484,6 +27263,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -1, + "playproc": { + "round": 27, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 105 + ], + null, + [ + 86 + ] + ], + "shuai_demand": null + }, "baozhu": 1 } }, @@ -22566,6 +27365,22 @@ "nextseat": 2, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "baozhu": 1, "maxseat": 2, "grade": 20 @@ -22650,6 +27465,24 @@ "nextseat": 0, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 32 + ] + ], + "shuai_demand": null + }, "baozhu": 1, "count": 1, "flower": 1, @@ -22736,6 +27569,26 @@ "nextseat": 1, "countdown": 30, "curmultiple": -2, + "playproc": { + "round": 28, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 1, + "starttype": 101, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 103 + ], + null, + [ + 32 + ] + ], + "shuai_demand": null + }, "baozhu": 1 } }, @@ -23060,7 +27913,8 @@ 20, 66 ], - "touxiang": 0 + "touxiang": 0, + "curmultiple": 3 } } }, @@ -23112,7 +27966,8 @@ "call": 65, "multiple": 2, "countdown": 20, - "touxiang": 0 + "touxiang": 0, + "curmultiple": 3 } } }, @@ -23164,7 +28019,8 @@ "call": 65, "multiple": 2, "countdown": 20, - "touxiang": 0 + "touxiang": 0, + "curmultiple": 3 } } }, @@ -23225,16 +28081,17 @@ "multiple": 2, "countdown": 25, "bottomcards": [ - 66, 51, 101, 100, 33, 79, 23, - 20 + 20, + 66 ], - "flower": 1 + "flower": 1, + "curmultiple": 3 } } }, diff --git a/client/tests/test_consistency.js b/client/tests/test_consistency.js index 7ee45c6..2c29ce8 100644 --- a/client/tests/test_consistency.js +++ b/client/tests/test_consistency.js @@ -43,26 +43,43 @@ function pick(snap, exclude) { return out; } +// 每个对齐点独立起步,不共用进程内任何残留(下面两个 build 函数各自从 +// EQW_GameState.reset() + 显式赋值房间级字段开始,互不依赖调用顺序/次数): +// +// 【曾经的假绿】EQW_GameState.reset() 按设计不清 room.playerScores(它是"跨局不清"的 +// 房间级累积量,见 GameState.js 注释)。旧版路径 A 从不写 playerScores(fapai 包不带), +// 于是它的值全靠"上一次由谁最后写过"——如果上一次恰好是路径 B(deskinfo 带 PlayerInfo) +// 跑过,路径 A 就会【继承】那份残留,凑巧与路径 B 的期望值相等,测试假绿;换一个座位 +// 顺序、或把它放到第一个跑,残留没了就立刻转红。 +// 真实客户端不存在这个残留——它在 fapai 之前先收到 StartWar(deskwar,见夹具补捕), +// 由它给出 room.playerScores 的开局初值。所以路径 A 的真实起点也改成先喂 StartWar, +// 每次都显式重新赋值,不再依赖任何"恰好还没被冲掉的旧值"。 +function buildIncremental(seat, packetIndex) { + EQW_GameState.reset(); + EQW_GameState.room.mySeat = seat; + EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(fx.roomtype); + EQW_ResyncHandler.handleStartWar({ data: fx.startwar[seat] }); + fx.seats[seat].slice(0, packetIndex).forEach(p => { + EQW_Dispatcher.dispatch({ rpc: p.rpc, data: p.data }); + }); + return EQW_GameState.snapshot(); +} + +function buildFull(seat, info) { + EQW_GameState.reset(); + EQW_GameState.room.mySeat = seat; + EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(fx.roomtype); + EQW_ResyncHandler.handleDeskinfo(info); + return EQW_GameState.snapshot(); +} + // 对每个座位、每个 deskinfo 快照点做比对 let compared = 0; fx.deskinfo.forEach(snapPoint => { const seat = snapPoint.seat; - // —— 路径 A:增量累积 —— - EQW_GameState.reset(); - EQW_GameState.room.mySeat = seat; - EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(fx.roomtype); - fx.seats[seat].slice(0, snapPoint.packetIndex).forEach(p => { - EQW_Dispatcher.dispatch({ rpc: p.rpc, data: p.data }); - }); - const incremental = EQW_GameState.snapshot(); - - // —— 路径 B:deskinfo 全量重建 —— - EQW_GameState.reset(); - EQW_GameState.room.mySeat = seat; - EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(fx.roomtype); - EQW_ResyncHandler.handleDeskinfo(snapPoint.info); - const full = EQW_GameState.snapshot(); + const incremental = buildIncremental(seat, snapPoint.packetIndex); + const full = buildFull(seat, snapPoint.info); t.eq('座位' + seat + ' step' + snapPoint.step + ' 增量 == 全量', pick(incremental, EXCLUDE), pick(full, EXCLUDE)); diff --git a/client/tests/test_fixture.js b/client/tests/test_fixture.js index ba22b99..bd21a6c 100644 --- a/client/tests/test_fixture.js +++ b/client/tests/test_fixture.js @@ -26,6 +26,21 @@ t.eq('deskinfo 覆盖全部阶段 1/2/3/5/6', steps, [1, 2, 3, 5, 6]); // roomtype 必须存在且非空,Task 12 要用它还原房间选项 t.eq('roomtype 存在且非空', typeof fx.roomtype === 'string' && fx.roomtype.length > 0, true); +// startwar 是增量路径的真实起点(开局握手,结构=deskwar=deskinfo),必须每座位各一份, +// 且不得混进 seats[] 数组头部——那会让全部 packetIndex 集体错位一位(见夹具补捕说明) +t.eq('startwar 存在且为 3 份', Array.isArray(fx.startwar) && fx.startwar.length, 3); +[0, 1, 2].forEach(s => { + const dw = fx.startwar[s] && fx.startwar[s].deskwar; + t.eq('startwar[' + s + '].deskwar 存在', !!dw, true); + t.eq('startwar[' + s + '] 结构=deskinfo(带 step/PlayerInfo/MyCards)', + dw && dw.hasOwnProperty('step') && dw.hasOwnProperty('PlayerInfo') && dw.hasOwnProperty('MyCards'), true); + t.eq('startwar[' + s + '].PlayerInfo 为开局初值(三家均 0)', dw && dw.PlayerInfo, [0, 0, 0]); +}); +// seats[] 的第一包必须仍是 fapai——确认 startwar 没有被误插进 seats[] 头部 +[0, 1, 2].forEach(s => { + t.eq('seats[' + s + '][0] 仍是 fapai(startwar 未混入 seats)', fx.seats[s][0].rpc, 'fapai'); +}); + // packetIndex 必须落在 (0, 该座位包总数] 区间内,且与 info.step 自洽 fx.deskinfo.forEach(d => { const inRange = d.packetIndex > 0 && d.packetIndex <= fx.seats[d.seat].length; From 729128aa9d935fb4c0a00bd39176ede03f86e72f Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 19:41:48 +0800 Subject: [PATCH 20/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=20handler=20=E5=85=AD=E5=A4=84=E4=B8=8B?= =?UTF-8?q?=E5=8F=91=E9=9D=A2=E6=BC=8F=E8=AF=BB/=E9=94=99=E8=AF=BB?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=88=E5=A2=9E=E9=87=8F=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=AF=B9=E9=BD=90=E9=87=8D=E8=BF=9E=E8=B7=AF=E5=BE=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一致性测试(同一局真包:逐包增量回放 vs 一次性 deskinfo 重连)暴露的六处前端缺陷: ① PlayHandler:table.playproc 由「字段映射错误」改为原样拷贝 原实现把这一手的 seat/cards/count/flower/cardtype 灌进 playproc,而服务端 playproc 是本轮进行态(round/start/currseat/.../cards),两者几乎无交集、撞名的 cards 语义还相反。 服务端已在 chupai1/2/3 补发 playproc,前端零推导直接镜像,不自行累积 round/maxseat。 ② 本手信息改走 EQW_CARD_PLAYED 事件载荷,不进 GameState {order, seat, cards, count?, flower?, cardtype?, shuai?, shuaicuo?},带 ? 的缺字段不兜底。 落牌是一次性表现而非对局状态;新立 GameState 字段只会再制造一处增量/全量不一致。 ③ PlayHandler:table.pushlist 逐手落盘、按轮归档(GameState.pushPlay) chupai1 开新的一轮、2/3 落进当前轮,任意时刻都与 deskinfo 的全量重建相等(服务端 pushlist 含进行中的当前轮)。不读 chupai3.playproc.cards——那是下一轮的进行态(协议 §13)。 仅可查牌模式累积,与服务端同一道门控,否则不查牌房会凭空攒出重连没有的历史。 ④ ResultHandler:归档收尾轮(最后一手走 jiesuan.chupai,不发 chupai3) 夹具实证 chupai1×28 / chupai2×28 / chupai3×27。jiesuan.chupai 只有 seat/cards/maxseat。 归档随即被结算收敛清空(deskinfo step6 不带 PushCards),但 emit 同步,落牌表现在清空前取值。 ⑤ BuryHandler:接住 maipai 新增的 seatlist(此刻为全初值,界面无差别但重连侧有) ⑥ ResyncHandler 的 ChooseMain/BuryCards 补映射 curmultiple(原重连重建为 0,抓分角标掉档); BuryHandler 埋牌完成后清空 my.bottomCards——底牌上庄时已并入手牌,埋牌后只剩 burycards 有意义,deskinfo 的 PushCards 不下发 bottomcards,重连重建恒为 [](语义已逐条核实)。 一致性测试 8 红 → 3 红。剩余 3 条同源:服务端 maipai 漏发 playproc(与本次服务端补发 seatlist 是同一个窗口、同一个理由),前端无法自补且不得伪造,详见报告 §7 待裁决。 另有 test_handlers_play.js:84 断言的正是 ① 修掉的错误映射,按纪律未改测试,见报告 §8。 未触碰 server/、client/tests/(含夹具与 EXCLUDE);服务端 29 checks 全绿。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/BuryHandler.js | 17 +++++++- .../codes/net/handlers/PlayHandler.js | 42 ++++++++++++------- .../codes/net/handlers/ResultHandler.js | 14 +++++++ .../codes/net/handlers/ResyncHandler.js | 18 ++++---- client/js/01_SubGame/codes/state/Events.js | 12 ++++-- client/js/01_SubGame/codes/state/GameState.js | 22 ++++++++++ 6 files changed, 97 insertions(+), 28 deletions(-) diff --git a/client/js/01_SubGame/codes/net/handlers/BuryHandler.js b/client/js/01_SubGame/codes/net/handlers/BuryHandler.js index e737619..87ffd7a 100644 --- a/client/js/01_SubGame/codes/net/handlers/BuryHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/BuryHandler.js @@ -3,10 +3,18 @@ /////////////////////////////////////////////////////////////// // 协议 §9:cards 埋牌后手牌(仅庄家) / burycards 埋牌底牌(仅庄家) / // seat 首出者(必为庄家) / countdown 出牌倒计时 / +// seatlist 三家牌况(仅可查牌模式) / // liangpai 亮牌(仅闲家 + 可查牌模式 + 庄家固定主牌达门槛) // // 注意 burycards(埋牌底牌,庄家埋下的 8 张)与 bottomcards(底牌,发牌留桌的 8 张) // 是两批不同的牌,协议 §0.0 与验收清单专门警告过别写反。 +// +// 【seatlist 此刻是全初值,但必须接】:埋牌完成时这张表刚初始化 +// (每家 [[0,0],[0,0],[0,0],[0,0],[-1,-1]]),界面上看不出差别——但「埋牌完成 → 庄家首出」 +// 这段窗口内重连拿到的 PushCards.seatlist 就是它,漏接会让增量路径此刻为空、重连路径却有表。 +// +// 【bottomcards 到此失效,要清空】:底牌在上庄时已翻给玩家看并并入手牌,埋牌完成后 +// 只剩「埋牌底牌 burycards」有意义;deskinfo 的 PushCards 不带 bottomcards,重连重建恒为 []。 var EQW_BuryHandler = EQW_BuryHandler || { handle: function (data) { @@ -20,8 +28,13 @@ var EQW_BuryHandler = EQW_BuryHandler || { cards: 'cards', buryCards: 'burycards' }); - //闲家才可能有的亮牌 - EQW_GameState._apply(EQW_GameState.table, data, { liangpai: 'liangpai' }); + //底牌已并入手牌、埋牌完成即失效(重连的 PushCards 不带它),显式清空保持两条路径一致 + EQW_GameState.my.bottomCards = []; + //三家牌况(仅可查牌模式)与闲家才可能有的亮牌 + EQW_GameState._apply(EQW_GameState.table, data, { + seatlist: 'seatlist', + liangpai: 'liangpai' + }); EQW_GameState._apply(EQW_GameState.turn, data, { seat: 'seat', countdown: 'countdown' diff --git a/client/js/01_SubGame/codes/net/handlers/PlayHandler.js b/client/js/01_SubGame/codes/net/handlers/PlayHandler.js index c883ee8..1b44232 100644 --- a/client/js/01_SubGame/codes/net/handlers/PlayHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/PlayHandler.js @@ -14,6 +14,16 @@ // // 【mustcard 没有就要清空】:它是「本轮跟牌的必出牌」,只对当前这一轮有效。 // 上一轮的建议残留下来会让界面自动选中错误的牌。 +// +// 【playproc 是服务端的「本轮进行态」,原样拷贝】:它的结构是 +// {round, start, currseat, startcount, startflower, starttype, maxseat, maxcard, cards, shuai_demand} +// (协议 §11),与重连包 PushCards.playproc 同源同结构(服务端同一个 get_playproc())。 +// 注意它的 cards 是【本轮三家各自出的牌、下标 = 座位】,与本包的 cards(这一手出的牌) +// 语义相反,绝不能混写。轮次/最大者由服务端给,前端不累积、不推导。 +// +// 【这一手的信息走事件载荷,不进 GameState】:谁出了什么、几张、什么牌型是【一次性表现】 +// (落牌动画),不是对局状态;deskinfo 也不下发它。放进 GameState 会立刻制造一处 +// 增量/全量不一致。故随 EQW_CARD_PLAYED 事件下发给 UI。 var EQW_PlayHandler = EQW_PlayHandler || { //order: 1/2/3,对应 chupai1/2/3 @@ -23,19 +33,11 @@ var EQW_PlayHandler = EQW_PlayHandler || { return; } - //—— 本轮桌面:记下这一手(谁出的、出了什么、首家的牌型信息)—— - if (!EQW_GameState.table.playproc) { EQW_GameState.table.playproc = {}; } - var proc = EQW_GameState.table.playproc; - proc.order = order; - EQW_GameState._apply(proc, data, { - seat: 'seat', - cards: 'cards', - count: 'count', - flower: 'flower', - cardtype: 'cardtype', - shuai: 'shuai', - shuaicuo: 'shuaicuo' - }); + //—— 本轮进行态:服务端权威快照,原样拷贝,前端零推导 —— + EQW_GameState._apply(EQW_GameState.table, data, { playproc: 'playproc' }); + + //—— 出牌历史:把这一手记进本轮(chupai1 = 一轮的第一手,开新的一轮)—— + EQW_GameState.pushPlay(data.seat, data.cards, order === 1); //—— 自己的手牌:只有出牌者本人才收到 cardsinhand —— EQW_GameState._apply(EQW_GameState.my, data, { cards: 'cardsinhand' }); @@ -60,7 +62,7 @@ var EQW_PlayHandler = EQW_PlayHandler || { countdown: 'countdown' }); - EventBus.emit(EQW_Events.EQW_CARD_PLAYED); + EventBus.emit(EQW_Events.EQW_CARD_PLAYED, this._playPayload(data, order)); if (data.hasOwnProperty('cardsinhand')) { EventBus.emit(EQW_Events.EQW_HAND_CHANGED); } //—— 末家出完:本轮结束,记下谁最大、闲家得了多少分 —— @@ -80,5 +82,17 @@ var EQW_PlayHandler = EQW_PlayHandler || { } EventBus.emit(EQW_Events.EQW_TURN_CHANGED); + }, + + //EQW_CARD_PLAYED 的事件载荷:这一手的一次性信息(落牌动画用),不落 GameState。 + //【缺字段不兜底】:包里没有的键就不带(count/flower/cardtype 只有 chupai1 有, + //shuai 仅合法甩牌时有,shuaicuo 仅甩错时有),订阅方按 hasOwnProperty 判断。 + _playPayload: function (data, order) { + var payload = { order: order, seat: data.seat, cards: data.cards }; + var keys = ['count', 'flower', 'cardtype', 'shuai', 'shuaicuo']; + for (var i = 0; i < keys.length; i++) { + if (data.hasOwnProperty(keys[i])) { payload[keys[i]] = data[keys[i]]; } + } + return payload; } }; diff --git a/client/js/01_SubGame/codes/net/handlers/ResultHandler.js b/client/js/01_SubGame/codes/net/handlers/ResultHandler.js index 0d0ccdb..0f05810 100644 --- a/client/js/01_SubGame/codes/net/handlers/ResultHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/ResultHandler.js @@ -43,6 +43,20 @@ var EQW_ResultHandler = EQW_ResultHandler || { //三种来源共用的落地逻辑:有哪组就写哪组,缺的保持 null _applyResult: function (d) { + //—— 收尾轮的第三手:牌局在最后一手打完时【不发 chupai3】,整包换成 jiesuan(协议 §13/§14)—— + //夹具实跑一局的包数就是证据:chupai1×28 / chupai2×28 / chupai3×27。 + //只在 chupai3 归档会永远丢掉最后一轮,故在这里补齐——它必是本轮第三手,落进当前这一轮。 + //jiesuan.chupai 的字段与 chupai3 不同:只有 seat / cards / maxseat, + //没有 order / playproc / cardsinhand / grade。 + //归档随后会被下面的结算收敛清掉(deskinfo step6 不带 PushCards),但 emit 是同步的: + //落牌与收牌表现在清空之前就已取到完整的收尾轮。 + if (d.chupai && d.chupai.hasOwnProperty('seat') && d.chupai.hasOwnProperty('cards')) { + EQW_GameState.pushPlay(d.chupai.seat, d.chupai.cards, false); + var lastPlay = { seat: d.chupai.seat, cards: d.chupai.cards }; + if (d.chupai.hasOwnProperty('maxseat')) { lastPlay.maxseat = d.chupai.maxseat; } + EventBus.emit(EQW_Events.EQW_CARD_PLAYED, lastPlay); + } + //结算是"清空过程量、只留结算数据"的快照点:deskinfo step6 只带 Balance(=aset), //其余分组一律回到 reset() 默认值——jiesuan 也要收敛到同一状态,否则重连前后画面不一致 //(清单以 ResyncHandler.handleDeskinfo 在 step6 时实际重建出的字段集为准,不多清不少清)。 diff --git a/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js b/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js index f1a0e57..cbc082b 100644 --- a/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js @@ -85,10 +85,11 @@ var EQW_ResyncHandler = EQW_ResyncHandler || { _applyChooseMain: function (g) { EQW_GameState._apply(EQW_GameState.aset, g, { - banker: 'banker', - call: 'call', - multiple: 'multiple', - touxiang: 'touxiang' + banker: 'banker', + call: 'call', + multiple: 'multiple', + touxiang: 'touxiang', + curmultiple: 'curmultiple' //与 shangzhuang 推送同源同值,漏读会让「抓分」角标掉档 }); EQW_GameState._apply(EQW_GameState.my, g, { bottomCards: 'bottomcards' }); EQW_GameState._apply(EQW_GameState.turn, g, { countdown: 'countdown' }); @@ -97,10 +98,11 @@ var EQW_ResyncHandler = EQW_ResyncHandler || { _applyBuryCards: function (g) { EQW_GameState._apply(EQW_GameState.aset, g, { - banker: 'banker', - call: 'call', - multiple: 'multiple', - flower: 'flower' + banker: 'banker', + call: 'call', + multiple: 'multiple', + flower: 'flower', + curmultiple: 'curmultiple' //同上:一张牌未出时恒为 +3(大光),也必须重建 }); EQW_GameState._apply(EQW_GameState.my, g, { bottomCards: 'bottomcards' }); EQW_GameState._apply(EQW_GameState.turn, g, { countdown: 'countdown' }); diff --git a/client/js/01_SubGame/codes/state/Events.js b/client/js/01_SubGame/codes/state/Events.js index 652ccbc..8a0d672 100644 --- a/client/js/01_SubGame/codes/state/Events.js +++ b/client/js/01_SubGame/codes/state/Events.js @@ -3,10 +3,14 @@ /////////////////////////////////////////////////////////////// // 前端红线:框架保持游戏中立,玩法专属事件由子游戏追加到 EventBus.Events。 // -// 【事件只带「发生了什么」,不带数据】——订阅者从 EQW_GameState 读。 -// 这样同一份数据不会在事件载荷与状态里各存一份(SSOT)。 -// 唯一例外是 EQW_RPC_FAILED,它带 {rpc, errcode}:那是一次性的错误信息, -// 不属于对局状态、不该进 GameState。 +// 【对局状态不进事件载荷】——凡是 GameState 里有的,订阅者一律从 EQW_GameState 读, +// 同一份数据不在事件载荷与状态里各存一份(SSOT)。 +// 例外只有「一次性、不属于对局状态、deskinfo 也不下发」的信息,它们不该进 GameState +// (进了就会立刻制造一处增量/全量不一致),只能随事件载荷走: +// EQW_RPC_FAILED {rpc, errcode} 一次性错误信息 +// EQW_CARD_PLAYED {order, seat, cards, count?, flower?, cardtype?, shuai?, shuaicuo?} +// 这一手的落牌信息(一次性表现)。带 ? 的键【缺字段不兜底】, +// 包里没有就不带;收尾轮由 jiesuan.chupai 带出时只有 {seat, cards, maxseat?} var EQW_Events = EQW_Events || { EQW_RESET: 'eqw.reset', //新一局发牌,全部清场 diff --git a/client/js/01_SubGame/codes/state/GameState.js b/client/js/01_SubGame/codes/state/GameState.js index fcd0a45..05ecb29 100644 --- a/client/js/01_SubGame/codes/state/GameState.js +++ b/client/js/01_SubGame/codes/state/GameState.js @@ -100,6 +100,28 @@ var EQW_GameState = EQW_GameState || { return out; }, + //把「一手牌」记进出牌历史 table.pushlist。 + //结构与 deskinfo.PushCards.pushlist 完全一致:外层下标 = 轮次-1,内层恒 3 个数组、 + //下标 = 座位序号(协议 §断线重连 pushlist)。 + // + //【只记录服务端发来的事实】:谁、出了哪几张。轮次的推进不在这里推导—— + //startRound 由调用方按【包类型】给出:chupai1 就是「一轮的第一手」(服务端定义的包, + //不是前端算出来的),其余各手落进当前这一轮。 + // + //【为什么不能读 chupai3.playproc.cards 直接归档】:服务端 do_playcard 在第三家出完后 + //就地调用 new_playround,chupai3 带的是【下一轮】的进行态(round+1、cards 全空, + //协议 §13 明标),本轮那三手只在 chupai1/2/3 各自的 seat + cards 里。 + // + //【仅可查牌模式累积】:pushlist 是「查牌」历史,不查牌模式下服务端的 deskinfo 压根 + //不下发它(design §9),前端也不能自己攒一份——否则增量路径会凭空多出重连路径没有的历史。 + pushPlay: function (seat, cards, startRound) { + var opts = this.room.options; + if (!opts || opts.nocheck) { return; } + var list = this.table.pushlist; + if (startRound || list.length === 0) { list.push([[], [], []]); } + list[list.length - 1][seat] = cards; + }, + //把包里的字段写进目标分组。map = { 目标键: 源键 }。 //【缺字段不兜底】源键在包里不存在就不写,保持原值——不填默认值掩盖漏发。 _apply: function (target, src, map) { From cdf2bc730ee0ce2f5e6db0f0e58fa1487f9774f3 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 19:46:32 +0800 Subject: [PATCH 21/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9Amaipa?= =?UTF-8?q?i=20=E8=A1=A5=E5=8F=91=20playproc=EF=BC=88=E5=A2=9E=E9=87=8F?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E4=B8=8E=E9=87=8D=E8=BF=9E=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=AF=B9=E9=BD=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端一致性测试剩余 3 红的根因:do_burycard() 内部已调 new_playround 初始化好 round-1 的进行态,但 mod.js 组 maipai 包时没有放 playproc(协议 §9 字段表也没有), 「埋牌完成 → 庄家首出」这段窗口增量路径 table.playproc 为 null,重连路径却已有初值—— 与上一个 commit(8452535)给 maipai 补 seatlist 是同一个窗口、同一条理由,被漏在了同一处。 修法:复用既有的 get_playproc() 快照函数(与 chupai1/2/3、PushCards.playproc 同源, 本身就是逐字段深拷贝,不引入活引用风险)。可见性:此刻一张牌未出,round/start/currseat 等全部由桌面公开信息推出,cards 全空、shuai_demand 为 null,不含私密信息,故与 chupai1/2/3.playproc 一样三家整体下发、不受查牌模式门控。 协议文档 §9 同步补字段说明。test_rpc.js 新增 5 checks:庄闲同值、与重连快照比对、 round-1 初值断言、不查牌模式下仍恒有、深拷贝守卫;已用「退回修复必转红」反向验证 (3/5 转红)。既有 121 checks 未改一条断言,全绿(17 脚本 / 675 checks)。未涉及 shared/。 Co-Authored-By: Claude Opus 5 (1M context) --- .../erqiwang/docs/protocol/packet_protocol.md | 1 + server/games/erqiwang/mod.js | 7 +++++ server/games/erqiwang/test/test_rpc.js | 31 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/server/games/erqiwang/docs/protocol/packet_protocol.md b/server/games/erqiwang/docs/protocol/packet_protocol.md index 2c7ec9d..0bd3f59 100644 --- a/server/games/erqiwang/docs/protocol/packet_protocol.md +++ b/server/games/erqiwang/docs/protocol/packet_protocol.md @@ -258,6 +258,7 @@ | cards | 数组 | 埋牌后手上的牌,去掉了埋牌,庄家才有此属性,闲家没有该属性 | | burycards | 数组 | **埋牌底牌**(庄家埋下的 8 张),庄家才有此属性,闲家没有该属性。注意与 `shangzhuang.bottomcards`(**底牌**,发牌留桌 8 张)是两批不同的牌,见 §0.0。
**取服务端权威快照 `get_burycard()`,不是客户端请求包里 `cards` 的原序**:按本局主牌花色从大到小排好,与重连包 `PushCards.burycards` **同源同序** | | seatlist | 数组 | 三家座位牌况,**仅可查牌模式下发**(不查牌无此属性,design §9),结构与门控同 `chupai1/2/3.seatlist` 与重连包 `PushCards.seatlist`。
埋牌完成时它是刚初始化的**空表**(每家 `[[0,0],[0,0],[0,0],[0,0],[-1,-1]]`)——下发它是为了让「埋牌完成 → 庄家首出」这段窗口内,增量路径与重连路径拿到同一张表,客户端无需为这段窗口特判 | +| playproc | json | **本轮进行态**(design §5.1),**恒有、三家同值**,结构与门控同 [`chupai1.playproc`](#11-第一个玩家出牌chupai1)/重连包 `PushCards.playproc`(同一个快照函数 `get_playproc()`)。`do_burycard` 内部已 `new_playround` 就地初始化好 round-1 的进行态,此包带的正是这份初值:`round=1`、`start`/`currseat` 均为即将首出的庄家、`cards` 全空、`shuai_demand` 为 `null`。
**可见性**:全部字段由桌面公开信息推出(此刻尚无一张牌打出),三家整体下发、不逐座位裁剪 | | seat | 整数 | 出牌者的位置序号(即将首出的庄家)| | countdown | 整数 | 出牌倒计时 | | liangpai | json | **亮牌**(design §8.2)。**只有闲家、且可查牌模式、且庄家达门槛时才有**;不达标或不查牌则无此属性。结构:`{ cards: [牌id...] }`——**庄家手中全部固定主牌的具体牌面**,按本局主牌序从大到小排好。
**固定主牌 = 双王 + 全部花色的 2 + 全部花色的 7**,**不含**主花色的普通牌 A/K/Q/J/10/9/8/6/5。
**门槛**(任一满足即下发):固定主牌总数 ≥10 / 王 ≥3 / 7 ≥6 / 2 ≥6。**不限叫分**。
亮出的是**固定的一份**,不随被哪条门槛触发而增减;也**不给数量统计**——数量前端自己数 `cards.length` 即可。
口径是庄家**埋牌后的静态快照**(排除已埋的 8 张,但包含之后已打出的牌),全局固定不随出牌缩水,故重连包里取值一致 | diff --git a/server/games/erqiwang/mod.js b/server/games/erqiwang/mod.js index 240d2aa..d580d7b 100644 --- a/server/games/erqiwang/mod.js +++ b/server/games/erqiwang/mod.js @@ -331,6 +331,13 @@ youle_erqiwang.maipai = function(pack){ //全场公示的余主数量(design §9 明确要求向全体三人展示),故三家整表下发不构成泄露 msg.data.seatlist = o_paiju.seatlist; } + //本轮进行态(design §5.1):do_burycard 内部已调用 new_playround 就地初始化好了 round-1 + //的进行态,与重连包 PushCards.playproc 同一个快照函数、同一结构(三家无差别)。 + //没有它,「埋牌完成 → 庄家首出」这段窗口内增量路径的 table.playproc 是 null, + //重连路径却已有 round-1 初值,两条路径不一致。可见性:round/start/currseat 等全部 + //由桌面公开信息推出,cards 此刻全空、shuai_demand 为 null,不含任何私密信息, + //与 chupai1/2/3.playproc 一样三家整体下发、不逐座位裁剪。 + msg.data.playproc = cls_youle_erqiwang_paiju.get_playproc(o_paiju); //埋牌底牌(本次埋下的 8 张):取服务端权威快照,【不回显客户端提交的 cards 原序】。 //get_burycard 与重连包 PushCards.burycards 是同一个函数、同一套按本局主牌花色的排序, //两条路径因此顺序一致(SSOT);直接回显 cards 会把客户端的选牌顺序当成下发顺序。 diff --git a/server/games/erqiwang/test/test_rpc.js b/server/games/erqiwang/test/test_rpc.js index 5503dd4..8106ab6 100644 --- a/server/games/erqiwang/test/test_rpc.js +++ b/server/games/erqiwang/test/test_rpc.js @@ -225,6 +225,37 @@ t.eq('埋牌 seatlist 埋牌完成时为初始化空表', JS(mpZhuang3.data.seat t.eq('埋牌 不查牌 maipai 无 seatlist', en.sent.filter(m => m.rpc === 'maipai').every(m => m.data.seatlist === undefined), true); +// ---- ③b maipai.playproc:与 PushCards.playproc 同一个快照函数、同结构,且是深拷贝 ---- +// 曾经的缺陷:mod.js 组 maipai 包时没有放 playproc(do_burycard 内部已 new_playround 就地初始化好 +// round-1 的进行态),「埋牌完成 → 庄家首出」这段窗口增量路径的 table.playproc 是 null, +// 重连路径却已有初值——与 seatlist 是同一个窗口、同一条理由,被漏在了同一处。 +t.eq('埋牌 maipai 带 playproc(庄闲同值)', + JS(mpZhuang3.data.playproc), JS(E.get_deskinfo(e.o_room, 0).PushCards.playproc)); +t.eq('埋牌 maipai 闲家同一份 playproc(三家公开、不裁剪)', + JS(mpXian3.data.playproc), JS(mpZhuang3.data.playproc)); +t.eq('埋牌 playproc 埋牌完成时为 round-1 初值(庄家首出、桌面全空)', mpZhuang3.data.playproc, { + round: 1, start: 0, currseat: 0, startcount: -1, startflower: -1, starttype: -1, + maxseat: -1, maxcard: -1, cards: [null, null, null], shuai_demand: null +}); +// 反面:playproc 不受查牌门控——不像 seatlist,它只是桌面公开信息,不查牌模式下也恒有 +t.eq('埋牌 不查牌 maipai 仍带 playproc', + en.sent.filter(m => m.rpc === 'maipai').every(m => m.data.playproc !== undefined), true); +// 深拷贝守卫:playproc 是全程复用的活对象,new_playround 就地重置同一个对象。 +// 若下发挂的是活引用,埋牌后紧跟着打一手牌,已发出的 maipai.playproc 会被回改成下一状态的样子。 +const dcPj = P.new({ paiju_list: [] }, 0); +const dcC = setup("00000", dcPj); +mod.jiaofen(pack(0, { call: 65 })); mod.jiaofen(pack(1, { call: 0 })); mod.jiaofen(pack(2, { call: 0 })); +mod.xuanzhu(pack(0, { flower: 1 })); +const dcInner = mod.app.SendPack; +let dcLive = null; +mod.app.SendPack = m => { if (m.rpc === 'maipai' && m.data.cards !== undefined) dcLive = m.data.playproc; dcInner(m); }; +mod.maipai(pack(0, { cards: P.get_seat_cards(dcPj, 0).slice(0, 8) })); +mod.app.SendPack = dcInner; +const dcSnapAtSend = JS(dcLive); +const dcHand = P.get_seat_cards(dcPj, dcPj.playproc.currseat); +mod.chupai(pack(dcPj.playproc.currseat, { cards: [dcHand[dcHand.length - 1]] })); // 推进出一手,制造"若为活引用会被回改"的条件 +t.eq('埋牌 playproc 下发的是深拷贝快照(已发出的包不被后续出牌回改)', JS(dcLive), dcSnapAtSend); + // ---- ④ burycards:maipai 必须发服务端权威快照,不得回显客户端提交的 cards 原序 ---- // 曾经的缺陷:msg.data.burycards = cards(请求包原样回显),而 PushCards.burycards 走 get_burycard() // 按主牌花色排序 —— 同一副埋牌底牌两条路径两种顺序(SSOT)。 From 5689ceab6f0065f542a8a17abb46640552d10811 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 19:48:54 +0800 Subject: [PATCH 22/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E7=94=9F=E6=88=90=E5=A4=B9=E5=85=B7=E3=80=81?= =?UTF-8?q?BuryHandler=20=E6=8E=A5=E4=BD=8F=20maipai.playproc=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=94=A9=E9=94=99=E6=96=AD=E8=A8=80=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 配合上一个 commit 服务端补发的 maipai.playproc,重新生成真包夹具(diff 只新增 三家 maipai 包各一份 round-1 初值 playproc,无其他变化)后跑一致性测试,暴露出 前端还有一处对应缺口:BuryHandler.js 组 table.playproc 时没有接 data.playproc (PlayHandler.js 早已对 chupai1/2/3 做了同样的原样拷贝),于是「埋牌完成→庄家 首出」窗口增量路径的 table.playproc 停在上一阶段的 null。现补上,并在 test_handlers_bury.js 新增一条用例守住、用「退回修复必转红」反向验证。 test_handlers_play.js:84 的 `S.table.playproc.shuaicuo` 断言的正是此前 Fix Round 2 裁决②(本手信息收进事件载荷、不进 GameState)判定为缺陷的旧映射,playproc 改为 原样拷贝服务端结构后必然读 null 硬崩。按 task-12d-report.md §8 的裁决与建议替换: 断言改为守事件载荷(EQW_CARD_PLAYED 的 shuaicuo/order/seat/cards/count/flower/ cardtype)+ playproc 原样拷贝,强度不降——原断言只守住"甩错标志被处理"这一件事, 新断言额外多守了"本手信息不得混入 playproc"一条。 client/tests/test_consistency.js 全绿(23 checks,此前 20 绿/3 红); client/tests/run.js 全绿(20 脚本);server/games/erqiwang/test/run.js 全绿 (17 脚本/675 checks,见上一个 commit)。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/BuryHandler.js | 10 +++- client/tests/fixtures/packets.json | 52 ++++++++++++++++++- client/tests/test_handlers_bury.js | 14 +++++ client/tests/test_handlers_play.js | 15 +++++- 4 files changed, 85 insertions(+), 6 deletions(-) diff --git a/client/js/01_SubGame/codes/net/handlers/BuryHandler.js b/client/js/01_SubGame/codes/net/handlers/BuryHandler.js index 87ffd7a..73eeb1c 100644 --- a/client/js/01_SubGame/codes/net/handlers/BuryHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/BuryHandler.js @@ -15,6 +15,11 @@ // // 【bottomcards 到此失效,要清空】:底牌在上庄时已翻给玩家看并并入手牌,埋牌完成后 // 只剩「埋牌底牌 burycards」有意义;deskinfo 的 PushCards 不带 bottomcards,重连重建恒为 []。 +// +// 【playproc 是服务端的「本轮进行态」,原样拷贝】:埋牌完成时服务端已就地开好 round-1 +// 的进行态(庄家首出、桌面全空),恒有、三家同值,与 chupai1/2/3.playproc / 重连包 +// PushCards.playproc 同源同结构(服务端同一个 get_playproc())。没有它,「埋牌完成 → +// 庄家首出」这段窗口增量路径 table.playproc 会停在上一阶段的 null,与重连路径不一致。 var EQW_BuryHandler = EQW_BuryHandler || { handle: function (data) { @@ -30,10 +35,11 @@ var EQW_BuryHandler = EQW_BuryHandler || { }); //底牌已并入手牌、埋牌完成即失效(重连的 PushCards 不带它),显式清空保持两条路径一致 EQW_GameState.my.bottomCards = []; - //三家牌况(仅可查牌模式)与闲家才可能有的亮牌 + //三家牌况(仅可查牌模式)、闲家才可能有的亮牌、本轮进行态(恒有,见上方注释) EQW_GameState._apply(EQW_GameState.table, data, { seatlist: 'seatlist', - liangpai: 'liangpai' + liangpai: 'liangpai', + playproc: 'playproc' }); EQW_GameState._apply(EQW_GameState.turn, data, { seat: 'seat', diff --git a/client/tests/fixtures/packets.json b/client/tests/fixtures/packets.json index 7359ccf..f948e8f 100644 --- a/client/tests/fixtures/packets.json +++ b/client/tests/fixtures/packets.json @@ -410,6 +410,22 @@ ] ] ], + "playproc": { + "round": 1, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, "cards": [ 52, 19, @@ -9590,7 +9606,23 @@ -1 ] ] - ] + ], + "playproc": { + "round": 1, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + } } }, { @@ -18733,7 +18765,23 @@ -1 ] ] - ] + ], + "playproc": { + "round": 1, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + } } }, { diff --git a/client/tests/test_handlers_bury.js b/client/tests/test_handlers_bury.js index ca7aeb3..b9d868d 100644 --- a/client/tests/test_handlers_bury.js +++ b/client/tests/test_handlers_bury.js @@ -55,4 +55,18 @@ S.reset(); EQW_BuryHandler.handle({ success: true, seat: 0, countdown: 20 }); t.eq('无亮牌时保持 null', S.table.liangpai, null); +// playproc:埋牌完成时服务端已就地开好 round-1 的进行态,恒有、原样拷贝进 table.playproc, +// 与 chupai1/2/3.playproc 同源同结构(协议 §9),漏接会让「埋牌完成→庄家首出」这段窗口 +// 增量路径 table.playproc 停在上一阶段的 null、与重连路径不一致 +S.reset(); +EQW_BuryHandler.handle({ success: true, seat: 0, countdown: 20, cards: [1, 2, 3], + burycards: [9, 10, 11, 12, 13, 14, 15, 16], + playproc: { round: 1, start: 0, currseat: 0, startcount: -1, + startflower: -1, starttype: -1, maxseat: -1, maxcard: -1, + cards: [null, null, null], shuai_demand: null } }); +t.eq('埋牌 playproc 原样拷贝服务端本轮进行态', S.table.playproc, { + round: 1, start: 0, currseat: 0, startcount: -1, startflower: -1, starttype: -1, + maxseat: -1, maxcard: -1, cards: [null, null, null], shuai_demand: null +}); + process.exit(t.done('handlers_bury') ? 0 : 1); diff --git a/client/tests/test_handlers_play.js b/client/tests/test_handlers_play.js index 1e4cf27..c6aae21 100644 --- a/client/tests/test_handlers_play.js +++ b/client/tests/test_handlers_play.js @@ -78,10 +78,21 @@ t.eq('第二轮跨包累加捡分', S.aset.grade, 25); t.eq('第二轮下一轮首家(证明第二个包确被处理)', S.turn.seat, 1); // ================= 甩错 ================= +// shuaicuo 是「这一手」的一次性信息,走 EQW_CARD_PLAYED 事件载荷,不进 GameState; +// playproc 是服务端下发的本轮进行态,原样拷贝,两者结构不同、不得混写(见 PlayHandler 顶部注释)。 S.reset(); evts.length = 0; +var lastPlayed = null; +EventBus.on(EQW_Events.EQW_CARD_PLAYED, function (p) { lastPlayed = p; }); EQW_PlayHandler.handle({ success: true, seat: 0, cards: [11], shuaicuo: 1, count: 1, - flower: 3, cardtype: 101, nextseat: 1, countdown: 15 }, 1); -t.eq('甩错标志', S.table.playproc.shuaicuo, 1); + flower: 3, cardtype: 101, nextseat: 1, countdown: 15, + playproc: { round: 2, start: 0, currseat: 1, cards: [[11], null, null] } }, 1); +t.eq('甩错标志走事件载荷', lastPlayed.shuaicuo, 1); +t.eq('本手信息走事件载荷', [lastPlayed.order, lastPlayed.seat, lastPlayed.cards, + lastPlayed.count, lastPlayed.flower, lastPlayed.cardtype], + [1, 0, [11], 1, 3, 101]); +t.eq('本手信息不进 GameState', S.table.playproc.hasOwnProperty('shuaicuo'), false); +t.eq('playproc 原样拷贝服务端本轮进行态', S.table.playproc, + { round: 2, start: 0, currseat: 1, cards: [[11], null, null] }); // ================= 缺必需字段 ================= S.reset(); From 4508fe005ffce485021a631dd12f4f2f05f0e578 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 20:12:03 +0800 Subject: [PATCH 23/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=87=BA=E7=89=8C=E9=A1=BA=E5=BA=8F=E6=94=B6=E6=95=9B=E4=B8=BA?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E5=8F=A3=E5=BE=84=EF=BC=8C=E9=87=8D=E8=BF=9E?= =?UTF-8?q?=E5=8C=85=E8=A1=A5=E5=8F=91=20baozhu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同一份数据「这一手打出的牌」此前有两个顺序口径:chupai*/playproc.cards 回显客户端请求原序,重连包 pushlist 则从 playround 反查后自己再排一次序。 一手多张(甩牌/对子/拖拉机)时两者必然分岔;同编码的一对牌更是排序都 区分不了,靠"两处各自排序"永远收敛不了。 改为单一写入处: - 新增 order_playcards(),do_playcard 入口归一化一次(顺带隔离 can_playcard 的原地排序,不再就地改写 pack.data.cards) - 新增 paiju.playhistory,出牌当场归档;新增 get_pushlist() 只做深拷贝 - class.export.js 删掉整段反查+重排,改为直读归档 - do_playcard 三个分支都给 re.cards,mod.js 去掉回落到入参的兜底 顺带修复重连包漏发 baozhu:它是余主公示与明牌按钮的开关,此前只在 chupai 包里给,报无主后重连按钮会凭空消失。现与 chupai 同源同门控下发。 协议文档新增 §0.6「一手出牌」的顺序口径,并补 PushCards.baozhu 字段。 测试:pushlist 一节改为真实链路驱动(一手多张 + 乱序提交),断言升级为 「重连每一手与当时的 chupai.cards 逐元素相等」;三处修复均已退回验证转红。 Co-Authored-By: Claude Opus 5 (1M context) --- server/games/erqiwang/class.export.js | 42 ++--- server/games/erqiwang/class.paiju.js | 67 ++++++- .../erqiwang/docs/protocol/packet_protocol.md | 30 +++- server/games/erqiwang/mod.js | 6 +- server/games/erqiwang/test/test_hint.js | 5 +- server/games/erqiwang/test/test_input.js | 2 +- server/games/erqiwang/test/test_paiju.js | 6 +- server/games/erqiwang/test/test_rpc.js | 164 +++++++++++++----- 8 files changed, 233 insertions(+), 89 deletions(-) diff --git a/server/games/erqiwang/class.export.js b/server/games/erqiwang/class.export.js index 2b98d98..a6b5efb 100644 --- a/server/games/erqiwang/class.export.js +++ b/server/games/erqiwang/class.export.js @@ -175,6 +175,12 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || { deskinfo.PushCards.mustcard = _must; } } + //报无主:与 chupai1/2/3 的 baozhu 同源同门控(mod.chupai)。 + //【必须带】它是「余主公示 + 明牌按钮」的开关(design §9,前端 + //Sprites_Table.js 的明牌按钮据此显隐)。只在 chupai 包里给、重连包不给, + //等于重连后按钮凭空消失——状态变更没有包承载(server 红线:发全下发面)。 + //不查牌模式恒 0(与 chupai 一致,协议 §11–§13 baozhu 条目) + deskinfo.PushCards.baozhu = (!cfg.nocheck && paiju.method.have_baofu()) ? 1 : 0; //座位列表(报副统计)与亮牌:仅可查牌模式下展示(§9/§8.2) if (!cfg.nocheck){ deskinfo.PushCards.seatlist = paiju.seatlist; @@ -189,36 +195,12 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || { //不查牌模式下不带此属性——当前这一轮桌面上的牌由上面的 playproc 恢复,两种模式都有, //否则后出的人无从跟牌(design §9 末尾的边界说明) if (!cfg.nocheck){ - deskinfo.PushCards.pushlist = []; - for (var i = 0; i < paiju.cards.length; i++) { - var pai = paiju.cards[i]; - if (pai.playround > 0){ - if (deskinfo.PushCards.pushlist.length < pai.playround){ - deskinfo.PushCards.pushlist.length = pai.playround; - } - if (!deskinfo.PushCards.pushlist[pai.playround - 1]){ - deskinfo.PushCards.pushlist[pai.playround - 1] = [[], [], []]; - } - - var owner = pai.dealowner; - if (owner == 0){ - owner = paiju.banker + 1; - } - deskinfo.PushCards.pushlist[pai.playround - 1][owner - 1].push(i); - } - } - //按大小排序:外层下标=轮次、内层恒为 3 个座位;排序须按本局主牌花色 - //(内层曾误用轮次数作上界,会把内层数组撑成轮次长度并填入 undefined; - // 且曾误用上一个循环泄漏出来的 pai.flower——那是最后一张牌大王的花色 5, - // 等于按「无主牌」排序) - for (var i = 0; i < deskinfo.PushCards.pushlist.length; i++) { - if (!deskinfo.PushCards.pushlist[i]){ - continue; - } - for (var j = 0; j < 3; j++) { - deskinfo.PushCards.pushlist[i][j] = cls_youle_erqiwang_arith.order_cards(paiju.flower, deskinfo.PushCards.pushlist[i][j]); - } - } + //【直读归档、不重建】pushlist 的唯一来源是 do_playcard 出牌当场写下的 + //paiju.playhistory(见 class.paiju.js)。旧实现是从 paiju.cards 的 playround/dealowner + //反查再自己排一次序——那是同一份数据「这一手打出的牌」的第二个写入处: + //一手多张(甩牌/对子/拖拉机)时它与 chupai1/2/3 的 data.cards 会给出不同顺序, + //前端增量回放与重连重建因此对不上(同编码的一对牌尤其:排序无法区分它们)。 + deskinfo.PushCards.pushlist = paiju.method.get_pushlist(); } break; case 6: //结算 diff --git a/server/games/erqiwang/class.paiju.js b/server/games/erqiwang/class.paiju.js index 56b0f2b..95e43bb 100644 --- a/server/games/erqiwang/class.paiju.js +++ b/server/games/erqiwang/class.paiju.js @@ -171,6 +171,13 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { paiju.bottomcards = []; //当前出牌情况 paiju.playproc = {}; + //出牌历史归档:外层下标 = 轮次-1,内层恒 3 个数组、下标 = 座位;每一项就是那一手 + //【实际打出、且已归一成权威顺序】的牌。唯一写入处是 do_playcard 的 doplay()。 + //【为什么要存】重连包 PushCards.pushlist 需要往轮的出牌历史,而牌一旦落地就只剩 + //「第几轮 + 属于谁」(cards[i].playround/dealowner),一手之内的顺序无从恢复—— + //从那里反查就必须自己再排一次序,那是同一份数据的第二个写入处(SSOT 违反), + //且遇到同编码的两张牌(一对)时两处必然分岔。改为出牌当场归档、下游只读。 + paiju.playhistory = []; //输赢结果 0:庄赢 1:闲赢 2:庄投降 3:中途解散 paiju.result = null; //结算包,供断线重连时使用,新开一局时清除 @@ -283,6 +290,11 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { return cls_youle_erqiwang_paiju.get_curmultiple(paiju); } + //获取出牌历史快照(重连包 PushCards.pushlist) + paiju.method.get_pushlist = function(){ + return cls_youle_erqiwang_paiju.get_pushlist(paiju); + } + //获取某座位本轮跟牌的必出牌(design §5.2) paiju.method.get_mustcard = function(seat){ return cls_youle_erqiwang_paiju.get_mustcard(paiju, seat); @@ -480,6 +492,24 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { //随后续出牌被回改;平台真实链路虽然立刻序列化看不出来,但这是隐患,不留。 //structure:round/start/currseat/startcount/startflower/starttype/maxseat/maxcard/ // cards(定长3、下标=座位)/shuai_demand + //获取【供下发的】出牌历史快照(重连包 PushCards.pushlist)。 + //唯一来源是 do_playcard 当场归档的 playhistory,这里只拷贝、不重算也不重排: + //它与 chupai1/2/3 的 data.cards、playproc.cards 是同一次 order_playcards 的产物, + //因此两条路径逐元素相等(前端增量回放与重连重建必定一致)。 + //【返回深拷贝】不把活数组挂进下发包(同 get_playproc)。 + get_pushlist: function(o_paiju){ + var re = []; + for (var i = 0; i < o_paiju.playhistory.length; i++){ + var _round = o_paiju.playhistory[i]; + var _one = []; + for (var s = 0; s < 3; s++){ + _one.push(_round[s].concat()); + } + re.push(_one); + } + return re; + }, + get_playproc: function(o_paiju){ var _p = o_paiju.playproc; if (!_p){ @@ -602,6 +632,23 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { o_paiju.playproc.shuai_demand= null; //首家甩牌的分量需求(供跟牌逐分量匹配),非甩牌为null }, + //【一手出牌的顺序:唯一口径】把一手牌规整成本局的权威展示顺序 + //(按主牌花色从大到小)。只在 do_playcard 落牌那一刻调一次,之后全体下游只读: + // · playproc.cards[座位] → chupai1/2/3 与重连包的 playproc + // · do_playcard 返回的 re.cards → chupai1/2/3 的 data.cards + // · playhistory[轮次][座位] → 重连包的 PushCards.pushlist + //三者同源同数组内容,所以前端“增量回放”与“重连重建”必定逐元素相等。 + // + //为什么不能用客户端提交的原序:那是玩家的点击顺序,同一手牌每次都可能不同, + //服务端不得依赖、也不回显(server 04 §8:前端不是数据源)。 + //【返回新数组】——order_cards 是原地排序,直接排入参会就地改写调用方(含 pack.data.cards)。 + order_playcards: function(o_paiju, cards){ + if (!cards){ + return cards; + } + return cls_youle_erqiwang_arith.order_cards(o_paiju.flower, cards.concat()); + }, + //在牌列表中获取分牌和分值 get_grade_incard: function(o_paiju, cards){ var re = {}; @@ -618,6 +665,12 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { //检查选中的牌是否可出,并出牌 do_playcard: function(o_paiju, cards){ + //【顺序归一:唯一写入处】入参是客户端提交的点击顺序,服务端不采信、不下发。 + //在这里一次性转成权威顺序(order_playcards),此后 playproc.cards / 返回给下发包的 + //re.cards / 重连包 pushlist 全都是同一个口径,不会再有第二处排序(SSOT)。 + //顺带隔离了 can_playcard 的【原地排序】——否则它会就地改写 pack.data.cards。 + cards = cls_youle_erqiwang_paiju.order_playcards(o_paiju, cards); + //出牌 var doplay = function(playindex){ for (var i = 0; i < cards.length; i++) { @@ -625,6 +678,11 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { o_paiju.cards[cards[i]].playindex = playindex; }; o_paiju.playproc.cards[o_paiju.playproc.currseat] = cards; + //归档这一手,供重连包 PushCards.pushlist 直读(唯一写入处,见 paiju.playhistory) + while (o_paiju.playhistory.length < o_paiju.playproc.round){ + o_paiju.playhistory.push([[], [], []]); + } + o_paiju.playhistory[o_paiju.playproc.round - 1][o_paiju.playproc.currseat] = cards.concat(); //进入出牌阶段 o_paiju.step = 5; @@ -676,7 +734,7 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { if (can.shuaicuo){ //甩错惩罚(§5.4.5):收回甩牌,本轮只强制打出最小一张 _shuaicuo = true; - cards = [can.smallest]; + cards = cls_youle_erqiwang_paiju.order_playcards(o_paiju, [can.smallest]); can = cls_youle_erqiwang_arith.can_playcard(o_paiju.flower, cards, o_paiju.playproc.currseat, o_paiju.seatlist, opp_zhulist); if (!can.result){ var reErr = {}; @@ -707,7 +765,10 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { re1.count = cards.length; re1.flower = can.flower; re1.cardtype = can.cardtype; - re1.cards = cards; //实际打出的牌(甩错时为单张) + //实际打出的牌(甩错时为单张),已是权威顺序。 + //【给副本】cards 本体已挂在 playproc.cards[座位] 上,直接交出去会让「已发出的包」 + //随后续改动被回改(同 get_playproc 的深拷贝理由) + re1.cards = cards.concat(); re1.shuaicuo = _shuaicuo; //合法甩牌的分量构成:cardtype 只能表达单一牌型,甩牌(单张/对子/拖拉机自由混搭, //design §5.4.3)会被压平成 1xx/2xx,客户端无从据此还原分组,故另行下发分量需求 @@ -759,6 +820,7 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { var re2 = {}; re2.idx = 2; re2.result = true; + re2.cards = cards.concat(); //实际打出的牌,权威顺序(理由同 re1.cards) return re2; } @@ -776,6 +838,7 @@ var cls_youle_erqiwang_paiju = cls_youle_erqiwang_paiju || { var re3 = {}; re3.result = true; re3.idx = 3; + re3.cards = cards.concat(); //实际打出的牌,权威顺序(理由同 re1.cards) re3.maxseat = o_paiju.playproc.maxseat; if (o_paiju.playproc.maxseat != o_paiju.banker){ re3.grade = 0; diff --git a/server/games/erqiwang/docs/protocol/packet_protocol.md b/server/games/erqiwang/docs/protocol/packet_protocol.md index 0bd3f59..d754c3b 100644 --- a/server/games/erqiwang/docs/protocol/packet_protocol.md +++ b/server/games/erqiwang/docs/protocol/packet_protocol.md @@ -126,6 +126,27 @@ | AA 每人 `'1'` | 6 局 | 1 张 | 1 张 | | AA 每人 `'1'` | 12 局 | 2 张 | 2 张 | +### 0.6 「一手出牌」的顺序口径 + +同一份业务数据「某一手打出的牌」会出现在**三个下发位置**: + +| 位置 | 字段 | +|---|---| +| 出牌推送 | `chupai1` / `chupai2` / `chupai3` 的 `data.cards` | +| 本轮进行态 | `playproc.cards[座位]`(`chupai*` 与重连包 `PushCards` 都带)| +| 重连出牌历史 | `PushCards.pushlist[轮次-1][座位]` | + +**这三处的数组内容逐元素完全相等**——顺序统一为「按**本局主牌花色**从大到小」的**权威顺序**。 +服务端只在落牌那一刻归一化一次(`class.paiju.js` 的 `order_playcards`),随后: +出牌推送读它、`playproc.cards` 存它、出牌历史 `playhistory` 归档它,下游一律**只读、不重排**。 + +因此前端**「增量回放」与「重连重建」得到的出牌历史必定一致**,两条路径可以复用同一份解析。 + +> ⚠️ **请求包里的 `cards` 顺序无意义**:那是玩家的点击顺序,同一手牌每次都可能不同。 +> 服务端不采信、不回显、也不据它判定牌型(server dev-guide 04 §8「前端不是数据源」)。 +> 一手单张时看不出差别;**一手多张(甩牌 / 对子 / 拖拉机)时才会显形**,尤其是同编码的一对牌 +> ——排序本身区分不了它们,只有「出牌当场归档」这一个写入处才能保证两条路径给出同一个数组。 + --- ## 1. 发牌(fapai) @@ -287,7 +308,7 @@ | 参数名 | 类型 | 说明 | | --- | --- | --- | | seat | 整数 | 出牌者的位置序号 | -| cards | 数组 | 实际打出的牌id列表;**甩错时**(见 `shuaicuo`)为被强制打出的那一张最小主牌单张 | +| cards | 数组 | 实际打出的牌id列表;**甩错时**(见 `shuaicuo`)为被强制打出的那一张最小主牌单张。**顺序:按本局主牌花色从大到小(权威顺序)**,不是客户端提交时的点击顺序——请求包里的 `cards` 顺序服务端不采信、不回显(见 [§0.6](#06-一手出牌的顺序口径))| | shuaicuo | 整数 | 甩错标志,仅甩错时出现且为 `1`(design §5.4.5:甩牌未通过最大性判定,整套甩牌收回,本轮只强制打出最小一张、失去本轮甩牌资格);正常出牌无此属性 | | seatlist | 数组 | 三家座位牌况 `o_paiju.seatlist`(长度 3,下标 = 座位序号),**仅可查牌模式下发**(不查牌无此属性,design §9)。每个座位为 5 元素数组:前 4 个对应花色1~4 的 `[无该花色标志, 该花色无对标志]`(0/1),第 5 个为**余主公示**数据 `[剩余主牌数, 剩余主对数]`(初始 `[-1,-1]`,代码内旧称「报副」)。**一旦全场有人报无主,服务端会按各家实际手牌同时刷新三个座位并整表下发**(design §9「为全体三人显示另外两家」),无需等另两家各自出牌才补。字段名与结构同重连包 `PushCards.seatlist` | | count | 整数 | 出牌数量(甩错时为 1) | @@ -311,7 +332,7 @@ | 参数名 | 类型 | 说明 | | --- | --- | --- | | seat | 整数 | 出牌者的位置序号 | -| cards | 数组 | 出的牌id列表 | +| cards | 数组 | 出的牌id列表。**顺序:按本局主牌花色从大到小(权威顺序)**,不是客户端提交时的点击顺序(见 [§0.6](#06-一手出牌的顺序口径))| | seatlist | 数组 | 三家座位牌况 `o_paiju.seatlist`(长度 3,下标 = 座位序号),**仅可查牌模式下发**(不查牌无此属性,design §9)。每个座位为 5 元素数组:前 4 个对应花色1~4 的 `[无该花色标志, 该花色无对标志]`(0/1),第 5 个为**余主公示**数据 `[剩余主牌数, 剩余主对数]`(初始 `[-1,-1]`,代码内旧称「报副」)。**一旦全场有人报无主,服务端会按各家实际手牌同时刷新三个座位并整表下发**(design §9「为全体三人显示另外两家」),无需等另两家各自出牌才补。字段名与结构同重连包 `PushCards.seatlist` | | nextseat | 整数 | 下一个出牌者的位置序号 | | countdown | 整数 | 出牌倒计时 | @@ -329,7 +350,7 @@ | 参数名 | 类型 | 说明 | | --- | --- | --- | | seat | 整数 | 出牌者的位置序号 | -| cards | 数组 | 出的牌id列表 | +| cards | 数组 | 出的牌id列表。**顺序:按本局主牌花色从大到小(权威顺序)**,不是客户端提交时的点击顺序(见 [§0.6](#06-一手出牌的顺序口径))| | seatlist | 数组 | 三家座位牌况 `o_paiju.seatlist`(长度 3,下标 = 座位序号),**仅可查牌模式下发**(不查牌无此属性,design §9)。每个座位为 5 元素数组:前 4 个对应花色1~4 的 `[无该花色标志, 该花色无对标志]`(0/1),第 5 个为**余主公示**数据 `[剩余主牌数, 剩余主对数]`(初始 `[-1,-1]`,代码内旧称「报副」)。**一旦全场有人报无主,服务端会按各家实际手牌同时刷新三个座位并整表下发**(design §9「为全体三人显示另外两家」),无需等另两家各自出牌才补。字段名与结构同重连包 `PushCards.seatlist` | | nextseat | 整数 | 下一个出牌者的位置序号 | | countdown | 整数 | 出牌倒计时 | @@ -606,9 +627,10 @@ | grade | 整数 | 当前的捡分分数 | | gradecards | 数组 | 当前的捡分分牌,只有闲家有此属性 | | playproc | json | **本轮进行态**,与 `chupai1/2/3.playproc` **同源同结构**(服务端同一个 `get_playproc()` 快照函数,见 [§11 `playproc`](#11-第一个玩家出牌chupai1)):`round` 第几轮、`start` 本轮首出位置、`currseat` 当前出牌位置、`startcount` 首出张数、`startflower` 首出花色、`starttype` 首出牌型、`maxseat` 本轮最大者位置、`maxcard` 最大牌编码、`cards` 本轮三家各自出的牌(**定长 3**,下标=位置序号,未出为 `null`)、`shuai_demand` 首家甩牌的分量需求 `{tractors:[连对数...],pairs,singles}`(非甩牌为 null,供跟牌逐分量强制匹配,design §5.4.4)。**两种查牌模式下恒有此属性**——`cards` 是当前这一轮桌面上的牌,不属于「查牌」,屏蔽了后出的人就无从跟牌(design §9 末尾)| +| baozhu | 整数 | 是否已有玩家报无主(主牌出空)0否 1是,**恒有此属性**;与 `chupai1/2/3` 的 `baozhu` **同源同值同门控**(同一个 `have_baofu()` + 同一个查牌位)。它是**余主公示**与“明牌”按钮的开关,重连必须一并恢复,否则重连后按钮凭空消失;**不查牌模式恒为 0**(design §9)| | seatlist | 数组 | 三家座位牌况,与上文 `maipai` / `chupai1/2/3` 包的 `seatlist` 同名同结构(每个玩家一个 5 元素数组:4 个花色的 `[无该花色,无对]` + 报副 `[剩余主牌数,剩余主对数]`)。**仅可查牌模式下有此属性**(design §9)| | liangpai | json | **亮牌**,结构同 maipai 包的 `liangpai`(`{ cards: [牌id...] }`);**仅可查牌模式、且请求者为闲家、且庄家达标时有**(供闲家重连后仍能看到,design §8.2)| -| pushlist | 数组 | 出牌历史 `[[[], [], []], [[], [], []], ...]`,外层下标=轮次(从第 1 轮起,含进行中的当前轮),内层**恒为 3 个数组**、按位置序号存该轮各家出的牌id,各自已按**本局主牌花色**从大到小排序。**仅可查牌模式下有此属性**——往轮打出、已被收走的牌属于「查牌」范畴,不查牌模式一律不下发(design §9)。注意当前这一轮桌面上的牌由 `playproc.cards` 恢复,**两种模式下都有**,否则后出的人无从跟牌 | +| pushlist | 数组 | 出牌历史 `[[[], [], []], [[], [], []], ...]`,外层下标=轮次(从第 1 轮起,含进行中的当前轮),内层**恒为 3 个数组**、按位置序号存该轮各家出的牌id。**每一手与当时那个 `chupai1/2/3` 包的 `cards` 逐元素完全相等**(同一份数据、同一个顺序口径,见 [§0.6](#06-一手出牌的顺序口径)),因此前端“增量回放”与“重连重建”得到的出牌历史必定一致。**仅可查牌模式下有此属性**——往轮打出、已被收走的牌属于「查牌」范畴,不查牌模式一律不下发(design §9)。注意当前这一轮桌面上的牌由 `playproc.cards` 恢复,**两种模式下都有**,否则后出的人无从跟牌 | | curmultiple | 整数 | **当前抓分倍数**(design §7.2.0):**带符号**,与 `chupai1/2/3` 同源同值,供重连后顶部「抓分」角标与判定动画状态立即正确 | | mustcard | 数组 | **本轮跟牌的必出牌**(design §5.2)。**仅当 `playproc.currseat == 请求者座位` 时才有**,且只算请求者自己的手牌;未轮到本家、本轮首家、甩牌局面、必出牌为空时均无此属性 | diff --git a/server/games/erqiwang/mod.js b/server/games/erqiwang/mod.js index d580d7b..ff2d7f9 100644 --- a/server/games/erqiwang/mod.js +++ b/server/games/erqiwang/mod.js @@ -481,7 +481,11 @@ youle_erqiwang.chupai = function(pack){ msg.data = {}; msg.data.success = true; msg.data.seat = seat; - msg.data.cards = re.cards ? re.cards : cards; //实际打出的牌(甩错时为单张) + //实际打出的牌(甩错时为单张),顺序由 do_playcard 的 order_playcards 统一给出—— + //与 playproc.cards、重连包 PushCards.pushlist 同一个口径(SSOT)。 + //【不回落到入参 cards】那是客户端的点击顺序,服务端不采信、更不回显(server 04 §8); + //do_playcard 成功时三个分支都会给出 re.cards,缺了就是它的缺陷,显式暴露、不兜底。 + msg.data.cards = re.cards; if (!_cfg.nocheck){ //三家座位牌况(缺门/无对 + 报副统计),仅可查牌下发。 //必须整表下发、不能只带出牌者一家:design §9 要求「一旦有玩家报无主,就为全体三人 diff --git a/server/games/erqiwang/test/test_hint.js b/server/games/erqiwang/test/test_hint.js index 44081f7..4baa64d 100644 --- a/server/games/erqiwang/test/test_hint.js +++ b/server/games/erqiwang/test/test_hint.js @@ -122,7 +122,7 @@ function mkFollow() { const pj = { idx: 1, step: 5, banker: 0, call: 65, flower: 1, callproc: [], seatlist: [[[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]]], - playproc: {}, cards: make108() + playproc: {}, playhistory: [], cards: make108() }; for (let i = 0; i < 108; i++) pj.cards[i].dealowner = -1; const give = (cid, s) => { pj.cards[cid].dealowner = s + 1; pj.cards[cid].playround = -1; }; @@ -141,7 +141,8 @@ function mkFollow() { get_liangpai: () => null, have_baofu: () => false, get_curmultiple: () => P.get_curmultiple(pj), - get_mustcard: s => P.get_mustcard(pj, s) + get_mustcard: s => P.get_mustcard(pj, s), + get_pushlist: () => P.get_pushlist(pj) }; P.new_playround(pj, 1, 0); return pj; diff --git a/server/games/erqiwang/test/test_input.js b/server/games/erqiwang/test/test_input.js index 0745ff1..6f7d14b 100644 --- a/server/games/erqiwang/test/test_input.js +++ b/server/games/erqiwang/test/test_input.js @@ -10,7 +10,7 @@ function newPaiju(step, banker, owner) { const paiju = { cards: make108(), step, banker, call: 65, flower: 1, seatlist: [[[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]]], - playproc: {}, callproc: [], idx: 1 + playproc: {}, playhistory: [], callproc: [], idx: 1 }; for (let i = 0; i < 108; i++) paiju.cards[i].dealowner = owner + 1; paiju.method = { diff --git a/server/games/erqiwang/test/test_paiju.js b/server/games/erqiwang/test/test_paiju.js index 5e44344..51f54c7 100644 --- a/server/games/erqiwang/test/test_paiju.js +++ b/server/games/erqiwang/test/test_paiju.js @@ -128,7 +128,7 @@ function mkBottomPaiju(maxseat, winCards, bottomScoreCards, flower) { for (let i = 0; i < 108; i++) cards[i] = { id: i, playround: -1, score: 0, dealowner: 1, playowner: -1 }; for (const [cid, sc] of bottomScoreCards) { cards[cid].playround = 0; cards[cid].score = sc; } const pc = [[], [], []]; pc[maxseat] = winCards; - const o = { banker: 0, flower, cards, playproc: { maxseat, cards: pc } }; + const o = { banker: 0, flower, cards, playproc: { maxseat, cards: pc }, playhistory: [] }; o.method = { get_burycard: () => P.get_burycard(o), get_grade_incard: c => P.get_grade_incard(o, c) }; return o; } @@ -154,7 +154,7 @@ function mkFirstPlay(flower, dealMap) { for (let i = 0; i < 108; i++) cards[i] = { id: i, dealowner: 99, playround: -1, playowner: -1, score: 0, flower: A.id_to_flower(i), number: A.id_to_number(i) }; for (const [cid, owner] of dealMap) cards[cid].dealowner = owner; const sl = () => [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]]; - const o = { step: 5, banker: 0, flower, cards, seatlist: [sl(), sl(), sl()], playproc: {} }; + const o = { step: 5, banker: 0, flower, cards, seatlist: [sl(), sl(), sl()], playproc: {}, playhistory: [] }; o.method = { have_baofu: () => o.seatlist.some(s => s[4][0] == 0) }; P.new_playround(o, 1, 0); return o; @@ -193,7 +193,7 @@ function mkTrick(deal, scores) { for (const [cid, seat] of deal) cards[cid].dealowner = seat + 1; for (const [cid, s] of scores) cards[cid].score = s; const sl = () => [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]]; - const o = { step: 5, banker: 0, flower: 1, cards, seatlist: [sl(), sl(), sl()], playproc: {} }; + const o = { step: 5, banker: 0, flower: 1, cards, seatlist: [sl(), sl(), sl()], playproc: {}, playhistory: [] }; o.method = { have_baofu: () => o.seatlist.some(s => s[4][0] == 0) }; P.new_playround(o, 1, 0); // 第 1 轮由庄家(0)首出 return o; diff --git a/server/games/erqiwang/test/test_rpc.js b/server/games/erqiwang/test/test_rpc.js index 8106ab6..9e90c0d 100644 --- a/server/games/erqiwang/test/test_rpc.js +++ b/server/games/erqiwang/test/test_rpc.js @@ -331,7 +331,7 @@ function mkShuai(extraToSeat1) { const pj = { idx: 1, step: 5, banker: 0, call: 65, flower: 1, callproc: [], seatlist: [[[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]]], - playproc: {}, cards: make108() + playproc: {}, playhistory: [], cards: make108() }; for (let i = 0; i < 108; i++) pj.cards[i].dealowner = -1; // 先全部清空 const give = (cid, s) => { pj.cards[cid].dealowner = s + 1; pj.cards[cid].playround = -1; }; @@ -372,57 +372,129 @@ t.eq('甩错 shuaicuo=1', shPk && shPk.data.shuaicuo, 1); t.eq('甩错 只打出最小一张(主♦5)', shPk && shPk.data.cards, [id(1, 1, 5)]); t.eq('甩错 无 shuai 分量', shPk && shPk.data.shuai, undefined); -// ===================== 重连 PushCards.pushlist:结构恒 3 座位 + 按本局主牌花色排序 ===================== -// 造 5 轮已出牌的牌局(每轮每家 1 张),外加 seat0 在第 1 轮同时出「主5 + 副♥A」用于验证排序 -function mkPushlist() { - const pj = { - idx: 1, step: 5, banker: 0, call: 65, flower: 1, callproc: [], - seatlist: [[[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]]], - playproc: { round: 5, start: 0, currseat: 0, cards: [[], [], []] }, - cards: make108() - }; - for (let i = 0; i < 108; i++) pj.cards[i].dealowner = (i % 3) + 1; - // 每轮每家一张 - let next = 0; - for (let r = 1; r <= 5; r++) for (let s = 0; s < 3; s++) { - for (let i = next; i < 108; i++) { - if (pj.cards[i].dealowner === s + 1 && pj.cards[i].playround === -1) { pj.cards[i].playround = r; break; } +// ===================== 重连 PushCards.pushlist:与 chupai 下发的 data.cards 同一份数据 ===================== +// 【契约】「这一手打出的牌」只有一个顺序口径:do_playcard 用 order_playcards 归一一次, +// 之后 chupai1/2/3 的 data.cards、playproc.cards、playhistory→PushCards.pushlist 全都读它。 +// 因此重连包里的每一手,必须与当时那个 chupai 包的 cards【逐元素完全相等】。 +// +// 旧实现在这里分岔:pushlist 是从 cards[i].playround/dealowner 反查后自己再排一次序, +// 与 chupai 回显的「客户端提交原序」是两个写入处——一手多张(甩牌/对子)时必然不同, +// 同编码的一对牌更是排序都区分不了。故本用例必须【一手多张 + 乱序提交】才抓得住。 +// +// 【乱序提交】asc() 把选好的一手反转成升序再发,模拟真实客户端的点击顺序; +// 服务端不得回显它,一律给权威降序。 +function ascSubmit(pj, cards) { return AR.order_cards(pj.flower, cards.concat()).reverse(); } + +function drivePushlist(roomtype, hands) { + const c = driveToPlay(roomtype); + const pj = c.pj; + const played = []; // [{round, seat, cards(下发的)}...] + for (let h = 0; h < hands; h++) { + if (pj.step !== 5) break; + const seat = pj.playproc.currseat; + const round = pj.playproc.round; + const hand = P.get_seat_cards(pj, seat); + let pick = null; + if (seat === pj.playproc.start) { + // 首家优先领一对(制造"一手多张";对子两张同编码,排序无法区分,正是分岔点) + const pairs = AR.get_pairlist(pj.flower, hand.concat()); + for (const pr of pairs) { + if (AR.can_playcard(pj.flower, pr.concat(), seat, pj.seatlist, + [0, 1, 2].filter(s => s !== seat).map(s => P.get_seat_zhucards(pj, s))).result) { + pick = pr.concat(); break; + } + } + if (!pick) { pick = [hand[hand.length - 1]]; } + } else { + const n = pj.playproc.startcount; + const get = AR.get_followcard(pj.flower, hand.concat(), n, pj.playproc.startflower, pj.playproc.starttype); + const base = (get && get.mustcard) ? get.mustcard.concat() : []; + if (base.length === n) { pick = base; } + else { + const pool = (get && get.cancard && get.cancard.length ? get.cancard : hand).filter(x => base.indexOf(x) < 0); + const need = n - base.length; + const combo = []; + (function walk(st) { + if (pick) return; + if (combo.length === need) { + const cand = base.concat(combo); + if (AR.can_followcard(pj.flower, hand, cand, n, pj.playproc.startflower, pj.playproc.starttype).result + && (!pj.playproc.shuai_demand || AR.flush_follow_ok(pj.flower, hand, cand, pj.playproc.shuai_demand))) { + pick = cand; + } + return; + } + for (let i = st; i < pool.length && !pick; i++) { combo.push(pool[i]); walk(i + 1); combo.pop(); } + })(0); + } } + if (!pick) { break; } + const before = c.sent.length; + mod.chupai(pack(seat, { cards: ascSubmit(pj, pick) })); + const cp = c.sent.slice(before).filter(m => /^chupai[123]$/.test(m.rpc))[0]; + if (cp) { played.push({ round, seat, cards: cp.data.cards, submitted: ascSubmit(pj, pick) }); } } - // seat0 第1轮补出:主5(flower1) 与 副♥A(flower3),主牌必须排在副牌前 - const zhu5 = id(1, 1, 5), fuA = id(1, 3, 1); - for (const c of [zhu5, fuA]) { pj.cards[c].dealowner = 1; pj.cards[c].playround = 1; } - // 当前轮(第5轮)桌面上的牌:两种查牌模式下都必须能恢复(design §9 边界说明) - const cur = id(2, 1, 10); - pj.cards[cur].dealowner = 1; pj.cards[cur].playround = 5; - pj.playproc.cards[0] = [cur]; - pj.method = { - get_seat_cards: s => P.get_seat_cards(pj, s), - get_jian_grade: () => P.get_jian_grade(pj), - get_burycard: () => P.get_burycard(pj), - get_liangpai: () => null, - get_curmultiple: () => P.get_curmultiple(pj), - get_mustcard: s => P.get_mustcard(pj, s) - }; - return { pj, zhu5, fuA, cur }; + return { c, pj, played }; } -const pl = mkPushlist(); -const plRoom = setup("00000", pl.pj).o_room; -const di = E.get_deskinfo(plRoom, 1).PushCards.pushlist; -t.eq('重连 pushlist 轮数=5', di.length, 5); -t.eq('重连 pushlist 每轮恒3个座位', di.map(r => r.length), [3, 3, 3, 3, 3]); + +const plv = drivePushlist("00000", 12); +t.eq('pushlist 用例真的出过一手多张', plv.played.some(x => x.cards.length > 1), true); +const di = E.get_deskinfo(plv.c.o_room, 1).PushCards.pushlist; +t.eq('重连 pushlist 每轮恒3个座位', di.every(r => r.length === 3), true); t.eq('重连 pushlist 不含 undefined', di.some(r => r.some(x => x === undefined)), false); -// 第1轮 seat0 的牌:主5 必须排在副♥A 之前(按 paiju.flower=1 排序,而非泄漏的大王花色5) -t.eq('重连 pushlist 按本局主牌花色排序(主5在副A前)', - di[0][0].indexOf(pl.zhu5) < di[0][0].indexOf(pl.fuA), true); +// 核心:逐手比对「重连归档」与「当时的 chupai 包」——两条路径同一份数据,必须逐元素相等 +let plMismatch = []; +for (const h of plv.played) { + const arc = di[h.round - 1] && di[h.round - 1][h.seat]; + if (JS(arc) !== JS(h.cards)) { plMismatch.push({ round: h.round, seat: h.seat, arc, pkt: h.cards }); } +} +t.eq('重连 pushlist 每一手都与当时的 chupai.cards 逐元素相等', plMismatch, []); +// 反面:服务端不得回显客户端的提交顺序(提交是升序,下发必须是权威降序) +const plMulti = plv.played.filter(x => x.cards.length > 1); +t.eq('chupai.cards 不回显客户端提交原序(一手多张时)', + plMulti.some(x => JS(x.cards) === JS(x.submitted) && JS(x.cards) !== JS(AR.order_cards(plv.pj.flower, x.cards.concat()))), false); +t.eq('chupai.cards 是本局主牌花色的权威降序', + plMulti.every(x => JS(x.cards) === JS(AR.order_cards(plv.pj.flower, x.cards.concat()))), true); +// 客户端提交的数组不被就地改写(can_playcard 是原地排序,do_playcard 必须先拷贝) +const inplace = driveToPlay("00000"); +const inHand = P.get_seat_cards(inplace.pj, inplace.pj.playproc.currseat); +const inArg = [inHand[inHand.length - 1], inHand[inHand.length - 2]]; +const inArgCopy = inArg.concat(); +mod.chupai(pack(inplace.pj.playproc.currseat, { cards: inArg })); +t.eq('chupai 不就地改写 pack.data.cards', inArg, inArgCopy); + // §9 不查牌模式:出牌历史属于「查牌」,一律不下发;但当前轮桌面上的牌必须照常恢复 -const pl2 = mkPushlist(); -const pc2 = E.get_deskinfo(setup("00001", pl2.pj).o_room, 1).PushCards; +const plv2 = drivePushlist("00001", 2); +const pc2 = E.get_deskinfo(plv2.c.o_room, 1).PushCards; t.eq('重连 不查牌 无出牌历史 pushlist', pc2.pushlist, undefined); -t.eq('重连 不查牌 当前轮桌面牌仍恢复(playproc.cards)', pc2.playproc.cards[0], [pl2.cur]); -const pc1 = E.get_deskinfo(plRoom, 1).PushCards; +t.eq('重连 不查牌 当前轮桌面牌仍恢复(playproc.cards)', + JS(pc2.playproc.cards[plv2.played[0].seat]), JS(plv2.played[0].cards)); +const pc1 = E.get_deskinfo(plv.c.o_room, 1).PushCards; t.eq('重连 可查牌 有出牌历史 pushlist', Array.isArray(pc1.pushlist), true); -t.eq('重连 可查牌 当前轮桌面牌也在', pc1.playproc.cards[0], [pl.cur]); + +// ===================== 重连 PushCards.baozhu:与 chupai 的 baozhu 同源同门控 ===================== +// baozhu 是「余主公示 + 明牌按钮」的开关(design §9)。它只在 chupai 包里给、重连包不给的话, +// 重连后按钮凭空消失——状态变更没有包承载(server 红线:发全下发面)。 +function mkBaozhuRoom(roomtype) { + const o_desk_stub = { paiju_list: [] }; + const pj = P.new(o_desk_stub, 0); + pj.banker = 0; pj.call = 65; pj.flower = 1; pj.step = 5; + P.new_playround(pj, 1, 0); + const lead = id(1, 3, 9); + pj.cards[lead].dealowner = 1; pj.cards[lead].playround = -1; + for (const cc of P.get_seat_zhucards(pj, 1)) { pj.cards[cc].playround = 1; } + pj.seatlist[1][4][0] = 0; // seat1 报无主 → have_baofu()=true + const c = setup(roomtype, pj); + mod.chupai(pack(0, { cards: [lead] })); + return c; +} +const bzOn = mkBaozhuRoom("00000"); +t.eq('重连 可查牌 PushCards 带 baozhu,且与 chupai 同值', + E.get_deskinfo(bzOn.o_room, 1).PushCards.baozhu, + bzOn.sent.filter(m => /^chupai[123]$/.test(m.rpc))[0].data.baozhu); +t.eq('重连 可查牌 已报无主 → baozhu=1', E.get_deskinfo(bzOn.o_room, 1).PushCards.baozhu, 1); +const bzOff = mkBaozhuRoom("00001"); +t.eq('重连 不查牌 baozhu 恒 0', E.get_deskinfo(bzOff.o_room, 1).PushCards.baozhu, 0); // ===================== §7.3 下发面 multiple 必须随「爬坡」开关取值(与结算 aset.multiple 同源)===================== // 叫 45 分:常规算子基础子数 6(design §7.1「50 及以下统一 6」),爬坡 7(design §7.3.1) @@ -506,7 +578,7 @@ t.eq('叫分 反 已不叫者再叫 未产生庄家', bd.banker, -1); // 桩要"完整到能走完成功路径":否则一旦校验被改松,这里会**抛异常打断整个文件**, // 后面的断言全不执行——看到的是崩溃而不是某条断言转红,定位与信号都变差。 const mkBury = (step, banker) => ({ - step, banker, cards: make108(), playproc: { currseat: banker }, + step, banker, cards: make108(), playproc: { currseat: banker }, playhistory: [], method: { check_cards_valid: c => P.check_cards_valid({ cards: make108() }, c), check_cards_inhand: () => true, From dac4a94b38cc400aa4f638799a4a0ff4b8a8d61c Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 20:12:24 +0800 Subject: [PATCH 24/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=A4=B9=E5=85=B7=E8=A1=A5=E7=94=A9=E7=89=8C=E6=A0=B7=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E8=BF=9E=E6=81=A2=E5=A4=8D=20baozhu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 导出脚本原来全出单张,单张一手无所谓顺序,服务端两个顺序口径的分岔 在夹具里永远测不出来。改出牌策略(种子不变):首家优先合法甩牌 → 领 最大的一对 → 最小单张;跟家凑合法跟牌;提交时刻意反转成升序,模拟真实 客户端的点击顺序,把「下发顺序是否被请求顺序污染」暴露出来。 中段 step5 快照锚点从 1 个加到 5 个——开局那三张快照的 pushlist 还是空的, 只有打到一半的快照才真的比对到出牌历史。 重导结果:51 手出牌,一手多张 30 手、合法甩牌 4 手,deskinfo 快照 18 张, 仍覆盖 step 1/2/3/5/6;连跑两次逐字节相同。 该样本在修复前使 test_consistency 5 个比对点转红,修复后全绿。 前端 ResyncHandler 补上 PushCards.baozhu 的映射(服务端已补发), test_resync 加正反两条断言。 Co-Authored-By: Claude Opus 5 (1M context) --- .../codes/net/handlers/ResyncHandler.js | 5 +- client/tests/fixtures/export_packets.js | 144 +- client/tests/fixtures/packets.json | 39332 ++++++---------- client/tests/test_resync.js | 13 +- 4 files changed, 15121 insertions(+), 24373 deletions(-) diff --git a/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js b/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js index cbc082b..1584d99 100644 --- a/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js +++ b/client/js/01_SubGame/codes/net/handlers/ResyncHandler.js @@ -116,7 +116,10 @@ var EQW_ResyncHandler = EQW_ResyncHandler || { multiple: 'multiple', flower: 'flower', grade: 'grade', - curmultiple: 'curmultiple' + curmultiple: 'curmultiple', + //报无主:明牌按钮与余主公示的开关,增量路径由 chupai1/2/3 的 baozhu 维护, + //重连路径必须从 PushCards.baozhu 一起恢复,否则重连后按钮凭空消失 + baozhu: 'baozhu' }); EQW_GameState._apply(EQW_GameState.my, g, { buryCards: 'burycards', diff --git a/client/tests/fixtures/export_packets.js b/client/tests/fixtures/export_packets.js index 02a8b1d..c24de36 100644 --- a/client/tests/fixtures/export_packets.js +++ b/client/tests/fixtures/export_packets.js @@ -159,31 +159,142 @@ snap(3, pj.banker); // 埋牌阶段(step3):庄家视角 mod.maipai(pk(pj.banker, { cards: P.get_seat_cards(pj, pj.banker).slice(-8) })); snap(5, 0); snap(5, 1); snap(5, 2); // 出牌阶段开局(step5):出牌者 cardsinhand、下一位 mustcard 差异 -// 出牌:首家出手上最小单张,跟家取第一张能通过 can_followcard 的单张—— -// 与服务端 test/test_endgame.js 的 playAll() 同一套算法,直至打完整副牌进入结算。 +// ================= 出牌策略 ================= +// 【为什么不再是"全出单张"】:单张一手无所谓顺序,服务端「这一手打出的牌」的两个顺序口径 +// (chupai/playproc.cards 与 deskinfo.PushCards.pushlist)在单张局面下永远相等,夹具测不出 +// 分岔。甩牌(design §5.4)与领对子会产生"一手多张",才真正压到这条契约。 +// +// 策略(确定性,不含随机): +// 首家:优先甩牌(多分量主牌,且服务端 can_playcard 判定合法)→ 其次领最小的一对 +// → 否则最小单张 +// 跟家:先取 get_followcard 的必出牌,再从可出牌里补足张数,逐个组合试到 +// can_followcard(+ 甩牌时的 flush_follow_ok)通过为止 +// +// 【提交顺序刻意用升序】:真实客户端提交的是玩家的点击顺序,服务端不得依赖它 +//(server 04 §8「前端不是数据源」;class.arith.js can_followcard 里也有同样的告诫)。 +// 服务端的权威展示顺序是 order_cards 的【降序】,所以这里一律把选好的一手【反转成升序】 +// 再提交,模拟"玩家从小到大点选"。这不是伪造数据——包仍然是服务端真实产出的, +// 只是让请求侧的顺序与权威顺序刻意不同,把"下发顺序是否被请求顺序污染"暴露出来。 +const asc = function (cards) { + return A.order_cards(pj.flower, cards.concat()).reverse(); +}; + +// 两名对手未出的主牌(供甩牌最大性判定),与 class.paiju.js do_playcard 的取法一致 +function oppZhuList(seat) { + const list = []; + for (let os = 0; os < 3; os++) { + if (os !== seat) { list.push(P.get_seat_zhucards(pj, os)); } + } + return list; +} + +// 首家:尝试甩牌——把手上主牌分解成分量,按分量牌力从大到小取前 k 个(k 从多到少), +// 交给服务端 can_playcard 判定;只接受 result===true 的(合法甩牌), +// 不提交会被判"甩错"的组合(那会被服务端收回成单张,反而回到单张局面)。 +// 注意 can_playcard 会【就地排序】入参数组,故一律传副本。 +function tryShuai(seat, hand) { + const trumps = hand.filter(function (c) { return A.id_to_code(pj.flower, c) > 1000; }); + if (trumps.length < 2) { return null; } + const comps = A.decompose_trump(pj.flower, trumps).slice() + .sort(function (a, b) { return b.value - a.value; }); + const opp = oppZhuList(seat); + for (let k = Math.min(comps.length, 3); k >= 2; k--) { + let pick = []; + for (let i = 0; i < k; i++) { pick = pick.concat(comps[i].cards); } + if (A.can_playcard(pj.flower, pick.concat(), seat, pj.seatlist, opp).result) { + return pick; + } + } + return null; +} + +// 首家:尝试领一对。取【最大的一对】——甩牌合法的前提是两名对手都压不过任一分量 +//(§5.4.2 opp_can_beat_flush),大牌先走能更快拔掉对手的主牌,后续局面才会出现合法甩牌。 +// 这不是"为了凑测试"的取巧:本夹具的目的就是覆盖甩牌,而甩牌本来就只在这种局面下成立。 +// 同一颗种子下:领最小的一对 → 全局只有 1 手合法甩牌;领最大的一对 → 4 手。 +function tryLeadPair(seat, hand) { + const pairs = A.get_pairlist(pj.flower, hand.concat()); + if (!pairs.length) { return null; } + const pick = pairs[0].concat(); + if (A.can_playcard(pj.flower, pick.concat(), seat, pj.seatlist, oppZhuList(seat)).result) { + return pick; + } + return null; +} + +// 跟家:这一手是否被服务端接受(与 class.paiju.js do_playcard 的跟牌校验同一组判定) +function followOk(hand, cand) { + const proc = pj.playproc; + if (!A.can_followcard(pj.flower, hand, cand, proc.startcount, proc.startflower, proc.starttype).result) { + return false; + } + if (proc.shuai_demand && !A.flush_follow_ok(pj.flower, hand, cand, proc.shuai_demand)) { + return false; + } + return true; +} + +// 跟家:凑出 startcount 张的合法跟牌 +function pickFollow(seat, hand) { + const proc = pj.playproc; + const n = proc.startcount; + const get = A.get_followcard(pj.flower, hand.concat(), n, proc.startflower, proc.starttype); + const base = (get && get.mustcard) ? get.mustcard.concat() : []; + if (base.length === n) { + return followOk(hand, base) ? base : null; + } + const need = n - base.length; + if (need < 0) { return null; } + // 候选池:优先服务端给出的"可出的牌",为空则退回整手牌 + let pool = (get && get.cancard && get.cancard.length) ? get.cancard.concat() : hand.concat(); + pool = pool.filter(function (c) { return base.indexOf(c) < 0; }); + let found = null; + const combo = []; + (function walk(start) { + if (found) { return; } + if (combo.length === need) { + const cand = base.concat(combo); + if (followOk(hand, cand)) { found = cand; } + return; + } + for (let i = start; i < pool.length && !found; i++) { + combo.push(pool[i]); + walk(i + 1); + combo.pop(); + } + })(0); + return found; +} + +// 打到一半时的 step5 快照锚点(按已出手数计)。 +// 【为什么要不止一个】:出牌阶段开局那三张 step5 快照的 pushlist 都还是空的, +// 只有"打到一半"的快照才真的比对到出牌历史(一致性测试里唯一压到 pushlist 的点)。 +// 一个锚点=一个比对点,太薄;多取几个覆盖不同轮次/不同座位/轮中不同位次。 +const MID_SNAP_AT = [4, 9, 16, 25, 34]; let guard = 0; -let midSnapDone = false; +let shuaiHands = 0; // 统计:合法甩牌手数 +let multiHands = 0; // 统计:一手多张的手数(含跟牌) while (pj.step === 5 && guard < 400) { guard++; const seat = pj.playproc.currseat; const hand = P.get_seat_cards(pj, seat); let pick = null; if (seat === pj.playproc.start) { - pick = [hand[hand.length - 1]]; + pick = tryShuai(seat, hand); + if (pick) { shuaiHands++; } + if (!pick) { pick = tryLeadPair(seat, hand); } + if (!pick) { pick = [hand[hand.length - 1]]; } } else { - for (let i = 0; i < hand.length; i++) { - const c = hand[i]; - if (A.can_followcard(pj.flower, hand, [c], pj.playproc.startcount, pj.playproc.startflower, pj.playproc.starttype).result) { - pick = [c]; - break; - } - } + pick = pickFollow(seat, hand); } - if (!pick) { break; } - mod.chupai(pk(seat, { cards: pick })); - // 出牌进行到中段时额外拍一张 step5 快照,覆盖"打到一半"的重连场景 - if (!midSnapDone && guard === 6 && pj.step === 5) { - midSnapDone = true; + // 找不到合法出牌属脚本缺陷(服务端保证当前座位总有牌可出),显式失败、不静默跳过 + if (!pick) { + throw new Error('export_packets: 座位 ' + seat + ' 第 ' + guard + ' 手凑不出合法出牌'); + } + if (pick.length > 1) { multiHands++; } + mod.chupai(pk(seat, { cards: asc(pick) })); + // 出牌进行到中段时额外拍 step5 快照,覆盖"打到一半"的重连场景 + if (MID_SNAP_AT.indexOf(guard) >= 0 && pj.step === 5) { snap(5, pj.playproc.currseat); } } @@ -202,4 +313,5 @@ fs.writeFileSync(OUT, JSON.stringify(fixture, null, 2)); console.log('已写入 ' + OUT); console.log('座位包数: ' + seatPackets.map(function (a) { return a.length; }).join(' / ')); console.log('deskinfo 快照数: ' + deskinfo.length); +console.log('出牌手数: ' + guard + '(其中一手多张 ' + multiHands + ' 手,合法甩牌 ' + shuaiHands + ' 手)'); console.log('paiju.step(结束时)=' + pj.step + ' result=' + pj.result); diff --git a/client/tests/fixtures/packets.json b/client/tests/fixtures/packets.json index f948e8f..de36e9a 100644 --- a/client/tests/fixtures/packets.json +++ b/client/tests/fixtures/packets.json @@ -474,7 +474,8 @@ "success": true, "seat": 0, "cards": [ - 33 + 14, + 68 ], "seatlist": [ [ @@ -551,14 +552,15 @@ "round": 1, "start": 0, "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, + "startcount": 2, + "startflower": 1, + "starttype": 201, "maxseat": 0, - "maxcard": 308, + "maxcard": 2202, "cards": [ [ - 33 + 14, + 68 ], null, null @@ -566,21 +568,19 @@ "shuai_demand": null }, "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, + "count": 2, + "flower": 1, + "cardtype": 201, "cardsinhand": [ 52, 19, 55, 94, - 68, - 14, - 54, 0, + 54, 66, - 64, 10, + 64, 63, 62, 7, @@ -596,7 +596,8 @@ 92, 37, 36, - 90 + 90, + 33 ] } }, @@ -606,7 +607,8 @@ "success": true, "seat": 1, "cards": [ - 80 + 65, + 11 ], "seatlist": [ [ @@ -683,17 +685,19 @@ "round": 1, "start": 0, "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 1, - "maxcard": 314, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 0, + "maxcard": 2202, "cards": [ [ - 33 + 14, + 68 ], [ - 80 + 65, + 11 ], null ], @@ -708,106 +712,8 @@ "success": true, "seat": 2, "cards": [ - 26 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 2, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 17 + 107, + 53 ], "seatlist": [ [ @@ -882,35 +788,32 @@ "curmultiple": 3, "playproc": { "round": 2, - "start": 1, + "start": 2, "currseat": 2, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 1, - "maxcard": 205, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, "cards": [ null, - [ - 17 - ], + null, null ], "shuai_demand": null }, "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 + "maxseat": 2 } }, { - "rpc": "chupai2", + "rpc": "chupai1", "data": { "success": true, "seat": 2, "cards": [ - 13 + 60, + 6 ], "seatlist": [ [ @@ -985,6 +888,3743 @@ "curmultiple": 3, "playproc": { "round": 2, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + null, + [ + 60, + 6 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 54, + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "playproc": { + "round": 2, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + [ + 54, + 0 + ], + null, + [ + 60, + 6 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "cardsinhand": [ + 52, + 19, + 55, + 94, + 66, + 10, + 64, + 63, + 62, + 7, + 59, + 93, + 51, + 105, + 103, + 102, + 101, + 46, + 100, + 92, + 37, + 36, + 90, + 33 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58, + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 86, + 32 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 86, + 32 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 201, + "mustcard": [ + 10, + 64 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 64, + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 64, + 10 + ], + null, + [ + 86, + 32 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "cardsinhand": [ + 52, + 19, + 55, + 94, + 66, + 63, + 62, + 7, + 59, + 93, + 51, + 105, + 103, + 102, + 101, + 46, + 100, + 92, + 37, + 36, + 90, + 33 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 106, + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 44, + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 2, + "maxcard": 406, + "cards": [ + null, + null, + [ + 44, + 98 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 4, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105, + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 413, + "cards": [ + [ + 105, + 51 + ], + null, + [ + 44, + 98 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "cardsinhand": [ + 52, + 19, + 55, + 94, + 66, + 63, + 62, + 7, + 59, + 93, + 103, + 102, + 101, + 100, + 46, + 92, + 37, + 90, + 36, + 33 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 50, + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52, + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 7207, + "cards": [ + [ + 52, + 19 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + }, + "cardsinhand": [ + 55, + 94, + 66, + 63, + 62, + 7, + 59, + 93, + 103, + 102, + 101, + 100, + 46, + 92, + 37, + 90, + 36, + 33 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 73, + 81 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 7207, + "cards": [ + [ + 52, + 19 + ], + [ + 73, + 81 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 45, + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55, + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 2402, + "cards": [ + [ + 55, + 94 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + }, + "cardsinhand": [ + 66, + 63, + 62, + 7, + 59, + 93, + 103, + 102, + 101, + 100, + 46, + 92, + 37, + 36, + 90, + 33 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 12, + 9 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 2402, + "cards": [ + [ + 55, + 94 + ], + [ + 12, + 9 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40, + 27 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 66, + 63, + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 1, + "startcount": 3, + "startflower": 1, + "starttype": 103, + "maxseat": 0, + "maxcard": 1109, + "cards": [ + [ + 66, + 63, + 62 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + }, + "baozhu": 0, + "count": 3, + "flower": 1, + "cardtype": 103, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 3 + }, + "cardsinhand": [ + 7, + 59, + 93, + 103, + 102, + 101, + 100, + 46, + 92, + 37, + 36, + 90, + 33 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 8, + 5, + 48 + ], + "seatlist": [ + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 2, + "startcount": 3, + "startflower": 1, + "starttype": 103, + "maxseat": 0, + "maxcard": 1109, + "cards": [ + [ + 66, + 63, + 62 + ], + [ + 8, + 5, + 48 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61, + 39, + 104 + ], + "seatlist": [ + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7, + 59 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 1106, + "cards": [ + [ + 7, + 59 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 1, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + }, + "cardsinhand": [ + 93, + 103, + 102, + 101, + 100, + 46, + 92, + 37, + 36, + 90, + 33 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 47, + 80 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 1106, + "cards": [ + [ + 7, + 59 + ], + [ + 47, + 80 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 97, + 43 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46, + 100 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46, + 100 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 2, + "flower": 4, + "cardtype": 201, + "cardsinhand": [ + 93, + 103, + 102, + 101, + 92, + 37, + 90, + 36, + 33 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88, + 34 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46, + 100 + ], + [ + 88, + 34 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 26, + 38 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 36, + 90 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 3, + "starttype": 201, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36, + 90 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 2, + "flower": 3, + "cardtype": 201, + "cardsinhand": [ + 93, + 103, + 102, + 101, + 92, + 37, + 33 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87, + 31 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 3, + "starttype": 201, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36, + 90 + ], + [ + 87, + 31 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35, + 89 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 93, + 103, + 102, + 101, + 92, + 37 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + [ + 84 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + null, + null, + [ + 74 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + [ + 93 + ], + null, + [ + 74 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "cardsinhand": [ + 103, + 102, + 101, + 92, + 37 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 205, + "cards": [ + null, + [ + 17 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 13 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, "start": 1, "currseat": 0, "startcount": 1, @@ -1003,7 +4643,7 @@ ], "shuai_demand": null }, - "baozhu": 0 + "baozhu": 1 } }, { @@ -1012,13 +4652,13 @@ "success": true, "seat": 0, "cards": [ - 52 + 103 ], "seatlist": [ [ [ - 0, - 0 + 1, + 1 ], [ 1, @@ -1033,14 +4673,14 @@ 0 ], [ - -1, - -1 + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -1048,105 +4688,18 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 19, - 55, - 94, - 68, - 14, - 54, - 0, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101, - 46, - 100, - 92, - 37, - 36, - 90 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 90 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], [ 1, 1 @@ -1155,124 +4708,6 @@ 0, 0 ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 90 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 19, - 55, - 94, - 68, - 14, - 54, - 0, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101, - 46, - 100, - 92, - 37, - 36 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 34 - ], - "seatlist": [ - [ [ 0, 0 @@ -1284,160 +4719,6 @@ [ 0, 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 90 - ], - [ - 34 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 38 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 ] ] ], @@ -1445,7 +4726,7 @@ "countdown": 30, "curmultiple": 2, "playproc": { - "round": 4, + "round": 14, "start": 2, "currseat": 2, "startcount": -1, @@ -1460,670 +4741,17 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 74 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 208, - "cards": [ - null, - null, - [ - 74 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 19 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 7000, - "cards": [ - [ - 19 - ], - null, - [ - 74 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, + "grade": 5, "cardsinhand": [ - 55, - 94, - 68, - 14, - 54, - 0, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, 102, 101, - 46, - 100, - 92, - 37, - 36 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 24 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 36 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 36 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 55, - 94, - 68, - 14, - 54, - 0, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101, - 46, - 100, 92, 37 ] } }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 88 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 36 - ], - [ - 88 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 91 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 6, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, { "rpc": "chupai1", "data": { @@ -2135,8 +4763,8 @@ "seatlist": [ [ [ - 0, - 0 + 1, + 1 ], [ 1, @@ -2151,14 +4779,14 @@ 0 ], [ - -1, - -1 + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -2166,21 +4794,21 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -2191,12 +4819,12 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ - -1, - -1 + 0, + 0 ] ] ], @@ -2204,7 +4832,7 @@ "countdown": 30, "curmultiple": 2, "playproc": { - "round": 6, + "round": 14, "start": 2, "currseat": 0, "startcount": 1, @@ -2221,7 +4849,7 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "count": 1, "flower": 2, "cardtype": 101 @@ -2233,13 +4861,13 @@ "success": true, "seat": 0, "cards": [ - 55 + 102 ], "seatlist": [ [ [ - 0, - 0 + 1, + 1 ], [ 1, @@ -2254,14 +4882,14 @@ 0 ], [ - -1, - -1 + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -2269,21 +4897,21 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -2294,12 +4922,12 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ - -1, - -1 + 0, + 0 ] ] ], @@ -2307,17 +4935,17 @@ "countdown": 30, "curmultiple": 2, "playproc": { - "round": 6, + "round": 14, "start": 2, "currseat": 1, "startcount": 1, "startflower": 2, "starttype": 101, - "maxseat": 0, - "maxcard": 3102, + "maxseat": 2, + "maxcard": 210, "cards": [ [ - 55 + 102 ], null, [ @@ -2326,28 +4954,9 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "cardsinhand": [ - 94, - 68, - 14, - 0, - 54, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, 101, - 46, - 100, 92, 37 ] @@ -2364,8 +4973,8 @@ "seatlist": [ [ [ - 0, - 0 + 1, + 1 ], [ 1, @@ -2380,14 +4989,14 @@ 0 ], [ - -1, - -1 + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -2395,77 +5004,18 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 37 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], [ 1, 1 @@ -2479,2229 +5029,20 @@ 0 ], [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 + 1, + 1 ], [ 0, 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 ] ] ], "nextseat": 1, "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { - "round": 7, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 312, - "cards": [ - [ - 37 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 94, - 68, - 14, - 0, - 54, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101, - 46, - 100, - 92 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 87 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 312, - "cards": [ - [ - 37 - ], - [ - 87 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 35 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 92 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 313, - "cards": [ - [ - 92 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 94, - 68, - 14, - 0, - 54, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101, - 46, - 100 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 31 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 313, - "cards": [ - [ - 92 - ], - [ - 31 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 89 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 100 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 408, - "cards": [ - [ - 100 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 94, - 68, - 14, - 0, - 54, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101, - 46 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 50 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 412, - "cards": [ - [ - 100 - ], - [ - 50 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 39 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 25 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 213, - "cards": [ - null, - null, - [ - 25 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 94 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 2000, - "cards": [ - [ - 94 - ], - null, - [ - 25 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 14, - 68, - 54, - 0, - 66, - 10, - 64, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101, - 46 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 77 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 46 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 408, - "cards": [ - [ - 46 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 14, - 68, - 54, - 0, - 66, - 10, - 64, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 49 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 411, - "cards": [ - [ - 46 - ], - [ - 49 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 104 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 30 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 2, - "maxcard": 305, - "cards": [ - null, - null, - [ - 30 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 14 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 2000, - "cards": [ - [ - 14 - ], - null, - [ - 30 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 68, - 54, - 0, - 66, - 10, - 64, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102, - 101 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 84 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 101 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 409, - "cards": [ - [ - 101 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 68, - 54, - 0, - 66, - 10, - 64, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 48 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 410, - "cards": [ - [ - 101 - ], - [ - 48 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 98 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 14, + "round": 15, "start": 1, "currseat": 1, "startcount": -1, @@ -4716,9 +5057,9 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "maxseat": 1, - "grade": 10 + "grade": 20 } }, { @@ -4731,10 +5072,6 @@ ], "seatlist": [ [ - [ - 0, - 0 - ], [ 1, 1 @@ -4748,14 +5085,18 @@ 0 ], [ - -1, - -1 + 0, + 0 + ], + [ + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -4763,21 +5104,21 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -4788,20 +5129,20 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ - -1, - -1 + 0, + 0 ] ] ], "nextseat": 2, "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { - "round": 14, + "round": 15, "start": 1, "currseat": 2, "startcount": 1, @@ -4818,7 +5159,7 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "count": 1, "flower": 2, "cardtype": 101 @@ -4830,14 +5171,10 @@ "success": true, "seat": 2, "cards": [ - 53 + 25 ], "seatlist": [ [ - [ - 0, - 0 - ], [ 1, 1 @@ -4851,14 +5188,18 @@ 0 ], [ - -1, - -1 + 0, + 0 + ], + [ + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -4866,22 +5207,18 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ - [ - 0, - 0 - ], [ 1, 1 @@ -4895,35 +5232,39 @@ 0 ], [ - -1, - -1 + 1, + 1 + ], + [ + 0, + 0 ] ] ], "nextseat": 0, "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { - "round": 14, + "round": 15, "start": 1, "currseat": 0, "startcount": 1, "startflower": 2, "starttype": 101, "maxseat": 2, - "maxcard": 9554, + "maxcard": 213, "cards": [ null, [ 21 ], [ - 53 + 25 ] ], "shuai_demand": null }, - "baozhu": 0 + "baozhu": 1 } }, { @@ -4932,14 +5273,10 @@ "success": true, "seat": 0, "cards": [ - 68 + 101 ], "seatlist": [ [ - [ - 0, - 0 - ], [ 1, 1 @@ -4953,14 +5290,18 @@ 0 ], [ - -1, - -1 + 0, + 0 + ], + [ + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -4968,22 +5309,18 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ - [ - 0, - 0 - ], [ 1, 1 @@ -4997,16 +5334,20 @@ 0 ], [ - -1, - -1 + 1, + 1 + ], + [ + 0, + 0 ] ] ], "nextseat": 2, "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { - "round": 15, + "round": 16, "start": 2, "currseat": 2, "startcount": -1, @@ -5021,23 +5362,12 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "maxseat": 2, + "grade": 10, "cardsinhand": [ - 0, - 54, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102 + 92, + 37 ] } }, @@ -5047,14 +5377,10 @@ "success": true, "seat": 2, "cards": [ - 85 + 30 ], "seatlist": [ [ - [ - 0, - 0 - ], [ 1, 1 @@ -5068,14 +5394,18 @@ 0 ], [ - -1, - -1 + 0, + 0 + ], + [ + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -5083,22 +5413,18 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ - [ - 0, - 0 - ], [ 1, 1 @@ -5112,33 +5438,37 @@ 0 ], [ - -1, - -1 + 1, + 1 + ], + [ + 0, + 0 ] ] ], "nextseat": 0, "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { - "round": 15, + "round": 16, "start": 2, "currseat": 0, "startcount": 1, "startflower": 3, "starttype": 101, "maxseat": 2, - "maxcard": 306, + "maxcard": 305, "cards": [ null, null, [ - 85 + 30 ] ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "count": 1, "flower": 3, "cardtype": 101 @@ -5150,14 +5480,10 @@ "success": true, "seat": 0, "cards": [ - 0 + 92 ], "seatlist": [ [ - [ - 0, - 0 - ], [ 1, 1 @@ -5171,14 +5497,18 @@ 0 ], [ - -1, - -1 + 0, + 0 + ], + [ + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -5186,22 +5516,18 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ - [ - 0, - 0 - ], [ 1, 1 @@ -5215,49 +5541,41 @@ 0 ], [ - -1, - -1 + 1, + 1 + ], + [ + 0, + 0 ] ] ], "nextseat": 1, "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { - "round": 15, + "round": 16, "start": 2, "currseat": 1, "startcount": 1, "startflower": 3, "starttype": 101, "maxseat": 0, - "maxcard": 1114, + "maxcard": 313, "cards": [ [ - 0 + 92 ], null, [ - 85 + 30 ] ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "cardsinhand": [ - 54, - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102 + 37 ] } }, @@ -5267,14 +5585,10 @@ "success": true, "seat": 1, "cards": [ - 106 + 77 ], "seatlist": [ [ - [ - 0, - 0 - ], [ 1, 1 @@ -5288,14 +5602,18 @@ 0 ], [ - -1, - -1 + 0, + 0 + ], + [ + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -5306,92 +5624,19 @@ 1 ], [ - 0, - 0 + 1, + 1 ], [ - -1, - -1 + 0, + 0 ] ], [ - [ - 0, - 0 - ], [ 1, 1 ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 22 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ [ 0, 0 @@ -5407,577 +5652,14 @@ [ 0, 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 1, - "maxcard": 210, - "cards": [ - null, - [ - 22 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 107 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 ] ] ], "nextseat": 0, "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 9554, - "cards": [ - null, - [ - 22 - ], - [ - 107 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 54 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { "round": 17, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10, - "cardsinhand": [ - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 93, - 51, - 105, - 103, - 102 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 97 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 2, - "maxcard": 405, - "cards": [ - null, - null, - [ - 97 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 93 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 414, - "cards": [ - [ - 93 - ], - null, - [ - 97 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 51, - 105, - 103, - 102 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 47 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, "start": 0, "currseat": 0, "startcount": -1, @@ -5992,7 +5674,7 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "maxseat": 0 } }, @@ -6002,14 +5684,10 @@ "success": true, "seat": 0, "cards": [ - 102 + 37 ], "seatlist": [ [ - [ - 0, - 0 - ], [ 1, 1 @@ -6023,14 +5701,18 @@ 0 ], [ - -1, - -1 + 0, + 0 + ], + [ + 0, + 0 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -6041,19 +5723,15 @@ 1 ], [ - 0, - 0 + 1, + 1 ], [ - -1, - -1 + 0, + 0 ] ], [ - [ - 0, - 0 - ], [ 1, 1 @@ -6067,3280 +5745,156 @@ 0 ], [ - -1, - -1 + 1, + 1 + ], + [ + 0, + 0 ] ] ], "nextseat": 1, "countdown": 30, - "curmultiple": 2, + "curmultiple": 1, "playproc": { - "round": 18, + "round": 17, "start": 0, "currseat": 1, "startcount": 1, - "startflower": 4, + "startflower": 3, "starttype": 101, "maxseat": 0, - "maxcard": 410, + "maxcard": 312, "cards": [ [ - 102 + 37 ], null, null ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "count": 1, - "flower": 4, + "flower": 3, "cardtype": 101, - "cardsinhand": [ - 66, - 64, - 10, - 63, - 62, - 7, - 59, - 51, - 105, - 103 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 99 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 7000, - "cards": [ - [ - 102 - ], - [ - 99 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 44 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 4 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1105, - "cards": [ - null, - [ - 4 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 6 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 8107, - "cards": [ - null, - [ - 4 - ], - [ - 6 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 66 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 15, - "cardsinhand": [ - 10, - 64, - 63, - 62, - 7, - 59, - 51, - 105, - 103 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 43 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 2, - "maxcard": 405, - "cards": [ - null, - null, - [ - 43 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 51 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 413, - "cards": [ - [ - 51 - ], - null, - [ - 43 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 10, - 64, - 63, - 62, - 7, - 59, - 105, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 73 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 15 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 58 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1105, - "cards": [ - null, - [ - 58 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 60 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 8107, - "cards": [ - null, - [ - 58 - ], - [ - 60 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 10 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 5, - "cardsinhand": [ - 64, - 63, - 62, - 7, - 59, - 105, - 103 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 61 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 1108, - "cards": [ - null, - null, - [ - 61 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 64 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 0, - "maxcard": 1111, - "cards": [ - [ - 64 - ], - null, - [ - 61 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 63, - 62, - 7, - 59, - 105, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 81 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 5 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1106, - "cards": [ - null, - [ - 5 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 45 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7000, - "cards": [ - null, - [ - 5 - ], - [ - 45 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 63 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10, - "cardsinhand": [ - 62, - 7, - 59, - 105, - 103 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 27 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2302, - "cards": [ - null, - null, - [ - 27 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 62 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2302, - "cards": [ - [ - 62 - ], - null, - [ - 27 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 7, - 59, - 105, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 12 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 40 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2402, - "cards": [ - null, - null, - [ - 40 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 7 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2402, - "cards": [ - [ - 7 - ], - null, - [ - 40 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 59, - 105, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 11 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 1 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 3102, - "cards": [ - null, - null, - [ - 1 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "mustcard": [ - 59 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 59 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 3, - 0 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 2, - 1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 3102, - "cards": [ - [ - 59 - ], - null, - [ - 1 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "cardsinhand": [ - 105, - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 65 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 2, - 1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 1, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 86 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - null, - null, - [ - 86 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 105 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - [ - 105 - ], - null, - [ - 86 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "cardsinhand": [ - 103 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 9 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -2, - "playproc": { - "round": 28, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 1, - "maxseat": 2, - "grade": 20 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 32 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -2, - "playproc": { - "round": 28, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - null, - null, - [ - 32 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101, - "mustcard": [ - 103 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 103 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -2, - "playproc": { - "round": 28, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - [ - 103 - ], - null, - [ - 32 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, "cardsinhand": [] } }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 22 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 17, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + [ + 22 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, { "rpc": "jiesuan", "data": { "success": true, - "curmultiple": -2, + "curmultiple": 1, "chupai": { - "seat": 1, + "seat": 2, "cards": [ - 8 + 85 ], - "maxseat": 2 + "maxseat": 0 }, "bottom": { "cards": [ @@ -9352,18 +5906,15 @@ 18, 72, 71 - ], - "multiple": 1, - "grade1": 15, - "grade2": 15 + ] }, "aset": { "banker": 0, "call": 65, "multiple": 2, "flower": 1, - "grade": 130, - "upgrade": -2, + "grade": 50, + "upgrade": 1, "bangwang": 0, "climb": 0, "seatlist": [ @@ -9377,9 +5928,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -8, - "grade": -8, - "score": -8 + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -9391,9 +5942,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 }, { "cards": [ @@ -9406,9 +5957,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 } ] } @@ -9631,7 +6182,8 @@ "success": true, "seat": 0, "cards": [ - 33 + 14, + 68 ], "seatlist": [ [ @@ -9708,14 +6260,15 @@ "round": 1, "start": 0, "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, + "startcount": 2, + "startflower": 1, + "starttype": 201, "maxseat": 0, - "maxcard": 308, + "maxcard": 2202, "cards": [ [ - 33 + 14, + 68 ], null, null @@ -9723,9 +6276,9 @@ "shuai_demand": null }, "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 + "count": 2, + "flower": 1, + "cardtype": 201 } }, { @@ -9734,7 +6287,8 @@ "success": true, "seat": 1, "cards": [ - 80 + 65, + 11 ], "seatlist": [ [ @@ -9811,17 +6365,19 @@ "round": 1, "start": 0, "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 1, - "maxcard": 314, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 0, + "maxcard": 2202, "cards": [ [ - 33 + 14, + 68 ], [ - 80 + 65, + 11 ], null ], @@ -9834,17 +6390,1366 @@ 73, 81, 12, - 11, - 65, 9, 8, 5, - 58, 4, + 58, 50, 49, 48, 47, + 80, + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 107, + 53 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 3, + "playproc": { + "round": 2, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 60, + 6 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 3, + "playproc": { + "round": 2, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + null, + [ + 60, + 6 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 54, + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "playproc": { + "round": 2, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + [ + 54, + 0 + ], + null, + [ + 60, + 6 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "mustcard": [ + 4, + 58 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58, + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 2, + "grade": 10, + "cardsinhand": [ + 106, + 99, + 73, + 81, + 12, + 9, + 8, + 5, + 50, + 49, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 86, + 32 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 86, + 32 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 64, + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 64, + 10 + ], + null, + [ + 86, + 32 + ] + ], + "shuai_demand": null + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 106, + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 2, + "cardsinhand": [ + 73, + 81, + 12, + 9, + 8, + 5, + 50, + 49, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 44, + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 2, + "maxcard": 406, + "cards": [ + null, + null, + [ + 44, + 98 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 4, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105, + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 413, + "cards": [ + [ + 105, + 51 + ], + null, + [ + 44, + 98 + ] + ], + "shuai_demand": null + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 50, + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 73, + 81, + 12, + 9, + 8, + 5, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52, + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 7207, + "cards": [ + [ + 52, + 19 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 73, + 81 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 7207, + "cards": [ + [ + 52, + 19 + ], + [ + 73, + 81 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "cardsinhand": [ + 12, + 9, + 8, + 5, + 48, + 47, + 80, 34, 88, 87, @@ -9865,7 +7770,8 @@ "success": true, "seat": 2, "cards": [ - 26 + 45, + 1 ], "seatlist": [ [ @@ -9890,6 +7796,28 @@ -1 ] ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], [ [ 0, @@ -9911,6 +7839,84 @@ -1, -1 ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55, + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] ], [ [ @@ -9937,34 +7943,49 @@ ], "nextseat": 1, "countdown": 30, - "curmultiple": 3, + "curmultiple": 2, "playproc": { - "round": 2, - "start": 1, + "round": 6, + "start": 0, "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 2402, "cards": [ - null, + [ + 55, + 94 + ], null, null ], - "shuai_demand": null + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } }, "baozhu": 0, - "maxseat": 1 + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + } } }, { - "rpc": "chupai1", + "rpc": "chupai2", "data": { "success": true, "seat": 1, "cards": [ - 17 + 12, + 9 ], "seatlist": [ [ @@ -9992,7 +8013,7 @@ [ [ 0, - 0 + 1 ], [ 0, @@ -10004,7 +8025,7 @@ ], [ 0, - 0 + 1 ], [ -1, @@ -10036,9 +8057,2182 @@ ], "nextseat": 2, "countdown": 30, - "curmultiple": 3, + "curmultiple": 2, "playproc": { - "round": 2, + "round": 6, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 2402, + "cards": [ + [ + 55, + 94 + ], + [ + 12, + 9 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "cardsinhand": [ + 8, + 5, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 24, + 78, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40, + 27 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 66, + 63, + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 1, + "startcount": 3, + "startflower": 1, + "starttype": 103, + "maxseat": 0, + "maxcard": 1109, + "cards": [ + [ + 66, + 63, + 62 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + }, + "baozhu": 0, + "count": 3, + "flower": 1, + "cardtype": 103, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 8, + 5, + 48 + ], + "seatlist": [ + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 2, + "startcount": 3, + "startflower": 1, + "starttype": 103, + "maxseat": 0, + "maxcard": 1109, + "cards": [ + [ + 66, + 63, + 62 + ], + [ + 8, + 5, + 48 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + }, + "baozhu": 1, + "cardsinhand": [ + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 24, + 78, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61, + 39, + 104 + ], + "seatlist": [ + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7, + 59 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 1106, + "cards": [ + [ + 7, + 59 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 1, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 47, + 80 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 1106, + "cards": [ + [ + 7, + 59 + ], + [ + 47, + 80 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 1, + "cardsinhand": [ + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 97, + 43 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46, + 100 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46, + 100 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 2, + "flower": 4, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88, + 34 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46, + 100 + ], + [ + 88, + 34 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "cardsinhand": [ + 87, + 31, + 84, + 24, + 78, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 26, + 38 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 36, + 90 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 3, + "starttype": 201, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36, + 90 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 2, + "flower": 3, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87, + 31 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 3, + "starttype": 201, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36, + 90 + ], + [ + 87, + 31 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "cardsinhand": [ + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35, + 89 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 3, + "cardtype": 101, + "mustcard": [ + 84 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + [ + 84 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "cardsinhand": [ + 24, + 78, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + null, + null, + [ + 74 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + [ + 93 + ], + null, + [ + 74 + ] + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 1, + "cardsinhand": [ + 78, + 77, + 22, + 21, + 17 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, "start": 1, "currseat": 2, "startcount": 1, @@ -10055,33 +10249,11 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "count": 1, "flower": 2, "cardtype": 101, "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 50, - 49, - 48, - 47, - 34, - 88, - 87, - 31, - 84, - 24, 78, 77, 22, @@ -10100,8 +10272,12 @@ "seatlist": [ [ [ - 0, - 0 + 1, + 1 + ], + [ + 1, + 1 ], [ 0, @@ -10114,16 +10290,12 @@ [ 0, 0 - ], - [ - -1, - -1 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -10131,21 +10303,21 @@ ], [ 0, - 0 + 1 + ], + [ + 1, + 1 ], [ 0, 0 - ], - [ - -1, - -1 ] ], [ [ - 0, - 0 + 1, + 1 ], [ 0, @@ -10156,20 +10328,20 @@ 0 ], [ - 0, - 0 + 1, + 1 ], [ - -1, - -1 + 0, + 0 ] ] ], "nextseat": 0, "countdown": 30, - "curmultiple": 3, + "curmultiple": 2, "playproc": { - "round": 2, + "round": 13, "start": 1, "currseat": 0, "startcount": 1, @@ -10188,8204 +10360,11 @@ ], "shuai_demand": null }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 52 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 90 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 90 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 34 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 90 - ], - [ - 34 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 50, - 49, - 48, - 47, - 88, - 87, - 31, - 84, - 24, - 78, - 77, - 22, - 21 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 38 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 74 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 208, - "cards": [ - null, - null, - [ - 74 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 19 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 7000, - "cards": [ - [ - 19 - ], - null, - [ - 74 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 24 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 50, - 49, - 48, - 47, - 88, - 87, - 31, - 84, - 78, - 77, - 22, - 21 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 36 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 36 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 88 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 36 - ], - [ - 88 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 50, - 49, - 48, - 47, - 87, - 31, - 84, - 78, - 77, - 22, - 21 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 91 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 6, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 76 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 6, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 210, - "cards": [ - null, - null, - [ - 76 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 55 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 6, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 3102, - "cards": [ - [ - 55 - ], - null, - [ - 76 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 78 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 50, - 49, - 48, - 47, - 87, - 31, - 84, - 77, - 22, - 21 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 37 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 312, - "cards": [ - [ - 37 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 87 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 312, - "cards": [ - [ - 37 - ], - [ - 87 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 50, - 49, - 48, - 47, - 31, - 84, - 77, - 22, - 21 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 35 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 92 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 313, - "cards": [ - [ - 92 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 31 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 313, - "cards": [ - [ - 92 - ], - [ - 31 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 50, - 49, - 48, - 47, - 84, - 77, - 22, - 21 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 89 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 100 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 408, - "cards": [ - [ - 100 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 50 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 412, - "cards": [ - [ - 100 - ], - [ - 50 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 49, - 48, - 47, - 84, - 77, - 22, - 21 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 39 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 25 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 213, - "cards": [ - null, - null, - [ - 25 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 94 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 2000, - "cards": [ - [ - 94 - ], - null, - [ - 25 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 77 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 49, - 48, - 47, - 84, - 22, - 21 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 46 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 408, - "cards": [ - [ - 46 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 49 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 411, - "cards": [ - [ - 46 - ], - [ - 49 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 48, - 47, - 84, - 22, - 21 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 104 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 30 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 2, - "maxcard": 305, - "cards": [ - null, - null, - [ - 30 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 14 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 2000, - "cards": [ - [ - 14 - ], - null, - [ - 30 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "mustcard": [ - 84 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 84 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 48, - 47, - 22, - 21 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 101 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 409, - "cards": [ - [ - 101 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 48 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 410, - "cards": [ - [ - 101 - ], - [ - 48 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 47, - 22, - 21 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 98 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 14, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 21 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 14, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 1, - "maxcard": 209, - "cards": [ - null, - [ - 21 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 106, - 99, - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4, - 47, - 22 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 53 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 14, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 9554, - "cards": [ - null, - [ - 21 - ], - [ - 53 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 68 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 15, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 85 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 15, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 2, - "maxcard": 306, - "cards": [ - null, - null, - [ - 85 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 0 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 15, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 1114, - "cards": [ - [ - 0 - ], - null, - [ - 85 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 106 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "cardsinhand": [ - 99, - 73, - 81, - 12, - 65, - 11, - 9, - 8, - 5, - 4, - 58, - 47, - 22 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 22 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 1, - "maxcard": 210, - "cards": [ - null, - [ - 22 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 99, - 73, - 81, - 12, - 65, - 11, - 9, - 8, - 5, - 4, - 58, - 47 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 107 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 9554, - "cards": [ - null, - [ - 22 - ], - [ - 107 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 54 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 97 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 2, - "maxcard": 405, - "cards": [ - null, - null, - [ - 97 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 93 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 414, - "cards": [ - [ - 93 - ], - null, - [ - 97 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "mustcard": [ - 47 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 47 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 99, - 73, - 81, - 12, - 65, - 11, - 9, - 8, - 5, - 4, - 58 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 102 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 410, - "cards": [ - [ - 102 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 99 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 7000, - "cards": [ - [ - 102 - ], - [ - 99 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58, - 4 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 44 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 4 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1105, - "cards": [ - null, - [ - 4 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 73, - 81, - 12, - 11, - 65, - 9, - 8, - 5, - 58 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 6 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 8107, - "cards": [ - null, - [ - 4 - ], - [ - 6 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 66 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 15 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 43 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 2, - "maxcard": 405, - "cards": [ - null, - null, - [ - 43 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 51 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 413, - "cards": [ - [ - 51 - ], - null, - [ - 43 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 73 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 15, - "cardsinhand": [ - 81, - 12, - 65, - 11, - 9, - 8, - 5, - 58 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 58 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1105, - "cards": [ - null, - [ - 58 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 81, - 12, - 65, - 11, - 9, - 8, - 5 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 60 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 8107, - "cards": [ - null, - [ - 58 - ], - [ - 60 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 10 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 5 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 61 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 1108, - "cards": [ - null, - null, - [ - 61 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 64 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 0, - "maxcard": 1111, - "cards": [ - [ - 64 - ], - null, - [ - 61 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 81 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "cardsinhand": [ - 12, - 11, - 65, - 9, - 8, - 5 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 5 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1106, - "cards": [ - null, - [ - 5 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 12, - 11, - 65, - 9, - 8 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 45 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7000, - "cards": [ - null, - [ - 5 - ], - [ - 45 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 63 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 27 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2302, - "cards": [ - null, - null, - [ - 27 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 62 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2302, - "cards": [ - [ - 62 - ], - null, - [ - 27 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 12 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10, - "cardsinhand": [ - 11, - 65, - 9, - 8 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 40 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2402, - "cards": [ - null, - null, - [ - 40 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 7 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2402, - "cards": [ - [ - 7 - ], - null, - [ - 40 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 11 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "cardsinhand": [ - 65, - 9, - 8 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 1 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 3102, - "cards": [ - null, - null, - [ - 1 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 59 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 3, - 0 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 2, - 1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 3102, - "cards": [ - [ - 59 - ], - null, - [ - 1 - ] - ], - "shuai_demand": null - }, "baozhu": 1 } }, { "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 65 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 2, - 1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 1, - "maxseat": 2, - "cardsinhand": [ - 9, - 8 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 86 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - null, - null, - [ - 86 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 105 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - [ - 105 - ], - null, - [ - 86 - ] - ], - "shuai_demand": null - }, - "baozhu": 1 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 9 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -2, - "playproc": { - "round": 28, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 1, - "maxseat": 2, - "grade": 20, - "cardsinhand": [ - 8 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 32 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -2, - "playproc": { - "round": 28, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - null, - null, - [ - 32 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", "data": { "success": true, "seat": 0, @@ -18403,8 +10382,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -18417,7 +10396,7 @@ ], [ [ - 0, + 1, 1 ], [ @@ -18425,7 +10404,7 @@ 0 ], [ - 1, + 0, 1 ], [ @@ -18433,10 +10412,66 @@ 1 ], [ - 1, + 0, 0 ] ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 14, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 76 + ], + "seatlist": [ [ [ 1, @@ -18458,48 +10493,1122 @@ 0, 0 ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 14, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 210, + "cards": [ + null, + null, + [ + 76 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] ] ], "nextseat": 1, "countdown": 30, - "curmultiple": -2, + "curmultiple": 2, "playproc": { - "round": 28, + "round": 14, "start": 2, "currseat": 1, "startcount": 1, - "startflower": 1, + "startflower": 2, "starttype": 101, "maxseat": 2, - "maxcard": 7307, + "maxcard": 210, "cards": [ [ - 103 + 102 ], null, [ - 32 + 76 + ] + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 78 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 15, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 1, + "grade": 20, + "cardsinhand": [ + 77, + 22, + 21 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 21 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 15, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 209, + "cards": [ + null, + [ + 21 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 77, + 22 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 25 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 15, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 213, + "cards": [ + null, + [ + 21 + ], + [ + 25 + ] + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 101 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 16, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 30 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 16, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 305, + "cards": [ + null, + null, + [ + 30 ] ], "shuai_demand": null }, "baozhu": 1, - "mustcard": [ - 8 + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 92 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 16, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + null, + [ + 30 + ] + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 77 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 17, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0, + "cardsinhand": [ + 22 ] } }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 37 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 17, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 3, + "cardtype": 101, + "mustcard": [ + 22 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 22 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 17, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + [ + 22 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "cardsinhand": [] + } + }, { "rpc": "jiesuan", "data": { "success": true, - "curmultiple": -2, + "curmultiple": 1, "chupai": { - "seat": 1, + "seat": 2, "cards": [ - 8 + 85 ], - "maxseat": 2 + "maxseat": 0 }, "bottom": { "cards": [ @@ -18511,18 +11620,15 @@ 18, 72, 71 - ], - "multiple": 1, - "grade1": 15, - "grade2": 15 + ] }, "aset": { "banker": 0, "call": 65, "multiple": 2, "flower": 1, - "grade": 130, - "upgrade": -2, + "grade": 50, + "upgrade": 1, "bangwang": 0, "climb": 0, "seatlist": [ @@ -18536,9 +11642,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -8, - "grade": -8, - "score": -8 + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -18550,9 +11656,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 }, { "cards": [ @@ -18565,9 +11671,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 } ] } @@ -18790,7 +11896,8 @@ "success": true, "seat": 0, "cards": [ - 33 + 14, + 68 ], "seatlist": [ [ @@ -18867,14 +11974,15 @@ "round": 1, "start": 0, "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, + "startcount": 2, + "startflower": 1, + "starttype": 201, "maxseat": 0, - "maxcard": 308, + "maxcard": 2202, "cards": [ [ - 33 + 14, + 68 ], null, null @@ -18882,9 +11990,9 @@ "shuai_demand": null }, "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 + "count": 2, + "flower": 1, + "cardtype": 201 } }, { @@ -18893,7 +12001,8 @@ "success": true, "seat": 1, "cards": [ - 80 + 65, + 11 ], "seatlist": [ [ @@ -18970,17 +12079,19 @@ "round": 1, "start": 0, "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 1, - "maxcard": 314, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 0, + "maxcard": 2202, "cards": [ [ - 33 + 14, + 68 ], [ - 80 + 65, + 11 ], null ], @@ -18995,135 +12106,8 @@ "success": true, "seat": 2, "cards": [ - 26 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 2, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "cardsinhand": [ - 53, 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 38, - 91, - 89, - 35, - 85, - 30, - 13, - 25, - 76, - 74 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 17 + 53 ], "seatlist": [ [ @@ -19198,35 +12182,60 @@ "curmultiple": 3, "playproc": { "round": 2, - "start": 1, + "start": 2, "currseat": 2, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 1, - "maxcard": 205, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, "cards": [ null, - [ - 17 - ], + null, null ], "shuai_demand": null }, "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 + "maxseat": 2, + "cardsinhand": [ + 6, + 60, + 45, + 32, + 86, + 1, + 40, + 27, + 61, + 39, + 104, + 98, + 44, + 43, + 97, + 26, + 38, + 91, + 35, + 89, + 85, + 30, + 13, + 25, + 76, + 74 + ] } }, { - "rpc": "chupai2", + "rpc": "chupai1", "data": { "success": true, "seat": 2, "cards": [ - 13 + 60, + 6 ], "seatlist": [ [ @@ -19301,6 +12310,3743 @@ "curmultiple": 3, "playproc": { "round": 2, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + null, + null, + [ + 60, + 6 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 201, + "cardsinhand": [ + 45, + 32, + 86, + 1, + 40, + 27, + 61, + 39, + 104, + 98, + 44, + 43, + 97, + 26, + 38, + 91, + 35, + 89, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 54, + 0 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 3, + "playproc": { + "round": 2, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 8107, + "cards": [ + [ + 54, + 0 + ], + null, + [ + 60, + 6 + ] + ], + "shuai_demand": null + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 58, + 4 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 86, + 32 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + null, + null, + [ + 86, + 32 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 201, + "cardsinhand": [ + 45, + 1, + 40, + 27, + 61, + 39, + 104, + 98, + 44, + 43, + 97, + 26, + 38, + 91, + 35, + 89, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 64, + 10 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 3, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 7307, + "cards": [ + [ + 64, + 10 + ], + null, + [ + 86, + 32 + ] + ], + "shuai_demand": null + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 106, + 99 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 2 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 44, + 98 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 0, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 2, + "maxcard": 406, + "cards": [ + null, + null, + [ + 44, + 98 + ] + ], + "shuai_demand": null + }, + "baozhu": 0, + "count": 2, + "flower": 4, + "cardtype": 201, + "cardsinhand": [ + 45, + 1, + 40, + 27, + 61, + 39, + 104, + 97, + 43, + 26, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 105, + 51 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 1, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 413, + "cards": [ + [ + 105, + 51 + ], + null, + [ + 44, + 98 + ] + ], + "shuai_demand": null + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 50, + 49 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 52, + 19 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 7207, + "cards": [ + [ + 52, + 19 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 73, + 81 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 5, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 7207, + "cards": [ + [ + 52, + 19 + ], + [ + 73, + 81 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 45, + 1 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 40, + 27, + 61, + 39, + 104, + 97, + 43, + 26, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 55, + 94 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 2402, + "cards": [ + [ + 55, + 94 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 12, + 9 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 2402, + "cards": [ + [ + 55, + 94 + ], + [ + 12, + 9 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 40, + 27 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "maxseat": 0, + "cardsinhand": [ + 61, + 39, + 104, + 97, + 43, + 26, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 66, + 63, + 62 + ], + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 1, + "startcount": 3, + "startflower": 1, + "starttype": 103, + "maxseat": 0, + "maxcard": 1109, + "cards": [ + [ + 66, + 63, + 62 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + }, + "baozhu": 0, + "count": 3, + "flower": 1, + "cardtype": 103, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 8, + 5, + 48 + ], + "seatlist": [ + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 7, + "start": 0, + "currseat": 2, + "startcount": 3, + "startflower": 1, + "starttype": 103, + "maxseat": 0, + "maxcard": 1109, + "cards": [ + [ + 66, + 63, + 62 + ], + [ + 8, + 5, + 48 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 3 + } + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 61, + 39, + 104 + ], + "seatlist": [ + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0, + "cardsinhand": [ + 43, + 97, + 26, + 38, + 91, + 35, + 89, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 7, + 59 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 1106, + "cards": [ + [ + 7, + 59 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 1, + "count": 2, + "flower": 1, + "cardtype": 102, + "shuai": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 47, + 80 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 8, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 1106, + "cards": [ + [ + 7, + 59 + ], + [ + 47, + 80 + ], + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 97, + 43 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0, + "cardsinhand": [ + 26, + 38, + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 46, + 100 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46, + 100 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 2, + "flower": 4, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 88, + 34 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46, + 100 + ], + [ + 88, + 34 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 26, + 38 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0, + "cardsinhand": [ + 91, + 89, + 35, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 36, + 90 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 3, + "starttype": 201, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36, + 90 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 2, + "flower": 3, + "cardtype": 201 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 87, + 31 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 10, + "start": 0, + "currseat": 2, + "startcount": 2, + "startflower": 3, + "starttype": 201, + "maxseat": 0, + "maxcard": 311, + "cards": [ + [ + 36, + 90 + ], + [ + 87, + 31 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "mustcard": [ + 89, + 35 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 35, + 89 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0, + "cardsinhand": [ + 91, + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 33 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 84 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 11, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 308, + "cards": [ + [ + 33 + ], + [ + 84 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 2, + "cards": [ + 91 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 2, + "grade": 5, + "cardsinhand": [ + 85, + 30, + 13, + 25, + 76, + 74 + ] + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 74 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + null, + null, + [ + 74 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 85, + 30, + 13, + 25, + 76 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 93 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + [ + 93 + ], + null, + [ + 74 + ] + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 24 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 1 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 17 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 205, + "cards": [ + null, + [ + 17 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 13 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 13, "start": 1, "currseat": 0, "startcount": 1, @@ -19319,590 +16065,8 @@ ], "shuai_demand": null }, - "baozhu": 0, + "baozhu": 1, "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 38, - 91, - 89, - 35, - 85, - 30, - 25, - 76, - 74 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 52 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 90 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 90 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 34 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 3, - "playproc": { - "round": 3, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 90 - ], - [ - 34 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 38 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 91, - 89, - 35, - 85, - 30, - 25, - 76, - 74 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 74 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 208, - "cards": [ - null, - null, - [ - 74 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 91, - 89, - 35, 85, 30, 25, @@ -19910,7636 +16074,8 @@ ] } }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 19 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 4, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 7000, - "cards": [ - [ - 19 - ], - null, - [ - 74 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, { "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 24 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 36 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 36 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 88 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 5, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 311, - "cards": [ - [ - 36 - ], - [ - 88 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 91 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 6, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 35, - 89, - 85, - 30, - 25, - 76 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 76 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 6, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 210, - "cards": [ - null, - null, - [ - 76 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 35, - 89, - 85, - 30, - 25 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 55 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 6, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 3102, - "cards": [ - [ - 55 - ], - null, - [ - 76 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 78 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 37 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 312, - "cards": [ - [ - 37 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 87 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 7, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 312, - "cards": [ - [ - 37 - ], - [ - 87 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 35 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 89, - 85, - 30, - 25 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 92 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 313, - "cards": [ - [ - 92 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 31 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 8, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 313, - "cards": [ - [ - 92 - ], - [ - 31 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 89 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 39, - 104, - 44, - 98, - 97, - 43, - 85, - 30, - 25 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 100 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 408, - "cards": [ - [ - 100 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 50 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 9, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 412, - "cards": [ - [ - 100 - ], - [ - 50 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 39 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 104, - 44, - 98, - 97, - 43, - 85, - 30, - 25 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 25 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 213, - "cards": [ - null, - null, - [ - 25 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 104, - 44, - 98, - 97, - 43, - 85, - 30 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 94 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 10, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 0, - "maxcard": 2000, - "cards": [ - [ - 94 - ], - null, - [ - 25 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 77 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 46 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 408, - "cards": [ - [ - 46 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 49 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 11, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 411, - "cards": [ - [ - 46 - ], - [ - 49 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 104 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 98, - 44, - 43, - 97, - 85, - 30 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 30 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 2, - "maxcard": 305, - "cards": [ - null, - null, - [ - 30 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 98, - 44, - 43, - 97, - 85 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 14 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 12, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 2000, - "cards": [ - [ - 14 - ], - null, - [ - 30 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 84 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 101 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 409, - "cards": [ - [ - 101 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 48 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 13, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 410, - "cards": [ - [ - 101 - ], - [ - 48 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 98 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 14, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 10, - "cardsinhand": [ - 53, - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 44, - 97, - 43, - 85 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 21 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 14, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 1, - "maxcard": 209, - "cards": [ - null, - [ - 21 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 53 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 14, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 9554, - "cards": [ - null, - [ - 21 - ], - [ - 53 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 44, - 97, - 43, - 85 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 68 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 15, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 85 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 15, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 2, - "maxcard": 306, - "cards": [ - null, - null, - [ - 85 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 3, - "cardtype": 101, - "cardsinhand": [ - 107, - 60, - 6, - 45, - 86, - 32, - 1, - 40, - 27, - 61, - 44, - 97, - 43 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 0 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 15, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 3, - "starttype": 101, - "maxseat": 0, - "maxcard": 1114, - "cards": [ - [ - 0 - ], - null, - [ - 85 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 106 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 22 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 1, - "maxcard": 210, - "cards": [ - null, - [ - 22 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 2, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 107 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 16, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 2, - "starttype": 101, - "maxseat": 2, - "maxcard": 9554, - "cards": [ - null, - [ - 22 - ], - [ - 107 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 6, - 60, - 45, - 32, - 86, - 1, - 40, - 27, - 61, - 44, - 43, - 97 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 54 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 97 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 2, - "maxcard": 405, - "cards": [ - null, - null, - [ - 97 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 6, - 60, - 45, - 32, - 86, - 1, - 40, - 27, - 61, - 44, - 43 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 93 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 17, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 414, - "cards": [ - [ - 93 - ], - null, - [ - 97 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 47 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, - "start": 0, - "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 0 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 0, - "cards": [ - 102 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, - "start": 0, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 410, - "cards": [ - [ - 102 - ], - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 1, - "cards": [ - 99 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 2, - "playproc": { - "round": 18, - "start": 0, - "currseat": 2, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 1, - "maxcard": 7000, - "cards": [ - [ - 102 - ], - [ - 99 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 2, - "cards": [ - 44 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 10, - "cardsinhand": [ - 6, - 60, - 45, - 32, - 86, - 1, - 40, - 27, - 61, - 43 - ] - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 4 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1105, - "cards": [ - null, - [ - 4 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 6 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 19, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 8107, - "cards": [ - null, - [ - 4 - ], - [ - 6 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 60, - 45, - 32, - 86, - 1, - 40, - 27, - 61, - 43 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 66 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 15 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 43 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 2, - "maxcard": 405, - "cards": [ - null, - null, - [ - 43 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 4, - "cardtype": 101, - "cardsinhand": [ - 60, - 45, - 32, - 86, - 1, - 40, - 27, - 61 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 51 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": 1, - "playproc": { - "round": 20, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 4, - "starttype": 101, - "maxseat": 0, - "maxcard": 413, - "cards": [ - [ - 51 - ], - null, - [ - 43 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 73 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1, - "grade": 15 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 58 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1105, - "cards": [ - null, - [ - 58 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 60 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 21, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 8107, - "cards": [ - null, - [ - 58 - ], - [ - 60 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 45, - 32, - 86, - 1, - 40, - 27, - 61 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 10 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 5 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 61 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 1108, - "cards": [ - null, - null, - [ - 61 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 45, - 32, - 86, - 1, - 40, - 27 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 64 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 22, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 0, - "maxcard": 1111, - "cards": [ - [ - 64 - ], - null, - [ - 61 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 81 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 1, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 1 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 1, - "cards": [ - 5 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 2, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 1, - "maxcard": 1106, - "cards": [ - null, - [ - 5 - ], - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101 - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 2, - "cards": [ - 45 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 23, - "start": 1, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7000, - "cards": [ - null, - [ - 5 - ], - [ - 45 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "cardsinhand": [ - 32, - 86, - 1, - 40, - 27 - ] - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 0, - "cards": [ - 63 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 27 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2302, - "cards": [ - null, - null, - [ - 27 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 32, - 86, - 1, - 40 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 62 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 24, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2302, - "cards": [ - [ - 62 - ], - null, - [ - 27 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 12 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2, - "grade": 10 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 40 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2402, - "cards": [ - null, - null, - [ - 40 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 32, - 86, - 1 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 7 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 25, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 2402, - "cards": [ - [ - 7 - ], - null, - [ - 40 - ] - ], - "shuai_demand": null - }, - "baozhu": 0 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 11 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 0, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 1 - ], - "seatlist": [ - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - -1, - -1 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1, - -1 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 3102, - "cards": [ - null, - null, - [ - 1 - ] - ], - "shuai_demand": null - }, - "baozhu": 0, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 32, - 86 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 59 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 3, - 0 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 2, - 1 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 26, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 3102, - "cards": [ - [ - 59 - ], - null, - [ - 1 - ] - ], - "shuai_demand": null - }, - "baozhu": 1 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 65 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 2, - 1 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 1, - "maxseat": 2 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 86 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - null, - null, - [ - 86 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [ - 32 - ] - } - }, - { - "rpc": "chupai2", - "data": { - "success": true, - "seat": 0, - "cards": [ - 105 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 2, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 1, - "countdown": 30, - "curmultiple": -1, - "playproc": { - "round": 27, - "start": 2, - "currseat": 1, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - [ - 105 - ], - null, - [ - 86 - ] - ], - "shuai_demand": null - }, - "baozhu": 1 - } - }, - { - "rpc": "chupai3", - "data": { - "success": true, - "seat": 1, - "cards": [ - 9 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1, - 0 - ] - ] - ], - "nextseat": 2, - "countdown": 30, - "curmultiple": -2, - "playproc": { - "round": 28, - "start": 2, - "currseat": 2, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, - "cards": [ - null, - null, - null - ], - "shuai_demand": null - }, - "baozhu": 1, - "maxseat": 2, - "grade": 20 - } - }, - { - "rpc": "chupai1", - "data": { - "success": true, - "seat": 2, - "cards": [ - 32 - ], - "seatlist": [ - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - [ - [ - 0, - 1 - ], - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 1, - 0 - ] - ], - [ - [ - 1, - 1 - ], - [ - 1, - 1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - ], - "nextseat": 0, - "countdown": 30, - "curmultiple": -2, - "playproc": { - "round": 28, - "start": 2, - "currseat": 0, - "startcount": 1, - "startflower": 1, - "starttype": 101, - "maxseat": 2, - "maxcard": 7307, - "cards": [ - null, - null, - [ - 32 - ] - ], - "shuai_demand": null - }, - "baozhu": 1, - "count": 1, - "flower": 1, - "cardtype": 101, - "cardsinhand": [] - } - }, - { - "rpc": "chupai2", "data": { "success": true, "seat": 0, @@ -27557,8 +16093,8 @@ 1 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -27571,7 +16107,7 @@ ], [ [ - 0, + 1, 1 ], [ @@ -27579,7 +16115,7 @@ 0 ], [ - 1, + 0, 1 ], [ @@ -27587,10 +16123,66 @@ 1 ], [ - 1, + 0, 0 ] ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 14, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 2, + "grade": 5 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 76 + ], + "seatlist": [ [ [ 1, @@ -27612,27 +16204,179 @@ 0, 0 ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 2, + "playproc": { + "round": 14, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 210, + "cards": [ + null, + null, + [ + 76 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101, + "cardsinhand": [ + 85, + 30, + 25 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 102 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] ] ], "nextseat": 1, "countdown": 30, - "curmultiple": -2, + "curmultiple": 2, "playproc": { - "round": 28, + "round": 14, "start": 2, "currseat": 1, "startcount": 1, - "startflower": 1, + "startflower": 2, "starttype": 101, "maxseat": 2, - "maxcard": 7307, + "maxcard": 210, "cards": [ [ - 103 + 102 ], null, [ - 32 + 76 ] ], "shuai_demand": null @@ -27640,17 +16384,944 @@ "baozhu": 1 } }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 78 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 15, + "start": 1, + "currseat": 1, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 1, + "grade": 20 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 1, + "cards": [ + 21 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 15, + "start": 1, + "currseat": 2, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 1, + "maxcard": 209, + "cards": [ + null, + [ + 21 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 2, + "cardtype": 101, + "mustcard": [ + 25 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 2, + "cards": [ + 25 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 15, + "start": 1, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 213, + "cards": [ + null, + [ + 21 + ], + [ + 25 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "cardsinhand": [ + 85, + 30 + ] + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 0, + "cards": [ + 101 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 16, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 2, + "grade": 10 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 2, + "cards": [ + 30 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 16, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 2, + "maxcard": 305, + "cards": [ + null, + null, + [ + 30 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 3, + "cardtype": 101, + "cardsinhand": [ + 85 + ] + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 0, + "cards": [ + 92 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 16, + "start": 2, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 313, + "cards": [ + [ + 92 + ], + null, + [ + 30 + ] + ], + "shuai_demand": null + }, + "baozhu": 1 + } + }, + { + "rpc": "chupai3", + "data": { + "success": true, + "seat": 1, + "cards": [ + 77 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 0, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 17, + "start": 0, + "currseat": 0, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "maxseat": 0 + } + }, + { + "rpc": "chupai1", + "data": { + "success": true, + "seat": 0, + "cards": [ + 37 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 1, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 17, + "start": 0, + "currseat": 1, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "count": 1, + "flower": 3, + "cardtype": 101 + } + }, + { + "rpc": "chupai2", + "data": { + "success": true, + "seat": 1, + "cards": [ + 22 + ], + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "nextseat": 2, + "countdown": 30, + "curmultiple": 1, + "playproc": { + "round": 17, + "start": 0, + "currseat": 2, + "startcount": 1, + "startflower": 3, + "starttype": 101, + "maxseat": 0, + "maxcard": 312, + "cards": [ + [ + 37 + ], + [ + 22 + ], + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "mustcard": [ + 85 + ] + } + }, { "rpc": "jiesuan", "data": { "success": true, - "curmultiple": -2, + "curmultiple": 1, "chupai": { - "seat": 1, + "seat": 2, "cards": [ - 8 + 85 ], - "maxseat": 2 + "maxseat": 0 }, "bottom": { "cards": [ @@ -27662,18 +17333,15 @@ 18, 72, 71 - ], - "multiple": 1, - "grade1": 15, - "grade2": 15 + ] }, "aset": { "banker": 0, "call": 65, "multiple": 2, "flower": 1, - "grade": 130, - "upgrade": -2, + "grade": 50, + "upgrade": 1, "bangwang": 0, "climb": 0, "seatlist": [ @@ -27687,9 +17355,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -8, - "grade": -8, - "score": -8 + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -27701,9 +17369,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 }, { "cards": [ @@ -27716,9 +17384,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 } ] } @@ -28220,6 +17888,7 @@ ], "shuai_demand": null }, + "baozhu": 0, "seatlist": [ [ [ @@ -28360,6 +18029,7 @@ ], "shuai_demand": null }, + "baozhu": 0, "seatlist": [ [ [ @@ -28500,6 +18170,7 @@ ], "shuai_demand": null }, + "baozhu": 0, "seatlist": [ [ [ @@ -28575,7 +18246,7 @@ { "step": 5, "seat": 0, - "packetIndex": 12, + "packetIndex": 10, "info": { "count": 6, "idx": 1, @@ -28586,16 +18257,15 @@ ], "step": 5, "MyCards": [ + 52, 19, 55, 94, - 68, - 14, - 54, 0, + 54, 66, - 64, 10, + 64, 63, 62, 7, @@ -28611,7 +18281,8 @@ 92, 37, 36, - 90 + 90, + 33 ], "PushCards": { "banker": 0, @@ -28632,21 +18303,25 @@ "grade": 0, "curmultiple": 3, "playproc": { - "round": 3, - "start": 0, + "round": 2, + "start": 2, "currseat": 0, - "startcount": -1, - "startflower": -1, - "starttype": -1, - "maxseat": -1, - "maxcard": -1, + "startcount": 2, + "startflower": 1, + "starttype": 201, + "maxseat": 2, + "maxcard": 8107, "cards": [ null, null, - null + [ + 60, + 6 + ] ], "shuai_demand": null }, + "baozhu": 0, "seatlist": [ [ [ @@ -28654,8 +18329,8 @@ 0 ], [ - 1, - 1 + 0, + 0 ], [ 0, @@ -28718,24 +18393,971 @@ "pushlist": [ [ [ - 33 + 14, + 68 ], [ - 80 + 65, + 11 ], [ - 26 + 107, + 53 + ] + ], + [ + [], + [], + [ + 60, + 6 + ] + ] + ] + } + } + }, + { + "step": 5, + "seat": 2, + "packetIndex": 15, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 45, + 1, + 40, + 27, + 61, + 39, + 104, + 98, + 44, + 43, + 97, + 26, + 38, + 91, + 35, + 89, + 85, + 30, + 13, + 25, + 76, + 74 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "gradecards": [ + 4, + 58 + ], + "grade": 10, + "curmultiple": 2, + "playproc": { + "round": 4, + "start": 2, + "currseat": 2, + "startcount": -1, + "startflower": -1, + "starttype": -1, + "maxseat": -1, + "maxcard": -1, + "cards": [ + null, + null, + null + ], + "shuai_demand": null + }, + "baozhu": 0, + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 ] ], [ [ - 52 + 0, + 1 ], [ - 17 + 0, + 0 ], [ - 13 + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "pushlist": [ + [ + [ + 14, + 68 + ], + [ + 65, + 11 + ], + [ + 107, + 53 + ] + ], + [ + [ + 54, + 0 + ], + [ + 58, + 4 + ], + [ + 60, + 6 + ] + ], + [ + [ + 64, + 10 + ], + [ + 106, + 99 + ], + [ + 86, + 32 + ] + ] + ] + } + } + }, + { + "step": 5, + "seat": 1, + "packetIndex": 22, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 12, + 9, + 8, + 5, + 48, + 47, + 80, + 34, + 88, + 87, + 31, + 84, + 24, + 78, + 77, + 22, + 21, + 17 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "gradecards": [ + 4, + 58 + ], + "grade": 10, + "curmultiple": 2, + "playproc": { + "round": 6, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 1, + "starttype": 102, + "maxseat": 0, + "maxcard": 2402, + "cards": [ + [ + 55, + 94 + ], + null, + null + ], + "shuai_demand": { + "tractors": [], + "pairs": 0, + "singles": 2 + } + }, + "baozhu": 0, + "seatlist": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + -1, + -1 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1, + -1 + ] + ] + ], + "pushlist": [ + [ + [ + 14, + 68 + ], + [ + 65, + 11 + ], + [ + 107, + 53 + ] + ], + [ + [ + 54, + 0 + ], + [ + 58, + 4 + ], + [ + 60, + 6 + ] + ], + [ + [ + 64, + 10 + ], + [ + 106, + 99 + ], + [ + 86, + 32 + ] + ], + [ + [ + 105, + 51 + ], + [ + 50, + 49 + ], + [ + 44, + 98 + ] + ], + [ + [ + 52, + 19 + ], + [ + 73, + 81 + ], + [ + 45, + 1 + ] + ], + [ + [ + 55, + 94 + ], + [], + [] + ] + ] + } + } + }, + { + "step": 5, + "seat": 1, + "packetIndex": 31, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 34, + 88, + 87, + 31, + 84, + 78, + 24, + 77, + 22, + 21, + 17 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "gradecards": [ + 4, + 58 + ], + "grade": 10, + "curmultiple": 2, + "playproc": { + "round": 9, + "start": 0, + "currseat": 1, + "startcount": 2, + "startflower": 4, + "starttype": 201, + "maxseat": 0, + "maxcard": 408, + "cards": [ + [ + 46, + 100 + ], + null, + null + ], + "shuai_demand": null + }, + "baozhu": 1, + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + ], + "pushlist": [ + [ + [ + 14, + 68 + ], + [ + 65, + 11 + ], + [ + 107, + 53 + ] + ], + [ + [ + 54, + 0 + ], + [ + 58, + 4 + ], + [ + 60, + 6 + ] + ], + [ + [ + 64, + 10 + ], + [ + 106, + 99 + ], + [ + 86, + 32 + ] + ], + [ + [ + 105, + 51 + ], + [ + 50, + 49 + ], + [ + 44, + 98 + ] + ], + [ + [ + 52, + 19 + ], + [ + 73, + 81 + ], + [ + 45, + 1 + ] + ], + [ + [ + 55, + 94 + ], + [ + 12, + 9 + ], + [ + 40, + 27 + ] + ], + [ + [ + 66, + 63, + 62 + ], + [ + 8, + 5, + 48 + ], + [ + 61, + 39, + 104 + ] + ], + [ + [ + 7, + 59 + ], + [ + 47, + 80 + ], + [ + 97, + 43 + ] + ], + [ + [ + 46, + 100 + ], + [], + [] + ] + ] + } + } + }, + { + "step": 5, + "seat": 0, + "packetIndex": 40, + "info": { + "count": 6, + "idx": 1, + "PlayerInfo": [ + 0, + 0, + 0 + ], + "step": 5, + "MyCards": [ + 93, + 103, + 102, + 101, + 92, + 37 + ], + "PushCards": { + "banker": 0, + "call": 65, + "multiple": 2, + "countdown": 30, + "flower": 1, + "burycards": [ + 67, + 79, + 23, + 75, + 20, + 18, + 72, + 71 + ], + "grade": 15, + "curmultiple": 2, + "playproc": { + "round": 12, + "start": 2, + "currseat": 0, + "startcount": 1, + "startflower": 2, + "starttype": 101, + "maxseat": 2, + "maxcard": 208, + "cards": [ + null, + null, + [ + 74 + ] + ], + "shuai_demand": null + }, + "baozhu": 1, + "seatlist": [ + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ], + [ + [ + 1, + 1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 0 + ] + ] + ], + "pushlist": [ + [ + [ + 14, + 68 + ], + [ + 65, + 11 + ], + [ + 107, + 53 + ] + ], + [ + [ + 54, + 0 + ], + [ + 58, + 4 + ], + [ + 60, + 6 + ] + ], + [ + [ + 64, + 10 + ], + [ + 106, + 99 + ], + [ + 86, + 32 + ] + ], + [ + [ + 105, + 51 + ], + [ + 50, + 49 + ], + [ + 44, + 98 + ] + ], + [ + [ + 52, + 19 + ], + [ + 73, + 81 + ], + [ + 45, + 1 + ] + ], + [ + [ + 55, + 94 + ], + [ + 12, + 9 + ], + [ + 40, + 27 + ] + ], + [ + [ + 66, + 63, + 62 + ], + [ + 8, + 5, + 48 + ], + [ + 61, + 39, + 104 + ] + ], + [ + [ + 7, + 59 + ], + [ + 47, + 80 + ], + [ + 97, + 43 + ] + ], + [ + [ + 46, + 100 + ], + [ + 88, + 34 + ], + [ + 26, + 38 + ] + ], + [ + [ + 36, + 90 + ], + [ + 87, + 31 + ], + [ + 35, + 89 + ] + ], + [ + [ + 33 + ], + [ + 84 + ], + [ + 91 + ] + ], + [ + [], + [], + [ + 74 ] ] ] @@ -28745,14 +19367,14 @@ { "step": 6, "seat": 0, - "packetIndex": 90, + "packetIndex": 57, "info": { "count": 6, "idx": 1, "PlayerInfo": [ - -8, 4, - 4 + -2, + -2 ], "step": 6, "MyCards": [], @@ -28767,8 +19389,8 @@ "call": 65, "multiple": 2, "flower": 1, - "grade": 130, - "upgrade": -2, + "grade": 50, + "upgrade": 1, "bangwang": 0, "climb": 0, "seatlist": [ @@ -28782,9 +19404,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -8, - "grade": -8, - "score": -8 + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -28796,9 +19418,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 }, { "cards": [ @@ -28811,9 +19433,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 } ] } @@ -28823,14 +19445,14 @@ { "step": 6, "seat": 1, - "packetIndex": 90, + "packetIndex": 57, "info": { "count": 6, "idx": 1, "PlayerInfo": [ - -8, 4, - 4 + -2, + -2 ], "step": 6, "MyCards": [], @@ -28845,8 +19467,8 @@ "call": 65, "multiple": 2, "flower": 1, - "grade": 130, - "upgrade": -2, + "grade": 50, + "upgrade": 1, "bangwang": 0, "climb": 0, "seatlist": [ @@ -28860,9 +19482,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -8, - "grade": -8, - "score": -8 + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -28874,9 +19496,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 }, { "cards": [ @@ -28889,9 +19511,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 } ] } @@ -28901,14 +19523,14 @@ { "step": 6, "seat": 2, - "packetIndex": 90, + "packetIndex": 57, "info": { "count": 6, "idx": 1, "PlayerInfo": [ - -8, 4, - 4 + -2, + -2 ], "step": 6, "MyCards": [], @@ -28923,8 +19545,8 @@ "call": 65, "multiple": 2, "flower": 1, - "grade": 130, - "upgrade": -2, + "grade": 50, + "upgrade": 1, "bangwang": 0, "climb": 0, "seatlist": [ @@ -28938,9 +19560,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": -8, - "grade": -8, - "score": -8 + "grade_jf": 4, + "grade": 4, + "score": 4 }, { "cards": [ @@ -28952,9 +19574,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 }, { "cards": [ @@ -28967,9 +19589,9 @@ "grade_aw": 0, "grade_cg": 0, "grade_bw": 0, - "grade_jf": 4, - "grade": 4, - "score": 4 + "grade_jf": -2, + "grade": -2, + "score": -2 } ] } diff --git a/client/tests/test_resync.js b/client/tests/test_resync.js index be82efe..c670e0e 100644 --- a/client/tests/test_resync.js +++ b/client/tests/test_resync.js @@ -28,7 +28,7 @@ EQW_ResyncHandler.handleDeskinfo({ grade: 25, playproc: { round: 4, currseat: 1, cards: [[9],[],[]] }, seatlist: [[0,0,0,0,[5,2]],[0,0,0,0,[6,1]],[0,0,0,0,[7,3]]], liangpai: { cards: [52,53] }, pushlist: [[[1],[2],[3]]], - curmultiple: 2, mustcard: [4,5] + curmultiple: 2, mustcard: [4,5], baozhu: 1 } }); t.eq('总局数', S.room.asetCount, 6); @@ -46,6 +46,17 @@ t.eq('亮牌', S.table.liangpai, { cards: [52,53] }); t.eq('必出牌', S.my.mustCard, [4,5]); t.eq('控制权(由 playproc.currseat 给出)', S.turn.seat, 1); t.eq('重连发全量重画事件', evts.indexOf('EQW_RESYNC_ALL') >= 0, true); +// 报无主:明牌按钮与余主公示的开关(协议 PushCards.baozhu)。 +// 增量路径由 chupai1/2/3 的 baozhu 维护,重连路径必须一并恢复, +// 否则重连后按钮凭空消失(两条路径对同一状态给出不同结果)。 +t.eq('报无主(PushCards.baozhu)', S.aset.baozhu, 1); +// 反面:不查牌房服务端恒发 0,前端照写不反推 +S.reset(); S.room.mySeat = 1; +EQW_ResyncHandler.handleDeskinfo({ + count: 6, idx: 2, PlayerInfo: [0,0,0], step: 5, MyCards: [1], + PushCards: { banker: 0, flower: 3, playproc: { round: 1, currseat: 1, cards: [[],[],[]] }, baozhu: 0 } +}); +t.eq('不查牌 baozhu 恒 0', S.aset.baozhu, 0); // ================= deskinfo:step 1 叫分阶段 ================= S.reset(); evts.length = 0; From 22e43cf2e636813545cb5291bf2164bd2a91b2f1 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 20:16:45 +0800 Subject: [PATCH 25/33] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E6=8E=A5=E7=BA=BF=E4=B8=8E=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SubGameHooks 只解包转交、不写业务:_ReceiveData 收到的是完整包, 按 rpc 分发;Free 的参数是平台已取出的 deskfree、可能为 null; appStart 只记座位与房间选项,UI 初始化留给 C 阶段。 index.html 里 handler 排在 Dispatcher 之前——后者注册时要引用全部 handler。 另加 test_index_load_order.js:按 index.html 实际 script 顺序自动加载 codes/ 全部文件 + 3 个框架依赖,验证顺序无遗漏、无环,并断言 EQW_Dispatcher 路由表确已注册,作为长期守卫。 Co-Authored-By: Claude Opus 5 (1M context) --- client/index.html | 19 +++- client/js/01_SubGame/codes/SubGameHooks.js | 45 +++++++++ client/tests/test_hooks.js | 53 ++++++++++ client/tests/test_index_load_order.js | 109 +++++++++++++++++++++ 4 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 client/tests/test_hooks.js create mode 100644 client/tests/test_index_load_order.js diff --git a/client/index.html b/client/index.html index c7c9747..49d1687 100644 --- a/client/index.html +++ b/client/index.html @@ -236,7 +236,24 @@ - + + + + + + + + + + + + + + + + + + diff --git a/client/js/01_SubGame/codes/SubGameHooks.js b/client/js/01_SubGame/codes/SubGameHooks.js index ccdcb22..d0ed491 100644 --- a/client/js/01_SubGame/codes/SubGameHooks.js +++ b/client/js/01_SubGame/codes/SubGameHooks.js @@ -246,5 +246,50 @@ SubGameHooks.gamemydraw = function (gameid, spid, times, timelong, no2, no3, no4 // [D] gameui_stop_voice(uiIndex):停止桌面语音气泡。 // SubGameHooks.gameui_stop_voice = function (uiIndex) { /* ... */ }; +//—— 网络与对局(B 阶段接线)—— +//平台入口只解包转交,业务全在 net/ 的 handler 里。 + +// 对局推送。_msg 是完整包 {app, route, rpc, data} +// (平台 12_Logic.js 按 route 分流,只有子游戏路由 erqiwang 才到这里) +SubGameHooks._ReceiveData = function (_msg) { + if (!_msg) { return; } + EQW_Dispatcher.dispatch({ rpc: _msg.rpc, data: _msg.data }); +}; + +// 开局。可能差异化下发(sendtype:1 + seatlist[]) +SubGameHooks.StartWar = function (_msg) { + EQW_ResyncHandler.handleStartWar(_msg); +}; + +// 断线重连:拿到 get_deskinfo 的全量快照 +SubGameHooks.Reconnect = function (_deskinfo) { + EQW_ResyncHandler.handleDeskinfo(_deskinfo); +}; + +// 重连但未开战:没有牌局数据,无需重画对局 +SubGameHooks.ReconnectNoMakewar = function () { + console.log('[EQW] 重连(未开战)'); +}; + +// 解散。_msg 即 Desk.deskfree,可能为 null(首局发牌前解散) +SubGameHooks.Free = function (_msg) { + EQW_ResultHandler.handleFree(_msg); +}; + +// 房间信息(房号 / 总局数 / roomtype 位串) +SubGameHooks.setRoomDes = function (roomcode, asetcount, roomtype) { + EQW_ResyncHandler.handleSetRoomDes(roomcode, asetcount, roomtype); +}; + +// 启动编排。B 阶段只记下自己的座位;UI 初始化留给 C 阶段 +SubGameHooks.appStart = function () { + if (typeof C_Player !== 'undefined' && typeof C_Player.seat === 'number') { + EQW_GameState.room.mySeat = C_Player.seat; + } + if (typeof Desk !== 'undefined' && Desk.roomtype) { + EQW_GameState.room.options = EQW_RoomOptions_Parse.parse(Desk.roomtype); + } +}; + window.SubGameHooks = SubGameHooks; if (typeof module !== 'undefined' && module.exports) { module.exports = SubGameHooks; } diff --git a/client/tests/test_hooks.js b/client/tests/test_hooks.js new file mode 100644 index 0000000..6088219 --- /dev/null +++ b/client/tests/test_hooks.js @@ -0,0 +1,53 @@ +// SubGameHooks 接线:平台入口 → 新架构 +const { load } = require('./_load'); +const t = require('./_assert')(); + +global.window = global; // 转发壳用 window.SubGameHooks 判定 + +load('client/js/gameabc-framework/system/EventBus.js'); +load('client/js/gameabc-framework/system/SpriteEventController.js'); +load('client/js/01_SubGame/codes/state/Events.js'); +load('client/js/01_SubGame/codes/state/GameState.js'); +load('client/js/01_SubGame/codes/state/RoomOptions.js'); +['DealHandler','CallHandler','MainHandler','BuryHandler','PlayHandler', + 'QueryHandler','ReadyHandler','ResultHandler','ResyncHandler','FailHandler'] + .forEach(h => load('client/js/01_SubGame/codes/net/handlers/' + h + '.js')); +load('client/js/01_SubGame/codes/net/Dispatcher.js'); +load('client/js/01_SubGame/codes/SubGameHooks.js'); + +const S = EQW_GameState; + +// ---- _ReceiveData:完整包 → 分发 ---- +S.reset(); S.room.mySeat = 0; +SubGameHooks._ReceiveData({ app: 'youle', route: 'erqiwang', rpc: 'fapai', + data: { success: true, asetidx: 1, asetcount: 6, + cards: [1,2], seat: 0, countdown: 15 } }); +t.eq('_ReceiveData 分发到 handler', S.my.cards, [1,2]); + +// ---- setRoomDes ---- +SubGameHooks.setRoomDes(123, 12, '00010'); +t.eq('setRoomDes 解析选项', S.room.options.climb, 1); + +// ---- Free:null 不崩 ---- +let boom = false; +try { SubGameHooks.Free(null); } catch (e) { boom = true; } +t.eq('Free(null) 不崩', boom, false); + +// ---- Reconnect ---- +S.reset(); S.room.mySeat = 1; +SubGameHooks.Reconnect({ count: 6, idx: 3, PlayerInfo: [0,0,0], step: 1, MyCards: [5,6] }); +t.eq('Reconnect 填状态', S.my.cards, [5,6]); +t.eq('Reconnect 填局数', S.room.asetIdx, 3); + +// ---- 畸形入参一律不崩 ---- +boom = false; +try { + SubGameHooks._ReceiveData(null); + SubGameHooks._ReceiveData({}); + SubGameHooks.StartWar(null); + SubGameHooks.Reconnect(null); + SubGameHooks.setRoomDes(); +} catch (e) { boom = true; } +t.eq('畸形入参不崩', boom, false); + +process.exit(t.done('hooks') ? 0 : 1); diff --git a/client/tests/test_index_load_order.js b/client/tests/test_index_load_order.js new file mode 100644 index 0000000..c347d9f --- /dev/null +++ b/client/tests/test_index_load_order.js @@ -0,0 +1,109 @@ +// index.html 加载顺序自检(task-13 步骤6守卫): +// 按 index.html 里