niexx 1 an în urmă
părinte
comite
23d4e653af

+ 3 - 1
script/module/MaiDian/MaiDianDefine.lua

@@ -13,7 +13,9 @@ MAIDIAN_TYPE_BATTLE = 1
 MAIDIAN_TYPE_LV = 2
 MAIDIAN_TYPE_GUIDE = 3
 MAIDIAN_TYPE_BUY = 4
-MAIDIAN_TYPE_MAX = 4
+MAIDIAN_TYPE_ADV_SUMMON = 5
+MAIDIAN_TYPE_CHEST_OPEN  = 6 
+MAIDIAN_TYPE_MAX = 6
 
 -- 统计的战斗类型-普通
 MAIDIAN_TYPE_BATTLE_COMMON = 1

+ 72 - 2
script/module/MaiDian/MaiDianLogic.lua

@@ -18,6 +18,16 @@ tMaiDianPlay =
         }
     ]]
 }
+-- 埋点区间
+local RANGES = {
+    {1,10},    -- 1-10次
+    {11,30},   -- 11-30次
+    {31,50},   -- 31-50次
+    {51,100},  -- 51-100次
+    {101,200}, -- 101-200次
+    {201,500}, -- 201-500次
+    {501, math.huge} -- 500+次 (math.huge表示无限大)
+}
 
 -- 写日志
 local function MaiDian_WriteLog(sztext)
@@ -56,7 +66,7 @@ function MaiDian_OnTime()
             tTotalInfo[nType][v].nValue = tTotalInfo[nType][v].nValue + 1
         end
     end
-
+    print("[MaiDian_OnTime] 汇总结束")
     local tSortData ={}
     for nType, tData in pairs(tTotalInfo) do
         if not tSortData[nType] then
@@ -69,6 +79,48 @@ function MaiDian_OnTime()
         
         table.sort(tSortData[nType], MainDian_Sort)
     end
+     -- 新增区间统计
+     local tRangeStats = {
+        [MaiDianDefine.MAIDIAN_TYPE_ADV_SUMMON] = {},
+        [MaiDianDefine.MAIDIAN_TYPE_CHEST_OPEN] = {}
+    }
+
+    -- 初始化区间计数器
+    for _, range in ipairs(RANGES) do
+        local rangeKey = range[1].."-"..(range[2] == math.huge and "+" or range[2])
+        tRangeStats[MaiDianDefine.MAIDIAN_TYPE_ADV_SUMMON][rangeKey] = 0
+        tRangeStats[MaiDianDefine.MAIDIAN_TYPE_CHEST_OPEN][rangeKey] = 0
+    end
+
+    -- 统计玩家累计值
+    local tPlayerTotals = {}
+    for playerId, tData in pairs(tMaiDianPlay) do
+        tPlayerTotals[playerId] = {
+            [MaiDianDefine.MAIDIAN_TYPE_ADV_SUMMON] = 0,
+            [MaiDianDefine.MAIDIAN_TYPE_CHEST_OPEN] = 0
+        }
+        
+        for nType, nValue in pairs(tData) do
+            if nType == MaiDianDefine.MAIDIAN_TYPE_ADV_SUMMON 
+               or nType == MaiDianDefine.MAIDIAN_TYPE_CHEST_OPEN then
+                tPlayerTotals[playerId][nType] = (tPlayerTotals[playerId][nType] or 0) + nValue
+            end
+        end
+    end
+    print("[MaiDian_OnTime] 统计玩家累计值结束")
+    -- 计算区间分布
+    for playerId, totals in pairs(tPlayerTotals) do
+        for nType, total in pairs(totals) do
+            for _, range in ipairs(RANGES) do
+                if total >= range[1] and total <= range[2] then
+                    local rangeKey = range[1].."-"..(range[2] == math.huge and "+" or range[2])
+                    tRangeStats[nType][rangeKey] = tRangeStats[nType][rangeKey] + 1
+                    break
+                end
+            end
+        end
+    end
+    print("[MaiDian_OnTime] 计算区间分布结束")
 
     for nType, tData in pairs(tSortData) do
         local sztext = " nType = "..nType.." "
@@ -78,6 +130,15 @@ function MaiDian_OnTime()
         MaiDian_WriteLog(sztext)
     end
 
+    for nType, ranges in pairs(tRangeStats) do
+        local szType = nType == MaiDianDefine.MAIDIAN_TYPE_ADV_SUMMON and "高级召唤" or "宝箱开启"
+        local sztext = "[区间统计] "..szType.." "
+        for rangeKey, count in pairs(ranges) do
+            sztext = sztext..rangeKey.."="..count.." "
+        end
+        MaiDian_WriteLog(sztext)
+    end
+    print("[MaiDian_OnTime] 区间统计结束")
     print("[MaiDian_OnTime] 写日志结束 ")
     -- 重置
     tMaiDianPlay = {}
@@ -100,6 +161,15 @@ function MaiDian_Begin(human, nType, tData)
     if not tMaiDianPlay[nHumanID] then
         tMaiDianPlay[nHumanID] = {}
     end
+    local nType = tMaiDianPlay[nHumanID]
+
+    if nType == MaiDianDefine.MAIDIAN_TYPE_ADV_SUMMON or nType == MaiDianDefine.MAIDIAN_TYPE_CHEST_OPEN then
+       tMaiDianPlay[nHumanID][nType] = (tMaiDianPlay[nHumanID][nType] or 0) + nValue
+       return
+    end
+    tMaiDianPlay[nHumanID][nType] =  nValue
+end
 
-    tMaiDianPlay[nHumanID][nType] = nValue
+function MaiDianLogic_GM()
+    MaiDian_OnTime()
 end

+ 5 - 0
script/module/chat/Gm.lua

@@ -25,6 +25,7 @@ local NewFirstCharge = require("present.NewFirstChargeLogic")
 local ActPowerUp = require("present.OpenServerActPowerUp")
 local FestivalSevenDayCardLogic = require("absAct.FestivalSevenDayCardLogic")
 local TreasureChestLogic = require("treasurechest.TreasureChestLogic")
+local MaiDianLogic = require("MaiDian.MaiDianLogic")
 
 d3 = {}
 
@@ -1982,4 +1983,8 @@ function d3.delBonusTime(human)
     end
 
     CommonDB.setFireWorkBonusTime(0)
+end
+
+function d3.writeLog(human)
+	MaiDianLogic.MaiDianLogic_GM()
 end

+ 6 - 1
script/module/drawCard/DrawCardLogic.lua

@@ -53,7 +53,8 @@ local HeroComeLogic = require("absAct.HeroComeLogic")
 local NewHeroLogic = require("absAct.NewHeroLogic")
 Json = Json or require("common.Json")
 local TalismanLogic = require("talisman.TalismanLogic")
-
+local MainDianLogic = require("MaiDian.MaiDianLogic")
+local MaiDianDefine = require("MaiDian.MaiDianDefine")
 
 DRAWCARD_ID0 = 0	-- 积分召唤
 DRAWCARD_ID1 = 1	-- 基础召唤
@@ -600,6 +601,10 @@ local function draw(human, id, op, actConfig, skip,isAct)
         return
     end
 
+    if id == DRAWCARD_ID2 then
+        MainDianLogic.MaiDian_Begin(human, MaiDianDefine.MAIDIAN_TYPE_BATTLE,{nValue = heroCnt})  
+    end
+
     setSkip(human, id, skip)
 
     local heroLen = 0