71 lines
2.4 KiB
Lua
71 lines
2.4 KiB
Lua
|
|
module("ActorEventDispatcher", package.seeall)
|
|||
|
|
|
|||
|
|
local dispatcher = {}
|
|||
|
|
|
|||
|
|
-- @brief 注册事件分发器
|
|||
|
|
-- @param evId 事件id
|
|||
|
|
-- @param func 回调
|
|||
|
|
function Reg(evId, func, file)
|
|||
|
|
|
|||
|
|
--必须有参数
|
|||
|
|
if evId == nil or func == nil or file == nil then
|
|||
|
|
print( debug.traceback() )
|
|||
|
|
print( file )
|
|||
|
|
assert(false)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--玩家事件
|
|||
|
|
if evId >= aeMaxEventCount or evId <= aeNoEvent then
|
|||
|
|
print("[ERROR][EventDispatcher] evId("..evId..") error!")
|
|||
|
|
assert(false)
|
|||
|
|
else
|
|||
|
|
if dispatcher[evId] == nil then
|
|||
|
|
dispatcher[evId] = {}
|
|||
|
|
end
|
|||
|
|
table.insert(dispatcher[evId], func)
|
|||
|
|
System.regScriptEvent(enType, evId)
|
|||
|
|
end
|
|||
|
|
print("[TIP][EventDispatcher] Add Actor Event("..evId..") In File("..file.."), And Index="..table.maxn(dispatcher[evId]))
|
|||
|
|
|
|||
|
|
return true
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function OnEvent(nIndex, evId, pActor, ...)
|
|||
|
|
local func = dispatcher[evId][nIndex]
|
|||
|
|
if func then
|
|||
|
|
return func(pActor, ...)
|
|||
|
|
end
|
|||
|
|
return false
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
--[[ 详细见:ActorEventDef.h
|
|||
|
|
|
|||
|
|
enum tagActorEventID
|
|||
|
|
{
|
|||
|
|
aeNoEvent = 0, //未定义事件
|
|||
|
|
aeLevel = 1, //角色升级 参数1:当前等级数
|
|||
|
|
aeUserLogin = 2, //玩家登陆 参数1:是否第一次登录
|
|||
|
|
aeUserLogout = 3, //玩家登出 参数1:人物id
|
|||
|
|
aeOnActorDeath = 4, //人物死亡
|
|||
|
|
aeReliveTimeOut = 5, //判断复活时间是否超时(用户超过5分钟没有选择回城复活还是原地复活),如果到达,脚本处理,送回主城复活. 参数1:人物指针
|
|||
|
|
aeNewDayArrive = 6, //跨天或在线期间0点整[角色指针,天数]
|
|||
|
|
aeOnActorBeKilled = 7, //被玩家杀死 [角色指针,杀人者指针]
|
|||
|
|
aeWithDrawYuanBao = 8, //提取元宝 [角色指针,提取的元宝数量]
|
|||
|
|
aeConsumeYb = 9, //消费元宝 [角色指针,消耗元宝数量]
|
|||
|
|
aeOnEnterFuben = 10, //玩家请求进入副本 [角色指针,进入的副本id]
|
|||
|
|
aeOnExitFuben = 11, //玩家请求退出副本 [角色指针,退出的副本id]
|
|||
|
|
aeGuild = 12, //帮派相关
|
|||
|
|
aeEquipComposite = 13, //装备合成 [角色指针,目标装备ItemID]
|
|||
|
|
aeBuffRemoved = 14, //buff被删除事件
|
|||
|
|
aeLeaveTeam = 15, //离开队伍
|
|||
|
|
aeCircle = 16, //角色转生 [角色指针,当前等级数]
|
|||
|
|
aeChangeName = 17, //改名
|
|||
|
|
aeAsyncOpResult = 18, //异步操作结果 参数1:类型 参数2:结果 参数3:操作方式 参数4:错误码 参数5:卡号 参数6:增值类型 参数7:Sub类型
|
|||
|
|
aeHero = 19, //英雄系统
|
|||
|
|
aeHurtMonster = 20, //对怪物造成伤害
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
]]
|
|||
|
|
|
|||
|
|
--return EventDispatcher
|