d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 
 | 
  local ipairs = ipairs
  local table = table
  local math = math
  local string = string
  local redisproxy = redisproxy
  local MsgPack = MsgPack
  local string_format = string.format
  local tonumber = tonumber
  local table_insert = table.insert
  local table_unpack = table.unpack
  local table_find = table.find
  local table_nums = table.nums
  local math_random = math.randomInt
  
  
  local _M = {}
  
  
  function _M.sudokuRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local id = msg.id
  
  	local sudoku = role:getProperty("sudoku")
  	local phase = sudoku[-1] or 1
  	local curData = (csvdb["guide_sudokuCsv"][phase] or {})[id]
  	if phase == -1 or not curData then return 1 end
  
  	sudoku.task = sudoku.task or {}
  	sudoku.task[phase] = sudoku.task[phase] or {}
  
  	if (sudoku.task[phase][id] or 0) < curData.con1 then return 2 end
  
  	sudoku.task[phase][id] = -1
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
35 
 | 
  	local task, tchange = role:award(curData.reward, {log = {desc = "sudoku", int1 = id, int2 = phase}}) -- 任务奖励
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
36 
 | 
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
37 
 | 
  	local reward, rchange = {}
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 
 | 
  	local rId = {}
  	for pid, pdata in pairs(csvdb["guide_sudoku_rewardCsv"][phase] or {}) do
  		local pos = pdata.pos:toArray(true, "=")
  		local ok, is = true, false
  		for _, one in pairs(pos) do
  			if one == id then
  				is = true
  			end
  			if sudoku.task[phase][one] ~= -1 then
  				ok = false
  				break
  			end
  		end
  
  		if ok and is then
  			for itemId, count in pairs(pdata.reward:toNumMap()) do
  				reward[itemId] = (reward[itemId] or 0) + count
  			end
  			table.insert(rId, pid)
  		end
  	end
  
  	if not next(reward) then
  		reward = nil
  	else
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
63 
 | 
  		reward, rchange = role:award(reward, {log = {desc = "sudokuR", int1 = id, int2 = phase}})
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
64
65
66
67 
 | 
  	end
  
  	role:updateProperty({field = "sudoku", value = sudoku})
  
 
 | 
c59e058b
 
  zhouhaihai
 
新一批日志记录
 | 
68
69
70 
 | 
  	role:log("activity", {
  		activity_id = id, -- 活动ID(或活动指定任务的ID)
  		activity_type = 0, -- 活动类型,见活动类型枚举表
 
 | 
56c7a1c5
 
  测试
 
修改报错,下载cv奖励记录字段
 | 
71 
 | 
  		activity_reward = reward or {}, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
 
 | 
c59e058b
 
  zhouhaihai
 
新一批日志记录
 | 
72 
 | 
  	})
 
 | 
f22a33af
 
  zhouhaihai
 
自己的日志
 | 
73 
 | 
  	role:mylog("act_action", {desc = "sudoku", int1 = id, int2 = phase})
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
74 
 | 
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
75 
 | 
  	SendPacket(actionCodes.Activity_sudokuRpc, MsgPack.pack({task = role:packReward(task, tchange), reward = role:packReward(reward, rchange), rId = rId}))
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 
 | 
  	return true
  end
  
  function _M.sudokuRewardRpc(agent, data)
  	local role = agent.role
  
  
  	local sudoku = role:getProperty("sudoku")
  	local phase = sudoku[-1] or 1
  
  	local curData = csvdb["guide_sudokuCsv"][phase]
  	if not curData then return end
  	if not globalCsv.guide_sudoku_reward[phase] then return end
  
  	local curTask = (sudoku.task or {})[phase] or {}
  
  	for id, _ in pairs(curData) do
  		if curTask[id] ~= -1 then
  			return
  		end
  	end
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
98 
 | 
  	local reward, change = role:award(globalCsv.guide_sudoku_reward[phase], {log = {desc = "sudokuRP", int1 = phase}})
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
99
100
101
102
103
104
105
106
107 
 | 
  
  	sudoku[-1] = phase + 1
  	sudoku.task[phase] = nil
  	if not csvdb["guide_sudokuCsv"][sudoku[-1]] then
  		sudoku[-1] = -1
  		sudoku.task = nil
  	end
  	role:updateProperty({field = "sudoku", value = sudoku})
  
 
 | 
