Commit fb3d084dbe61baecc5d20fa5c223d52c9aeb50e1
1 parent
1a0b3c56
月卡赛季卡发送邮件奖励
Showing
9 changed files
with
148 additions
and
70 deletions
Show diff stats
src/GlobalVar.lua
| @@ -2,6 +2,7 @@ XXTEA_KEY = "699D448D6D24f7F941E9F6E99F823E18" | @@ -2,6 +2,7 @@ XXTEA_KEY = "699D448D6D24f7F941E9F6E99F823E18" | ||
| 2 | RESET_TIME = 0 | 2 | RESET_TIME = 0 |
| 3 | 3 | ||
| 4 | START_RESET_TIME_BASE = 1584316800 -- 0时区 | 4 | START_RESET_TIME_BASE = 1584316800 -- 0时区 |
| 5 | +DAY_SEC = 86400 | ||
| 5 | TIME_ZONE = math.floor(os.difftime(START_RESET_TIME_BASE, os.time(os.date("!*t", START_RESET_TIME_BASE))) / 3600) -- 本地时区 | 6 | TIME_ZONE = math.floor(os.difftime(START_RESET_TIME_BASE, os.time(os.date("!*t", START_RESET_TIME_BASE))) / 3600) -- 本地时区 |
| 6 | 7 | ||
| 7 | START_RESET_TIME = START_RESET_TIME_BASE - TIME_ZONE * 3600 | 8 | START_RESET_TIME = START_RESET_TIME_BASE - TIME_ZONE * 3600 |
src/actions/GmAction.lua
| @@ -512,12 +512,11 @@ function _M.helpRpc(agent, data) | @@ -512,12 +512,11 @@ function _M.helpRpc(agent, data) | ||
| 512 | return true | 512 | return true |
| 513 | end | 513 | end |
| 514 | 514 | ||
| 515 | -table.insert(helpDes, {"测试", "test", ""}) | ||
| 516 | function _M.test(role, pms) | 515 | function _M.test(role, pms) |
| 517 | local id = tonum(pms.pm1, 0) | 516 | local id = tonum(pms.pm1, 0) |
| 518 | --local hero = require ("actions.HeroAction") | 517 | --local hero = require ("actions.HeroAction") |
| 519 | --hero.unlockPoolRpc({role = role}, MsgPack.pack({type = id})) | 518 | --hero.unlockPoolRpc({role = role}, MsgPack.pack({type = id})) |
| 520 | - role.storeData:resetStoreReored(id) | 519 | + role.storeData:resetStoreReored(21) |
| 521 | return "成功" | 520 | return "成功" |
| 522 | end | 521 | end |
| 523 | 522 |
src/actions/HeroAction.lua
| @@ -1070,10 +1070,11 @@ function _M.repayHeroRpc(agent, data) | @@ -1070,10 +1070,11 @@ function _M.repayHeroRpc(agent, data) | ||
| 1070 | local role = agent.role | 1070 | local role = agent.role |
| 1071 | 1071 | ||
| 1072 | local repayHero = role:getProperty("repayHero") | 1072 | local repayHero = role:getProperty("repayHero") |
| 1073 | - if repayHero < globalCsv.draw_free_count then | 1073 | + local cnt = globalCsv.draw_times_to_get_ssr or 100 |
| 1074 | + if repayHero < cnt then | ||
| 1074 | return | 1075 | return |
| 1075 | end | 1076 | end |
| 1076 | - local result = repayHero - globalCsv.draw_free_count | 1077 | + local result = repayHero - cnt |
| 1077 | 1078 | ||
| 1078 | role:updateProperty({field = "repayHero", value = result}) | 1079 | role:updateProperty({field = "repayHero", value = result}) |
| 1079 | local id = math.randWeight(csvdb["build_giftCsv"], "pool_1") | 1080 | local id = math.randWeight(csvdb["build_giftCsv"], "pool_1") |
| @@ -1113,7 +1114,7 @@ function _M.unlockPoolRpc(agent, data) | @@ -1113,7 +1114,7 @@ function _M.unlockPoolRpc(agent, data) | ||
| 1113 | end | 1114 | end |
| 1114 | 1115 | ||
| 1115 | if needCost then | 1116 | if needCost then |
| 1116 | - if not role:costDiamond({count = 300, log = {desc = "unlockPool", short1 = type}}) then | 1117 | + if not role:costDiamond({count = globalCsv.draw_unlock_pool_diamond or 300, log = {desc = "unlockPool", short1 = type}}) then |
| 1117 | return | 1118 | return |
| 1118 | end | 1119 | end |
| 1119 | end | 1120 | end |
src/actions/StoreAction.lua
| @@ -371,7 +371,7 @@ function _M.getBattlePassRewardRpc(agent, data) | @@ -371,7 +371,7 @@ function _M.getBattlePassRewardRpc(agent, data) | ||
| 371 | if not config then return end | 371 | if not config then return end |
| 372 | 372 | ||
| 373 | local timeNow = skynet.timex() | 373 | local timeNow = skynet.timex() |
| 374 | - local battleCardExTs = role.storeData:getProperty("battleCardEx") | 374 | + local battleCardFlag = role.storeData:getProperty("battleCard") |
| 375 | local battleCardFreeRecord = role.storeData:getProperty("battleFR") | 375 | local battleCardFreeRecord = role.storeData:getProperty("battleFR") |
| 376 | local battleCardLimitRecord = role.storeData:getProperty("battleLR") | 376 | local battleCardLimitRecord = role.storeData:getProperty("battleLR") |
| 377 | 377 | ||
| @@ -383,11 +383,11 @@ function _M.getBattlePassRewardRpc(agent, data) | @@ -383,11 +383,11 @@ function _M.getBattlePassRewardRpc(agent, data) | ||
| 383 | return 1 | 383 | return 1 |
| 384 | end | 384 | end |
| 385 | 385 | ||
| 386 | - if battleCardExTs < timeNow and freeFlag == "1" then | 386 | + if battleCardFlag == 1 and limitFlag == "1" then |
| 387 | return 1 | 387 | return 1 |
| 388 | end | 388 | end |
| 389 | 389 | ||
| 390 | - if role:getProperty("battlePoint") < config.condition then | 390 | + if role:getProperty("battlePoint") < config.point then |
| 391 | skynet.error(string.format("user do not have enough battle point, user_id:%d", role:getProperty("id"))) | 391 | skynet.error(string.format("user do not have enough battle point, user_id:%d", role:getProperty("id"))) |
| 392 | return 1 | 392 | return 1 |
| 393 | end | 393 | end |
| @@ -400,14 +400,14 @@ function _M.getBattlePassRewardRpc(agent, data) | @@ -400,14 +400,14 @@ function _M.getBattlePassRewardRpc(agent, data) | ||
| 400 | role.storeData:updateProperty({field = "battleFR", value = battleCardFreeRecord}) | 400 | role.storeData:updateProperty({field = "battleFR", value = battleCardFreeRecord}) |
| 401 | end | 401 | end |
| 402 | 402 | ||
| 403 | - if battleCardExTs > timeNow and limitFlag == "0" then | 403 | + if battleCardFlag == 1 and limitFlag == "0" then |
| 404 | if gift ~= "" then | 404 | if gift ~= "" then |
| 405 | gift = gift .. " " | 405 | gift = gift .. " " |
| 406 | end | 406 | end |
| 407 | gift = gift .. config.giftLimit | 407 | gift = gift .. config.giftLimit |
| 408 | 408 | ||
| 409 | battleCardLimitRecord = string.setbit(battleCardLimitRecord, id) | 409 | battleCardLimitRecord = string.setbit(battleCardLimitRecord, id) |
| 410 | - role.storeData:updateProperty({field = "battleFR", value = battleCardLimitRecord}) | 410 | + role.storeData:updateProperty({field = "battleLR", value = battleCardLimitRecord}) |
| 411 | end | 411 | end |
| 412 | 412 | ||
| 413 | local reward, _ = role:award(gift, {log = {desc = "battleCard", int1 = id}}) | 413 | local reward, _ = role:award(gift, {log = {desc = "battleCard", int1 = id}}) |
src/models/Role.lua
| @@ -27,6 +27,7 @@ function Role:ctor( properties ) | @@ -27,6 +27,7 @@ function Role:ctor( properties ) | ||
| 27 | self.activity = nil | 27 | self.activity = nil |
| 28 | self.advElChapter = tonum(redisproxy:hget("adv_season", "chapter"), globalCsv.adv_endless_default_chapter) -- 无尽模式记录的赛季对应章节 | 28 | self.advElChapter = tonum(redisproxy:hget("adv_season", "chapter"), globalCsv.adv_endless_default_chapter) -- 无尽模式记录的赛季对应章节 |
| 29 | self.advOverTime = tonum(redisproxy:hget("adv_season", "overTime")) -- 无尽模式关闭时间戳 | 29 | self.advOverTime = tonum(redisproxy:hget("adv_season", "overTime")) -- 无尽模式关闭时间戳 |
| 30 | + self.sendMailFlag = false --发送邮件标识 | ||
| 30 | end | 31 | end |
| 31 | 32 | ||
| 32 | Role.schema = { | 33 | Role.schema = { |
| @@ -147,7 +148,7 @@ Role.schema = { | @@ -147,7 +148,7 @@ Role.schema = { | ||
| 147 | 148 | ||
| 148 | emailSync = {"number", 0}, -- 已经同步到的邮件Id | 149 | emailSync = {"number", 0}, -- 已经同步到的邮件Id |
| 149 | 150 | ||
| 150 | - repayHero = {"number", 0}, -- 超级招募 回馈 | 151 | + repayHero = {"number", 0}, -- 招募次数 (除去友情招募) |
| 151 | floorHero = {"table", {}}, -- 招募保底 -- {[poolId] = count} | 152 | floorHero = {"table", {}}, -- 招募保底 -- {[poolId] = count} |
| 152 | ssrUp = {"table", {}}, -- ssr up -- {[poolId] = count} | 153 | ssrUp = {"table", {}}, -- ssr up -- {[poolId] = count} |
| 153 | newerDraw = {"table", {}}, -- 新手池子 {N, 1} 抽了多少次, 是否出了ssr | 154 | newerDraw = {"table", {}}, -- 新手池子 {N, 1} 抽了多少次, 是否出了ssr |
| @@ -365,7 +366,7 @@ function Role:data() | @@ -365,7 +366,7 @@ function Role:data() | ||
| 365 | battlePoint = self:getProperty("battlePoint"), | 366 | battlePoint = self:getProperty("battlePoint"), |
| 366 | 367 | ||
| 367 | rmbC = self:getProperty("rmbC"), | 368 | rmbC = self:getProperty("rmbC"), |
| 368 | - -- repayHero = self:getProperty("repayHero"), | 369 | + repayHero = self:getProperty("repayHero"), |
| 369 | newerDraw = self:getProperty("newerDraw"), | 370 | newerDraw = self:getProperty("newerDraw"), |
| 370 | floorHero = self:getProperty("floorHero"), | 371 | floorHero = self:getProperty("floorHero"), |
| 371 | 372 |
src/models/RolePlugin.lua
| @@ -1343,9 +1343,13 @@ function RolePlugin.bind(Role) | @@ -1343,9 +1343,13 @@ function RolePlugin.bind(Role) | ||
| 1343 | self:checkNewEvent(now) | 1343 | self:checkNewEvent(now) |
| 1344 | end | 1344 | end |
| 1345 | 1345 | ||
| 1346 | - local function breath(sec) | 1346 | + local function breath(sec, name) |
| 1347 | local last_breath = 0 | 1347 | local last_breath = 0 |
| 1348 | - return function (now) | 1348 | + return function (now, role) |
| 1349 | + if name == "email" and role.sendMailFlag then | ||
| 1350 | + last_breath = now + sec | ||
| 1351 | + return true | ||
| 1352 | + end | ||
| 1349 | if now >= last_breath then | 1353 | if now >= last_breath then |
| 1350 | last_breath = now + sec | 1354 | last_breath = now + sec |
| 1351 | return true | 1355 | return true |
| @@ -1354,8 +1358,8 @@ function RolePlugin.bind(Role) | @@ -1354,8 +1358,8 @@ function RolePlugin.bind(Role) | ||
| 1354 | end | 1358 | end |
| 1355 | end | 1359 | end |
| 1356 | local breathes = { | 1360 | local breathes = { |
| 1357 | - ["email"] = breath(120), -- email | ||
| 1358 | - ["pvphg"] = breath(300), -- 高级竞技场 奖励满的红点 | 1361 | + ["email"] = breath(120, "email"), -- email |
| 1362 | + ["pvphg"] = breath(300, "pvphg"), -- 高级竞技场 奖励满的红点 | ||
| 1359 | } | 1363 | } |
| 1360 | function Role:checkNewEvent(now) | 1364 | function Role:checkNewEvent(now) |
| 1361 | if now - self:getProperty("ltime") < 5 then | 1365 | if now - self:getProperty("ltime") < 5 then |
| @@ -1398,6 +1402,7 @@ function RolePlugin.bind(Role) | @@ -1398,6 +1402,7 @@ function RolePlugin.bind(Role) | ||
| 1398 | end) | 1402 | end) |
| 1399 | for index, id in ipairs(emailIds) do | 1403 | for index, id in ipairs(emailIds) do |
| 1400 | if tonumber(redret[index]) == 0 then | 1404 | if tonumber(redret[index]) == 0 then |
| 1405 | + self.SendMailFlag = false | ||
| 1401 | return true | 1406 | return true |
| 1402 | end | 1407 | end |
| 1403 | end | 1408 | end |
| @@ -1420,7 +1425,7 @@ function RolePlugin.bind(Role) | @@ -1420,7 +1425,7 @@ function RolePlugin.bind(Role) | ||
| 1420 | 1425 | ||
| 1421 | local events = {} | 1426 | local events = {} |
| 1422 | for name, breath in pairs(breathes) do | 1427 | for name, breath in pairs(breathes) do |
| 1423 | - if breath(now) and checks[name] then | 1428 | + if breath(now, self) and checks[name] then |
| 1424 | local status = checks[name]() | 1429 | local status = checks[name]() |
| 1425 | if status then | 1430 | if status then |
| 1426 | if status == true then | 1431 | if status == true then |
| @@ -1576,6 +1581,24 @@ function RolePlugin.bind(Role) | @@ -1576,6 +1581,24 @@ function RolePlugin.bind(Role) | ||
| 1576 | return reward | 1581 | return reward |
| 1577 | end | 1582 | end |
| 1578 | 1583 | ||
| 1584 | + --直接给玩家发送邮件,立即推送小红点 | ||
| 1585 | + function Role:sendMail(mailId, createTime, reward) | ||
| 1586 | + local tgift = {} | ||
| 1587 | + if type(reward) == "string" then | ||
| 1588 | + for _, one in pairs(reward:toTableArray(true)) do | ||
| 1589 | + tgift[one[1]] = (tgift[one[1]] or 0) + one[2] | ||
| 1590 | + end | ||
| 1591 | + else | ||
| 1592 | + tgift = gift | ||
| 1593 | + end | ||
| 1594 | + local gift = "" | ||
| 1595 | + for k, v in pairs(tgift) do | ||
| 1596 | + gift = gift .. k.."="..v.." " | ||
| 1597 | + end | ||
| 1598 | + redisproxy:insertEmail({roleId = self:getProperty("id"), emailId = mailId, createtime = createTime, attachments = gift}) | ||
| 1599 | + self.sendMailFlag = true | ||
| 1600 | + end | ||
| 1601 | + | ||
| 1579 | end | 1602 | end |
| 1580 | 1603 | ||
| 1581 | return RolePlugin | 1604 | return RolePlugin |
| 1582 | \ No newline at end of file | 1605 | \ No newline at end of file |
src/models/RoleTimeReset.lua
| @@ -10,6 +10,7 @@ ResetFunc["CrossDay"] = function(self, notify, response, now) | @@ -10,6 +10,7 @@ ResetFunc["CrossDay"] = function(self, notify, response, now) | ||
| 10 | self.dailyData:refreshDailyData(notify) | 10 | self.dailyData:refreshDailyData(notify) |
| 11 | self.dinerData:refreshDailyData(notify) | 11 | self.dinerData:refreshDailyData(notify) |
| 12 | self.activity:refreshDailyData(notify) | 12 | self.activity:refreshDailyData(notify) |
| 13 | + self.storeData:onCrossDay() | ||
| 13 | 14 | ||
| 14 | self:setProperty("dTask", {}) | 15 | self:setProperty("dTask", {}) |
| 15 | self:advRandomSupportEffect(not notify) | 16 | self:advRandomSupportEffect(not notify) |
src/models/Store.lua
| @@ -13,11 +13,13 @@ Store.schema = { | @@ -13,11 +13,13 @@ Store.schema = { | ||
| 13 | growFundR = {"string", ""}, -- 成长基金领取记录 | 13 | growFundR = {"string", ""}, -- 成长基金领取记录 |
| 14 | monthCardEx = {"number", 0}, -- 月卡过期时间戳 | 14 | monthCardEx = {"number", 0}, -- 月卡过期时间戳 |
| 15 | smonthCardEx = {"number", 0}, -- 超级月卡过期时间戳 | 15 | smonthCardEx = {"number", 0}, -- 超级月卡过期时间戳 |
| 16 | - battleCardEx = {"number", 0}, -- 赛季卡过期时间戳 | 16 | + battleCard = {"number", 0}, -- 赛季卡 |
| 17 | battleFR = {"string", ""}, -- 免费赛季卡领取记录 | 17 | battleFR = {"string", ""}, -- 免费赛季卡领取记录 |
| 18 | battleLR = {"string", ""}, -- 付费赛季卡领取记录 | 18 | battleLR = {"string", ""}, -- 付费赛季卡领取记录 |
| 19 | limitTPack = {"table", {}}, -- 限时礼包 {id=expire_ts} | 19 | limitTPack = {"table", {}}, -- 限时礼包 {id=expire_ts} |
| 20 | - privCardEx = {"number", 0} -- 特权卡过期时间戳 | 20 | + privCardEx = {"number", 0}, -- 特权卡过期时间戳 |
| 21 | + getMailT1 = {"number",0}, -- 上次发送月卡福利邮件的时间 | ||
| 22 | + getMailT2 = {"number",0}, -- 上次发送超级月卡福利邮件的时间 | ||
| 21 | } | 23 | } |
| 22 | 24 | ||
| 23 | function Store:updateProperty(params) | 25 | function Store:updateProperty(params) |
| @@ -39,46 +41,54 @@ function Store:updateProperty(params) | @@ -39,46 +41,54 @@ function Store:updateProperty(params) | ||
| 39 | end | 41 | end |
| 40 | end | 42 | end |
| 41 | 43 | ||
| 42 | -function Store:refreshData(notify, refreshType) | ||
| 43 | - local buyRecord = self:getProperty("buyR") | ||
| 44 | - local result = {} | ||
| 45 | - for id, data in pairs(csvdb["shop_normalCsv"]) do | ||
| 46 | - if data.shop == 1 and refreshType == RefreshType.RefreshType_Daily then | ||
| 47 | - buyRecord[id] = nil | ||
| 48 | - end | ||
| 49 | - if data.shop == 2 and refreshType == RefreshType.RefreshType_Weekly then | ||
| 50 | - buyRecord[id] = nil | ||
| 51 | - end | ||
| 52 | - end | ||
| 53 | - self:setProperty("buyR", buyRecord) | ||
| 54 | - if notify then | ||
| 55 | - self:notifyUpdateProperty({field="buyR", value=buyRecord}) | ||
| 56 | - end | 44 | +function Store:onCrossDay() |
| 45 | + self:sendMonthCardEmail() | ||
| 46 | + self:deleteExpireLimitGoods() | ||
| 57 | end | 47 | end |
| 58 | 48 | ||
| 59 | -function Store:refreshPvpBuyRecord(notify) | ||
| 60 | - local buyRecord = self:getProperty("buyR") | ||
| 61 | - for id, data in pairs(csvdb["shop_normalCsv"]) do | ||
| 62 | - if data.shop == 3 then | ||
| 63 | - buyRecord[id] = nil | ||
| 64 | - end | 49 | +-- 删除过期商品 |
| 50 | +function Store:deleteExpireLimitGoods() | ||
| 51 | + local timeNow = skynet.timex() | ||
| 52 | + local limitGoodsList = self:getProperty("limitTPack") | ||
| 53 | + for k, v in pairs(limitGoodsList) do | ||
| 54 | + if timeNow > v then | ||
| 55 | + limitGoodsList[k] = nil | ||
| 56 | + end | ||
| 65 | end | 57 | end |
| 66 | - self:setProperty("buyR", buyRecord) | ||
| 67 | - if notify then | ||
| 68 | - self:notifyUpdateProperty({field="buyR", value=buyRecord}) | ||
| 69 | - end | ||
| 70 | end | 58 | end |
| 71 | 59 | ||
| 72 | -- 发送月卡邮件 | 60 | -- 发送月卡邮件 |
| 73 | function Store:sendMonthCardEmail() | 61 | function Store:sendMonthCardEmail() |
| 74 | - local monthCardEx = self:getProperty("monthCardEx") | ||
| 75 | - local smonthCardEx = self:getProperty("smonthCardEx") | ||
| 76 | local timeNow = skynet.timex() | 62 | local timeNow = skynet.timex() |
| 77 | - if monthCardEx < timeNow then | ||
| 78 | - redisproxy:insertEmail({roleId = self.owner:getProperty("id"), emailId = 19}) | ||
| 79 | - end | ||
| 80 | - if smonthCardEx < timeNow then | ||
| 81 | - redisproxy:insertEmail({roleId = self.owner:getProperty("id"), emailId = 20}) | 63 | + local tabs = {{ex="monthCardEx", t="getMailT1", mail=201, alert=203}, {ex="smonthCardEx", t="getMailT2", mail=202, alert=204}} |
| 64 | + for _, v in ipairs(tabs) do | ||
| 65 | + local ex = self:getProperty(v.ex) | ||
| 66 | + local ts = self:getProperty(v.t) or 0 | ||
| 67 | + local mailId = v.mail | ||
| 68 | + local alertId = v.alert | ||
| 69 | + local alertTs = dayLater(ex) - DAY_SEC | ||
| 70 | + if ex > timeNow then | ||
| 71 | + local cnt = 0 | ||
| 72 | + if ts == 0 then | ||
| 73 | + cnt = 1 | ||
| 74 | + else | ||
| 75 | + local diff = dayLater(timeNow) - dayLater(ts) | ||
| 76 | + diff = diff < 0 and 0 or diff | ||
| 77 | + diff = diff > 31 and 31 or diff | ||
| 78 | + cnt = diff | ||
| 79 | + end | ||
| 80 | + for i = cnt - 1, 0, -1 do | ||
| 81 | + local createTs = timeNow - i * DAY_SEC | ||
| 82 | + self.owner:sendMail(mailId, createTs) | ||
| 83 | + -- 过期头一天发提醒邮件 | ||
| 84 | + if dayLater(createTs) == alertTs then | ||
| 85 | + self.owner:sendMail(alertId, createTs) | ||
| 86 | + end | ||
| 87 | + end | ||
| 88 | + if cnt > 0 then | ||
| 89 | + self:updateProperty({field=v.t, value=timeNow}) | ||
| 90 | + end | ||
| 91 | + end | ||
| 82 | end | 92 | end |
| 83 | end | 93 | end |
| 84 | 94 | ||
| @@ -100,19 +110,13 @@ function Store:isPrivCardExpire() | @@ -100,19 +110,13 @@ function Store:isPrivCardExpire() | ||
| 100 | return ts < timeNow | 110 | return ts < timeNow |
| 101 | end | 111 | end |
| 102 | 112 | ||
| 103 | -function Store:isBattleCardExpire() | ||
| 104 | - local timeNow = skynet.timex() | ||
| 105 | - local ts = self:getProperty("battleCardEx") | ||
| 106 | - return ts < timeNow | ||
| 107 | -end | ||
| 108 | - | ||
| 109 | -- 挂机栏位 特权卡额外个数 | 113 | -- 挂机栏位 特权卡额外个数 |
| 110 | function Store:getHangSlotExtraCount() | 114 | function Store:getHangSlotExtraCount() |
| 111 | if self:isPrivCardExpire() then | 115 | if self:isPrivCardExpire() then |
| 112 | return 0 | 116 | return 0 |
| 113 | end | 117 | end |
| 114 | 118 | ||
| 115 | - return 4 | 119 | + return csvdb.shop_priv_card_hang_slot_cnt or 4 |
| 116 | end | 120 | end |
| 117 | 121 | ||
| 118 | -- 探索加速/餐厅加速 特权卡系数 | 122 | -- 探索加速/餐厅加速 特权卡系数 |
| @@ -120,8 +124,8 @@ function Store:getProduceItemSpeedCoef() | @@ -120,8 +124,8 @@ function Store:getProduceItemSpeedCoef() | ||
| 120 | if self:isPrivCardExpire() then | 124 | if self:isPrivCardExpire() then |
| 121 | return 1 | 125 | return 1 |
| 122 | end | 126 | end |
| 123 | - | ||
| 124 | - return 1 + 0.25 | 127 | + local coef = (globalCsv.shop_priv_card_produce_coef or 25)/ 100 |
| 128 | + return 1 + coef | ||
| 125 | end | 129 | end |
| 126 | 130 | ||
| 127 | -- 拆解室栏位 特权卡额外个数 | 131 | -- 拆解室栏位 特权卡额外个数 |
| @@ -130,7 +134,7 @@ function Store:getTimeBoxSlotExtraCount() | @@ -130,7 +134,7 @@ function Store:getTimeBoxSlotExtraCount() | ||
| 130 | return 0 | 134 | return 0 |
| 131 | end | 135 | end |
| 132 | 136 | ||
| 133 | - return 3 | 137 | + return csvdb.shop_priv_time_box_slot_cnt or 3 |
| 134 | end | 138 | end |
| 135 | 139 | ||
| 136 | -- 齿轮兑换 特权卡系数 | 140 | -- 齿轮兑换 特权卡系数 |
| @@ -139,7 +143,8 @@ function Store:getGearExchangeCoef() | @@ -139,7 +143,8 @@ function Store:getGearExchangeCoef() | ||
| 139 | return 1 | 143 | return 1 |
| 140 | end | 144 | end |
| 141 | 145 | ||
| 142 | - return 1 + 0.5 | 146 | + local coef = (globalCsv.shop_priv_card_produce_coef or 50)/ 100 |
| 147 | + return 1 + coef | ||
| 143 | end | 148 | end |
| 144 | 149 | ||
| 145 | -- 购买通行证 | 150 | -- 购买通行证 |
| @@ -151,12 +156,14 @@ function Store:onBuyCard(type, duration) | @@ -151,12 +156,14 @@ function Store:onBuyCard(type, duration) | ||
| 151 | else | 156 | else |
| 152 | self:updateProperty({field = "monthCardEx", value = self:getProperty("monthCardEx") + duration}) | 157 | self:updateProperty({field = "monthCardEx", value = self:getProperty("monthCardEx") + duration}) |
| 153 | end | 158 | end |
| 159 | + self:sendMonthCardEmail() | ||
| 154 | elseif type == CardType.SuperMonthCard then | 160 | elseif type == CardType.SuperMonthCard then |
| 155 | if self:isSuperMonthCardExpire() then | 161 | if self:isSuperMonthCardExpire() then |
| 156 | self:updateProperty({field = "smonthCardEx", value = timeNow + duration}) | 162 | self:updateProperty({field = "smonthCardEx", value = timeNow + duration}) |
| 157 | else | 163 | else |
| 158 | self:updateProperty({field = "smonthCardEx", value = self:getProperty("smonthCardEx") + duration}) | 164 | self:updateProperty({field = "smonthCardEx", value = self:getProperty("smonthCardEx") + duration}) |
| 159 | end | 165 | end |
| 166 | + self:sendMonthCardEmail() | ||
| 160 | elseif type == CardType.PrivilegeCard then | 167 | elseif type == CardType.PrivilegeCard then |
| 161 | if self:isPrivCardExpire() then | 168 | if self:isPrivCardExpire() then |
| 162 | self:updateProperty({field = "privCardEx", value = timeNow + duration}) | 169 | self:updateProperty({field = "privCardEx", value = timeNow + duration}) |
| @@ -166,14 +173,11 @@ function Store:onBuyCard(type, duration) | @@ -166,14 +173,11 @@ function Store:onBuyCard(type, duration) | ||
| 166 | elseif type == CardType.GrowFund then | 173 | elseif type == CardType.GrowFund then |
| 167 | self:updateProperty({field = "growFund", value = 1}) | 174 | self:updateProperty({field = "growFund", value = 1}) |
| 168 | elseif type == CardType.BattleCard then | 175 | elseif type == CardType.BattleCard then |
| 169 | - if self:isBattleCardExpire() then | ||
| 170 | - self:updateProperty({field = "battleCardEx", value = timeNow + duration}) | ||
| 171 | - else | ||
| 172 | - self:updateProperty({field = "battleCardEx", value = self:getProperty("battleCardEx") + duration}) | ||
| 173 | - end | 176 | + self:updateProperty({field = "battleCard", value = 1}) |
| 174 | end | 177 | end |
| 175 | end | 178 | end |
| 176 | 179 | ||
| 180 | +--检测购买是否超过限制数量 | ||
| 177 | function Store:checkRechargeRecord(limit, id) | 181 | function Store:checkRechargeRecord(limit, id) |
| 178 | local rechargeRecord = self:getProperty("payR") | 182 | local rechargeRecord = self:getProperty("payR") |
| 179 | if limit ~= 0 and limit <= (rechargeRecord[id] or 0) then | 183 | if limit ~= 0 and limit <= (rechargeRecord[id] or 0) then |
| @@ -194,6 +198,47 @@ function Store:notifyUpdateProperty(field, newValue, oldValue) | @@ -194,6 +198,47 @@ function Store:notifyUpdateProperty(field, newValue, oldValue) | ||
| 194 | SendPacket(actionCodes.Store_updateproperty, MsgPack.pack(datas)) | 198 | SendPacket(actionCodes.Store_updateproperty, MsgPack.pack(datas)) |
| 195 | end | 199 | end |
| 196 | 200 | ||
| 201 | +-- 赛季卡重置 需要把未能领取的奖励通过邮件发送 | ||
| 202 | +function Store:onBattleCardReset() | ||
| 203 | + local gift = "" | ||
| 204 | + local function concatGift(data) | ||
| 205 | + if gift == "" then | ||
| 206 | + gift = data | ||
| 207 | + else | ||
| 208 | + gift = gift .. " " .. data | ||
| 209 | + end | ||
| 210 | + end | ||
| 211 | + local battleCardFlag = self:getProperty("battleCard") | ||
| 212 | + local battleCardFreeRecord = self:getProperty("battleFR") | ||
| 213 | + local battleCardLimitRecord = self:getProperty("battleLR") | ||
| 214 | + local battlePoint = self.owner:getProperty("battlePoint") | ||
| 215 | + | ||
| 216 | + for id, config in pairs(csvdb["reward_battlepassCsv"]) do | ||
| 217 | + if config then | ||
| 218 | + local freeFlag = string.char(string.getbit(battleCardFreeRecord, id)) | ||
| 219 | + local limitFlag = string.char(string.getbit(battleCardLimitRecord, id)) | ||
| 220 | + | ||
| 221 | + if battlePoint < config.point then | ||
| 222 | + break | ||
| 223 | + end | ||
| 224 | + if freeFlag == "0" then | ||
| 225 | + concatGift(config.giftFree) | ||
| 226 | + end | ||
| 227 | + if limitFlag == "0" and battleCardFlag == 1 then | ||
| 228 | + concatGift(config.giftLimit) | ||
| 229 | + end | ||
| 230 | + end | ||
| 231 | + end | ||
| 232 | + self.owner:sendMail(210, nil, gift) | ||
| 233 | + -- 计算剩余奖励 | ||
| 234 | + self:updateProperty({field = "battleCard", value=0}) | ||
| 235 | + self:updateProperty({field = "battleCardR", value=""}) | ||
| 236 | + self:updateProperty({field = "battleFR", value=""}) | ||
| 237 | + self:updateProperty({field = "battleLR", value=""}) | ||
| 238 | + self.owner:updateProperty({field = "battlePoint", value=0}) | ||
| 239 | +end | ||
| 240 | + | ||
| 241 | +-- 重置购买记录 | ||
| 197 | function Store:resetStoreReored(resetId) | 242 | function Store:resetStoreReored(resetId) |
| 198 | local payRecord = self:getProperty("payR") or {} | 243 | local payRecord = self:getProperty("payR") or {} |
| 199 | local buyRecord = self:getProperty("buyR") or {} | 244 | local buyRecord = self:getProperty("buyR") or {} |
| @@ -202,6 +247,12 @@ function Store:resetStoreReored(resetId) | @@ -202,6 +247,12 @@ function Store:resetStoreReored(resetId) | ||
| 202 | if config then | 247 | if config then |
| 203 | if config.resetTime == resetId then | 248 | if config.resetTime == resetId then |
| 204 | payRecord[k] = nil | 249 | payRecord[k] = nil |
| 250 | + --通行证商店 | ||
| 251 | + if config.shop == 2 then | ||
| 252 | + if config.type == CardType.BattleCard then | ||
| 253 | + self:onBattleCardReset() | ||
| 254 | + end | ||
| 255 | + end | ||
| 205 | end | 256 | end |
| 206 | end | 257 | end |
| 207 | end | 258 | end |
| @@ -225,8 +276,9 @@ function Store:data() | @@ -225,8 +276,9 @@ function Store:data() | ||
| 225 | growFundR = self:getProperty("growFundR"), | 276 | growFundR = self:getProperty("growFundR"), |
| 226 | monthCardEx = self:getProperty("monthCardEx"), | 277 | monthCardEx = self:getProperty("monthCardEx"), |
| 227 | smonthCardEx = self:getProperty("smonthCardEx"), | 278 | smonthCardEx = self:getProperty("smonthCardEx"), |
| 228 | - battleCardEx = self:getProperty("battleCardEx"), | ||
| 229 | - battleCardR = self:getProperty("battleCardR"), | 279 | + battleCard = self:getProperty("battleCard"), |
| 280 | + battleFR = self:getProperty("battleFR"), | ||
| 281 | + battleLR = self:getProperty("battleLR"), | ||
| 230 | limitTPack = self:getProperty("limitTPack"), | 282 | limitTPack = self:getProperty("limitTPack"), |
| 231 | privCardEx = self:getProperty("privCardEx"), | 283 | privCardEx = self:getProperty("privCardEx"), |
| 232 | } | 284 | } |