123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- ---@class MainUIInfo
- MainUIInfo = class()
- local this = MainUIInfo
- function this:ctor()
- end
- function this:Reset()
- end
- function this:Init()
- self:InitData()
- self:InitExpHurtData()
- self:RegistMessages()
- end
- function this:InitData()
- self.experienceAddInfoList = {}
- ---@type cfg_global_column
- local tbl = SL:GetConfig("cfg_global",601)
- if tbl then
- local strList = string.split(tbl.value,"|")
- for i, v in pairs(strList) do
- local strList1 = string.split(v,"#")
- local type = tonumber(strList1[1])
- local name = strList1[2]
- local command = strList1[3]
- local needLevel = tonumber(strList1[4])
- local args = tonumber(strList1[5])
- self.experienceAddInfoList[type] = {cfgId = 0,lastCfgId = 0,type = type, needLevel = needLevel,name = name,command=command,exp = 0,endTime = 0,icon = "experienceIcon",args=args}
- end
- end
- end
- function this:RegistMessages()
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_EXP_BONUS_INFO, self.RES_EXP_BONUS_INFO, self)
- SL:RegisterLuaNetMsg(MessageDef.ResFightResultMessage, self.ResFightResultMessage, self)
- SL:RegisterLUAEvent(MESSAGE_ACCEPT, self.MESSAGE_ACCEPT, self)
- end
- function this:RES_EXP_BONUS_INFO(id,message)
- if self.experienceAddInfoList[message.bonusType] then
- local expireTime = tonumber(message.expireTime)
- local exp = (message.value and (expireTime > Time.GetServerTime() or expireTime<=0)) and math.floor(tonumber(message.value) / 100) or 0
- self.experienceAddInfoList[message.bonusType].lastCfgId = self.experienceAddInfoList[message.bonusType].cfgId
- self.experienceAddInfoList[message.bonusType].cfgId = tonumber(message.buffId)
- self.experienceAddInfoList[message.bonusType].exp = exp
- self.experienceAddInfoList[message.bonusType].endTime = expireTime
- end
- SL:onLUAEvent(LUA_EVENT_EXPERIENCE_ADD_CHANGE)
- end
- function this:Reset()
- for i, v in pairs(self.experienceAddInfoList) do
- v.endTime = 0
- v.exp = 0
- v.cfgId=0
- end
- end
- function this:InitExpHurtData()
- self.exp_list = {}
- self.hurt_list = {}
- end
- function this:ResFightResultMessage(id,message)
- local rid = SL:GetMetaValue(EMetaVarGetKey.USER_ID)
- if tonumber(rid) == message.attackerId then
- local panel = GUI:GetUI("dev/ui/MainUI/Panel/KLUIHurtExp/KLUIHurtExpPanel")
- if not panel then
- panel = GUI:UIPanel_Open("dev/ui/MainUI/Panel/KLUIHurtExp/KLUIHurtExpPanel")
- end
- panel:RefreshTime()
- local target = message.target
- local all_hpChange = 0
- for i, v in ipairs(target) do
- all_hpChange = all_hpChange + tonumber(v.hpChange)
- end
- local time = Time.GetServerTime()
- self.hurt_list[time] = all_hpChange
- self:HurtRemoveOutTime()
- end
- end
- --伤害统计只存5秒的
- function this:HurtRemoveOutTime()
- local time = Time.GetServerTime() - 5000
- local remove_list = {}
- for i, v in pairs(self.hurt_list) do
- if i < time then
- self.hurt_list[i] = nil
- end
- end
- end
- ---查询1秒的伤害数据,实际是5秒的平均值
- function this:GetHurtNum()
- local num = 0
- for i, v in pairs(self.hurt_list) do
- num = num + v
- end
- num = math.floor(num/5)
- return num
- end
- local exp_str = "经验"
- function this:MESSAGE_ACCEPT(id,message)
- if message then
- if message.id == 32 then
- if message.params[1] == exp_str then
- local isSafe = SL:GetMetaValue(EMetaVarGetKey.IN_SAFE_AREA)
- if isSafe then
- return
- end
- local time = Time.GetServerTime()
- self.exp_list[time] = tonumber(message.params[2])
- self:ExpRemoveOutTime()
- end
- end
- end
- end
- --经验统计存1分钟内的
- function this:ExpRemoveOutTime()
- local time = Time.GetServerTime() - 60000
- local remove_list = {}
- for i, v in pairs(self.exp_list) do
- if i < time then
- self.exp_list[i] = nil
- end
- end
- end
- ---查询1分钟的经验数据
- function this:GetExpNum()
- local num = 0
- for i, v in pairs(self.exp_list) do
- num = num + v
- end
- return num
- end
- return this
|