c59e058b
 
  zhouhaihai
 
新一批日志记录
 | 
108
109
110 
 | 
  	role:log("activity", {
  		activity_id = 10000 + phase, -- 活动ID(或活动指定任务的ID)
  		activity_type = 0, -- 活动类型,见活动类型枚举表
 
 | 
887c1843
 
  zhouhaihai
 
日志新一批
 | 
111 
 | 
  		activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
 
 | 
c59e058b
 
  zhouhaihai
 
新一批日志记录
 | 
112
113 
 | 
  	})
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
114 
 | 
  	SendPacket(actionCodes.Activity_sudokuRewardRpc, MsgPack.pack(role:packReward(reward, change)))
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 
 | 
  	return true
  end
  
  
  function _M.signRpc(agent, data)
  	local role = agent.role
  
  	local serverT = skynet.timex()
  	local tm = os.date("*t", serverT)
  
  	local curDay = tm.day
  	
  	local yearMonth = tm.year * 100 + tm.month
  	local monthData = csvdb["daily_signInCsv"][yearMonth]
  	if not monthData or not monthData[curDay] then
  		return 1
  	end
  
  	local signs = role:getProperty("sign")
  	if signs[curDay] == yearMonth then  -- 未重置的还可以签到正常(本月已经签到)
  		return 2
  	end
  	signs[curDay] = yearMonth
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
139 
 | 
  	local reward, change = role:award(monthData[curDay].item, {log = {desc = "sign", int1 = yearMonth, int2 = curDay}})
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
140 
 | 
  	role:changeUpdates({{type = "sign", field = curDay, value = yearMonth}})
 
 | 
e7806e6f
 
  zhouhaihai
 
签到成就
 | 
141 
 | 
  	role:checkTaskEnter("SignIn")
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
142 
 | 
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
143 
 | 
  	SendPacket(actionCodes.Activity_signRpc, MsgPack.pack(role:packReward(reward, change)))
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
144
145
146
147 
 | 
  	return true
  end
  
  
 
 | 
ea40710f
 
  zhouhaihai
 
活动
 | 
148
149 
 | 
  function _M.actSignRpc(agent, data)
  	local role = agent.role
 
 | 
be4e8031
 
  zhouhaihai
 
活动 拾荒
 | 
150 
 | 
  	if not role.activity:isOpen("Sign") then return 1 end
 
 | 
ea40710f
 
  zhouhaihai
 
活动
 | 
151
152 
 | 
  
  	local curData = role.activity:getActData("Sign")
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
153 
 | 
  	local reward, change = {}
 
 | 
be4e8031
 
  zhouhaihai
 
活动 拾荒
 | 
154 
 | 
  	for day, csvData in ipairs(csvdb["new_signInCsv"]) do
 
 | 
ea40710f
 
  zhouhaihai
 
活动
 | 
155
156
157
158
159
160
161
162
163
164
165
166
167 
 | 
  		if day <= (curData[0] or 0) then
  			if not curData[day] then
  				curData[day] = -1
  				-- 奖励
  				for itemId, count in pairs(csvData.reward:toNumMap()) do
  					reward[itemId] = (reward[itemId] or 0) + count
  				end
  			end
  		else
  			break
  		end
  	end
  	if next(reward) then
 
 | 
be4e8031
 
  zhouhaihai
 
活动 拾荒
 | 
168 
 | 
  		role.activity:updateActData("Sign", curData)
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
169 
 | 
  		reward, change = role:award(reward, {log = {desc = "actSign"}})
 
 | 
ea40710f
 
  zhouhaihai
 
活动
 | 
170 
 | 
  	end
 
 | 
c59e058b
 
  zhouhaihai
 
新一批日志记录
 | 
