diff --git a/docs_dev/二七王-UI资源与精灵清单.md b/docs_dev/二七王-UI资源与精灵清单.md index 47eb929..f587b26 100644 --- a/docs_dev/二七王-UI资源与精灵清单.md +++ b/docs_dev/二七王-UI资源与精灵清单.md @@ -59,9 +59,18 @@ | **亮牌** | 庄家 → 两个闲家 | **只有数量/结构** | 庄家埋牌后手牌达门槛(design §8.2) | **暂无**(T-30) | `liangpai` | | **余主公示** | 全体 → 全体 | **只有数量**(剩余主牌数、主对数) | 任一玩家报无主(design §9) | 他家头像下 `主N` `对N` 角标(§2.5) | `seatlist[seat][4]`、`baozhu` | | **明牌** | 他家 → 请求者 | **具体牌面** | 可查牌 + 无主,点按钮(design §9) | 遮罩面板(§1.7 D-6) | `mingpai.others[].zhucards` | -| **底牌公示** | 桌面 → 所有玩家 | **具体牌面**(8 张底牌) | 70 分坐庄,摸底牌前 3 秒(design §4) | 复用底牌区翻牌(§1.4 D-2) | `ancard3s` + `bottomcards` | +| **开底** | 桌面 → 所有玩家 | **具体牌面**(8 张底牌) | 70 分坐庄,**摸底之前** 3 秒(design §4) | 复用底牌区翻牌(§1.4 D-2) | `ancard3s` + `bottomcards` | -一句话记:**「亮牌」「余主公示」只给数字,「明牌」「底牌公示」才给牌面**。 +一句话记:**「亮牌」「余主公示」是统计类,「明牌」「开底」是牌面类**。 + +另有一组「底」字族专管发牌留桌的那 8 张牌: + +| 术语 | 含义 | 前端对应 | +| --- | --- | --- | +| **摸底** | 庄家坐定后把 8 张底牌摸起查看并入手牌 | 底牌区翻正面(非 70 分只有庄家看得到) | +| **开底** | 70 分坐庄,摸底**之前**向全场翻开 3 秒 | 同上,但闲家侧也翻开 | +| **查底牌** | 对局中随时回看这 8 张 | 底栏 `底牌` 按钮(§2.6) | +| **扣底** | 末轮闲家用主牌赢下,翻开**埋牌底牌**计分 | 底栏 `扣底` 按钮看的是埋牌底牌 | > **「亮主」不是术语**——它是**选主界面的标题文案**(庄家选主牌花色那一步,见 `亮主.png`),与上表四项都无关。文档与代码里不要拿它指代任何规则。 > @@ -520,17 +529,17 @@ EQW_RoomOptions = { | 常规坐庄 | 无 `ancard3s` | 庄家收到 `bottomcards`(8 张)与 `cards`(36 张)→ 底牌翻正面短暂展示后并入手牌;闲家**收不到** `bottomcards`,底牌区直接收起 | | **70 分坐庄** | `ancard3s === 1` | **全场三家都收到 `bottomcards`** → 8 张底牌翻正面**向所有玩家亮 3 秒**(design §4/§7.1),3 秒后庄家摸入手牌、闲家侧收起 | -- **底牌 3 秒展示(D-2 已定)**:**复用「庄家自己翻开底牌」那套 UI**(见 `叫分确定庄.png`——中央 8 张牌由背面翻正面),**不要倒计时**。 +- **开底(D-2 已定)**:**复用「庄家摸底时翻开底牌」那套 UI**(见 `叫分确定庄.png`——中央 8 张牌由背面翻正面),**不要倒计时**。 两种情形用的是**同一套界面**,唯一差别是**谁能看到**: | 情形 | 谁能看到这 3 秒 | | --- | --- | - | 非 70 分坐庄 | **只有庄家自己**(闲家侧那 8 张保持背面/直接收起) | - | **70 分坐庄** | **全场三人都能看到** | + | 非 70 分坐庄(只有**摸底**) | **只有庄家自己**(闲家侧那 8 张保持背面 / 直接收起) | + | **70 分坐庄**(**开底** → 摸底) | **全场三人都能看到** 3 秒 | 因此**不需要单独的「公示」面板**,只是同一套翻牌表现的可见范围不同——精灵复用 §5.3 群组 211(底牌区),无需新增。 - 【图:等待庄家选主.png】即闲家视角下的底牌公示:中央 8 张底牌翻正面摊开,下方一条 `等待庄家选主` 状态提示条(见 §2.8)。 + 【图:等待庄家选主.png】即闲家视角下的**开底**:中央 8 张底牌翻正面摊开,下方一条 `等待庄家选主` 状态提示条(见 §2.8)。 > ⚠️ **T-32**:该图里底牌**仍摊着**、同时提示「等待庄家选主」。但 design §4 的顺序是「公示 3 秒 → 庄家摸入手牌 → 选主」——按此,选主阶段底牌应已被庄家摸走、不该还摊在桌面。是 mock 把两个状态画在一起,还是 70 分局的底牌要一直摊到庄家选完主?需确认。 - 上庄后统一更新:顶部信息条 `叫分` 列 = `grade`、角标 = `multiple`;`banker` 对应玩家位显示 **`庄` 印章**(含底栏自己位)。 @@ -948,7 +957,7 @@ y≈648–720 深色条。左侧头像/昵称/分数由平台渲染(§0.2) | `出牌历史` | 所有人**出过的全部牌** | 可查牌 + 出牌阶段 | | `明牌` | 另两家手中全部主牌的具体牌面 | 可查牌 + 出牌阶段 + **已报无主** | | **`扣底`** | **埋牌底牌**:庄家埋下的 8 张 | **仅庄家** + 已埋牌之后 | -| **`底牌`** | **底牌**:发牌时没发给玩家、留在桌面的 8 张 | 庄家全程;闲家仅 70 分坐庄局(S-3) | +| **`底牌`**(**查底牌**) | **底牌**:发牌时没发给玩家、留在桌面的 8 张 | 庄家全程;闲家仅**开底**过的局(70 分坐庄)(S-3) | > ### 术语已统一:按钮名 = 术语名 > diff --git a/server/games/erqiwang/docs/design/design.md b/server/games/erqiwang/docs/design/design.md index 79cd328..cd586e7 100644 --- a/server/games/erqiwang/docs/design/design.md +++ b/server/games/erqiwang/docs/design/design.md @@ -50,7 +50,9 @@ | 亮牌 | 庄家埋牌后手牌达到门槛(固定主牌 ≥10 / 王 ≥3 / 7 ≥6 / 2 ≥6)时,向两个闲家公开对应的**数量与结构**统计——**只亮数量 / 结构,不亮具体是哪几张牌**(见第 8.2 节)| | 余主公示 | 任一玩家主牌出空(报无主)后,为**全体三人**展示另外两家各自的**剩余主牌数与剩余主对数**(见第 9 节)。只给数量,不给具体牌面 | | 明牌 | 可查牌模式下,查看另外两家手中**全部未出主牌的具体牌面**(见第 9 节)。与"亮牌""余主公示"只给数量不同,明牌给的是具体牌 | -| 底牌公示 | 70 分坐庄时,在庄家摸底牌之前,把那 8 张底牌向**所有玩家**亮出 3 秒(见第 4 节)。给的是具体牌面 | +| 摸底 | 庄家坐定后把那 8 张**底牌**摸起查看并并入手牌(见第 4 节)。**非 70 分坐庄时只有庄家看得到这 8 张** | +| 开底 | **70 分坐庄**时,在庄家摸底**之前**,先把这 8 张底牌向**所有玩家**翻开 3 秒,之后才由庄家摸入手牌(见第 4 节)。给的是具体牌面 | +| 查底牌 | 对局中随时回看那 8 张底牌的功能(前端底栏按钮)。庄家全程可用;闲家仅在**开底**过的局(即 70 分坐庄)可用 | | 拖拉机 | 同一花色(含主牌)里点数相邻的连续对子,如 K K Q Q 为"两托"(两连对) | | 甩牌 | 首家出牌时,一次性打出多组主牌组合(单张 / 对子 / 拖拉机自由搭配);仅主牌可以甩牌,副牌禁止甩牌,只能分单张 / 对子 / 拖拉机依次打出(见第 5.4 节) | | 毙牌 | 跟牌时手中没有本轮花色(缺门),改用主牌打出、且牌面大过本轮目前所有人的牌(见第 5.1 / 5.2 节) | @@ -74,9 +76,10 @@ > | **亮牌** | 庄家 → 两个闲家 | **只有数量/结构** | 庄家埋牌后手牌达门槛(§8.2) | `liangpai` | > | **余主公示** | 全体 → 全体 | **只有数量**(剩余主牌数、主对数) | 任一玩家报无主(§9) | `seatlist[seat][4]` + `baozhu` | > | **明牌** | 他家 → 请求者 | **具体牌面**(他家全部未出主牌) | 可查牌 + 报无主,主动点击(§9) | `mingpai.others[].zhucards` | -> | **底牌公示** | 桌面 → 所有玩家 | **具体牌面**(8 张底牌) | 70 分坐庄,摸底牌前 3 秒(§4) | `ancard3s` + `bottomcards` | +> | **开底** | 桌面 → 所有玩家 | **具体牌面**(8 张底牌) | 70 分坐庄,**摸底之前** 3 秒(§4) | `ancard3s` + `bottomcards` | > -> 一句话记:**「亮牌」「余主公示」只给数字,「明牌」「底牌公示」才给牌面**。 +> 一句话记:**「亮牌」「余主公示」是统计类,「明牌」「开底」是牌面类**。 +> 另有一组「底」字族专管那 8 张底牌:**摸底**(庄家摸起看)、**开底**(70 分时全场看 3 秒)、**查底牌**(随时回看)、**扣底**(末轮翻开埋牌底牌计分)。 > 另注:**「亮主」不是本文档的术语**——它是前端选主界面的标题文案(庄家选主牌花色那一步),与上表四项无关。 --- @@ -125,14 +128,14 @@ - **暂定庄家必须叫分,不能"不叫"**:叫分从暂定庄家开始,他必须报出一个 5 ~ 70 之间的具体分数,不存在"暂定庄家弃权、三家都不叫"这种情况;起始叫分确定之后,后面的玩家才可以选择"叫出更低的分数"或"不叫"。 - 若某玩家直接叫出 5 分,则无人能再压过,立即确定为庄家。 - 若一家叫分后,另外两家都选择"不叫",则该叫分玩家成为本局庄家。 -3. 庄家确定后摸底牌(摸完后庄家共 36 张): +3. **摸底**:庄家确定后把 8 张底牌摸入手牌(摸完后庄家共 36 张): - **非 70 分坐庄**:桌面 8 张底牌**只有庄家可见**,庄家查看后摸入手牌。 - - **70 分坐庄**(触发**底牌公示**):在庄家摸底牌**之前**,先把这 8 张底牌**向所有玩家(含两个闲家)亮出 3 秒**,然后才由庄家把它们摸入手牌。 + - **70 分坐庄**(触发**开底**):在庄家**摸底**之前,先把这 8 张底牌**向所有玩家(含两个闲家)翻开 3 秒**,然后才由庄家把它们摸入手牌。 4. **选主 / 投降(同一决策点,二选一,互斥)**: - **选主**:庄家在 4 个花色中选定一个作为本局主牌(见第 3 节)→ 进入下一步埋牌、随后出牌。 - **投降**:仅当**叫分为 70 分**时,此决策点才额外提供"投降"选项;选择投降表示放弃本局,**直接结束、不再选主、不埋牌、不出牌**,按 7.1 节"70 分坐庄 · 投降"的固定结果结算(基础子数 1 个,庄家直接输;算奖仍照常,见 8.4 节)。选主与投降互斥——**选了花色就等于放弃投降、正常打牌;选了投降就不再选主**。 - 叫分 < 70 分时没有投降选项,只能选主。 - - (70 分坐庄的 8 张底牌向所有玩家亮 3 秒,发生在上一步"庄家摸底牌之前",见步骤 3。) + - (**开底**——70 分坐庄的 8 张底牌向所有玩家翻开 3 秒,发生在上一步"庄家摸底之前",见步骤 3。) - **前端表现**:此阶段界面显示 4 个花色选主按钮,且**每个花色按钮上要显示该花色在庄家手中有多少对**(供庄家判断选哪门为主);70 分坐庄时并列再显示一个投降按钮。 5. **埋牌**(仅"选主/打牌"路径):庄家从 36 张里选出 8 张牌重新扣下("埋牌"),作为"埋牌底牌",供最后判断"扣底"使用;埋牌后庄家保留 28 张。(**本局先选主、后埋牌**——庄家先定主牌花色,知道主副后再决定埋哪 8 张。) 6. 坐庄轮换规则(决定下一局的"暂定庄家"): @@ -720,12 +723,12 @@ A - K - Q - J - 10 - 9 - 8 - 6 - 5 3. **叫分坐庄**(4.2):由暂定庄家起、按逆时针依次叫分。暂定庄家必叫(5~70 分、步进 5,不能"不叫");其后每家只能叫比当前更低的分,或选择"不叫";有人叫出 5 分即立即坐庄,或一家叫分后另外两家都"不叫"也即坐庄。叫分越低表示庄家对"压住闲家捡分"越有信心,对应的基础子数越高(第 7 节)。 -4. **看底牌**:庄家坐定后摸底牌(摸完共 36 张)。非 70 分:8 张底牌仅庄家可见。**70 分坐庄触发「底牌公示」:庄家摸底牌之前,先把这 8 张底牌向所有玩家亮 3 秒,再由庄家摸入手牌**(4.4 / 第 4 节)。 +4. **摸底**:庄家坐定后把 8 张底牌摸入手牌(摸完共 36 张)。非 70 分:这 8 张仅庄家可见。**70 分坐庄先触发「开底」:庄家摸底之前,先把这 8 张向所有玩家翻开 3 秒,再摸入手牌**(4.4 / 第 4 节)。 5. **选主 / 投降(同一决策点,二选一,互斥)**(第 4 节): - **选主**:庄家选定一门花色为本局主牌(大王、小王、所有花色的 2、7 恒为主牌)→ 进入下一步埋牌。前端此阶段每个花色按钮上要显示该花色在庄家手中的对子数;70 分坐庄时并列显示投降按钮。 - **投降**:仅 70 分坐庄才有此选项;选投降即放弃本局,**不选主、不埋牌、不出牌**,直接按 7.1"70 分 · 投降"结算(算奖仍按下方 8 计,但用庄家 36 张、无主牌花色)。选花色就等于放弃投降、正常打牌。 - - (70 分的 8 张底牌亮 3 秒发生在步骤 4"摸底牌之前"。) + - (**开底**——70 分的 8 张底牌翻开 3 秒,发生在步骤 4"摸底之前"。) 6. **埋牌**(第 4 节,仅"选主/打牌"路径):庄家从 36 张里选 8 张重新扣下作为"埋牌底牌"(供最后"扣底"判断),保留 28 张。(**先选主、后埋牌**。) @@ -752,7 +755,7 @@ A - K - Q - J - 10 - 9 - 8 - 6 - 5 ### 12.3 阶段速览 ``` -建房(§10) → 发牌(§2) → 叫分坐庄(§4.2) → 看底牌 → 选主(§3) → 埋牌(§4) +建房(§10) → 发牌(§2) → 叫分坐庄(§4.2) → 摸底[70分先开底] → 选主(§3) → 埋牌(§4) → [70分:投降/打牌决策(§4.4)] → 出牌对局(§5,§6.1-6.2) → 末轮扣底(§6.3) → 小局结算=算子(§7)+算奖(§8) → 轮庄(§4.6) → 下一局 …… 打满局数 → 大局结算 ``` diff --git a/server/games/erqiwang/docs/protocol/packet_protocol.md b/server/games/erqiwang/docs/protocol/packet_protocol.md index 2155d17..da14233 100644 --- a/server/games/erqiwang/docs/protocol/packet_protocol.md +++ b/server/games/erqiwang/docs/protocol/packet_protocol.md @@ -32,9 +32,11 @@ | **亮牌** | 庄家 → 两个闲家 | **只有数量/结构** | 庄家埋牌后手牌达门槛(design §8.2) | `liangpai` | | **余主公示** | 全体 → 全体 | **只有数量**(剩余主牌数、主对数) | 任一玩家报无主(design §9) | `seatlist[seat][4]`、`baozhu` | | **明牌** | 他家 → 请求者 | **具体牌面**(他家全部未出主牌) | 可查牌 + 报无主,主动点击(design §9) | `mingpai.others[].zhucards` | -| **底牌公示** | 桌面 → 所有玩家 | **具体牌面**(8 张底牌) | 70 分坐庄,摸底牌前 3 秒(design §4) | `ancard3s` + `bottomcards` | +| **开底** | 桌面 → 所有玩家 | **具体牌面**(8 张底牌) | 70 分坐庄,**摸底之前** 3 秒(design §4) | `ancard3s` + `bottomcards` | -一句话记:**「亮牌」「余主公示」只给数字,「明牌」「底牌公示」才给牌面**。 +一句话记:**「亮牌」「余主公示」是统计类,「明牌」「开底」是牌面类**。 + +另有一组「底」字族专管发牌留桌的那 8 张:**摸底**(庄家摸起看,仅庄家)、**开底**(70 分时全场看 3 秒)、**查底牌**(对局中随时回看)、**扣底**(末轮翻开埋牌底牌计分)。 (「亮主」不是术语,是前端选主界面的标题文案,与上表无关。) ### 0.1 成败标志 `data.success` @@ -169,7 +171,7 @@ | 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)| -| ancard3s | 整数 | **底牌公示**标志。仅 70 分坐庄时出现且为 `1`:表示庄家把底牌摸入手前,需将 `bottomcards` 这 8 张**底牌**向所有玩家亮出 3 秒(design §4/§7.1);非 70 分无此属性 | +| ancard3s | 整数 | **开底**标志。仅 70 分坐庄时出现且为 `1`:表示庄家**摸底**之前,需将 `bottomcards` 这 8 张**底牌**向所有玩家翻开 3 秒(design §4/§7.1);非 70 分无此属性 | | cards | 数组 | 拿了底牌后手上的牌(36 张,含底牌),庄家才有此属性,闲家没有该属性 | | countdown | 整数 | 选主倒计时 | | touxiang | 整数 | 是否允许投降 0:不允许 1:允许(仅 70 分坐庄为 1)。投降与选主互斥、同为选主阶段(step2)的决策,见 touxiang 包与 design §4 |