------------------------------------------------------ -- 在线时长上报 ------------------------------------------------------ local Util = require("common.Util") local Msg = require("core.Msg") local ObjHuman = require("core.ObjHuman") local REPORT_PER_TIME = 1800 -- 本日在线时间 -- 每1800秒上报1次 function checkReportOnline(human) if not human.db then return end local nowTime = os.time() local time = nowTime - math.max(human.db.lastLoginTime, Util.getDayStartTime(nowTime)) local oltime = (human.db.onlineTimeDay or 0) + time local oltimecnt = math.floor(oltime / REPORT_PER_TIME) local reportTime = oltimecnt * REPORT_PER_TIME if reportTime <= (human.db.onlineTimeDayReport or 0) then return end human.db.onlineTimeDayReport = reportTime local msgRet = Msg.gc.GC_ONLINETIME_REPORT msgRet.time = reportTime Msg.send(msgRet, human.fd) end function onTimer() for _, human in pairs(ObjHuman.onlineUuid) do checkReportOnline(human) end end function onLogin(human) checkReportOnline(human) end