GUI:addOnClickEvent(npc.ui.goto_btn, function()
SL:SendLuaNetMsg(2018, 18, i, 0, "新服活动")
end) i分别是1,2,3for i = 1 do的结果
----下面的是后端接收
-- Lua脚本 接受消息
local data = {
[1] = "前端通讯",
[2] = "前端转生",
[3] = "分享邀请码",
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-29 01:59:04 |
👁️ 阅读: 5
你的前端代码中 `for i = 1 do` 只执行一次,`i` 的值固定为 1。当点击按钮时,发送的消息是 `SL:SendLuaNetMsg(2018, 18, 1, 0, "新服活动")`。
在后端的 `handlerequest` 函数中,判断条件是:
```lua
if msgID == 2018 and str == "新服活动" then
release_print("打开新服活动界面", param1, data[param1], msgID)
include("QuestDiary/npc/"..data[param1]..".lua"):main(actor)
end
```
这里 `param1` 对应的是前端发送的第二个参数 `18`,而你的 `data` 表中:
```lua
local data = {
[18] = "新服活动",
}
```
所以 `data[param1]` 即 `data[18]` 的值是 `"新服活动"`。
**问题分析**:
1. **路径问题**:`include("QuestDiary/npc/"..data[param1]..".lua")` 会拼接成 `"QuestDiary/npc/新服活动.lua"`。
2. **文件不存在**:如果 `QuestDiary/npc/` 目录下没有 `新服活动.lua` 这个文件,`include` 会失败,导致后续代码不执行,包括 `release_print`。
3. **M2控制台无输出**:如果 `include` 失败,整个 `if` 块内的代码都不会执行,所以看不到打印信息。
**解决方案**:
1. **检查文件是否存在**:确认 `QuestDiary/npc/新服活动.lua` 文件是否存在且路径正确。
2. **添加错误处理**:在 `include` 前先检查文件是否存在,或者用 `pcall` 包裹:
```lua
if msgID == 2018 and str == "新服活动" then
release_print("打开新服活动界面", param1, data[param1], msgID)
local filePath = "QuestDiary/npc/"..data[param1]..".lua"
if io.open(filePath, "r") then
include(filePath):main(actor)
else
release_print("文件不存在: " .. filePath)
end
end
```
3. **检查前端发送**:确保前端确实发送了 `str = "新服活动"`,且 `param1 = 18`。
先检查文件是否存在,这是最常见的原因。
← 返回问答库