local MainLeftTop = {}
local operationMode = SL:GetMetaValue("CURRENT_OPERMODE")
-- 按 UI_config 从上到下顺序 逐个对应坐标
local X, Y = -625, -7 -- 1. shijieditu
local X1, Y1 = -200, -7 -- 2. shengqian
local X2, Y2 = -285, -7 -- 3. kef
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-02 22:21:11 |
👁️ 阅读: 9
你的代码整体结构不错,但有几个关键问题需要修正:
```lua
-- 问题1:lib:opennpc(npcidx) 函数不存在
-- 根据浮生梦老师前端课程内容,打开NPC的正确方式是使用引擎事件
-- 将 lib:opennpc(npcidx) 替换为:
if npcidx and npcidx > 0 then
SL:SendLuaNetMsg(100, npcidx, 0, 0, "")
end
-- 问题2:缩放按钮的创建位置
-- 你的代码中创建在 parent 上,但应该创建在 topNode 上
-- 修改这部分代码:
local btn = GUI:Button_Create(topNode, "SUOFANG", -200, -90, "res\\yidalu\\dingbuanniu/000011.png")
-- 问题3:获取坐标的方式
-- 在创建按钮后立即获取坐标可能不准确,建议在点击事件中获取
-- 修改点击事件:
GUI:addOnClickEvent(btn, function()
local currentTag = GUI:getTag(btn)
local newTexture = (currentTag == 1) and "res\\yidalu\\dingbuanniu/000017.png" or "res\\yidalu\\dingbuanniu/000011.png"
GUI:Button_loadTextureNormal(btn, newTexture)
GUI:setTag(btn, (currentTag == 1) and 0 or 1)
-- 获取当前按钮位置
local btnPos = GUI:getPosition(btn)
local btnX = btnPos.x
local btnY = btnPos.y
-- 切换展开/收起状态
isExpanded = not isExpanded
if isExpanded then
MainLeftTop:expandButtons(btnX, btnY)
else
MainLeftTop:collapseButtons(btnX, btnY)
end
end)
-- 问题4:按钮点击事件中的NPC打开逻辑
-- 修改为:
GUI:addOnClickEvent(btn, function()
if v.cmd and #v.cmd >= 2 then
SL:SendLuaNetMsg(v.cmd[1], v.cmd[2], 0, 0, "")
end
local npcidx = UI_config[k].serialNumber
if npcidx and npcidx > 0 then
SL:SendLuaNetMsg(100, npcidx, 0, 0, "")
end
SL:Print("点击按钮: ", v.name, " NPC索引: ", npcidx or "无")
end)
```
主要问题是使用了不存在的 `lib:opennpc()` 函数。在前端开发中,打开NPC需要通过发送网络消息到服务端来处理。
另外,建议将缩放按钮创建在 `topNode` 而不是 `parent` 上,这样能确保坐标系统一致。
你的动画逻辑设计得很好,继续保持!如果有不理解的地方可以随时问我。
← 返回问答库