LogManager.lua 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. -- 公有的,可以外部调用
  2. LogManager = {}
  3. -- 私有的,只能内部使用
  4. local this = {}
  5. -- 注册的日志处理器
  6. local HANDLER_MAP = {}
  7. -- 注册handler
  8. function LogManager.RegisterHandler(type, func)
  9. HANDLER_MAP[type] = func
  10. end
  11. -- 获取handler
  12. function LogManager.GetHandler(type)
  13. return HANDLER_MAP[type]
  14. end
  15. -- 执行方法
  16. function LogManager.TriggerByType(actor, type, params)
  17. local func = LogManager.GetHandler(type)
  18. local success, result = xpcall(func, function(err)
  19. error("LogManager记录脚本日志错误", actor, type, params, debug.traceback())
  20. end, actor, params)
  21. end
  22. -- 记录日志
  23. function LogManager.log(actor, type, content)
  24. logop(actor, type, content)
  25. end
  26. -- 玩家下线事件
  27. function LogManager.RoleLogout(actor)
  28. -- 某些数据就下线刷一次,防止日志膨胀
  29. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.CAREER_AND_ATTR)
  30. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_WEAPON)
  31. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_MAJOR_GRAIL)
  32. gameDebug.debug(this.SaveKillNomerMonster, actor)
  33. end
  34. function this.SaveKillNomerMonster(actor)
  35. local oldCount = getplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT)
  36. if oldCount ~= nil and oldCount > 0 then
  37. LogManager.TriggerByType(actor, LogOpType.KILL_NOMAR_MONSTER, oldCount)
  38. setplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT, 0)
  39. end
  40. end
  41. function LogManager.RoleLevelUp(actor)
  42. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.CAREER_AND_ATTR)
  43. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_WEAPON)
  44. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.ANGEL_MAJOR_GRAIL)
  45. end
  46. -- 穿戴装备事件
  47. function LogManager.RolePutOnEquip(actor)
  48. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.SUM_EQUIP_GRADE)
  49. end
  50. -- 强化装备事件
  51. function LogManager.RoleStrenthenEquip(actor)
  52. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.SUM_EQUIP_STRENTH)
  53. end
  54. -- 追加装备事件
  55. function LogManager.RoleAppendEquip(actor)
  56. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.SUM_EQUIP_APPEND)
  57. end
  58. -- 升级连击技能
  59. function LogManager.RoleUpComboSkill(actor, level)
  60. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.COMBO_SKILL_LEVEL, level)
  61. end
  62. -- 装备卡牌
  63. function LogManager.RolePutOnTransferCard(actor)
  64. gameDebug.debug(LogManager.TriggerByType, actor, LogOpType.TRANSFER_CARD_SCORE)
  65. end
  66. -- 击杀怪物事件
  67. function LogManager.KillMonster(actor, monCfgId)
  68. local monsterType = tonumber(ConfigDataManager.getTableValue("cfg_monster", "type", "id", monCfgId))
  69. if monsterType == 1 then
  70. --小怪,每100只记录一次
  71. local oldCount = getplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT)
  72. if oldCount == nil then
  73. oldCount = 0
  74. end
  75. local newCount = oldCount + 1
  76. if newCount >= 100 then
  77. LogManager.TriggerByType(actor, LogOpType.KILL_NOMAR_MONSTER, newCount)
  78. newCount = 0
  79. end
  80. setplaydef(actor, PlayerDefKey.LOG_KILL_NOMAR_MONSTER_COUNT, newCount)
  81. elseif monsterType == 2 then
  82. --黄金怪
  83. LogManager.TriggerByType(actor, LogOpType.KILL_GOLD_BOSS, 1)
  84. elseif monsterType == 3 then
  85. --BOSS
  86. LogManager.TriggerByType(actor, LogOpType.KILL_BOSS, 1)
  87. end
  88. end
  89. ---------------------------------------------------------注册不同的日志记录处理器----------------------------------------------------------------------
  90. LogManager.RegisterHandler(LogOpType.CAREER_AND_ATTR, function(actor, params)
  91. local career = getbaseinfo(actor, "getbasecareer")
  92. local maxDC = getattrinfo(actor, "maxDC")
  93. local maxMC = getattrinfo(actor, "maxMC")
  94. local armor = getattrinfo(actor, "armor")
  95. local content = career .. ":" .. maxDC .. "#" .. maxMC .. "#" .. armor
  96. LogManager.log(actor, LogOpType.CAREER_AND_ATTR, content)
  97. end)
  98. LogManager.RegisterHandler(LogOpType.B_AND_D_CHALLENGE, function(actor, params)
  99. LogManager.log(actor, LogOpType.B_AND_D_CHALLENGE, 1)
  100. end)
  101. LogManager.RegisterHandler(LogOpType.SUM_EQUIP_GRADE, function(actor, params)
  102. local bai = 0
  103. local zhuo = 0
  104. local tao = 0
  105. local allEquips = getputonequipinfo(actor)
  106. for _, equip in pairs(allEquips) do
  107. -- 区分套装、卓越、白装
  108. local itemCfgId = equip.cfgid
  109. if not AngelMajorEquipment.isAngelEquip(itemCfgId) then
  110. local quality = tostring(itemCfgId):sub(7, 7)
  111. local grade = tostring(itemCfgId):sub(5, 6)
  112. if quality == "1" then
  113. bai = bai + tonumber(grade)
  114. elseif quality == "2" then
  115. jprint("卓越",equip)
  116. zhuo = zhuo + tonumber(grade)
  117. elseif quality == "3" then
  118. tao = tao + tonumber(grade)
  119. end
  120. end
  121. end
  122. local content = bai .. "#" .. zhuo .. "#" .. tao
  123. LogManager.log(actor, LogOpType.SUM_EQUIP_GRADE, content)
  124. end)
  125. LogManager.RegisterHandler(LogOpType.SUM_EQUIP_STRENTH, function(actor, params)
  126. local sum = EquipAndAppear.allequipstrengthlv(actor)
  127. LogManager.log(actor, LogOpType.SUM_EQUIP_STRENTH, sum)
  128. end)
  129. LogManager.RegisterHandler(LogOpType.SUM_EQUIP_APPEND, function(actor, params)
  130. local sum = EquipAndAppear.allequipappendlv(actor)
  131. LogManager.log(actor, LogOpType.SUM_EQUIP_APPEND, sum)
  132. end)
  133. LogManager.RegisterHandler(LogOpType.COMBO_SKILL_LEVEL, function(actor, params)
  134. LogManager.log(actor, LogOpType.COMBO_SKILL_LEVEL, params)
  135. end)
  136. LogManager.RegisterHandler(LogOpType.TRANSFER_CARD_SCORE, function(actor, params)
  137. local score = TransferCard.GetRoleScore(actor)
  138. LogManager.log(actor, LogOpType.TRANSFER_CARD_SCORE, score)
  139. end)
  140. LogManager.RegisterHandler(LogOpType.ANGEL_WEAPON, function(actor, params)
  141. local rank, level = AngelMajorEquipment.getTotalInfo(actor, 1)
  142. LogManager.log(actor, LogOpType.ANGEL_WEAPON, rank .. "#" .. level)
  143. end)
  144. LogManager.RegisterHandler(LogOpType.ANGEL_MAJOR_GRAIL, function(actor, params)
  145. local rank, level = AngelMajorGrail.getAverageInfo(actor, 1)
  146. LogManager.log(actor, LogOpType.ANGEL_MAJOR_GRAIL, rank .. "#" .. level)
  147. end)
  148. LogManager.RegisterHandler(LogOpType.KILL_BOSS, function(actor, params)
  149. LogManager.log(actor, LogOpType.KILL_BOSS, params)
  150. end)
  151. LogManager.RegisterHandler(LogOpType.KILL_GOLD_BOSS, function(actor, params)
  152. LogManager.log(actor, LogOpType.KILL_GOLD_BOSS, params)
  153. end)
  154. LogManager.RegisterHandler(LogOpType.KILL_NOMAR_MONSTER, function(actor, params)
  155. LogManager.log(actor, LogOpType.KILL_NOMAR_MONSTER, params)
  156. end)
  157. ----------------------------------------------------------------------------------------------------------------------------------------