Procházet zdrojové kódy

修复 drumblasting报错 以及修复战报功能

mafei před 1 rokem
rodič
revize
d12047f875

+ 3 - 2
script/module/absAct/DrumBlastingLogic.lua

@@ -355,11 +355,12 @@ function updateDaily(human,id)
 
     AbsActLogic.checkAbsActClean(human, id)
 
-    local absAct = human.db.absAct[id]
+    local absAct = human.db.absAct[id] or {}
     absAct.drum = {} 
     absAct.blasting = {} 
     absAct.box = absAct.box or {} 
-    absAct.blastingCnt = absAct.blastingCnt or 0 
+    absAct.blastingCnt = absAct.blastingCnt or 0
+    human.db.absAct[id] = absAct
 end
 
 function isRed(human, YYInfo, funcConfig)

+ 118 - 161
script/module/hero/HeroDefine.lua

@@ -4,200 +4,157 @@ local HeroAttrExcel = require("excel.hero").attr
 local HeroSpecialExcel = require("excel.hero").specialHero
 local PfLogic = require("platform.PfLogic")
 local HeroGrid = require("hero.HeroGrid")
-local DrawCardExcel = require("excel.drawCard").drawCard
-local Log = require("common.Log")
-Json = Json or require("common.Json")
-
-HERO_BAG_CNT = 150             -- 背包默认的数值:60
-HERO_BAG_BUY_ADD_CNT = 10      -- 英雄背包每次购买增加5格
-PAGE_HERO_COUNT = 30           --英雄背包每次发送的数量
-BUY_CAP_CNT = 40               --玩家购买英雄容量的次数
-JIHUO_SHUIJING_NEEDLV = 40     --激活水晶所需等级
-DEFAULT_SHUIJING_GET = 20011   --激活后默认获得的装备ID
+
+HERO_BAG_CNT = 150				 -- 背包默认的数值:60
+HERO_BAG_BUY_ADD_CNT = 10		 -- 英雄背包每次购买增加5格
+PAGE_HERO_COUNT = 30			 --英雄背包每次发送的数量
+BUY_CAP_CNT = 40                 --玩家购买英雄容量的次数
+JIHUO_SHUIJING_NEEDLV = 40	     --激活水晶所需等级
+DEFAULT_SHUIJING_GET = 20011	 --激活后默认获得的装备ID
 DEFAULT_SHENQI_UPLV_BACK = 165 --神器升级后的返还物ID
 HERO_SKIN_CNT = 999
 
 SHUIJING_UP_LV_LOCK = 2 -- 升级为原有水晶
 
 WEIGHTLV2HEROS = {}
-GRADEHEROS = {}         --品质英雄列表
-HEROELITE = {}          --精英英雄列表
-WEIGHTLV2CAMPHEROS = {} --英雄道具碎片抽奖[权重][阵营]
-ATTRHEROS = {}          -- 属性列表
+HEROELITE = {} --精英英雄列表
+WEIGHTLV2CAMPHEROS = {}   --英雄道具碎片抽奖[权重][阵营]
+ATTRHEROS = {}  -- 属性列表
 
 -- 判断是否为英雄
 function isHero(id)
-    local heroConfig = HeroExcel[id]
-    if not heroConfig then return end
-    return id and HeroExcel[id]
+	local heroConfig = HeroExcel[id]
+	if not heroConfig then return end
+	return id and HeroExcel[id]
 end
 
 -- 获得配置
 function getConfig(id)
-    if not id then return end
-    return HeroExcel[id]
+	if not id then return end
+	return HeroExcel[id]
 end
 
 -- 获取英雄星级区间
 function getAttrConfig(id, star)
-    local config = getConfig(id)
-    if not config then return end
-
-    if not ATTRHEROS[id] then
-        return HeroAttrExcel[0]
-    end
-
-    local attrID = ATTRHEROS[id][star]
-    if not attrID then
-        --assert(nil, "getAttrConfig attrID is nil")
-        return
-    end
+   local config = getConfig(id)
+   if not config then return end
+
+   if not ATTRHEROS[id] then
+      return HeroAttrExcel[0]
+   end
+   
+   local attrID = ATTRHEROS[id][star]
+   if not attrID then 
+      --assert(nil, "getAttrConfig attrID is nil")
+      return
+   end
+
+   local attrConfig = HeroAttrExcel[attrID]
+   if not attrConfig then
+      --assert(nil, "attrConfig is nil")
+      return
+   end
+
+   return attrConfig
+end
 
