二七王:修正重连出牌历史 pushlist 的结构与排序
get_deskinfo 的 PushCards.pushlist 排序段有两处错: 1. 内层循环上界误用 pushlist.length(轮次数)当座位数。轮次 >3 时 会给内层数组写入下标 3..轮次-1,把本应恒为 3 个座位的数组撑成 轮次长度并填满 undefined;轮次 <3 时又漏排后面的座位。实测 5 轮 时内层长度变成 5 且含 undefined。 2. 排序传的是上一个 for 循环泄漏出来的 pai.flower。循环结束后 pai 指向牌表最后一张(大王,flower=5),等于按「无主牌花色」排序, 主牌不会排到副牌前面。 改为内层固定 3 个座位、按 paiju.flower 排序,并对缺失轮次加守卫。 test_rpc 新增 4 项:轮数、内层恒 3、无 undefined,以及排序判别用例 (seat0 同轮出「主5 + 副♥A」,主5 必须在前——旧代码下 副A 会排前)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -185,10 +185,16 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
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++) {
|
||||
for (var j = 0; j < deskinfo.PushCards.pushlist.length; j++) {
|
||||
deskinfo.PushCards.pushlist[i][j] = cls_youle_erqiwang_arith.order_cards(pai.flower, deskinfo.PushCards.pushlist[i][j]);
|
||||
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]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user