From ec8344394ddd8da7c6cfa5c2a1e836a3d7975e13 Mon Sep 17 00:00:00 2001 From: puxuan <413323644@qq.com> Date: Fri, 24 Oct 2025 17:51:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=8D=87=E6=98=9F=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/global/global_const.lua | 8 +++ lua/app/ui/gm/gm_tool_ui.lua | 6 +- lua/app/userdata/hero/hero_data.lua | 11 ++-- lua/app/userdata/hero/hero_entity.lua | 88 ++++++++++++++++++--------- 4 files changed, 75 insertions(+), 38 deletions(-) diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index 3fed0eae..215eca61 100644 --- a/lua/app/global/global_const.lua +++ b/lua/app/global/global_const.lua @@ -685,6 +685,14 @@ GConst.MATCH_ALL_ATKP_NAME = { [5] = "attr_atkp_purple_all", } +GConst.MATCH_ALL_HPP_NAME = { + [1] = "attr_hpp_red_all", + [2] = "attr_hpp_yellow_all", + [3] = "attr_hpp_green_all", + [4] = "attr_hpp_blue_all", + [5] = "attr_hpp_purple_all", +} + GConst.ALL_ATTR = { ATTR_ATK_ALL = "atk_all", -- 全体英雄攻击(固定值) ATTR_HP_ALL = "attr_hp_all", -- 全体英雄生命(固定值) diff --git a/lua/app/ui/gm/gm_tool_ui.lua b/lua/app/ui/gm/gm_tool_ui.lua index cd4bd0e1..f3603979 100644 --- a/lua/app/ui/gm/gm_tool_ui.lua +++ b/lua/app/ui/gm/gm_tool_ui.lua @@ -85,7 +85,7 @@ function GMToolUI:onRefresh() end end) - skipTutorialCheck:setVisible(LocalData:getTutorialSkip() > 0) + skipTutorialCheck:setActive(LocalData:getTutorialSkip() > 0) skipTutorialBtn:addClickListener(function() if LocalData:getTutorialSkip() == 0 then LocalData:setTutorialSkip(1) @@ -95,7 +95,7 @@ function GMToolUI:onRefresh() skipTutorialCheck:setActive(LocalData:getTutorialSkip() > 0) end) - skipPopCheck:setVisible(LocalData:getTutorialSkip() > 0) + skipPopCheck:setActive(LocalData:getTutorialSkip() > 0) skipPopBtn:addClickListener(function() if LocalData:getFuncOpenPopSkip() == 0 then LocalData:setFuncOpenPopSkip(1) @@ -207,7 +207,7 @@ function GMToolUI:updateTime() -- if not DataManager.PlayerData or not DataManager.PlayerData:getServerOpenTime() then -- return -- end - if not DataManager.PlayerData then + if not DataManager.PlayerData or not Time.serverTimeZone then return end local uiMap = self.root:genAllChildren() diff --git a/lua/app/userdata/hero/hero_data.lua b/lua/app/userdata/hero/hero_data.lua index bb3eda56..c1983290 100644 --- a/lua/app/userdata/hero/hero_data.lua +++ b/lua/app/userdata/hero/hero_data.lua @@ -342,13 +342,12 @@ function HeroData:setTalentAttr(attr) end function HeroData:calcAttr() - self.allAtkpAttr = {} + self.allAtkpAttr = {{}, {}, {}, {}, {}} for heroId, attrs in pairs(self.allAtkpAttrByHero) do - -- self.baseAttrOriginal[ATTR_NAME.ATK_RED] = 0 - local matchType = self.heroes[heroId]:getMatchType() - self.allAtkpAttr[matchType] = self.allAtkpAttr[matchType] or {} - for k,v in pairs(attrs) do - self.allAtkpAttr[matchType][k] = (self.allAtkpAttr[matchType][k] or 0) + v + for matchType, v in ipairs(self.allAtkpAttr) do + for k, vv in pairs(attrs) do + self.allAtkpAttr[matchType][k] = (self.allAtkpAttr[matchType][k] or 0) + vv + end end end diff --git a/lua/app/userdata/hero/hero_entity.lua b/lua/app/userdata/hero/hero_entity.lua index 859fbe50..cc2b866b 100644 --- a/lua/app/userdata/hero/hero_entity.lua +++ b/lua/app/userdata/hero/hero_entity.lua @@ -94,34 +94,45 @@ function HeroEntity:_updateAllAttr() -- 同属性通用加成 self.allAttr[GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_ATK_ALL] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_HP_ALL] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = nil - self.allAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_ATK_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_HP_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = nil + -- self.allAttr[GConst.ALL_ATTR.ATTR_HPP_ALL] = nil + for _, v in pairs(GConst.ALL_ATTR) do + self.allAttr[v] = nil + end -- 攻击力(百分比) local atkType = GConst.MATCH_ATTACK_NAME[self:getMatchType()] - local allAtk = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), GConst.ALL_ATTR.ATTR_ATK_ALL) - local atkpType = GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()] - local allFactorValue = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), atkpType) - local factorValue = self.allAttr[GConst.MATCH_ATTACK_ADD_NAME[self:getMatchType()]] or 0 - local allAtkP = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_ATKP_ALL) + -- 全局增加攻击力 + local allAtk = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_ATK_ALL) local atk = self.allAttr[atkType] + allAtk + -- 全局元素攻击力百分比加成 + local allFactorValue = self:getGlobalAttrByType(GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]) + -- 个人攻击力百分比加成 + local factorValue = self.allAttr[GConst.MATCH_ATTACK_ADD_NAME[self:getMatchType()]] or 0 + -- 全局攻击力百分比加成 + local allAtkP = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_ATKP_ALL) self.allAttr[atkType] = math.floor(atk * (1 + (factorValue + allFactorValue + allAtkP) / GConst.DEFAULT_FACTOR) + 0.0000001) self.allAttr[GConst.MATCH_ATTACK_ADD_NAME[self:getMatchType()]] = nil -- 生命(百分比) local hpType = GConst.MATCH_HP_NAME[self:getMatchType()] - local allHp = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), GConst.ALL_ATTR.ATTR_HP_ALL) - -- local atkpType = GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()] - -- local allFactorValue = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), atkpType) - local factorValue = self.allAttr[GConst.MATCH_HP_ADD_NAME[self:getMatchType()]] or 0 + -- 全局增加生命 + local allHp = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_HP_ALL) local hp = self.allAttr[hpType] + allHp - self.allAttr[hpType] = math.floor(hp * (1 + factorValue / GConst.DEFAULT_FACTOR) + 0.0000001) + -- 全局元素生命百分比加成 + local allFactorValue = self:getGlobalAttrByType(GConst.MATCH_ALL_HPP_NAME[self:getMatchType()]) + -- 个人生命百分比加成 + local factorValue = self.allAttr[GConst.MATCH_HP_ADD_NAME[self:getMatchType()]] or 0 + -- 全局生命百分比加成 + local allHpP = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_HPP_ALL) + self.allAttr[hpType] = math.floor(hp * (1 + (factorValue + allFactorValue + allHpP) / GConst.DEFAULT_FACTOR) + 0.0000001) self.allAttr[GConst.MATCH_HP_ADD_NAME[self:getMatchType()]] = nil self.allAttr[ATTR_NAME.DMGDEC] = (self.allAttr[ATTR_NAME.DMGDEC] or 0) + self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_DMGDEC_ALL) @@ -148,8 +159,9 @@ end -- 更新所有属性(自己) function HeroEntity:_updateAllBaseAttr() self:_updateBaseAttr() + self:_updateLvAttr() self:_updateStarAttr() - self:_updateSkinAttr() + -- self:_updateSkinAttr() self:_updateTotalAttr() -- 处理全局属性 @@ -158,15 +170,18 @@ function HeroEntity:_updateAllBaseAttr() attr[GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]] = self.allBaseAttr[GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]] end - attr[GConst.ALL_ATTR.ATTR_ATK_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATK_ALL] - attr[GConst.ALL_ATTR.ATTR_HP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_HP_ALL] - attr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] - attr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL] - attr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] - attr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] - attr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] - attr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL] - attr[GConst.ALL_ATTR.ATTR_ATK_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATK_ALL] + -- attr[GConst.ALL_ATTR.ATTR_ATK_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATK_ALL] + -- attr[GConst.ALL_ATTR.ATTR_HP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_HP_ALL] + -- attr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] + -- attr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL] + -- attr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] + -- attr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] + -- attr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] + -- attr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL] + -- attr[GConst.ALL_ATTR.ATTR_HPP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_HPP_ALL] + for _, v in pairs(GConst.ALL_ATTR) do + attr[v] = self.allBaseAttr[v] + end DataManager.HeroData:setHeroAttr(self:getCfgId(), attr) end @@ -182,7 +197,19 @@ function HeroEntity:_updateBaseAttr() self.baseAttrOriginal[GConst.MATCH_ATTACK_NAME[self.config.position]] = self:getCfgAtk() end --- 更新皮肤属性 +-- 更新升级属性 +function HeroEntity:_updateLvAttr() + self.lvAttr = {} + local lvPoint = self:getLvAttrPointList() + for i = 1, #lvPoint do + if self.data.lv >= lvPoint[i] then + local attr = self:getLvAttrCfg(i) + self.lvAttr[attr.type] = (self.lvAttr[attr.type] or 0) + attr.num + end + end +end + +-- 更新升星属性 function HeroEntity:_updateStarAttr() self.starAttr = {} for i = 1, self.data.star do @@ -244,6 +271,9 @@ function HeroEntity:_updateTotalAttr() for k, v in pairs(self.baseAttrOriginal) do self.allBaseAttr[k] = (self.allBaseAttr[k] or 0) + v end + for k, v in pairs(self.lvAttr) do + self.allBaseAttr[k] = (self.allBaseAttr[k] or 0) + v + end for k, v in pairs(self.starAttr) do self.allBaseAttr[k] = (self.allBaseAttr[k] or 0) + v end