-    local attrConfig = HeroAttrExcel[attrID]
-    if not attrConfig then
-        --assert(nil, "attrConfig is nil")
-        return
+function getMaxHeroStar(id)
+    local star = HeroExcel[id].star
+    local uplimit = 20
+    while true do 
+        if star >= uplimit or not getNextAttrConfig(id,star) then 
+            break
+        end
+        star = star + 1
     end
-
-    return attrConfig
+    return star
 end
 
 -- 获取下一星级 属性配置
 function getNextAttrConfig(id, star)
-    local config = getConfig(id)
-    if not config then return end
-
-    if not ATTRHEROS[id] then
-        return HeroAttrExcel[0]
-    end
-
-    local attrID = ATTRHEROS[id][star]
-    if not attrID then
-        return
-    end
-    --没有下一星级升星配置
-    local attrConfig = HeroAttrExcel[attrID]
-    local cond = #attrConfig.cond
-    if cond <= 0 then return end
-
-    star = star + 1
-    attrID = ATTRHEROS[id][star]
-    if not attrID then
-        return
-    end
-    attrConfig = HeroAttrExcel[attrID]
-
-    return attrConfig
+   local config = getConfig(id)
+   if not config then return end
+
+   if not ATTRHEROS[id] then
+      return HeroAttrExcel[0]
+   end
+
+   local attrID = ATTRHEROS[id][star]
+   if not attrID then 
+      return
+   end
+   --没有下一星级升星配置
+   local attrConfig = HeroAttrExcel[attrID]
+   local cond = #attrConfig.cond
+   if cond <= 0 then return end
+
+   star = star + 1
+   attrID = ATTRHEROS[id][star]
+   if not attrID then 
+      return
+   end
+   attrConfig = HeroAttrExcel[attrID]
+
+   return attrConfig
 end
 
-function isInTable(value, tb)
-    for k, v in pairs(tb) do
-        if v == value then
-            return true
-        end
-    end
-    return false --重点:全部跑完以后,如果非true,则返回false
-end
 
 function initAfterHot()
-    -- 初始化英雄属性列表
+	-- 初始化英雄属性列表
     ATTRHEROS = {}
-    for k, v in pairs(HeroAttrExcel) do
+	for k,v in pairs(HeroAttrExcel) do
         ATTRHEROS[v.heroID] = ATTRHEROS[v.heroID] or {}
         ATTRHEROS[v.heroID][v.star] = k
-    end
-
-    for i = 1, 20 do
-        WEIGHTLV2HEROS[i] = nil
-    end
-
-    for i = 1, 5 do
-        GRADEHEROS[i] = nil
-    end
+	end
+    
+    for i = 1,20 do
+		WEIGHTLV2HEROS[i] = nil
+	end
 
-    HEROELITE = {}
 
-    local drawCardConfig = DrawCardExcel[2]
-    local pool = drawCardConfig.pool
+	HEROELITE = {}
 
     local len = 0
