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 | } |