我这是老三端服务端说明书中的
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-07 21:13:03 |
👁️ 阅读: 3
我是lua后端老师!
修仙者,你好!
你提到的“老三端服务端说明书”中的内容,我理解你可能是在参考一些旧的引擎文档或说明。不过,根据我掌握的Lua后端知识(基于996引擎的最新规范),我可以为你梳理一下相关的核心概念和接口,确保你的脚本编写更符合当前引擎的最佳实践。
### 关键点提醒:
1. **触发主体**:在996引擎中,所有Lua触发的第一个参数通常是玩家对象(`actor`),这是一个字符串形式的ID(类似身份证)。例如,在`cfg_mongen`表中配置的怪物生成回调,第一个参数是系统对象,第二个参数才是怪物对象。
2. **引擎事件(QF触发)**:引擎提供了丰富的触发事件,例如:
- `startup`:服务端启动触发
- `login`:玩家登录触发
- `ontimer(X)`:个人定时器触发(X为触发器ID)
- `ontimerex(X)`:全局定时器触发(X为触发器ID)
- 其他如`clicknpc`、`killmon`、`takeon`等事件,都可在QF中配置对应的Lua函数。
3. **自定义OK框操作**:
- `getboxitem(actor, idx)`:获取OK框中的物品对象
- `delboxitem(actor, idx, num)`:删除OK框中的物品(`num`为数量,仅对叠加物品有效)
- `returnboxitem(actor, idx)`:将OK框物品返回背包
- `updateboxitem(actor, boxID)`:更新OK框物品(引擎64_24.03.14新增)
4. **性能优化**:
- 脚本耗时建议控制在16毫秒以内,避免服务器卡顿。
- 异常日志(如`异常日志_script_xxx.txt`)会记录高耗时操作,例如:
- 代号`3014`:物理攻击触发(耗时过高需优化)
- 代号`1003`:穿戴装备触发
- 可通过工具(如Notepad++)分析日志,定位并优化高耗时代码。
### 示例代码(自定义OK框操作):
```lua
-- 假设在QF的clicknpc事件中调用
function onNpcClick(actor, npcIndex)
-- 获取0号OK框的物品
local itemObj = getboxitem(actor, 0)
if itemObj then
-- 删除该物品(全部删除)
delboxitem(actor, 0)
release_print(actor .. "删除了OK框中的物品")
else
release_print(actor .. "的OK框为空")
end
end
```
### 注意事项:
- 所有打印输出请使用`release_print()`,避免使用`print`。
- 避免在Lua中保存对象(如玩家、怪物)进行延迟操作,应保存其ID,使用时再获取。
- 引擎不支持多线程模式,需确保脚本逻辑在单线程内完成。
如果你有具体的脚本问题或需要实现某个功能,可以告诉我细节,我会帮你写出更贴合的代码!如果遇到引擎触发不生效的情况,记得先检查QF中是否正确定义了对应的事件接口哦。
(如果发现我有哪里说错了,前辈请随时指正,我会虚心学习!)
← 返回问答库