-- 公有的,可以外部调用 LogManager = {} -- 私有的,只能内部使用 local this = {} -- 注册的日志处理器 local HANDLER_MAP = {} -- 注册handler function LogManager.RegisterHandler(type, func) HANDLER_MAP[type] = func end -- 获取handler function LogManager.GetHandler(type) return HANDLER_MAP[type] end -- 执行方法 function LogManager.TriggerByType(actor, type, params) local func = LogManager.GetHandler(type) local success, result = xpcall(func, function(err) error("LogManager记录脚本日志错误", actor, type, params, debug.traceback()) end, actor, params) end -- 记录日志 function LogManager.log(actor, type, content) logop(actor, type, content) end -- 玩家下线事件 function LogManager.RoleLogout(actor) -- 某些数据就下线刷一次,防止日志膨胀 gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.CAREER_AND_ATTR) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_WEAPON) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_MAJOR_GRAIL) gameDebug.debug(this.SaveKillNomerMonster, actor) end function this.SaveKillNomerMonster(actor) local oldCount = getplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT) if oldCount ~= nil and oldCount > 0 then LogManager.TriggerByType(actor, LogOpType.KILL_NOMAR_MONSTER, oldCount) setplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT, 0) end end function LogManager.RoleLevelUp(actor) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.CAREER_AND_ATTR) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_WEAPON) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_MAJOR_GRAIL) end -- 穿戴装备事件 function LogManager.RolePutOnEquip(actor) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.SUM_EQUIP_GRADE) end -- 强化装备事件 function LogManager.RoleStrenthenEquip(actor) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.SUM_EQUIP_STRENTH) end -- 追加装备事件 function LogManager.RoleAppendEquip(actor) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.SUM_EQUIP_APPEND) end -- 升级连击技能 function LogManager.RoleUpComboSkill(actor, level) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.COMBO_SKILL_LEVEL, level) end -- 装备卡牌 function LogManager.RolePutOnTransferCard(actor) gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.TRANSFER_CARD_SCORE) end -- 击杀怪物事件 function LogManager.KillMonster(actor, monCfgId) local monsterType = tonumber(ConfigDataManager.getTableValue("cfg_monster", "type", "id", monCfgId)) if monsterType == 1 then --小怪,每100只记录一次 local oldCount = getplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT) if oldCount == nil then oldCount = 0 end local newCount = oldCount + 1 if newCount >= 100 then LogManager.TriggerByType(actor, LogOpType.KILL_NOMAR_MONSTER, newCount) newCount = 0 end setplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT, newCount) elseif monsterType == 2 then --黄金怪 LogManager.TriggerByType(actor, LogOpType.KILL_GOLD_BOSS, 1) elseif monsterType == 3 then --BOSS LogManager.TriggerByType(actor, LogOpType.KILL_BOSS, 1) end end ---------------------------------------------------------注册不同的日志记录处理器---------------------------------------------------------------------- LogManager.RegisterHandler(LogOpType.CAREER_AND_ATTR, function(actor, params) local career = getbaseinfo(actor, "getbasecareer") local maxDC = getattrinfo(actor, "maxDC") local maxMC = getattrinfo(actor, "maxMC") local armor = getattrinfo(actor, "armor") local content = career .. ":" .. maxDC .. "#" .. maxMC .. "#" .. armor LogManager.log(actor, LogOpType.CAREER_AND_ATTR, content) end) LogManager.RegisterHandler(LogOpType.B_AND_D_CHALLENGE, function(actor, params) LogManager.log(actor, LogOpType.B_AND_D_CHALLENGE, 1) end) LogManager.RegisterHandler(LogOpType.SUM_EQUIP_GRADE, function(actor, params) local bai = 0 local zhuo = 0 local tao = 0 local allEquips = getputonequipinfo(actor) for _, equip in pairs(allEquips) do -- 区分套装、卓越、白装 local itemCfgId = equip.cfgid if not AngelMajorEquipment.isAngelEquip(itemCfgId) then local quality = tostring(itemCfgId):sub(7, 7) local grade = tostring(itemCfgId):sub(5, 6) if quality == "1" then bai = bai + tonumber(grade) elseif quality == "2" then jprint("卓越",equip) zhuo = zhuo + tonumber(grade) elseif quality == "3" then tao = tao + tonumber(grade) end end end local content = bai .. "#" .. zhuo .. "#" .. tao LogManager.log(actor, LogOpType.SUM_EQUIP_GRADE, content) end) LogManager.RegisterHandler(LogOpType.SUM_EQUIP_STRENTH, function(actor, params) local sum = EquipAndAppear.allequipstrengthlv(actor) LogManager.log(actor, LogOpType.SUM_EQUIP_STRENTH, sum) end) LogManager.RegisterHandler(LogOpType.SUM_EQUIP_APPEND, function(actor, params) local sum = EquipAndAppear.allequipappendlv(actor) LogManager.log(actor, LogOpType.SUM_EQUIP_APPEND, sum) end) LogManager.RegisterHandler(LogOpType.COMBO_SKILL_LEVEL, function(actor, params) LogManager.log(actor, LogOpType.COMBO_SKILL_LEVEL, params) end) LogManager.RegisterHandler(LogOpType.TRANSFER_CARD_SCORE, function(actor, params) local score = TransferCard.GetRoleScore(actor) LogManager.log(actor, LogOpType.TRANSFER_CARD_SCORE, score) end) LogManager.RegisterHandler(LogOpType.ANGEL_WEAPON, function(actor, params) local rank, level = AngelMajorEquipment.getTotalInfo(actor, 1) LogManager.log(actor, LogOpType.ANGEL_WEAPON, rank .. "#" .. level) end) LogManager.RegisterHandler(LogOpType.ANGEL_MAJOR_GRAIL, function(actor, params) local rank, level = AngelMajorGrail.getAverageInfo(actor, 1) LogManager.log(actor, LogOpType.ANGEL_MAJOR_GRAIL, rank .. "#" .. level) end) LogManager.RegisterHandler(LogOpType.KILL_BOSS, function(actor, params) LogManager.log(actor, LogOpType.KILL_BOSS, params) end) LogManager.RegisterHandler(LogOpType.KILL_GOLD_BOSS, function(actor, params) LogManager.log(actor, LogOpType.KILL_GOLD_BOSS, params) end) LogManager.RegisterHandler(LogOpType.KILL_NOMAR_MONSTER, function(actor, params) LogManager.log(actor, LogOpType.KILL_NOMAR_MONSTER, params) end) ----------------------------------------------------------------------------------------------------------------------------------------