c5825110
saicom
新增用户商城相关数据
|
1
2
|
-- 商店数据
|
fa992c94
liuzujun
添加daily,diner,act...
|
3
|
local Store = class("Store", require("shared.ModelBaseMysql"))
|
c5825110
saicom
新增用户商城相关数据
|
4
5
|
function Store:ctor(properties)
|
54f63c13
liuzujun
修复老月卡用户的月卡id字段
|
6
7
8
9
10
|
Store.super.ctor(self, properties)
end
function Store:onLoad()
local monEx = self:getProperty("monthCardEx")
|
54f63c13
liuzujun
修复老月卡用户的月卡id字段
|
11
|
local monId = self:getProperty("monthCardId")
|
54f63c13
liuzujun
修复老月卡用户的月卡id字段
|
12
|
local flag = false
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
13
|
if monEx > 0 and monId == 0 then
|
54f63c13
liuzujun
修复老月卡用户的月卡id字段
|
14
15
16
17
|
self:updateProperty({field = "monthCardId", value = 101})
self:updateProperty({field = "getMailT1", value = 0})
flag = true
end
|
c5825110
saicom
新增用户商城相关数据
|
18
19
|
end
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
20
21
22
23
|
ActGoodsType = {
paySignIn = 1, -- 付费签到
}
|
c5825110
saicom
新增用户商城相关数据
|
24
|
Store.schema = {
|
fa992c94
liuzujun
添加daily,diner,act...
|
25
|
id = {"number", 0, "pri"}, -- 角色id
|
3e20f499
saicom
完善商城相关协议
|
26
27
28
|
buyR = {"table", {}}, -- 购买商品记录 {id=count}
payR = {"table", {}}, -- 充值记录 {id=count}
growFund = {"number", 0}, -- 成长基金
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
29
30
|
growFundR = {"string", ""}, -- 成长基金领取记录
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
31
|
monthCardEx = {"number", 0}, -- 期数
|
2e283f60
liuzujun
月卡升级
|
32
|
monthCardId = {"number", 0}, -- 月卡id
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
33
34
35
|
firstMonthCard = {"number", 1}, -- 首次订阅月卡
monthCardReceive = {"number", 0}, -- 月卡奖励领取记录 当天 0-未领取, 1-已经领取
|
99f84aa1
zhangqijia
fix: 特刊解锁机制修改,删除o...
|
36
|
smonthCards = {"table", {}}, --特刊信息 {[id]={["buyCount"]=0, ["periods"]=0}} buyCount: 购买次数,periods: 剩余期数,
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
37
|
smonthCardReceive = {"number", 0}, -- 特刊奖励领取记录 当天 0-未领取, 1-已经领取
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
38
|
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
39
|
battleCard = {"number", 0}, -- 赛季卡
|
3e20f499
saicom
完善商城相关协议
|
40
41
|
battleFR = {"string", ""}, -- 免费赛季卡领取记录
battleLR = {"string", ""}, -- 付费赛季卡领取记录
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
42
|
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
43
|
limitTPack = {"table", {}}, -- 限时礼包 {id={expire_ts, trigger_type}}
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
44
45
46
|
privCardEx = {"number", 0}, -- 特权卡过期时间戳
getMailT1 = {"number",0}, -- 上次发送月卡福利邮件的时间
getMailT2 = {"number",0}, -- 上次发送超级月卡福利邮件的时间
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
47
|
--packTrigger = {"table", {}}, -- 礼包触发记录 {关卡难度1={id, 通关关卡数,升级数,爬塔层数}, ...}
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
48
49
50
51
52
|
-- 活动商品购买记录
actGoodsFlag = {"table", {}}, -- ActGoodsType 1购买,0未购买
bpInfo = {"table", {}}, -- battle pass 探索指令 1={flag=0 为1表示买了,br=""付费领取记录, fr=""免费领取记录},2,3,4
|
4f7cffe5
liuzujun
多队挂机任务取消功能,累充奖励
|
53
54
|
totalRR = {"string", ""}, -- 累计充值奖励领取记录
|
cddfa602
zhangqijia
feat: 月卡解锁的日/周商店随...
|
55
56
57
|
dailyShop = {"table", {}},
weekShop = {"table", {}},
|
c5825110
saicom
新增用户商城相关数据
|
58
59
60
|
}
function Store:updateProperty(params)
|
3e20f499
saicom
完善商城相关协议
|
61
62
63
|
params = params or {}
if not self.schema[params.field] then
return
|
c5825110
saicom
新增用户商城相关数据
|
64
|
end
|
3e20f499
saicom
完善商城相关协议
|
65
|
local oldValue = self:getProperty(params.field)
|
c5825110
saicom
新增用户商城相关数据
|
66
67
|
if params.value then
self:setProperty(params.field, params.value)
|
3e20f499
saicom
完善商城相关协议
|
68
69
70
71
72
73
|
elseif params.delta then
self:incrProperty(params.field, params.delta)
else
return
end
local newValue = self:getProperty(params.field)
|
2e283f60
liuzujun
月卡升级
|
74
|
if not params.notNotify then
|
3e20f499
saicom
完善商城相关协议
|
75
|
self:notifyUpdateProperty(params.field, newValue, oldValue)
|
c5825110
saicom
新增用户商城相关数据
|
76
|
end
|
c5825110
saicom
新增用户商城相关数据
|
77
78
|
end
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
79
|
function Store:onCrossDay()
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
80
|
--self:sendMonthCardEmail()
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
81
|
self:deleteExpireLimitGoods()
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
82
|
--self:checkPaySignReward()
|
cddfa602
zhangqijia
feat: 月卡解锁的日/周商店随...
|
83
84
85
86
87
88
89
90
91
92
93
|
--刷新商店
self:flushDailyShop()
--重置月卡、特刊奖励领取记录
self:updateProperty({field = "monthCardReceive", value = 0})
self:updateProperty({field = "smonthCardReceive", value = 0})
end
function Store:refreshWeekData(notify)
self:flushWeekShop()
|
c5825110
saicom
新增用户商城相关数据
|
94
95
|
end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
96
97
98
99
100
|
local SuperMonthCard = {}
SuperMonthCard["buy"] = function(self, id)
local smonthCards = self:getProperty("smonthCards") or {}
|
94f99134
zhangqijia
fix: shop_card字段修改
|
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
local buyLimitFunc = function(buylimit)
for k, v in pairs(buylimit) do
if k == 1 then
if v == 101 then
if self:isMonthCardExpire() then
skynet.error("月卡过期")
return false
end
else
if smonthCards[v] == nil then
skynet.error("没有购买增刊里的条件, %d", v)
return false
end
end
elseif k == 2 then
if smonthCards[v] == nil and v ~= 101 then
skynet.error("没有购买增刊里的条件, %d", v)
return false
end
if SuperMonthCard["isExpired"](self, v) == false and v ~= 101 then
skynet.error("上期特刊奖励没有领取完")
return false
end
end
end
return true
end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
129
130
131
|
local BuyMonthCard = {}
BuyMonthCard["renewal"]= function()
--续刊
|
94f99134
zhangqijia
fix: shop_card字段修改
|
132
133
134
135
136
137
138
|
local card = csvdb["shop_cardCsv"][id] or {}
if card["buyLimit"] and card["buyLimit"] ~= "" then
if buyLimitFunc(card["buyLimit"]:toNumMap()) == false then
skynet.error("不满足购买条件")
return false
end
end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
139
140
141
|
local smonthCard = smonthCards[id] or {}
if next(smonthCard) then
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
142
|
smonthCard["buyCount"] = (smonthCard["buyCount"] or 0) + 1
|
94f99134
zhangqijia
fix: shop_card字段修改
|
143
|
local periods = SuperMonthCard["periods"](self, id) + (card["amount"] or 30)
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
144
145
|
smonthCard["periods"] = periods
|
94f99134
zhangqijia
fix: shop_card字段修改
|
146
|
self:updateProperty({field = "smonthCards", value = smonthCards})
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
147
148
149
150
|
return true
end
end
BuyMonthCard["order"] = function()
|
99f84aa1
zhangqijia
fix: 特刊解锁机制修改,删除o...
|
151
|
--增刊条件
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
152
|
local card = csvdb["shop_cardCsv"][id] or {}
|
94f99134
zhangqijia
fix: shop_card字段修改
|
153
154
155
156
157
158
159
|
if card["buyLimit"] and card["buyLimit"] ~= "" then
if buyLimitFunc(card["buyLimit"]:toNumMap()) == false then
skynet.error("不满足增刊条件")
return false
end
end
smonthCards[id] = {["periods"] = (card["amount"] or 30), ["buyCount"] = 1}
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
160
|
|
94f99134
zhangqijia
fix: shop_card字段修改
|
161
|
self:updateProperty({field= "smonthCards", value = smonthCards})
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
return true
end
if SuperMonthCard["isExpired"](self, id) then
local smonthCard = smonthCards[id] or {}
if next(smonthCard) then
return BuyMonthCard["renewal"]()
else
return BuyMonthCard["order"]()
end
else
return BuyMonthCard["renewal"]()
end
end
SuperMonthCard["periods"] = function(self, id)
local smonthCards = self:getProperty("smonthCards") or {}
local smonthCard = smonthCards[id] or {}
return smonthCard["periods"] or 0
end
SuperMonthCard["isExpired"] = function (self, id)
local periods = SuperMonthCard["periods"](self, id)
return periods == 0
end
SuperMonthCard["itemDaily"] = function(self, id)
local cur_ex = SuperMonthCard["periods"](self, id)
if cur_ex == 0 then return nil, nil end
cur_ex = cur_ex - 1
local card = csvdb["shop_cardCsv"][id] or {}
local reward, change = self.owner:award(card["itemDaily"], {log = {desc = "smonthCardReward", int1 = id, int2 = cur_ex}})
local smonthCards = self:getProperty("smonthCards") or {}
local smonthCard = smonthCards[id] or {}
smonthCard["periods"] = cur_ex
self:updateProperty({field = "smonthCards", value = smonthCards})
return reward, change, cur_ex
end
|
94f99134
zhangqijia
fix: shop_card字段修改
|
204
205
206
207
208
209
|
SuperMonthCard["itemFirst"] = function(self, id)
local card = csvdb["shop_cardCsv"][id] or {}
local reward, _ = self.owner:award(card["itemFirst"], {isRecharge = true, log = {desc = "recharge", int1 = id}})
return reward
end
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
210
211
212
213
214
|
-- 删除过期商品
function Store:deleteExpireLimitGoods()
local timeNow = skynet.timex()
local limitGoodsList = self:getProperty("limitTPack")
for k, v in pairs(limitGoodsList) do
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
215
|
if timeNow > v[1] then
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
216
217
|
limitGoodsList[k] = nil
end
|
c5825110
saicom
新增用户商城相关数据
|
218
|
end
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
219
|
self:updateProperty({field = "limitTPack", value = limitGoodsList, notNotify = true})
|
c5825110
saicom
新增用户商城相关数据
|
220
221
222
223
|
end
-- 发送月卡邮件
function Store:sendMonthCardEmail()
|
3e20f499
saicom
完善商城相关协议
|
224
|
local timeNow = skynet.timex()
|
2e283f60
liuzujun
月卡升级
|
225
226
227
|
local tabs = {{ex="monthCardEx", t="getMailT1", id= self:getProperty("monthCardId")},
{ex="smonthCardEx", t="getMailT2", id=self:getProperty("smonthCardId")}}
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
228
229
230
|
for _, v in ipairs(tabs) do
local ex = self:getProperty(v.ex)
local ts = self:getProperty(v.t) or 0
|
2e283f60
liuzujun
月卡升级
|
231
232
233
234
|
local cfg = csvdb["shop_cardCsv"][v.id] or {}
local mailId = cfg.email
local alertId = cfg.email_2
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
235
236
237
238
239
240
|
local alertTs = dayLater(ex) - DAY_SEC
if ex > timeNow then
local cnt = 0
if ts == 0 then
cnt = 1
else
|
70aa8660
liuzujun
发送多天邮件bug
|
241
|
local diff = math.floor((dayLater(timeNow) - dayLater(ts))/DAY_SEC)
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
diff = diff < 0 and 0 or diff
diff = diff > 31 and 31 or diff
cnt = diff
end
for i = cnt - 1, 0, -1 do
local createTs = timeNow - i * DAY_SEC
self.owner:sendMail(mailId, createTs)
-- 过期头一天发提醒邮件
if dayLater(createTs) == alertTs then
self.owner:sendMail(alertId, createTs)
end
end
if cnt > 0 then
self:updateProperty({field=v.t, value=timeNow})
end
end
|
3e20f499
saicom
完善商城相关协议
|
258
|
end
|
c5825110
saicom
新增用户商城相关数据
|
259
260
|
end
|
317a46a9
liuzujun
添加特权卡
|
261
|
function Store:isMonthCardExpire()
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
262
|
return self:getProperty("monthCardEx") == 0
|
317a46a9
liuzujun
添加特权卡
|
263
264
|
end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
265
266
|
function Store:isSuperMonthCardExpire(id)
return false
|
317a46a9
liuzujun
添加特权卡
|
267
268
269
270
271
272
273
274
|
end
function Store:isPrivCardExpire()
local timeNow = skynet.timex()
local ts = self:getProperty("privCardEx")
return ts < timeNow
end
|
317a46a9
liuzujun
添加特权卡
|
275
276
277
278
279
280
|
-- 挂机栏位 特权卡额外个数
function Store:getHangSlotExtraCount()
if self:isPrivCardExpire() then
return 0
end
|
d9d51454
liuzujun
修改特权卡引用配置错误bug
|
281
|
return globalCsv.shop_priv_card_hang_slot_cnt or 4
|
317a46a9
liuzujun
添加特权卡
|
282
283
284
285
286
287
288
|
end
-- 探索加速/餐厅加速 特权卡系数
function Store:getProduceItemSpeedCoef()
if self:isPrivCardExpire() then
return 1
end
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
289
290
|
local coef = (globalCsv.shop_priv_card_produce_coef or 25)/ 100
return 1 + coef
|
317a46a9
liuzujun
添加特权卡
|
291
292
293
294
295
296
297
298
|
end
-- 拆解室栏位 特权卡额外个数
function Store:getTimeBoxSlotExtraCount()
if self:isPrivCardExpire() then
return 0
end
|
d9d51454
liuzujun
修改特权卡引用配置错误bug
|
299
|
return globalCsv.shop_priv_time_box_slot_cnt or 3
|
317a46a9
liuzujun
添加特权卡
|
300
301
302
303
304
305
306
307
|
end
-- 齿轮兑换 特权卡系数
function Store:getGearExchangeCoef()
if self:isPrivCardExpire() then
return 1
end
|
7f9f002d
liuzujun
循环周活动
|
308
|
local coef = (globalCsv.shop_priv_exchange_gear_coef or 50)/ 100
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
309
|
return 1 + coef
|
317a46a9
liuzujun
添加特权卡
|
310
311
|
end
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
312
313
314
315
316
317
318
319
320
321
322
323
324
|
-- 奖励关卡 特权卡额外数量
function Store:getBonusExtraFightCount()
if self:isPrivCardExpire() then
return 0
end
local cnt = globalCsv.bonus_extra_fight_count or 1
return cnt
end
-- 挂机道具掉落系数 特权卡挂机掉落系数
function Store:getHangDropCoef()
if self:isPrivCardExpire() then
|
aae56896
liuzujun
特权卡bug
|
325
|
return 1, 1
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
326
327
328
329
330
|
end
return (1 + globalCsv.hang_drop_exp_coef) or 1, (1 + globalCsv.hang_drop_item_coef) or 1
end
|
2e283f60
liuzujun
月卡升级
|
331
332
333
334
335
336
337
338
339
340
341
342
|
function Store:getCurMonthCardLvl(isSuper)
local id = 0
if isSuper then
id = self:getProperty("smonthCardId") or 0
else
id = self:getProperty("monthCardId") or 0
end
local cfg = csvdb["shop_cardCsv"][id]
if not cfg then return 0 end
return cfg.level or 0
end
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
343
|
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
344
345
|
--获取月卡每日奖励
function Store:getMonthCardDailyReward(id)
|
fc8e212e
zhangqijia
fix: 月卡- 增刊异常
|
346
347
|
if not id then return nil end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
348
349
350
351
352
353
|
if self:isMonthCardExpire() or self:getProperty("monthCardReceive") == 1 then return nil, nil end
local before_ex = self:getProperty("monthCardEx")
self:updateProperty({field = "monthCardEx", delta = -1})
local cur_ex = self:getProperty("monthCardEx")
|
94f99134
zhangqijia
fix: shop_card字段修改
|
354
|
local actCfg = csvdb["shop_cardCsv"][id] or {}
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
|
local award = actCfg.itemDaily:toNumMap()
local reward, change = self.owner:award(award, {log = {desc = "monthCardReward", int1 = id, int2 = cur_ex}})
--今日月卡奖励已经领取
self:updateProperty({field = "monthCardReceive", value = 1})
self.owner:log("month_card", {
item_type = CardType.NormalMonthCard,
item_id = id, --月卡id
before_ex = before_ex, --未领取奖励前的期
cur_ex = cur_ex, --剩余期数
reward_time = skynet.timex(), --奖励时间
month_reward_detail = reward,
})
return reward, change
end
--获取特刊每日奖励
function Store:getSMonthCardDailyReward(id)
|
fc8e212e
zhangqijia
fix: 月卡- 增刊异常
|
374
375
|
if not id then return nil end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
|
local before_ex = SuperMonthCard["periods"](self, id)
local reward, change, cur_ex= SuperMonthCard["itemDaily"](self, id)
--今日特刊奖励已经领取
self:updateProperty({field = "smonthCardReceive", value = 1})
self.owner:log("month_card", {
item_type = CardType.SuperMonthCard,
item_id = id, --月卡id
before_ex = before_ex, --未领取奖励前的期
cur_ex = cur_ex, --剩余期数
reward_time = skynet.timex(), --奖励时间
month_reward_detail = reward,
})
return reward, change
end
function Store:firstBuyMonthCard(id)
if self:getProperty("firstMonthCard") == 1 then
self:updateProperty({field = "firstMonthCard", value = 0})
local card = csvdb["shop_cardCsv"][id] or {}
|
94f99134
zhangqijia
fix: shop_card字段修改
|
397
|
return self.owner:award(card["itemOnce"], {log = {desc = "monthCardReward", int1 = id, int2 = 30}})
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
398
399
400
401
|
end
return nil
end
|
c5825110
saicom
新增用户商城相关数据
|
402
|
-- 购买通行证
|
c756d4df
liuzujun
新年将军令活动
|
403
|
function Store:onBuyCard(type, duration, id, actid)
|
c5825110
saicom
新增用户商城相关数据
|
404
|
local timeNow = skynet.timex()
|
3e20f499
saicom
完善商城相关协议
|
405
|
if type == CardType.NormalMonthCard then
|
317a46a9
liuzujun
添加特权卡
|
406
|
if self:isMonthCardExpire() then
|
2e283f60
liuzujun
月卡升级
|
407
|
self:updateProperty({field = "monthCardId", value = id})
|
317a46a9
liuzujun
添加特权卡
|
408
|
end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
409
410
|
self:updateProperty({field = "monthCardEx", value = self:getProperty("monthCardEx") + 30})
|
eae157a4
zhangqijia
feat: 月卡 + 特刊的道具兑换
|
411
|
local reward = {}
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
412
|
--初回特典 仅首次购买月卡时赠送SSR级角色"拉塔托娅"
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
413
|
local tmpreward, _ = self:firstBuyMonthCard(id)
|
eae157a4
zhangqijia
feat: 月卡 + 特刊的道具兑换
|
414
|
if tmpreward then table.rewardMerge(reward, tmpreward) end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
415
|
|
eae157a4
zhangqijia
feat: 月卡 + 特刊的道具兑换
|
416
|
--订阅奖励
|
94f99134
zhangqijia
fix: shop_card字段修改
|
417
|
tmpreward = SuperMonthCard["itemFirst"](self, id)
|
eae157a4
zhangqijia
feat: 月卡 + 特刊的道具兑换
|
418
419
|
if next(tmpreward) then table.rewardMerge(reward, tmpreward) end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
420
421
422
|
return reward
elseif type == CardType.SuperMonthCard then
if SuperMonthCard["buy"](self, id) then
|
94f99134
zhangqijia
fix: shop_card字段修改
|
423
424
|
skynet.error("特刊购买成功:"..id)
return SuperMonthCard["itemFirst"](self, id)
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
425
|
end
|
94f99134
zhangqijia
fix: shop_card字段修改
|
426
|
return nil
|
2e283f60
liuzujun
月卡升级
|
427
428
429
430
431
|
elseif type == CardType.NormalMonthCardLevelUp then
if self:isMonthCardExpire() then
skynet.error(string.format("month card expired, can not level up,%d,%d",self.owner:getProperty("id"), id))
else
local cfg = csvdb["shop_cardCsv"][id]
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
432
|
if not cfg then return end
|
30f12b27
liuzujun
战令活动过期清购买记录, 升级月卡...
|
433
434
|
local dif = cfg.level - self:getCurMonthCardLvl(false)
if dif > 1 and dif < 0 then
|
2e283f60
liuzujun
月卡升级
|
435
436
437
438
439
440
|
return
end
self:updateProperty({field = "monthCardId", value = id})
self:updateProperty({field = "monthCardEx", value = self:getProperty("monthCardEx") + duration})
end
self:sendMonthCardEmail()
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
441
|
|
2e283f60
liuzujun
月卡升级
|
442
443
444
445
446
|
elseif type == CardType.SuperMonthCardLevelUp then
if self:isSuperMonthCardExpire() then
skynet.error(string.format("super month card expired, can not level up,%d,%d",self.owner:getProperty("id"), id))
else
local cfg = csvdb["shop_cardCsv"][id]
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
447
|
if not cfg then return end
|
30f12b27
liuzujun
战令活动过期清购买记录, 升级月卡...
|
448
449
|
local dif = cfg.level - self:getCurMonthCardLvl(true)
if dif > 1 and dif < 0 then
|
2e283f60
liuzujun
月卡升级
|
450
451
452
453
454
455
|
return
end
self:updateProperty({field = "smonthCardId", value = id})
self:updateProperty({field = "smonthCardEx", value = self:getProperty("smonthCardEx") + duration})
end
self:sendMonthCardEmail()
|
3e20f499
saicom
完善商城相关协议
|
456
|
elseif type == CardType.PrivilegeCard then
|
317a46a9
liuzujun
添加特权卡
|
457
458
459
460
461
|
if self:isPrivCardExpire() then
self:updateProperty({field = "privCardEx", value = timeNow + duration})
else
self:updateProperty({field = "privCardEx", value = self:getProperty("privCardEx") + duration})
end
|
3e20f499
saicom
完善商城相关协议
|
462
463
464
|
elseif type == CardType.GrowFund then
self:updateProperty({field = "growFund", value = 1})
elseif type == CardType.BattleCard then
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
465
|
self:updateProperty({field = "battleCard", value = 1})
|
37bb4611
liuzujun
付费签到,抽卡阶段奖励,探索指令
|
466
467
468
469
|
elseif type == CardType.PaySignCard then
self:onBuyPaySignCard(duration)
elseif type == CardType.BattlePassCard then
local index = id - 400 -- 401:初级 402:中级 403:高级 404:终极
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
470
471
472
473
474
|
local bpInfo = self:getProperty("bpInfo") or {}
local info = bpInfo[index] or {}
info["flag"] = 1
bpInfo[index] = info
self:updateProperty({field = "bpInfo", value = bpInfo})
|
c756d4df
liuzujun
新年将军令活动
|
475
|
elseif type == CardType.ActBattleCommandCard then
|
98be031a
liuzujun
新年活动
|
476
|
if not self.owner.activity:isOpenById(actid, "ActShopGoods") then
|
c756d4df
liuzujun
新年将军令活动
|
477
478
479
480
481
|
return
end
local actCfg = csvdb["activity_ctrlCsv"][actid]
if not actCfg then return end
local actData = self.owner.activity:getActData("BattleCommand") or {}
|
c756d4df
liuzujun
新年将军令活动
|
482
483
484
|
actData["unlock"] = 1
if actCfg.condition ~= 0 then
actData["lvl"] = (actData["lvl"] or 0) + actCfg.condition
|
3552b8db
chenyueqi
打印log方法要用role的
|
485
|
self.owner:mylog("act_action", {desc="buyBcLvl", int1=actCfg.condition, int2=actData["lvl"]})
|
c756d4df
liuzujun
新年将军令活动
|
486
|
end
|
70fb62d1
liuzujun
服务器数据打点
|
487
|
self.owner:mylog("act_action", {desc="buyBc", int1=id, int2=actData["lvl"] or 0})
|
98be031a
liuzujun
新年活动
|
488
|
self.owner.activity:updateActData("BattleCommand", actData)
|
c5825110
saicom
新增用户商城相关数据
|
489
|
end
|
c40a6460
zhangqijia
feat: 月卡+特刊
|
490
|
return nil, nil
|
c5825110
saicom
新增用户商城相关数据
|
491
492
|
end
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
493
|
--检测购买是否超过限制数量
|
3e20f499
saicom
完善商城相关协议
|
494
|
function Store:checkRechargeRecord(limit, id)
|
3a3a3ddf
liuzujun
下单前检测商品限购次数
|
495
|
local rechargeRecord = self:getProperty("payR") or {}
|
c5825110
saicom
新增用户商城相关数据
|
496
|
if limit ~= 0 and limit <= (rechargeRecord[id] or 0) then
|
d705a315
zhouhaihai
充值 整理
|
497
|
skynet.error(string.format("[recharge] recharge id:%d count over limit, user id:%d", id, self.owner:getProperty("id")))
|
c5825110
saicom
新增用户商城相关数据
|
498
499
|
return false
end
|
3e20f499
saicom
完善商城相关协议
|
500
501
|
rechargeRecord[id] = (rechargeRecord[id] or 0) + 1
self:updateProperty({field = "payR", value = rechargeRecord})
|
c5825110
saicom
新增用户商城相关数据
|
502
503
504
|
return true
end
|
3e20f499
saicom
完善商城相关协议
|
505
506
507
508
509
|
function Store:notifyUpdateProperty(field, newValue, oldValue)
local datas = {
key = field,
newValue = newValue,
oldValue = oldValue,
|
2e283f60
liuzujun
月卡升级
|
510
|
}
|
3e20f499
saicom
完善商城相关协议
|
511
512
513
|
SendPacket(actionCodes.Store_updateproperty, MsgPack.pack(datas))
end
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
514
515
|
-- 赛季卡重置 需要把未能领取的奖励通过邮件发送
function Store:onBattleCardReset()
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
516
|
local gift = {}
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
517
|
local function concatGift(data)
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
518
519
|
for key, v in pairs(data:toNumMap()) do
gift[key] = (gift[key] or 0) + v
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
520
521
522
523
524
525
526
527
528
529
530
|
end
end
local battleCardFlag = self:getProperty("battleCard")
local battleCardFreeRecord = self:getProperty("battleFR")
local battleCardLimitRecord = self:getProperty("battleLR")
local battlePoint = self.owner:getProperty("battlePoint")
for id, config in pairs(csvdb["reward_battlepassCsv"]) do
if config then
local freeFlag = string.char(string.getbit(battleCardFreeRecord, id))
local limitFlag = string.char(string.getbit(battleCardLimitRecord, id))
|
9ea0c502
liuzujun
限时礼包
|
531
|
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
532
533
534
535
536
537
538
539
540
541
|
if battlePoint < config.point then
break
end
if freeFlag == "0" then
concatGift(config.giftFree)
end
if limitFlag == "0" and battleCardFlag == 1 then
concatGift(config.giftLimit)
end
end
|
9ea0c502
liuzujun
限时礼包
|
542
|
end
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
543
|
self.owner:sendMail(MailId.BattleCardAward, nil, gift)
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
544
545
|
-- 计算剩余奖励
self:updateProperty({field = "battleCard", value=0})
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
546
547
548
549
550
551
|
self:updateProperty({field = "battleFR", value=""})
self:updateProperty({field = "battleLR", value=""})
self.owner:updateProperty({field = "battlePoint", value=0})
end
-- 重置购买记录
|
1a0b3c56
liuzujun
抽卡保底,切换定向卡池
|
552
553
554
555
556
557
558
559
|
function Store:resetStoreReored(resetId)
local payRecord = self:getProperty("payR") or {}
local buyRecord = self:getProperty("buyR") or {}
for k, v in pairs(payRecord) do
local config = csvdb["shop_rechargeCsv"][k]
if config then
if config.resetTime == resetId then
payRecord[k] = nil
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
560
561
562
563
564
565
|
--通行证商店
if config.shop == 2 then
if config.type == CardType.BattleCard then
self:onBattleCardReset()
end
end
|
1a0b3c56
liuzujun
抽卡保底,切换定向卡池
|
566
|
end
|
8e892c71
liuzujun
挑战关卡活动打完再扣门票
|
567
568
|
else
payRecord[k] = nil
|
1a0b3c56
liuzujun
抽卡保底,切换定向卡池
|
569
570
571
572
573
574
575
576
577
|
end
end
self:updateProperty({field = "payR", value = payRecord})
for k, v in pairs(buyRecord) do
local config = csvdb["shop_normalCsv"][k]
if config then
if config.resetTime == resetId then
buyRecord[k] = nil
end
|
8e892c71
liuzujun
挑战关卡活动打完再扣门票
|
578
579
|
else
buyRecord[k] = nil
|
1a0b3c56
liuzujun
抽卡保底,切换定向卡池
|
580
581
582
583
584
|
end
end
self:updateProperty({field = "buyR", value = buyRecord})
end
|
9ea0c502
liuzujun
限时礼包
|
585
586
587
|
--触发限时礼包
function Store:OnTriggerLimitTimePack(eventType, param)
local limitPack = self:getProperty("limitTPack")
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
588
|
--local payRecord = self:getProperty("payR")
|
9ea0c502
liuzujun
限时礼包
|
589
|
local timeNow = skynet.timex()
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
590
|
--local find = false
|
9ea0c502
liuzujun
限时礼包
|
591
|
-- 有未过期的限时礼包不再推送
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
592
593
594
595
596
597
598
599
600
601
602
603
604
|
--for k, v in pairs(limitPack) do
-- if v > timeNow and not payRecord[k] then
-- find = true
-- break
-- end
--end
--if find == true then
-- return
--end
--local hangPass = self.owner:getProperty("hangPass")
--local triggerRecord = self:getProperty("packTrigger")
--local result = {}
--local maxDiff = 0
|
9ea0c502
liuzujun
限时礼包
|
605
|
-- 取满足限时礼包关卡要求的对应数据
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
|
--for diff, maxCarbonId in pairs(hangPass) do
-- for id, cfg in pairs(csvdb["shop_packCsv"]) do
-- local range = cfg.showRange:toArray(true, "=")
-- local beginRange = range[1] or 0
-- local endRange = range[2] or 0
-- if maxCarbonId > beginRange and maxCarbonId <= endRange and cfg.type == eventType then
-- result[diff] = cfg
-- maxDiff = math.max(maxDiff, diff)
-- break
-- end
-- end
--end
local config = nil
for id, cfg in pairs(csvdb["shop_packCsv"]) do
if cfg.type == eventType and cfg.condition == param then
config = cfg
|
9ea0c502
liuzujun
限时礼包
|
622
623
|
end
end
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
624
|
if config ~= nil then
|
a33ade6c
liuzujun
rmb礼包改钻石礼包
|
625
|
local rechargeCfg = csvdb["shop_normalCsv"][config.packId]
|
9ea0c502
liuzujun
限时礼包
|
626
|
if rechargeCfg then
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
627
|
limitPack[rechargeCfg.id] = {timeNow + rechargeCfg.time, config.id}
|
97807511
zhouhaihai
增加日志
|
628
629
|
self.owner:log("push_gift", {
gift_id = rechargeCfg.id, --礼包ID
|
a33ade6c
liuzujun
rmb礼包改钻石礼包
|
630
|
gift_name = rechargeCfg.descId, --礼包名称
|
97807511
zhouhaihai
增加日志
|
631
|
})
|
bf096b07
liuzujun
每日抽卡限时礼包触发时,清空购买记录
|
632
633
|
-- 每日抽卡限时礼包 触发重置
if eventType == TriggerEventType.DrawHeroCnt then
|
a33ade6c
liuzujun
rmb礼包改钻石礼包
|
634
|
local payR = self:getProperty("buyR")
|
bf096b07
liuzujun
每日抽卡限时礼包触发时,清空购买记录
|
635
636
|
if payR[rechargeCfg.id] then
payR[rechargeCfg.id] = nil
|
a33ade6c
liuzujun
rmb礼包改钻石礼包
|
637
|
self:updateProperty({field = "buyR", value = payR})
|
bf096b07
liuzujun
每日抽卡限时礼包触发时,清空购买记录
|
638
639
|
end
end
|
5226a156
liuzujun
每日抽卡礼包bug
|
640
|
self:updateProperty({field = "limitTPack", value = limitPack})
|
9ea0c502
liuzujun
限时礼包
|
641
642
|
end
end
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
643
644
645
|
--if next(result) then
-- self:updateProperty({field = "packTrigger", value = triggerRecord})
--end
|
9ea0c502
liuzujun
限时礼包
|
646
647
|
end
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
648
649
650
651
|
function GetActGoodsIndex(goodsType)
return ActGoodsType[goodsType] or 0
end
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
652
|
function Store:SetActGoodsFlag(goodsType, flag)
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
653
|
local actGoodsFlag = self:getProperty("actGoodsFlag") or {}
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
654
|
local goodsIndex = GetActGoodsIndex(goodsType)
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
655
656
657
658
|
if goodsIndex == 0 then
print("get act goods index fail :paySignIn")
return
end
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
659
|
actGoodsFlag[goodsIndex] = flag
|
53b4b8bd
liuzujun
自动挂机下一关
|
660
|
self:updateProperty({field = "actGoodsFlag", value = actGoodsFlag})
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
661
|
end
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
662
|
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
663
664
665
|
-- 购买付费签到 按开服时间算奖励
function Store:onBuyPaySignCard(dur)
local curTs = skynet.timex()
|
d4d00016
liuzujun
付费签到开始时间改为开服时间
|
666
|
curTs = getServerOpenTs()
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
667
|
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
668
|
self:SetActGoodsFlag("paySignIn", curTs)
|
ede282c0
liuzujun
付费签到规则改为按登录天数计算进度...
|
669
670
671
|
local actData = self.owner.activity:getActData("PaySignIn")
actData[0] = 1
self.owner.activity:updateActData("PaySignIn", actData)
|
460afa6e
liuzujun
付费签到改为主动领取,战斗关卡不一...
|
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
|
--local actGoodsFlag = self:getProperty("actGoodsFlag") or {}
--local goodsIndex = GetActGoodsIndex("paySignIn")
--if goodsIndex == 0 then
-- print("get act goods index fail :paySignIn")
-- return
--end
--actGoodsFlag[goodsIndex] = 1
--self:updateProperty({field = "actGoodsFlag", value = actGoodsFlag})
-- 发钱
--local change
--local reward, curData = self.owner.activity:getPaySignReward()
--if next(reward) then
-- self.owner.activity:updateActData("PaySignIn", curData)
-- reward, change = self.owner:award(reward, {log = {desc = "actPaySign"}})
--end
--self.owner:log("activity", {
-- activity_id = 0, -- 活动ID(或活动指定任务的ID)
-- activity_type = self.owner.activity.ActivityType.PaySignIn, -- 活动类型,见活动类型枚举表
-- activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
--})
--SendPacket(actionCodes.Activity_actPaySignRewardNtf, MsgPack.pack(self.owner:packReward(reward, change)))
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
696
697
698
699
700
701
702
703
704
705
|
end
function Store:checkPaySignReward()
local reward, curData = self.owner.activity:getPaySignReward()
if next(reward) then
self.owner.activity:updateActData("PaySignIn", curData)
self.owner:sendMail(MailId.PaySignAward, nil, reward)
end
end
|
f7a55da3
liuzujun
新增cb2临时限时礼包
|
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
|
-- 临时用 登录触发限时礼包 时间点以后
function Store:OnTriggerLimitTimePackAfterTs(eventType, param)
local limitPack = self:getProperty("limitTPack")
local timeNow = skynet.timex()
local config = nil
for id, cfg in pairs(csvdb["shop_packCsv"]) do
local ts = toUnixtime(""..cfg.condition)
if cfg.type == eventType and ts < param then
config = cfg
if config ~= nil then
local rechargeCfg = csvdb["shop_rechargeCsv"][config.packId]
if rechargeCfg then
if not limitPack[rechargeCfg.id] then
limitPack[rechargeCfg.id] = {timeNow + rechargeCfg.time, config.id}
self.owner:log("push_gift", {
gift_id = rechargeCfg.id, --礼包ID
gift_name = rechargeCfg.title, --礼包名称
})
self:updateProperty({field = "limitTPack", value = limitPack, notNotify = false})
end
end
end
end
end
end
|
cddfa602
zhangqijia
feat: 月卡解锁的日/周商店随...
|
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
|
local function checkShopFinish(shop, shopPool)
local tmpShop = shopPool[shop.id] or {}
if next(tmpShop) then
if tmpShop.expire_ts then
if skynet.timex() > tmpShop.expire_ts then
shopPool[shop.id] = nil
return true
else
return false
end
else
tmpShop.expire_ts = skynet.timex() + tmpShop.cool_time * DAY_SEC
return false
end
else
return true
end
end
--随机日/周商店随机两个商品
-- 1. 让缓存里的商品进入冷却时间
-- 2. 删除缓存里的已经冷却好的商品
-- 3. 随机两件商品放入缓存中
function Store:flushDailyShop()
local dailyShop = self:getProperty("dailyShop") or {}
local tmpDailyShop = {}
for id, data in pairs(csvdb["shop_normalCsv"]) do
if data.shop == 1 and data.shopType == 3 then
if data.resetTime == 1 and checkShopFinish(data, dailyShop) then
tmpDailyShop[id] = {["id"] = data.id, ["weight"] = 100, ["cool_time"] = data.cool_time}
end
end
end
--随机两件商品放入缓存 跨天刷新
if next(tmpDailyShop) then
local id = math.randWeight(tmpDailyShop)
if id then
dailyShop[id] = tmpDailyShop[id]
tmpDailyShop[id] = nil
end
id = math.randWeight(tmpDailyShop)
if id then
dailyShop[id] = tmpDailyShop[id]
tmpDailyShop[id] = nil
end
end
self:updateProperty({field="dailyShop", value= dailyShop})
end
function Store:flushWeekShop()
local weekShop = self:getProperty("weekShop") or {}
local tmpWeekShop = {}
for id, data in pairs(csvdb["shop_normalCsv"]) do
if data.shop == 1 and data.shopType == 3 then
if data.resetTime == 2 and checkShopFinish(data, weekShop)then
tmpWeekShop[id] = {["id"] = data.id, ["weight"] = 100, ["cool_time"] = data.cool_time}
end
end
end
--随机两件商品放入缓存 跨周刷新
if next(tmpWeekShop) then
local id = math.randWeight(tmpWeekShop)
if id then
weekShop[id] = weekShop[id]
tmpWeekShop[id] = nil
end
id = math.randWeight(tmpWeekShop)
if id then
weekShop[id] = weekShop[id]
tmpWeekShop[id] = nil
end
end
self:updateProperty({field="weekShop", value= weekShop})
end
|
c5825110
saicom
新增用户商城相关数据
|
815
|
function Store:data()
|
f7a55da3
liuzujun
新增cb2临时限时礼包
|
816
|
self:OnTriggerLimitTimePackAfterTs(TriggerEventType.AfterTs, skynet.timex())
|
c5825110
saicom
新增用户商城相关数据
|
817
|
return {
|
3e20f499
saicom
完善商城相关协议
|
818
819
820
821
822
|
buyR = self:getProperty("buyR"),
payR = self:getProperty("payR"),
growFund = self:getProperty("growFund"),
growFundR = self:getProperty("growFundR"),
monthCardEx = self:getProperty("monthCardEx"),
|
fb3d084d
liuzujun
月卡赛季卡发送邮件奖励
|
823
824
825
|
battleCard = self:getProperty("battleCard"),
battleFR = self:getProperty("battleFR"),
battleLR = self:getProperty("battleLR"),
|
3e20f499
saicom
完善商城相关协议
|
826
|
limitTPack = self:getProperty("limitTPack"),
|
317a46a9
liuzujun
添加特权卡
|
827
|
privCardEx = self:getProperty("privCardEx"),
|
00bf6029
liuzujun
限时礼包,抽卡ssr广播
|
828
|
--packTrigger = self:getProperty("packTrigger"),
|
51d9d20b
liuzujun
付费签到,应用市场反馈
|
829
830
|
actGoodsFlag = self:getProperty("actGoodsFlag"),
bpInfo = self:getProperty("bpInfo"),
|
4f7cffe5
liuzujun
多队挂机任务取消功能,累充奖励
|
831
|
totalRR = self:getProperty("totalRR"),
|
2e283f60
liuzujun
月卡升级
|
832
|
monthCardId = self:getProperty("monthCardId"),
|
41b05e8f
zhangqijia
fix: 月卡+特刊领取奖励后,还...
|
833
834
|
firstMonthCard = self:getProperty("firstMonthCard"),
monthCardReceive = self:getProperty("monthCardReceive"),
|
cddfa602
zhangqijia
feat: 月卡解锁的日/周商店随...
|
835
836
837
838
|
smonthCards = self:getProperty("smonthCards"),
smonthCardReceive = self:getProperty("smonthCardReceive"),
dailyShop = self:getProperty("dailyShop"),
weekShop = self:getProperty("weekShop"),
|
c5825110
saicom
新增用户商城相关数据
|
839
840
841
842
|
}
end
return Store
|