| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- LevelReward ={}
- local this = {}
- LevelReward.var ={
- HAD_RECEIVE_REWARD = "T$hadreceivereward",
- SERVER_LIMIT_LEVEL_REWARD = "R$serverlimitlevelreward"
- }
- --活动是否开启
- function LevelReward.isActivityOpen(actor)
- local config = ConfigDataManager.getTable("sub_mainActivity","id",7)
- if config == nil then
- return false
- end
- return ConditionManager.Check(actor, config[1].actualcondition)
- end
- --是否页签关闭后的第一天
- function LevelReward.tableOpen(actor)
- local config = ConfigDataManager.getTable("sub_mainActivity","id",7)
- 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 LevelReward.login(actor)
- LevelReward.getLevelRewardInfo(actor)
- end
- ---请求当前已领取信息
- function LevelReward.getLevelRewardInfo(actor)
- if not LevelReward.isActivityOpen(actor) then
- return
- end
- local result = {}
- local rewardInfo = getplaydef(actor,LevelReward.var.HAD_RECEIVE_REWARD) or {}
- result.personInfo = rewardInfo
- local serverInfo = getsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD)
- if not serverInfo then
- setsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD,{})
- serverInfo = getsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD)
- end
- result.serverInfo = serverInfo
- sendluamsg(actor,LuaMessageIdToClient.RES_PERSONAL_LEVEL_REWARD_INFO,table.valueConvertToString(result))
- end
- --请求领取等级奖励
- function LevelReward.receiveLevelReward(actor,msgData)
- local id = msgData.id
- callonserial(actor, "level_reward_receive", id)
- end
- function level_reward_receive(actor,id)
- -- local config = ConfigDataManager.getTable("cfg_activity_levelUp","id",id)
- -- if config == nil then
- -- return
- -- end
- -- local level = getbaseinfo(actor,"level")
- -- local cfgLv = config[1].level
- -- if tonumber(level) < tonumber(cfgLv) then
- -- tipinfo(actor,"等级不足!")
- -- return
- -- end
- -- local reward = {}
- -- local rewardInfo = getplaydef(actor,LevelReward.var.HAD_RECEIVE_REWARD) or {}
- -- local result = rewardInfo[tostring(id)] or {}
- -- if not result.basicItem then
- -- --增加限量判定
- -- local limitNum= config[1].places
- -- if not (limitNum == nil or limitNum == "" or limitNum == "0") then
- -- local nowInfo = getsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD) or {}
- -- local nowNum = nowInfo[tostring(id)] or 0
- -- if nowNum >= tonumber(limitNum) then
- -- tipinfo(actor,"已达到领取上限!")
- -- return
- -- else
- -- nowNum = nowNum + 1
- -- nowInfo[tostring(id)] = nowNum
- -- setsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD,nowInfo)
- -- end
- -- end
- -- string.putIntIntMap(reward,config[1].basicitem,"#","|")
- -- result.basicItem = true
- -- end
- -- if not result.specialItem then
- -- local condition = config[1].conditions
- -- if ConditionManager.Check(actor,condition) then
- -- string.putIntIntMap(reward,config[1].specialitem,"#","|")
- -- result.specialItem = true
- -- else
- -- result.specialItem = false
- -- end
- -- end
- -- --发奖励
- -- if table.count(reward) == 0 then
- -- return
- -- end
- -- for itemCfgId, count in pairs(reward) do
- -- additemtobag(actor, itemCfgId, count,0,9999,'等级奖励')
- -- end
- -- --奖励弹框
- -- sendluamsg(actor, LuaMessageIdToClient.COMMON_REWARD_PANEL, reward)
- -- rewardInfo[tostring(id)] = result
- -- setplaydef(actor,LevelReward.var.HAD_RECEIVE_REWARD,rewardInfo)
- -- --通知客户端
- -- sendluamsg(actor,LuaMessageIdToClient.RES_RECEIVE_LEVEL_REWARD,table.valueConvertToString(rewardInfo))
- -- LevelReward.getLevelRewardInfo(actor)
- end
- --活动结束时发放所有奖励
- function LevelReward.sendAllReward()
- -- local nowInfo = getsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD)
- -- if nowInfo == nil or nowInfo == "" then
- -- return
- -- end
- -- local allRoleInfos = getallrolesummaryinfos()
- -- if allRoleInfos == nil or next(allRoleInfos) == nil then
- -- return
- -- end
- -- local tab = ConfigDataManager.getTable("cfg_activity_levelUp")
- -- for _, roleInfo in pairs(allRoleInfos) do
- -- local reward = {}
- -- local actor = roleInfo["actor"]
- -- if not LevelReward.tableOpen(actor) then
- -- return
- -- end
- -- local hadReward = getplaydef(actor, LevelReward.var.HAD_RECEIVE_REWARD) or {}
- -- if hadReward.lastReward then
- -- return
- -- end
- -- for i = 1,#tab,1 do
- -- local config = tab[i]
- -- local level = getbaseinfo(actor,"level")
- -- local id = config.id
- -- local cfgReward = hadReward[tostring(id)] or {}
- -- if table.count(cfgReward) > 0 then
- -- if cfgReward.specialItem == false and ConditionManager.Check(actor,config.conditions) then
- -- string.putIntIntMap(reward, config.specialitem)
- -- cfgReward.specialItem = true
- -- end
- -- hadReward[tostring(id)] = cfgReward
- -- else
- -- local cfgLv = config.level
- -- if tonumber(level) >= tonumber(cfgLv) then
- -- --判断限定数量
- -- local limitNum= config.places
- -- if not (limitNum == nil or limitNum == "" or limitNum == "0") then
- -- local nowNum = nowInfo[tostring(config.id)] or 0
- -- if nowNum < tonumber(limitNum) then
- -- nowNum = nowNum + 1
- -- nowInfo[tostring(config.id)] = nowNum
- -- setsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD,nowInfo)
- -- string.putIntIntMap(reward, config.basicitem)
- -- cfgReward.basicItem = true
- -- if ConditionManager.Check(actor,config.conditions) then
- -- string.putIntIntMap(reward, config.specialitem)
- -- cfgReward.specialitem = true
- -- end
- -- end
- -- else
- -- string.putIntIntMap(reward, config.basicitem)
- -- cfgReward.basicItem = true
- -- if ConditionManager.Check(actor,config.conditions) then
- -- string.putIntIntMap(reward, config.specialitem)
- -- cfgReward.specialitem = true
- -- end
- -- end
- -- end
- -- end
- -- end
- -- --发邮件
- -- if table.count(reward) > 0 then
- -- sendconfigmailbyrid(actor,getbaseinfo(actor,"rid"), MailConfig.END_TIME_LEVEL_REWARD, reward, "")
- -- end
- -- hadReward.lastReward = true
- -- setplaydef(actor, LevelReward.var.HAD_RECEIVE_REWARD,hadReward)
- -- end
- -- setsysvar(LevelReward.var.SERVER_LIMIT_LEVEL_REWARD,nil)
- -- jprint("补发等级奖励邮件结束")
- end
|