171
172
173
174 
 | 
  
  	role:log("activity", {
  		activity_id = curData[0], -- 活动ID(或活动指定任务的ID)
  		activity_type = role.activity.ActivityType.Sign, -- 活动类型,见活动类型枚举表
 
 | 
887c1843
 
  zhouhaihai
 
日志新一批
 | 
175 
 | 
  		activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
 
 | 
c59e058b
 
  zhouhaihai
 
新一批日志记录
 | 
176
177 
 | 
  	})
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
178 
 | 
  	SendPacket(actionCodes.Activity_actSignRpc, MsgPack.pack(role:packReward(reward, change)))
 
 | 
ea40710f
 
  zhouhaihai
 
活动
 | 
179
180
181 
 | 
  	return true
  end
  
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
182 
 | 
  
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
183
184
185 
 | 
  function _M.actPaySignRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
186 
 | 
  	local dayIndex = msg.day
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
187
188 
 | 
  	local actGoodsFlag = role.storeData:getProperty("actGoodsFlag")
  	local index = GetActGoodsIndex("paySignIn")
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
189
190 
 | 
  	local ts = actGoodsFlag[index] or 0
  	if ts == 0 then return 1 end
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
191 
 | 
  
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
192
193 
 | 
  	local open, actId = role.activity:isOpen("PaySignIn")
  	if not open then return 2 end
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
194 
 | 
  
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
195 
 | 
  	local diffDay = diffFromTs(ts) + 1
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
196
197 
 | 
  
  	local curData = role.activity:getActData("PaySignIn")
 
 | 
b1644d3b
 
  测试
 
付费签到天数bug
 | 
198 
 | 
  	if not curData then return 3 end
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
199
200 
 | 
  	local reward, change = {}
  	for day, csvData in ipairs(csvdb["pay_signInCsv"]) do
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
201 
 | 
  		if day <= diffDay and day == dayIndex then
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
202
203
204
205
206
207
208 
 | 
  			if not curData[day] then
  				curData[day] = 1
  				-- 奖励
  				for itemId, count in pairs(csvData.reward:toNumMap()) do
  					reward[itemId] = (reward[itemId] or 0) + count
  				end
  			end
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
209
210 
 | 
  		--else
  		--	break
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
211
212
213
214
215
216
217
218 
 | 
  		end
  	end
  	if next(reward) then
  		role.activity:updateActData("PaySignIn", curData)
  		reward, change = role:award(reward, {log = {desc = "actPaySign"}})
  	end
  
  	role:log("activity", {
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
219 
 | 
  		activity_id = actId, -- 活动ID(或活动指定任务的ID)
 
 | 
51d9d20b
 
  测试
 
付费签到,应用市场反馈
 | 
220
221
222
223
224
225
226 
 | 
  		activity_type = role.activity.ActivityType.PaySignIn, -- 活动类型,见活动类型枚举表
  		activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
  	})
  
  	SendPacket(actionCodes.Activity_actPaySignRpc, MsgPack.pack(role:packReward(reward, change)))
  	return true
  end
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
227 
 | 
  
 
 | 
4bd3095f
 
  测试
 
英雄帖任务bug
 | 
228 
 | 
  function _M.actCalendaTaskRpc(agent, data)
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
229
230
231 
 | 
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local taskId = msg.id
 
 | 
4bd3095f
 
  测试
 
英雄帖任务bug
 | 
232 
 | 
  	local calTask = role:getProperty("calTask") or {}
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
233
234
235
236
237
238
239
240 
 | 
  	local record = calTask["r"] or {}
  	local flag = record[taskId] or 0
  	if flag == 1 then return 1 end
  	local open, actId = role.activity:isOpen("CalendaTask")
  	local actData = csvdb["activity_ctrlCsv"][actId]
  	if not open then return 2 end
  	if not actData then return 3 end
  
 
 | 
4bd3095f
 
  测试
 
英雄帖任务bug
 | 
241
242
243
244
245 
 | 
  	local taskList = csvdb["activity_taskCsv"][actData.condition]
  	if not taskList then return 4 end
  	local taskCfg = taskList[taskId]
  	if not taskCfg then return 5 end
  	if taskCfg.key ~= actData.condition then return 6 end
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
246 
 | 
  
 
 | 
4bd3095f
 
  测试
 
英雄帖任务bug
 | 
247 
 | 
  	if (calTask[taskId] or 0) < taskCfg.condition1 then return 7 end
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
248
249
250
251 
 | 
  
  	record[taskId] = 1
  	calTask["r"] = record
  
 
 | 
