事件说明
事件分类
事件类型 | 特点 |
---|---|
全局触发事件 | - 引擎已经注册好了 - 事件需要返回值 - 事件只在这一个地方触发 |
基础触发事件 | - 自由在任意使用前注册 - 事件不需要返回值 - 事件在触发到所有注册的地方 |
全局触发事件样例
描述
- 全局触发事件需要写在
dev/modules/public/qfunction.lua
文件 - 全局触发事件需要写在
dev/modules/public/qfunction.lua
文件 - 统一函数命名:
function QFunction:XXX(A, B, C)
XXX
是事件名A
、B
、C
是参数,不同事件有不同参数
- 全局事件列表见:全局事件列表
样例1:
样例1代码:
--- 掉落前触发
---@param attacker userdata 对象
---@param scene_item userdata 场景道具对象
---@param droped_obj userdata 掉落对象
---@param x number X轴
---@param y number Y轴
---@return boolean 是否允许掉落
function isc_test_qfunction:pre_drop(attacker, scene_item, droped_obj, x, y)
if edi.object:is_monster(droped_obj) and edi.object:is_player(attacker) then
local item_cfg = edi.scene_item:get_meta(scene_item)
local player_name = edi.player:get_name(attacker)
local scene = edi.player:get_scene(attacker)
local scene_name = edi.scene:get_name(scene)
local monster_name = edi.monster:get_name(droped_obj)
local content = "恭喜玩家【"..player_name.."】 在【"..scene_name.."】 击败了【"..monster_name .. "】掉落了 【"..item_cfg.name.."】"
edi.general:send_broadcast_notice(const_def.NOTICE_TYPE.TopHorseLamp, content)
end
end
样例使用到的功能说明:
- edi.object:is_monster
- edi.object:is_player
- edi.scene_item:get_meta
- edi.player:get_name
- edi.player:get_scene
- edi.scene:get_name
- edi.monster:get_name
- edi.general:send_broadcast_notice
基础触发事件样例
描述
- 事件需要自行先注册
- 事件需要自行先注册
- 基础事件列表见:基础事件列表
样例1:
样例1代码:
--- 玩家死亡
---@param deader userdata 被击杀者对象
---@param attacker userdata 攻击者对象
local function _player_die(deader, attacker)
if edi.player:is_player(attacker) then
-- 每次击杀检查是否增加仇恨值
if not module:need_add_pk_val(deader, attacker) then
module:add_pk_val(attacker, 100)
end
end
end
edi.event:reg(edi.event.player_die, _player_die, "pk_mod")
事件注册及使用流程
基础触发事件样例
描述
- 事件需要自行先注册
- 事件需要自行先注册
- 基础事件列表见:基础事件列表
样例1:
样例1代码:
--- 玩家死亡
---@param deader userdata 被击杀者对象
---@param attacker userdata 攻击者对象
local function _player_die(deader, attacker)
if edi.player:is_player(attacker) then
-- 每次击杀检查是否增加仇恨值
if not module:need_add_pk_val(deader, attacker) then
module:add_pk_val(attacker, 100)
end
end
end
edi.event:reg(edi.event.player_die, _player_die, "pk_mod")
接口
注册事件 reg
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
event_name | string or number | 事件名 |
func | function | 关注接口函数 |
tag | string or number | 标签 |
- | - | - |
- ret: 无
主动触发事件 call
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
event_name | string or number | 事件名 |
tag | string or number | 标签 |
... | any | undefined |
- | - | - |
- ret:
any
带放回值的部分则依据实际引擎事件需求,放回对应的内容
移除事件 remove
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
event_name | string or number | undefined |
tag | string or number | undefined |
- | - | - |
- ret: 无
注册ui事件 reg_ui_open
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
ui_id | string or number | ssr 事件 |
func | function | undefined |
- | - | - |
- ret: 无
NPC 注册事件 reg_npc_click
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
npc_id | string or number | ssr 界面ID |
func | function | undefined |
- | - | - |
- ret: 无
NPC 注册事件 reg_click
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
click_id | string or number | 按钮id |
func | function | undefined |
- | - | - |
- ret: 无
GM 注册事件 reg_gm
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
event_name | string or number | gm命令 |
func | function | undefined |
- | - | - |
- ret: 无
任务事件注册 reg_task_click
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
event_name | string | 任务命令 |
func | function | undefined |
- | - | - |
- ret: 无
任务事件注册 reg_item_effect
- args:
名字 | 类型 | 说明、描述 |
---|---|---|
event_name | string | 任务命令 |
func | function | undefined |
- | - | - |
- ret: 无