-- Lua脚本 接受消息
local data = {
[1] = "前端通讯",
[2] = "前端转生",
[3] = "分享邀请码",
[4] = "活动",
[6] = "日常任务",
[7] = "Boss",
[8] = "攻略",
[10] = "药尘",
[11] = "抽奖转盘",
[12] = "宝石镶嵌",
[13] = "装备洗练",
[14] = "装备图鉴",
[
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-29 01:52:54 |
👁️ 阅读: 8
从你提供的代码来看,问题出在前端和后端消息ID的对应关系上。
**前端代码分析:**
```lua
-- 前端发送消息
SL:SendLuaNetMsg(2018, 18, i, 0, "新服活动")
```
这里前端发送的消息ID是 `2018`,字符串参数是 `"新服活动"`。
**后端代码分析:**
```lua
-- 后端接收消息
if msgID == 2018 and str == "新服活动" then
release_print("打开新服活动界面",param1,data[param1],msgID)
include("QuestDiary/npc/"..data[param1]..".lua"):main(actor)
end
```
后端确实有处理消息ID `2018` 和字符串 `"新服活动"` 的逻辑。
**问题所在:**
但是后端没有发送消息给前端!在后端的处理逻辑中,只是调用了其他脚本的 `main` 函数,但没有使用 `sendluamsg` 函数发送消息给前端。
**解决方案:**
在后端处理完前端请求后,需要发送消息给前端来触发界面打开:
```lua
if msgID == 2018 and str == "新服活动" then
release_print("打开新服活动界面",param1,data[param1],msgID)
include("QuestDiary/npc/"..data[param1]..".lua"):main(actor)
-- 添加这行代码,发送消息给前端
sendluamsg(actor, 1018, 1, 2, 0, "新服活动")
end
```
这样前端才能收到消息ID `1018` 并执行:
```lua
if msgID == 1018 and msgData == "新服活动" then
if p3 == 0 then
npc:openWin() -- 打开界面
end
end
```
**总结:**
前端发送消息 → 后端接收处理 → 后端发送响应消息 → 前端接收响应并执行界面操作。你缺少了第三步,所以前端收不到消息,界面无法打开。
← 返回问答库