问题现象
玩家在门派转换界面可以看到并选择恶人谷,但点击后无任何反应,转换失败且没有提示信息。
根因分析
服务端 odali_azi.lua — 两处拦截
第1处 — OnContinueCheck(选择门派后的检查):
-- odali_azi.lua 第81-84行
function odali_azi:OnContinueCheck(selfId, targetId, menpai)
if menpai >= 11 then
return
end
第2处 — OnConfirmSwitch(确认转换时的检查):
-- odali_azi.lua 第98-101行
function odali_azi:OnConfirmSwitch(selfId, targetId, menpai)
if menpai >= 11 then
return
end
恶人谷的门派ID是 11(MP_MENPAI11 = 11),这两个 if menpai >= 11 then return end 直接把恶人谷拦掉了,静默返回无任何提示。
客户端无问题
客户端 [ModifyMenPai_Select.lua] (/Interface/ModifyMenPai_Select/ModifyMenPai_Select.lua:0:0-0:0) 的 g_switchMPListSpecial 表已经正确包含了 MP_MENPAI11:
-- ModifyMenPai_Select.lua 第40-48行
[MP_GAIBANG] = {MP_MINGJIAO, MP_XINGSU, MP_DALI, MP_XIAOYAO, MP_MANTUO, MP_MENPAI11},
[MP_WUDANG] = {MP_SHAOLIN, MP_EMEI, MP_DALI, MP_TIANSHAN, MP_MANTUO, MP_MENPAI11},
[MP_EMEI] = {MP_SHAOLIN, MP_WUDANG, MP_DALI, MP_TIANSHAN, MP_MANTUO, MP_MENPAI11},
[MP_XINGSU] = {MP_GAIBANG, MP_DALI, MP_XIAOYAO, MP_MANTUO, MP_MENPAI11},
[MP_DALI] = {MP_SHAOLIN, MP_MINGJIAO, MP_GAIBANG, MP_WUDANG, MP_EMEI, MP_XINGSU, MP_TIANSHAN, MP_XIAOYAO, MP_MANTUO, MP_MENPAI11},
[MP_TIANSHAN] = {MP_WUDANG, MP_EMEI, MP_DALI, MP_MENPAI11},
[MP_XIAOYAO] = {MP_MINGJIAO, MP_GAIBANG, MP_XINGSU, MP_DALI, MP_MANTUO, MP_MENPAI11},
[MP_MANTUO] = {MP_SHAOLIN, MP_GAIBANG, MP_WUDANG, MP_EMEI, MP_XINGSU, MP_DALI, MP_XIAOYAO, MP_MENPAI11},
客户端能选恶人谷,但选完发到服务端后被 menpai >= 11 拦截了。
修复方案
将服务端 [odali_azi.lua] (/scripts/obj/dali/odali_azi.lua:0:0-0:0) 中两处检查的上限从 >= 11 改为 >= 12,与客户端定义的 MP_COUNT = 12 保持一致:
-- 修改前
if menpai >= 11 then return end
-- 修改后
if menpai >= 12 then return end
需要修改的两个位置:
OnContinueCheck 函数(第82行)
OnConfirmSwitch 函数(第99行)