二七王:实现 §11 闲家三提示(踩/没分/有分) + 明确副7/副2 成对语义
全面符合性再审查(4 维度独立对抗核对)结论:与计分/发牌/出牌/跟牌/甩牌 相关规则均一致,无缺陷;仅 §11 闲家三提示服务端缺失、副7/副2 异花色 成对语义存疑两项待办。本次按用户裁定落地: 1. §11 三提示(新增 mod.tishi):闲家在出牌阶段(step5)发 踩/没分/有分, 服务端不校验真实性、只 SendPack 转发给对家(另一闲家 3-banker-seat); 庄家无对家不参与;非法 tip/非出牌阶段/庄家发均拒。 协议补 packet_protocol §13.7/13.8;test_rpc +11 例(正反+边界)。 2. 副7/副2 成对语义:裁定"只同花色同点数两副成对"(代码本已如此,无需改), 在 design §3 补说明闭合该反复出现的存疑(异花色副7 不成对)。 compliance 文档同步:§11 状态转✅、首轮结论摘要加"非当前状态"说明、 计数 259→270。全套 270 项断言全绿(rpc 34→45)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -516,6 +516,59 @@ youle_erqiwang.mingpai = function(pack){
|
||||
youle_erqiwang.app.SendPack(msg);
|
||||
}
|
||||
|
||||
//闲家出牌提示(design §11):闲家在出牌阶段向对家(另一闲家)发"踩/没分/有分"信号。
|
||||
//纯转发、不校验真实性、只发给对家;庄家无对家,不参与。tip:1=踩 2=没分 3=有分。
|
||||
youle_erqiwang.tishi = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
var playerid = parseInt(pack.data.playerid);
|
||||
var gameid = pack.data.gameid;
|
||||
var roomcode = parseInt(pack.data.roomcode);
|
||||
var seat = parseInt(pack.data.seat);
|
||||
var tip = parseInt(pack.data.tip);
|
||||
//检查玩家的位置是否正确
|
||||
var o_room = youle_erqiwang.import.check_player(agentid, gameid, roomcode, seat, playerid, pack.conmode, pack.fromid);
|
||||
if (!o_room){
|
||||
return;
|
||||
}
|
||||
//牌桌
|
||||
var o_desk = o_room.o_desk;
|
||||
if (!o_desk){
|
||||
return;
|
||||
}
|
||||
//牌局
|
||||
var o_paiju = o_desk.method.curr_paiju();
|
||||
if (!o_paiju){
|
||||
return;
|
||||
}
|
||||
//只在出牌阶段(step5)任意时刻可发
|
||||
if (o_paiju.step != 5){
|
||||
return;
|
||||
}
|
||||
//只有闲家可发提示,庄家无对家、不参与
|
||||
if (seat == o_paiju.banker){
|
||||
return;
|
||||
}
|
||||
//提示类型:1=踩 2=没分 3=有分
|
||||
if (tip != 1 && tip != 2 && tip != 3){
|
||||
return;
|
||||
}
|
||||
|
||||
//对家 = 另一个闲家(三座位号之和为 0+1+2=3)
|
||||
var partner = 3 - o_paiju.banker - seat;
|
||||
|
||||
//只转发给对家
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "erqiwang";
|
||||
msg.rpc = "tishi";
|
||||
msg.data = {};
|
||||
msg.data.seat = seat; //发出提示的闲家
|
||||
msg.data.tip = tip;
|
||||
msg.conmode = o_room.seatlist[partner].conmode;
|
||||
msg.fromid = o_room.seatlist[partner].fromid;
|
||||
youle_erqiwang.app.SendPack(msg);
|
||||
}
|
||||
|
||||
//准备
|
||||
youle_erqiwang.zhunbei = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
|
||||
Reference in New Issue
Block a user