4bd3095f
 
  测试
 
英雄帖任务bug
 | 
252 
 | 
  	role:updateProperty({field = "calTask", value = calTask})
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
253 
 | 
  
 
 | 
4bd3095f
 
  测试
 
英雄帖任务bug
 | 
254 
 | 
  	local reward, change = role:award(taskCfg.reward, {log = {desc = "calendaTask"}})
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
255
256
257
258
259
260
261
262 
 | 
  
  	role:log("activity", {
  		activity_id = taskId, -- 活动ID(或活动指定任务的ID)
  		activity_type = role.activity.ActivityType.CalendaTask, -- 活动类型,见活动类型枚举表
  		activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
  	})
  
  	SendPacket(actionCodes.Activity_actCalendaTaskRpc, MsgPack.pack(role:packReward(reward, change)))
 
 | 
4bd3095f
 
  测试
 
英雄帖任务bug
 | 
263 
 | 
  	return true
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
264
265 
 | 
  end
  
 
 | 
847f9a7b
 
  测试
 
兑换活动,邮件内容修改
 | 
266
267
268
269
270 
 | 
  function _M.exchangeRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local actid = msg.actid
  	local id = msg.id
 
 | 
b8b1c164
 
  测试
 
扭蛋活动,万能碎片bug
 | 
271 
 | 
  	if not role.activity:isOpenById(actid) then return 1 end
 
 | 
847f9a7b
 
  测试
 
兑换活动,邮件内容修改
 | 
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297 
 | 
  
  	local exchangeCfg = csvdb["activity_exchangeCsv"][actid]
  	if not exchangeCfg then return 2 end
  	if not exchangeCfg[id] then return 3 end
  	local curData = role.activity:getActData("Exchange") or {}
  	local exchangeData = curData[actid] or {}
  	local curCount = exchangeData[id] or 0
  	local actCfg = exchangeCfg[id]
  	if curCount >= actCfg then return 4 end
  
  	local costs = actCfg.goods:toNumMap()
  	if not role:checkItemEnough(costs) then return 5 end
  	role:costItems(costs, {log = {desc = "actExchange", int1 = actid, int2 = id}})
  
  	curCount = curCount + 1
  	exchangeData[id] = curCount
  	curData[actid] = exchangeData
  	role.activity:updateActData("Exchange", curData)
  
  	local reward, change = role:award(actCfg.award, {log = {desc = "actExchange", int1 = actid, int2 = id}})
  
  
  	SendPacket(actionCodes.Activity_exchangeRpc, MsgPack.pack(role:packReward(reward, change)))
  	return true
  end
  
 
 | 
b8b1c164
 
  测试
 
扭蛋活动,万能碎片bug
 | 
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329 
 | 
  function _M.gachakonRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local actid = msg.actid
  	if not role.activity:isOpenById(actid) then return 1 end
  
  	local actCfg = csvdb["activity_capsuleToysCsv"][actid]
  	if not actCfg then return 2 end
  
  	local gachakonInfo = role.activity:getActData("Gachakon") or {}
  	local tmpCfg = clone(actCfg)
  	local flag = 0
  	for id, cfg in pairs(tmpCfg) do
  		local num = gachakonInfo[id] or 0
  		cfg.amount = cfg.amount >= num and cfg.amount - num or 0
  		cfg.weight = cfg.weight * cfg.amount
  		if cfg.weight > 0 then
  			flag = 1
  		end
  	end
  	if flag == 0 then return 3 end
  
  	local id = math.randWeight(tmpCfg, "weight")
  	local reward, change = role:award(tmpCfg[id].award, {log = {desc = "actGachakon", int1 = actid, int2 = id}})
  
  	gachakonInfo[id] = (gachakonInfo[id] or 0) + 1
  	role.activity:updateActData("Gachakon", gachakonInfo)
  
  	SendPacket(actionCodes.Activity_gachakonRpc, MsgPack.pack(role:packReward(reward, change)))
  	return true
  end
  
 
 | 
d763fb14
 
  zhouhaihai
 
签到 九宫格
 | 
330 
 | 
  return _M
 
 |