71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
| 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 |