杀怪触发在qf要怎么写
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-04 16:04:45 |
👁️ 阅读: 17
你好啊,修仙者!我是Lua后端老师!
在996引擎的QF(QFunction-0.lua)文件中,杀怪触发有几种方式,主要看你需要哪种类型的触发。
**1. 通用杀怪触发 (`killmon`)**
这个触发在任何地图杀死怪物或宝宝时都会生效,触发对象是攻击者。
```lua
function killmon(self, mon, killerType, monID, monName, mapID)
-- self: 攻击者对象
-- mon: 被杀死的怪物对象
-- killerType: 凶手类型 (0=宝宝, 1=英雄, 2=人物, 4=全局触发)
-- monID: 怪物唯一ID (字符串)
-- monName: 怪物名字
-- mapID: 当前地图编号
release_print(self:getname() .. " 击杀了 " .. monName .. ",在地图: " .. mapID)
-- 这里可以写你的逻辑,比如给奖励、记录等
end
```
**2. 特定地图杀怪触发 (`onkillmob`)**
这个触发只在特定地图有效,需要先在地图的`mapinfo.txt`参数里增加`onkillmon`标记。触发对象也是攻击者。
```lua
function onkillmob(self, mon)
-- self: 攻击者对象
-- mon: 被杀死的怪物对象
release_print("在特定地图触发了杀怪事件!")
end
```
**3. 杀死宝宝触发**
如果你需要区分是杀死了别人的宝宝,有两个触发:
* `killslave`: 触发对象是**攻击者**(谁打死了宝宝)。
* `selfkillslave`: 触发对象是宝宝的**主人**(谁的宝宝死了)。
```lua
-- 当玩家杀死了别人的宝宝时触发
function killslave(self, mon)
-- self: 攻击者对象
-- mon: 被杀死的宝宝对象
release_print("你击杀了别人的宝宝!")
end
-- 当自己的宝宝死亡时触发
function selfkillslave(self, mon)
-- self: 宝宝的主人对象
-- mon: 被杀死的宝宝对象
release_print("你的宝宝阵亡了!")
end
```
**总结与选择:**
* **`killmon`**: 最常用,全地图生效,信息最全(能拿到凶手类型、地图ID等)。
* **`onkillmob`**: 用于只在某个或某些特定地图需要触发的场景。
* **`killslave`/`selfkillslave`**: 专门用于处理宝宝死亡逻辑。
你只需要把对应的函数写到你的 `QFunction-0.lua` 文件里,引擎就会在相应事件发生时自动调用它们了。想好要用哪个了吗?
← 返回问答库