问题现象:
在洛阳 NPC 燕青处,进入“重洗暗器原始属性”菜单后,点击 用原始身法随机换1点其他属性 没有任何反应,界面不弹出,也没有提示。
问题原因:
燕青脚本文件:
\ubuntu\tlbb\services\scripts\obj\luoyang\oluoyang_yanqing.lua
菜单里已经配置了身法选项:
self:AddNumText("#{FBSJ_081209_36}", 6, 25)
其中 FBSJ_081209_36 对应身法洗点选项,点击后会把 index=25 发给服务端。
但是 OnEventRequest 里只处理了:
index == 21 -- 力量
index == 22 -- 灵气
index == 23 -- 体力
index == 24 -- 定力
漏掉了:
index == 25 -- 身法
所以客户端点击后,服务端没有任何分支处理,表现就是“点了没反应”。
修复方式:
在 oluoyang_yanqing.lua 的 OnEventRequest 里,给 index == 25 补上处理逻辑。
修复代码:
elseif index == 25 then
self:BeginUICommand()
self:UICommand_AddInt(5)
self:UICommand_AddInt(targetId)
self:EndUICommand()
self:DispatchUICommand(selfId, 800034)
return
放置位置:
建议放在 index == 21 / 22 / 23 / 24 后面,也就是暗器原始属性洗点这一组分支里。
完整逻辑含义:
self:UICommand_AddInt(5)
这里的 5 是传给客户端暗器属性界面的 CommandType,对应属性顺序:
1 = 力量
2 = 灵气
3 = 体力
4 = 定力
5 = 身法
客户端收到:
UI_COMMAND 800034
之后会打开暗器属性洗点界面,并根据 CommandType=5 显示“身法”相关操作。
服务端后续执行链路:
燕青 NPC 点击选项
-> OnEventRequest index=25
-> DispatchUICommand 800034
-> 客户端 AnqiShuxing.lua 打开暗器属性界面
-> 玩家放入暗器并确认
-> 客户端 DataPool:DarkAdjustAttr(bagIndex, 5, confirm)
-> 服务端 char_adjust_dark
-> commonitem/332207.lua
-> DarkAttrAdjustForBagItem(selfId, bagpos, 5)
-> 扣材料、扣钱、随机把 1 点原始身法转成其他属性
|