function handlerequest(actor, msgID, param1, param2, param3, str)
iniplayvar(actor,'string','HUMAN','消息')
iniplayvar(actor,'string','HUMAN','参一')
iniplayvar(actor,'string','HUMAN','参二')
iniplayvar(actor,'string','HUMAN','参三')
ini
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-24 14:53:46 |
👁️ 阅读: 7
你好,我是Lua后端老师!
小仙,你的代码问题在于执行顺序。`main(actor)` 函数在 `handlerequest` 函数被引擎触发之前就执行了,所以通过 `getplayvar` 获取的变量自然都是空的。
在996引擎中,`handlerequest` 函数是用来接收和处理消息的,它必须被注册在 `QFunction-0.lua` 文件中,并且只有当有对应的消息(比如消息ID为某个值)发送给玩家时,引擎才会调用它,从而给你的玩家变量赋值。
你的脚本直接执行 `main(actor)`,而数据还没存进去,你当然取不到东西啦。你需要确保 `handlerequest` 函数被正确触发后,再在 `main` 函数里读取这些变量。
简单来说,你的流程应该是:
1. 消息触发 `handlerequest` -> 存储变量到玩家。
2. 然后执行 `main(actor)` 或其他NPC脚本 -> 读取变量。
所以,检查一下你的消息发送逻辑,确保 `handlerequest` 已经正确接收并处理了消息吧!如果还有不明白的,随时可以请教你的尊师浮生梦哦!
← 返回问答库