-------------------------------- -- 文件名 : MaiDianLogic.lua -- 文件说明 : 埋点处理 -- 创建时间 : 2024/12/03 -- 创建人 : FC -------------------------------- local MaiDianDefine = require("MaiDian.MaiDianDefine") local Util = require("common.Util") local Log = require("common.Log") -- 埋点玩家信息 tMaiDianPlay = { --[[ [human.db._id] = { [类型] = value -- 当前类型所在的值 } ]] } -- 写日志 local function MaiDian_WriteLog(sztext) Log.write(Log.LOGID_OSS_MAIDIAN, sztext) end -- 排序 local function MainDian_Sort(l, r) return l.key < r.key end -- 定时写日志 function MaiDian_OnTime() print("[MaiDian_OnTime] 写日志开始") if not tMaiDianPlay or not _G.next(tMaiDianPlay) then print("[MaiDian_OnTime] 无数据直接返回") return end local tTotalInfo = {} -- 先汇总 for _, tTypeData in pairs(tMaiDianPlay) do for nType, v in pairs(tTypeData) do if not tTotalInfo[nType] then tTotalInfo[nType] = {} end if not tTotalInfo[nType][v] then tTotalInfo[nType][v] = { key = v, nValue = 0 } end tTotalInfo[nType][v].nValue = tTotalInfo[nType][v].nValue + 1 end end local tSortData ={} for nType, tData in pairs(tTotalInfo) do if not tSortData[nType] then tSortData[nType] = {} end for key, v in pairs(tData) do table.insert(tSortData[nType], v) end table.sort(tSortData[nType], MainDian_Sort) end for nType, tData in pairs(tSortData) do local sztext = " nType = "..nType.." " for key, v in pairs(tData) do sztext = sztext.."{"..v.key..","..v.nValue.."}," end MaiDian_WriteLog(sztext) end print("[MaiDian_OnTime] 写日志结束 ") -- 重置 tMaiDianPlay = {} end -- 回调 function MaiDian_Begin(human, nType, tData) if not human or MaiDianDefine.MAIDIAN_TYPE_MIN > nType or MaiDianDefine.MAIDIAN_TYPE_MAX < nType or not tData then return end if "table" ~= type(tData) then print("[MaiDian_Begin] 不正确的value") return end local nValue = tData.nValue local nHumanID = human.db._id if not tMaiDianPlay[nHumanID] then tMaiDianPlay[nHumanID] = {} end tMaiDianPlay[nHumanID][nType] = nValue end