-    for k, v in pairs(HeroExcel) do
-        if v.weightLv > 0 then
-            WEIGHTLV2HEROS[v.weightLv] = WEIGHTLV2HEROS[v.weightLv] or {}
-            WEIGHTLV2HEROS[v.weightLv][#WEIGHTLV2HEROS[v.weightLv] + 1] = k
+	for k, v in pairs(HeroExcel) do
+		if v.weightLv > 0 then
+			WEIGHTLV2HEROS[v.weightLv] = WEIGHTLV2HEROS[v.weightLv] or {}
+			WEIGHTLV2HEROS[v.weightLv][#WEIGHTLV2HEROS[v.weightLv] + 1] = k
 
-            WEIGHTLV2CAMPHEROS[v.weightLv] = WEIGHTLV2CAMPHEROS[v.weightLv] or {}
+			WEIGHTLV2CAMPHEROS[v.weightLv] = WEIGHTLV2CAMPHEROS[v.weightLv] or {}
             WEIGHTLV2CAMPHEROS[v.weightLv][v.camp] = WEIGHTLV2CAMPHEROS[v.weightLv][v.camp] or {}
 
-            WEIGHTLV2CAMPHEROS[v.weightLv][v.camp][#WEIGHTLV2CAMPHEROS[v.weightLv][v.camp] + 1] = k
-        end
-
-        if v.weightLv > 0 then
-            if isInTable(k, pool) then
-                --定义阵营以及品质
-                GRADEHEROS[v.camp] = GRADEHEROS[v.camp] or {}
-                GRADEHEROS[v.camp][v.grade] = GRADEHEROS[v.camp][v.grade] or {}
-                GRADEHEROS[v.camp][v.grade][#GRADEHEROS[v.camp][v.grade] + 1] = k
-            end
-        end
-
-        if v.isElite == 1 and v.weightLv > 0 then
+			WEIGHTLV2CAMPHEROS[v.weightLv][v.camp][#WEIGHTLV2CAMPHEROS[v.weightLv][v.camp] + 1] = k
+		end
+		
+		if v.isElite == 1 and v.weightLv > 0 then
             len = len + 1
-            HEROELITE[len] = k
-        end
-    end
+		    HEROELITE[len] = k
+		end
+	end
 end
 
 function getRandHeroByWeightLv(weightLv)
-    if WEIGHTLV2HEROS[weightLv] then
-        local r = math.random(1, #WEIGHTLV2HEROS[weightLv])
-        return WEIGHTLV2HEROS[weightLv][r]
-    end
-end
-
-function getRandHeroByGradeAndCamp(grade, camp)
-    local heroId = nil
-    if GRADEHEROS[camp] then
-        if GRADEHEROS[camp][grade] then
-            local gradeIndex = math.random(1, #GRADEHEROS[camp][grade])
-            heroId =  GRADEHEROS[camp][grade][gradeIndex]
-        end
-    end
-
-    -- local heroId = nil --测试
-    if heroId ~= nil then
-        return heroId
-    end
-
-    local isHasHeroList = {}
-    for k, v in pairs(GRADEHEROS) do
-        local isHasHero = GRADEHEROS[k][grade] or nil
-        if isHasHero ~= nil then
-            isHasHeroList[#isHasHeroList + 1] = k
-        end
-    end
-
-    local r = math.random(1,#isHasHeroList)
-    local newCamp = isHasHeroList[r]
-    local gradeIndex = math.random(1, #GRADEHEROS[newCamp][grade])
-    return GRADEHEROS[newCamp][grade][gradeIndex]
+	if WEIGHTLV2HEROS[weightLv] then
+		local r = math.random(1,#WEIGHTLV2HEROS[weightLv])
+		return WEIGHTLV2HEROS[weightLv][r]
+	end
 end
 
 function getRandHeroByWeightLvAndCamp(weightLv, camp)
-    if camp == 0 then
+    if camp == 0 then 
         return getRandHeroByWeightLv(weightLv)
     end
 
-    if WEIGHTLV2CAMPHEROS[weightLv] then
+	if WEIGHTLV2CAMPHEROS[weightLv] then
         if WEIGHTLV2CAMPHEROS[weightLv][camp] then
-            local r = math.random(1, #WEIGHTLV2CAMPHEROS[weightLv][camp])
-            return WEIGHTLV2CAMPHEROS[weightLv][camp][r]
+            local r = math.random(1,#WEIGHTLV2CAMPHEROS[weightLv][camp])
+		    return WEIGHTLV2CAMPHEROS[weightLv][camp][r]
         end
-    end
+	end
 end
 
 function getHeroByWeightLvAndCamp(weightLv, camp)
-    if camp == 0 then
+    if camp == 0 then 
         return WEIGHTLV2HEROS[weightLv]
     end
 
@@ -205,27 +162,27 @@ function getHeroByWeightLvAndCamp(weightLv, camp)
 end
 
 function getRandHeroByIsElite()
-    if HEROELITE then
-        local r = math.random(1, #HEROELITE)
-        return HEROELITE[r]
-    end
+	if HEROELITE then
+		local r = math.random(1,#HEROELITE)
+		return HEROELITE[r]
+	end
 end
 
 -- 获取图鉴属性最大值
 local TUJIAN_KEY_2_MAXVALUE = nil
 function getTujianMaxValue(key)
-    if not TUJIAN_KEY_2_MAXVALUE then
-        TUJIAN_KEY_2_MAXVALUE = {}
-        for heroID in pairs(HeroSpecialExcel) do
-            local heroGrid = HeroGrid.getCacheHeroGridTujian(heroID)
-            if heroGrid and heroGrid.attrs then
-                for k, v in pairs(heroGrid.attrs) do
-                    if v > (TUJIAN_KEY_2_MAXVALUE[k] or 0) then
-                        TUJIAN_KEY_2_MAXVALUE[k] = v
-                    end
-                end
-            end
-        end
-    end
-    return TUJIAN_KEY_2_MAXVALUE[key] or 0
-end
+	if not TUJIAN_KEY_2_MAXVALUE then
+		TUJIAN_KEY_2_MAXVALUE = {}
+		for heroID in pairs(HeroSpecialExcel) do
+			local heroGrid = HeroGrid.getCacheHeroGridTujian(heroID)
+			if heroGrid and heroGrid.attrs then
+				for k, v in pairs(heroGrid.attrs) do
+					if v > (TUJIAN_KEY_2_MAXVALUE[k] or 0) then
+						TUJIAN_KEY_2_MAXVALUE[k] = v
+					end
+				end
+			end
+		end
+	end
+	return TUJIAN_KEY_2_MAXVALUE[key] or 0
+end

+ 5 - 8
script/module/lostTemple/lostTempleLogic.lua

@@ -112,12 +112,9 @@ local DB_DATA = { }
 function dbSave(human)
     if not human.lostTemple then return end
     if not human.db then return end
-    QueryByUuid._id = human.db._id
-    -- 设置upsert为true 如果未找到则插入
-    LuaMongo.update(DB.db_lost_temple, QueryByUuid, human.lostTemple,true)
 
-    --DB_DATA = { }
-    --[[LuaMongo.find(DB.db_lost_temple, QueryByUuid)
+    DB_DATA = { }
+    LuaMongo.find(DB.db_lost_temple, QueryByUuid)
     if not LuaMongo.next(DB_DATA) then
         human.lostTemple._id = human.db._id
         LuaMongo.insert(DB.db_lost_temple, human.lostTemple)
@@ -125,8 +122,7 @@ function dbSave(human)
     end
 
     QueryByUuid._id = human.db._id
-    LuaMongo.update(DB.db_lost_temple, QueryByUuid, human.lostTemple)]]
-
+    LuaMongo.update(DB.db_lost_temple, QueryByUuid, human.lostTemple)
 end
 
 -- db
@@ -273,7 +269,8 @@ local function makeSummonHeroGrid(human)
                 summonHero[len] = { }
                 summonHero[len].id = weightHeroTb[i][1]
                 summonHero[len].lv = weightHeroTb[i][2]
-                summonHero[len].star = weightHeroTb[i][3]
+                local maxStar = HeroDefine.getMaxHeroStar(weightHeroTb[i][1])
+                summonHero[len].star = maxStar > weightHeroTb[i][3] and  weightHeroTb[i][3] or maxStar
 
                 -- ���һ�����뵽 ��һ������ ɾ�����һ��
                 totalWeight = totalWeight - weightHeroTb[i][4]

+ 2 - 1
script/module/warReport/WarReportLogic.lua

@@ -112,11 +112,12 @@ end
 function initAfterStart()
    -- ���������
    if _G.is_middle ~= true then
-      return
+      --return
    end
 
    -- ���Ӽ�¼����
    local war_count_data = {}
+   local war_count_query = { war = 1 }
    LuaMongo.find(DB.db_war_report, war_count_query)
    if LuaMongo.next(war_count_data) then
       return