SevenLogin ={} local this = {} SevenLogin.var ={ LOGIN_ACTIVITY_INFO = "T$loginactivityinfo", } --活动是否开启 function SevenLogin.isActivityOpen(actor) local config = ConfigDataManager.getTable("sub_mainActivity","id",6) if config == nil then return false end return ConditionManager.Check(actor, config[1].actualcondition) end --页签是否开启 function SevenLogin.tableOpen(actor) local config = ConfigDataManager.getTable("sub_mainActivity","id",6) if config == nil then return nil end if config then local condition = config[1].showcondition local map = string.putIntIntMap({},condition,"#","&") local time = map[903] local serverOpenDays = getbaseinfo(actor, "serveropendays") if time + 1 == tonumber(serverOpenDays) then return true end end return nil end function SevenLogin.login(actor) SevenLogin.updateLoginInfo(actor) end --玩家凌晨在线时需要更新一次 function SevenLogin.midNightUpdate(actor) SevenLogin.updateLoginInfo(actor) end ---更新登录信息 function SevenLogin.updateLoginInfo(actor) if not SevenLogin.isActivityOpen(actor) then return end local result = {} local rewardInfo = getplaydef(actor,SevenLogin.var.LOGIN_ACTIVITY_INFO) if not rewardInfo then rewardInfo = {} rewardInfo.countDay = 1 rewardInfo.hadReceiveReward = {} rewardInfo.lastLoginTime = getbaseinfo("now") end --校验登录时间是否跨天 local now = getbaseinfo("now") local lastLoginTime = rewardInfo.lastLoginTime if not TimeUtil.isSameDay4Millis(now, lastLoginTime) then rewardInfo.countDay = rewardInfo.countDay + 1 rewardInfo.lastLoginTime = now end setplaydef(actor,SevenLogin.var.LOGIN_ACTIVITY_INFO,rewardInfo) --通知客户端 result.countDay = rewardInfo.countDay result.hadReceiveReward = rewardInfo.hadReceiveReward sendluamsg(actor,LuaMessageIdToClient.RES_LOGIN_REWARD_INFO_CHANGE,result) end --请求领取登录奖励 function SevenLogin.receiveLoginReward(actor,msgData) -- if not SevenLogin.isActivityOpen(actor) then -- tipinfo(actor,"活动未开启!") -- return -- end -- local id = msgData.id -- local config = ConfigDataManager.getTable("cfg_accumulateLogOn","id",id) -- if not config then -- return -- end -- local rewardInfo = getplaydef(actor,SevenLogin.var.LOGIN_ACTIVITY_INFO) -- if rewardInfo.countDay < tonumber(config[1].accumulateday) then -- tipinfo(actor, "登录天数不足!") -- return -- end -- if table.contains(rewardInfo.hadReceiveReward, tonumber(id)) then -- tipinfo(actor,"不要重复领取!") -- return -- end -- --发奖励 -- local reward = string.putIntIntMap({},config[1].reward,"#","|") -- for itemCfgId, count in pairs(reward) do -- additemtobag(actor, itemCfgId, count, 0, 9999, '7日登录') -- end -- --奖励弹框 -- sendluamsg(actor, LuaMessageIdToClient.COMMON_REWARD_PANEL, reward) -- table.insert(rewardInfo.hadReceiveReward,tonumber(id)) -- setplaydef(actor,SevenLogin.var.LOGIN_ACTIVITY_INFO,rewardInfo) -- --通知客户端 -- local result = {} -- result.countDay = rewardInfo.countDay -- result.hadReceiveReward = rewardInfo.hadReceiveReward -- sendluamsg(actor,LuaMessageIdToClient.RES_RECEIVE_LOGIN_REWARD,result) end --活动结束时邮件发放奖励 function SevenLogin.sendReward() -- local allRoleInfos = getallrolesummaryinfos() -- if allRoleInfos == nil or next(allRoleInfos) == nil then -- return -- end -- for _, roleInfo in pairs(allRoleInfos) do -- local reward = {} -- local actor = roleInfo["actor"] -- if not SevenLogin.tableOpen(actor) then -- return -- end -- local rewardInfo = getplaydef(actor,SevenLogin.var.LOGIN_ACTIVITY_INFO) -- if rewardInfo == nil or rewardInfo == "" then -- rewardInfo = {} -- end -- local countDay = rewardInfo.countDay or 0 -- if countDay > 0 then -- local config = ConfigDataManager.getTable("cfg_accumulateLogOn") -- for _, cfg in pairs(config) do -- if not table.contains(rewardInfo.hadReceiveReward, tonumber(cfg.id)) then -- if tonumber(cfg.accumulateday) <= countDay then -- string.putIntIntMap(reward, cfg.reward) -- end -- end -- end -- end -- if table.count(reward) > 0 then -- sendconfigmailbyrid(actor, getbaseinfo(actor, "rid"), MailConfig.END_TIME_LOGIN_REWARD, reward, "") -- end -- setplaydef(actor, SevenLogin.var.LOGIN_ACTIVITY_INFO, nil) -- end -- jprint("补发七日登录奖励邮件结束") end