23d89d13
 
  zhouahaihai
 
冒险 结构
 | 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 
 | 
  local ipairs = ipairs
  local table = table
  local math = math
  local next = next
  local string = string
  local redisproxy = redisproxy
  local MsgPack = MsgPack
  local getRandomName = getRandomName
  local mcast_util = mcast_util
  local string_format = string.format
  local tonumber = tonumber
  local require = require
  local table_insert = table.insert
  local tconcat = table.concat
  local table_unpack = table.unpack
  
 
 | 
8da953a7
 
  zhouhaihai
 
无尽模式
 | 
17
18 
 | 
  local AdvCommon = require "adv.AdvCommon"
  
 
 | 
23d89d13
 
  zhouahaihai
 
冒险 结构
 | 
19
20 
 | 
  local _M = {}
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 
 | 
  -- 无尽模式是否开放
  local function isOpenEndless(role)
  	if role.advOverTime ~= 0 and skynet.timex() >= role.advOverTime then
  		return false
  	end
  	return true
  end
  -- 冒险内的操作是否可以继续
  local function isCanContinue(role)
  	local adv = role:getAdvData()
  	if not adv:isRunning() then return false end
  	if adv:isEndless() then
  		if not isOpenEndless(role) then return false end
  	end
  	return true
  end
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
38 
 | 
  
 
 | 
c3d5fe54
 
  zhouhaihai
 
无战斗状态挂机清掉战斗队伍
 | 
39 
 | 
  local function checkFormat(role, format, checkAdvTeam)
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
40
41
42
43
44
45
46
47
48
49 
 | 
  	local advHang = role:getProperty("advHang")
  	local hadHero = {}
  	for chapterId, info in pairs(advHang) do
  		if info.format then
  			for _, heroId in pairs(info.format.heros) do
  				hadHero[heroId] = true
  			end
  		end
  	end
  
 
 | 
c3d5fe54
 
  zhouhaihai
 
无战斗状态挂机清掉战斗队伍
 | 
50 
 | 
  	if checkAdvTeam then
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
51
52
53
54
55
56 
 | 
  		for _, heroId in pairs(role:getProperty("advTeam").heros or {}) do
  			hadHero[heroId] = true
  		end
  	end
  
  	if not format.leader then return end
 
 | 
bfd33de5
 
  zhouhaihai
 
队长技
 | 
57 
 | 
  	if format.leader2 == format.leader then return end
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
58 
 | 
  	local hadLeader = false
 
 | 
bfd33de5
 
  zhouhaihai
 
队长技
 | 
59
60 
 | 
  	local hadLeader2 = false
  	local heroCount = 0
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
61
62
63
64
65
66
67 
 | 
  	for slot, heroId in pairs(format.heros) do
  		if not role.heros[heroId] or hadHero[heroId] then
  			return
  		end
  		if heroId == format.leader then
  			hadLeader = true
  		end
 
 | 
bfd33de5
 
  zhouhaihai
 
队长技
 | 
68
69
70
71
72
73
74 
 | 
  		if heroId == format.leader2 then
  			hadLeader2 = true
  		end
  		heroCount = heroCount + 1
  	end
  	if not hadLeader2 and heroCount >= 2 then
  		return
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
75
76
77
78
79 
 | 
  	end
  	if not hadLeader then return end
  	return true
  end
  
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
80 
 | 
  --开始一个新的关卡
 
 | 
23d89d13
 
  zhouahaihai
 
冒险 结构
 | 
81
82
83 
 | 
  function _M.startAdvRpc( agent, data )
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
84
85
86 
 | 
  	local chapterId = msg.chapterId --关卡id
  	local layer = msg.layer or 1	--选择层数
  	local format = msg.format 		--编队
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
87 
 | 
  	local supportIdx = msg.supportIdx --选择的支援效果
 
 | 
d232676a
 
  zhouhaihai
 
功能解锁  冒险返回
 | 
88
89 
 | 
  	if not role:isFuncUnlock(FuncUnlock.Adv) then return end
  	
 
 | 
8da953a7
 
  zhouhaihai
 
无尽模式
 | 
90 
 | 
  	--上一个关卡结束才可以开始新的关卡
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
91 
 | 
  	if role:getAdvData():isRunning() then return 8 end
 
 | 
8da953a7
 
  zhouhaihai
 
无尽模式
 | 
92 
 | 
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
93 
 | 
  	local chapterData = csvdb["adv_chapterCsv"][chapterId]
 
 | 
8da953a7
 
  zhouhaihai
 
无尽模式
 | 
94 
 | 
  	if not chapterData or layer < 1 then return  1 end
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
95 
 | 
  
 
 | 
47d5d769
 
  zhouhaihai
 
中继判断 随机任务
 | 
96 
 | 
  	local advPass = role:getProperty("advPass")
 
 | 
0e3ab88d
 
  zhouhaihai
 
中继层
 | 
97
98
99 
 | 
  
  	if AdvCommon.isEndless(chapterId) then -- 无尽模式判断
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
100
101 
 | 
  		if chapterId ~= role.advElChapter then return end -- 不是当前进行的章节
  		if not isOpenEndless(role) then return end
 
 | 
0e3ab88d
 
  zhouhaihai
 
中继层
 | 
102 
 | 
  
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
103 
 | 
  		if role.dailyData:getProperty("advElC") >= role:getAdvElLimit() then return 2 end -- 是否有体力
 
 | 
0e3ab88d
 
  zhouhaihai
 
中继层
 | 
104
105
106 
 | 
  		if not role:isFuncOpen(FuncOpenType.AdvEndless) then return 11 end -- 无尽模式 才可以玩儿无尽模式
  
  		local advElM = role:getProperty("advElM")  --最高通关的层数
 
 | 
e51ff6d2
 
  zhouhaihai
 
冒险~
 | 
107 
 | 
  		if not role:advChapterIsOpen(chapterId) then return 13 end
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
108 
 | 
  
 
 | 
e51ff6d2
 
  zhouhaihai
 
冒险~
 | 
109 
 | 
  		if layer ~= 1 then
 
 | 
0e3ab88d
 
  zhouhaihai
 
中继层
 | 
110 
 | 
  			local relayData = role:getAdvData():isHaveRelay(layer, chapterId) 
 
 | 
e51ff6d2
 
  zhouhaihai
 
冒险~
 | 
111
112 
 | 
  			if not relayData then return 14 end  -- 不是中继层
  			if advElM < relayData.unlockfloor then return 15 end --未解锁
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
113 
 | 
  		end 
 
 | 
0e3ab88d
 
  zhouhaihai
 
中继层
 | 
114 
 | 
  	else   -- 普通模式判断
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
115 
 | 
  		if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return 2 end -- 是否有体力
 
 | 
e51ff6d2
 
  zhouhaihai
 
冒险~
 | 
116 
 | 
  		if layer >= chapterData.limitlevel  then return 4 end
 
 | 
8da953a7
 
  zhouhaihai
 
无尽模式
 | 
117 
 | 
  		-- 关卡开放判断
 
 | 
e51ff6d2
 
  zhouhaihai
 
冒险~
 | 
118
119
120
121
122
123
124 
 | 
  		if not role:advChapterIsOpen(chapterId) then return 5 end
  
  		if layer ~= 1 then
  			local relayData = role:getAdvData():isHaveRelay(layer, chapterId) 
  			if not relayData then return 6 end  -- 不是中继层
  			if (advPass[chapterId] or 0) < relayData.floor then return 21 end
  		end
 
 | 
8da953a7
 
  zhouhaihai
 
无尽模式
 | 
125 
 | 
  	end
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
126
127 
 | 
  	
  	if not checkFormat(role, format) then return 7 end
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
128 
 | 
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
129
130
131
132 
 | 
  	local advTeam = role:getProperty("advTeam")
  	table.clear(advTeam)
  
  	advTeam.heros = {}
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
133 
 | 
  	for slot, heroId in pairs(format.heros) do
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
134
135 
 | 
  		advTeam.heros[slot] = heroId
  	end
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
136 
 | 
  	advTeam.leader = format.leader
 
 | 
bfd33de5
 
  zhouhaihai
 
队长技
 | 
137 
 | 
  	advTeam.leader2 = format.leader2
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
138 
 | 
  	role:updateProperty({field = "advTeam", value = advTeam})
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
139
140
141
142
143 
 | 
  	if AdvCommon.isEndless(chapterId) then
  		role.dailyData:updateProperty({field = "advElC", delta = 1})
  	else
  		role.dailyData:updateProperty({field = "advC", delta = 1})
  	end
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
144 
 | 
  
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163 
 | 
  	local support = {}  -- 支援效果
  	if AdvCommon.isEndless(chapterId) then
  		-- 选择的支援效果
  		local advSup = role:getProperty("advSup")
  		if supportIdx then
  			if advSup[supportIdx] then
  				table.insert(support, advSup[supportIdx])
  			end
  			role:advRandomSupportEffect() -- 选完就重新随机
  		end
  		-- 增加 默认增加的支援效果
  		local active = role:getAdvActiveSupportEffect()
  		for aId, _ in pairs(active) do
  			local curData = csvdb["adv_supportCsv"][aId]
  			if curData.type == 2 then
  				table.insert(support, aId)
  			end
  		end
  	end
 
 | 
35e2e3c4
 
  zhouhaihai
 
优化 gm advt  增加感知b...
 | 
164
165
166
167
168
169
170 
 | 
  	role:getAdvData():initByChapter({
  		chapterId = chapterId, 
  		level = layer, 
  		isRelay = layer ~= 1, 
  		isEnter = true, 
  		support = support,
  	})
 
 | 
53e8037e
 
  zhouhaihai
 
任务
 | 
171 
 | 
  	role:checkTaskEnter("AdvStart", {id = chapterId})
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
172 
 | 
  	role:checkTaskEnter("AdvStartSelf", {id = chapterId})
 
 | 
ecf464a3
 
  zhouhaihai
 
冒险开始bug
 | 
173 
 | 
  	role:getAdvData():popBackEvents() -- 清一下事件
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
174
175 
 | 
  	role:getAdvData():log({desc = "start", int1 = supportIdx})
  
 
 | 
23d89d13
 
  zhouahaihai
 
冒险 结构
 | 
176
177
178
179 
 | 
  	SendPacket(actionCodes.Adv_startAdvRpc, '')
  	return true
  end
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
180
181 
 | 
  
  function _M.startHangRpc(agent, data)
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
182
183 
 | 
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
184
185
186
187
188
189
190
191
192 
 | 
  	local chapterId = msg.chapterId --关卡id
  	local format = msg.format --编队
  
  	local chapterData = csvdb["adv_chapterCsv"][chapterId]
  	if not chapterData then return end
  
  	local advHang = role:getProperty("advHang")
  	if advHang[chapterId] then return end --正在挂机
  
 
 | 
73da9b9d
 
  zhouhaihai
 
冒险队伍优化
 | 
193
194 
 | 
  	if role:getAdvData():isRunning() and role:getAdvData().chapterId == chapterId then return end
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
195 
 | 
  	local advPass = role:getProperty("advPass")
 
 | 
8da953a7
 
  zhouhaihai
 
无尽模式
 | 
196 
 | 
  	if AdvCommon.isEndless(chapterId) or advPass[chapterId] ~= chapterData.limitlevel then return end -- 没有全通关
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
197
198
199 
 | 
  
  	if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return end -- 是否有体力
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
200 
 | 
  	if not checkFormat(role, format, role:getAdvData():isRunning()) then return end --编队是否正确
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
201
202
203
204
205
206
207
208
209
210
211 
 | 
  
  	local battleV = 0
  	for _, heroId in pairs(format.heros) do
  		local hero = role.heros[heroId]
  		battleV = battleV + hero:getProperty("battleV")
  	end
  	if battleV < chapterData.idleValue then return end -- 战斗力是否满足
  
  	local info = {}
  	info.format = {}
  	info.format.leader = format.leader
 
 | 
bfd33de5
 
  zhouhaihai
 
队长技
 | 
212 
 | 
  	info.format.leader2 = format.leader2
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
213
214
215
216
217
218 
 | 
  	info.format.heros  = {}
  	for slot, heroId in pairs(format.heros) do
  		info.format.heros[slot] = heroId
  	end
  	info.time = skynet.timex() + chapterData.idleTime --挂机时间
  
 
 | 
c3d5fe54
 
  zhouhaihai
 
无战斗状态挂机清掉战斗队伍
 | 
219 
 | 
  	-- 没有在战斗  用team来挂机了  把team清掉
 
 | 
cd498e53
 
  zhouhaihai
 
被动技生效bug
 | 
220
221
222 
 | 
  	if not role:getAdvData():isRunning() then
  		role:updateProperty({field = "advTeam", value = {}})
  	end
 
 | 
c3d5fe54
 
  zhouhaihai
 
无战斗状态挂机清掉战斗队伍
 | 
223 
 | 
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
224
225
226 
 | 
  	role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
  
  	role.dailyData:updateProperty({field = "advC", delta = 1})
 
 | 
53e8037e
 
  zhouhaihai
 
任务
 | 
227 
 | 
  	role:checkTaskEnter("AdvStart", {id = chapterId})
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
228
229 
 | 
  	role:log("adv_action", {desc = "startHang", int1 = chapterId})
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
230
231
232
233 
 | 
  	SendPacket(actionCodes.Adv_startHangRpc, '')
  	return true
  end
  
 
 | 
5404ee7d
 
  zhouhaihai
 
冒险挂机加速
 | 
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252 
 | 
  function _M.quickHangRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
  	local chapterId = msg.chapterId --关卡id
  	
  	local advHang = role:getProperty("advHang")
  	local info = advHang[chapterId]
  	if not info then return end 
  
  	local chapterData = csvdb["adv_chapterCsv"][chapterId]
  	if not chapterData then return end
  	
  	local reward, isFull
  	if skynet.timex() >= info.time then return end  -- 已经完成了
  
  	local cost = math.ceil((info.time - skynet.timex()) / chapterData.idleTime * chapterData.accelerate)
  
  	if not role:checkItemEnough({[ItemId.Diamond] = cost}) then return end
 
 | 
33be3111
 
  zhouhaihai
 
修改hangPass 结构
 | 
253 
 | 
  	role:costItems({[ItemId.Diamond] = cost}, {log = {desc = "advQuickHang", int1 = chapterId}})
 
 | 
5404ee7d
 
  zhouhaihai
 
冒险挂机加速
 | 
254
255
256 
 | 
  	info.time = 0
  	role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
  
 
 | 
33be3111
 
  zhouhaihai
 
修改hangPass 结构
 | 
257 
 | 
  	role:log("adv_action", {desc = "advQuickHang", int1 = chapterId})
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
258 
 | 
  
 
 | 
5404ee7d
 
  zhouhaihai
 
冒险挂机加速
 | 
259
260
261
262 
 | 
  	SendPacket(actionCodes.Adv_quickHangRpc, '')
  	return true
  end
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278 
 | 
  function _M.endHangRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
  	local chapterId = msg.chapterId --关卡id
  	local cancel = msg.cancel  --是否是取消
  	
  	local advHang = role:getProperty("advHang")
  	local info = advHang[chapterId]
  	if not info then return end 
  
  	local chapterData = csvdb["adv_chapterCsv"][chapterId]
  	if not chapterData then return end
  	
  	local reward, isFull
  	if skynet.timex() >= info.time then
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
279 
 | 
  		reward = role:award(chapterData.idleReward, {log = {desc = "advHang", int1 = chapterId}})
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
280
281
282
283
284
285
286
287 
 | 
  	else
  		if cancel then
  			if role.dailyData:getProperty("advC") <= 0 then 
  				isFull = true
  			else
  				role.dailyData:updateProperty({field = "advC", delta = -1})
  			end
  		else
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
288
289
290 
 | 
  			return
  		end
  	end
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
291
292
293 
 | 
  	
  	role:changeUpdates({{type = "advHang", field = chapterId, value = nil}})
  
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
294
295 
 | 
  	role:log("adv_action", {desc = "endHang", int1 = chapterId, short1 = cancel and 1 or 0})
  
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
296
297
298
299
300
301
302
303
304 
 | 
  	SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, isFull = isFull}))
  	return true
  end
  
  function _M.buyAdvCountRpc(agent , data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	
  	local count = msg.count --购买次数
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
305
306
307 
 | 
  	local isEl = msg.isEl -- 是否是无尽模式
  	local cost
  	if isEl then
 
 | 
0e3ab88d
 
  zhouhaihai
 
中继层
 | 
308 
 | 
  		if math.illegalNum(count, 1, globalCsv.adv_endless_daily_buy_count - role.dailyData:getProperty("advElBC")) then return end
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
309
310 
 | 
  		cost = {[ItemId.Diamond] = count * globalCsv.adv_endless_daily_buy_cost}
  	else
 
 | 
0e3ab88d
 
  zhouhaihai
 
中继层
 | 
311 
 | 
  		if math.illegalNum(count, 1, globalCsv.adv_daily_buy_count - role.dailyData:getProperty("advBC")) then return end
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
312
313
314
315 
 | 
  		cost = {[ItemId.Diamond] = count * globalCsv.adv_daily_buy_cost}
  	end
  	
  	
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
316 
 | 
  	if not role:checkItemEnough(cost) then return end
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
317 
 | 
  	role:costItems(cost, {log = {desc = "buyAdvCount", short1 = isEl and 1 or 0, int1 = count}})
 
 | 
e38b9c49
 
  zhouhaihai
 
无尽次数
 | 
318
319
320
321
322
323
324 
 | 
  	if isEl then
  		role.dailyData:updateProperty({field = "advElC", delta = -count})
  		role.dailyData:updateProperty({field = "advElBC", delta = count})
  	else
  		role.dailyData:updateProperty({field = "advC", delta = -count})
  		role.dailyData:updateProperty({field = "advBC", delta = count})
  	end
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
325 
 | 
  	role:log("adv_action", {desc = "buyAdvCount", short1 = isEl and 1 or 0, int1 = count})
 
 | 
09be9059
 
  zhouhaihai
 
冒险接口
 | 
326
327 
 | 
  	
  	SendPacket(actionCodes.Adv_buyAdvCountRpc, '')
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
328
329
330 
 | 
  	return true
  end
  
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
331
332
333
334 
 | 
  function _M.finishTaskRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
335 
 | 
  	if not isCanContinue(role) then return end
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
336
337
338
339
340
341
342 
 | 
  	local adv = role:getAdvData()
  	local taskId = msg.taskId  -- -1 则是主线任务
  	local status, reward
  	if taskId == -1 then
  		status, reward = adv:finishMTask()
  	else
  		status, reward = adv:finishTask(taskId)
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
343
344 
 | 
  		adv:checkAchievement(adv.AchievType.TaskLayer, 1, taskId)
  		adv:updateAchievement()
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
345 
 | 
  	end
 
 | 
f99f48df
 
  zhouhaihai
 
冒险任务
 | 
346 
 | 
  	adv:updateTask()
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
347 
 | 
  	if not status then return end
 
 | 
53e8037e
 
  zhouhaihai
 
任务
 | 
348 
 | 
  	role:checkTaskEnter("AdvOverTask", {id = taskId})
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
349
350
351 
 | 
  
  	adv:log({desc = "finishTask", int1 = taskId})
  
 
 | 
4faef572
 
  zhouhaihai
 
冒险任务,冒险扫荡, 冒险中继
 | 
352
353
354
355 
 | 
  	SendPacket(actionCodes.Adv_finishTaskRpc, MsgPack.pack({reward = reward}))
  	return true
  end
  
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
356
357
358
359
360 
 | 
  -- 点击地块(解锁)(触发事件)
  function _M.clickBlockRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
 
 | 
6fc397d6
 
  zhouhaihai
 
角色新突破  冒险优化点击地块
 | 
361
362
363
364
365
366
367
368 
 | 
  	local function returnFail(status)
  		SendPacket(actionCodes.Adv_clickBlockRpc, MsgPack.pack({events = {}}))
  		return true or status -- 调试使用 status
  	end
  
  	if not isCanContinue(role) then
  		return returnFail()
  	end
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
369 
 | 
  	local adv = role:getAdvData()
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
370 
 | 
  
 
 | 
6fc397d6
 
  zhouhaihai
 
角色新突破  冒险优化点击地块
 | 
371 
 | 
  	if adv:isWaitChooseArtifact() then return returnFail() end
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
372
373
374 
 | 
  
  	adv:log({desc = "clickBlock", int1 = msg.roomId, int2 = msg.blockId})
  
 
 | 
8c4a6f4c
 
  zhouhaihai
 
冒险增加错误返回
 | 
375 
 | 
  	local status, errorCode = adv:clickBlock(msg.roomId, msg.blockId, msg)
 
 | 
6fc397d6
 
  zhouhaihai
 
角色新突破  冒险优化点击地块
 | 
376 
 | 
  	if not status then return returnFail(errorCode) end
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
377 
 | 
  
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
378
379
380
381
382
383
384
385
386 
 | 
  	SendPacket(actionCodes.Adv_clickBlockRpc, MsgPack.pack({events = adv:popBackEvents()}))
  	return true
  end
  
  --use item 使用背包道具
  function _M.useItemRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
 
 | 
25a376de
 
  zhouhaihai
 
冒险使用道具
 | 
387
388
389
390
391
392
393 
 | 
  	local itemId = msg.itemId -- 道具Id
  	local count = msg.count or 1 --数量
  	local target = msg.target -- {roomId = 1, blockId = 1} 选择的目标
  
  	local itemData = csvdb["adv_itemCsv"][itemId] 
  	if not itemData then return end
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
394 
 | 
  	if not isCanContinue(role) then return end
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
395 
 | 
  	local adv = role:getAdvData()
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
396 
 | 
  	if adv:isWaitChooseArtifact() then return end
 
 | 
25a376de
 
  zhouhaihai
 
冒险使用道具
 | 
397
398
399
400 
 | 
  	--重置数量 
  	if itemData["function"] == 0 or itemData["function"] == 2 then count = 1 end
  	if not adv:cost({[itemId] = count}, {}, true) then return true end
  
 
 | 
25a376de
 
  zhouhaihai
 
冒险使用道具
 | 
401
402 
 | 
  	--消耗
  	if itemData["function"] == 0 or itemData["function"] == 1 then 
 
 | 
498f0eb2
 
  zhouhaihai
 
冒险 action
 | 
403 
 | 
  		adv:cost({[itemId] = count}, {log = {desc = "useItem", int1 = itemId, int2 = count}})
 
 | 
85ded242
 
  zhouhaihai
 
丰富返回事件
 | 
404 
 | 
  		adv:backUse({[itemId] = count})
 
 | 
25a376de
 
  zhouhaihai
 
冒险使用道具
 | 
405
406 
 | 
  	end
  
 
 | 
db3c56ad
 
  zhouhaihai
 
冒险相关
 | 
407 
 | 
  	adv:checkAchievement(adv.AchievType.UseItem, count, itemId)
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
408 
 | 
  	adv:log({desc = "useItem", int1 = itemId, int2 = count})
 
 | 
6dc482bb
 
  zhouhaihai
 
中继层完成, 新增两个冒险物品使用效果
 | 
409
410
411
412
413 
 | 
  
  	for i = 1, count do
  		adv:doActive(itemData.effect, target) -- target
  	end
  	
 
 | 
25a376de
 
  zhouhaihai
 
冒险使用道具
 | 
414
415
416 
 | 
  	adv:afterRound()
  	adv:saveDB()
  
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
417
418
419
420 
 | 
  	SendPacket(actionCodes.Adv_useItemRpc, MsgPack.pack({events = adv:popBackEvents()}))
  	return true
  end
  
 
 | 
42f2d1d3
 
  suhongyang
 
战斗内技能序列逻辑
 | 
421 
 | 
  --使用营养技能
 
 | 
d27ad5e0
 
  suhongyang
 
使用营养技
 | 
422 
 | 
  function _M.usePotionRpc(agent, data)
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
423
424 
 | 
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
4f0a5fae
 
  zhouhaihai
 
营养剂
 | 
425
426
427
428
429
430
431
432
433
434
435
436
437
438 
 | 
  	local potionId = msg.potionId -- 营养剂Id
  	local target = msg.target -- {roomId = 1, blockId = 1} 选择的目标
  	local potionLv = role.dinerData:getProperty("dishTree"):getv(potionId, 0)
  	if potionLv == 0 then return 1 end
  
  	local potionSet = csvdb["adv_potionCsv"][potionId]
  	if not potionSet then return 2 end
  
  	local potionData = potionSet[potionLv]
  	if not potionData then return 3 end
  
  	local potionBag = role:getProperty("potionBag")
  	local own = potionBag[potionId] or 0
  	if own <= 0 then return 4 end
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
439
440 
 | 
  
  	if not isCanContinue(role) then return end
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
441 
 | 
  	local adv = role:getAdvData()
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
442
443 
 | 
  	if adv:isWaitChooseArtifact() then return end
  
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
444
445 
 | 
  	adv:log({desc = "usePotion", int1 = potionId})
  
 
 | 
4f0a5fae
 
  zhouhaihai
 
营养剂
 | 
446 
 | 
  	local status = adv:doActive(potionData.effect, target) -- target
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
447 
 | 
  	if not status then return end
 
 | 
4f0a5fae
 
  zhouhaihai
 
营养剂
 | 
448
449
450 
 | 
  
  	potionBag[potionId] = own - 1
  	role:updateProperty({field = "potionBag", value = potionBag})
 
 | 
85ded242
 
  zhouhaihai
 
丰富返回事件
 | 
451 
 | 
  	adv:pushBackEvent(AdvBackEventType.Potion, {id = potionId})
 
 | 
4f0a5fae
 
  zhouhaihai
 
营养剂
 | 
452
453
454
455 
 | 
  	adv:afterRound()
  	adv:saveDB()
  	role:checkTaskEnter("AdvUsePotion")
  
 
 | 
d27ad5e0
 
  suhongyang
 
使用营养技
 | 
456 
 | 
  	SendPacket(actionCodes.Adv_usePotionRpc, MsgPack.pack({events = adv:popBackEvents()}))
 
 | 
46fac6f1
 
  zhouahaihai
 
酱料
 | 
457
458 
 | 
  	return true
  end
 
 | 
23d89d13
 
  zhouahaihai
 
冒险 结构
 | 
459 
 | 
  
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
460
461
462
463 
 | 
  -- 选择神器
  function _M.chooseArtifactRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
464 
 | 
  
 
 | 
41e118a5
 
  zhouhaihai
 
增加输出
 | 
465 
 | 
  	if not isCanContinue(role) then return 1 end
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
466
467 
 | 
  
  	local adv = role:getAdvData()
 
 | 
41e118a5
 
  zhouhaihai
 
增加输出
 | 
468
469 
 | 
  	if not msg.idx then return 2 end
  	if not adv:isWaitChooseArtifact() then return 3 end
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
470 
 | 
  	local status = adv:chooseArtifact(msg.idx)
 
 | 
41e118a5
 
  zhouhaihai
 
增加输出
 | 
471 
 | 
  	if not status then return 4 end
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
472 
 | 
  	adv:saveDB()
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
473 
 | 
  	
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
474
475
476
477
478
479
480
481
482
483
484 
 | 
  	SendPacket(actionCodes.Adv_chooseArtifactRpc, '')
  	return true
  end
  
  -- 穿戴神器
  function _M.wearArtifactRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local slot = msg.slot
  	local id = msg.id
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
485
486 
 | 
  	if not isCanContinue(role) then return end
  
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
487
488 
 | 
  	local adv = role:getAdvData()
  
 
 | 
d3da3368
 
  zhouhaihai
 
冒险地图被动技, buff  神器
 | 
489 
 | 
  	if math.illegalNum(slot, 1, 5) then return 1 end
 
 | 
c992c911
 
  zhouhaihai
 
中继
 | 
490 
 | 
  	if adv:isWaitChooseArtifact() then return 2 end
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
491
492 
 | 
  
  	local status = adv:wearArtifact(slot, id)
 
 | 
c992c911
 
  zhouhaihai
 
中继
 | 
493 
 | 
  	if not status then return 3 end
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
494
495
496
497
498
499
500
501
502
503
504
505 
 | 
  	adv:saveDB()
  
  	SendPacket(actionCodes.Adv_wearArtifactRpc, '')
  	return true
  end
  
  -- 升级神器
  function _M.upArtifactRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local id = msg.id
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
506
507 
 | 
  	if not isCanContinue(role) then return end
  
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
508 
 | 
  	local adv = role:getAdvData()
 
 | 
d3da3368
 
  zhouhaihai
 
冒险地图被动技, buff  神器
 | 
509 
 | 
  	if adv:isWaitChooseArtifact() then return 1 end
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
510 
 | 
  	local curLevel = adv:isHaveArtifact(id)
 
 | 
d3da3368
 
  zhouhaihai
 
冒险地图被动技, buff  神器
 | 
511
512
513
514 
 | 
  	if not curLevel then return 2 end
  	if not role:isArtifactOpen(id, adv:isEndless(), curLevel + 1) then return 3 end
  	local cost = csvdb["adv_artifactCsv"][id][curLevel].exp:toNumMap()
  	if not adv:cost(cost, {}, true) then return 4 end
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
515
516 
 | 
  
  	local status = adv:artifactLevelUp(id)
 
 | 
d3da3368
 
  zhouhaihai
 
冒险地图被动技, buff  神器
 | 
517 
 | 
  	if not status then return 5 end
 
 | 
498f0eb2
 
  zhouhaihai
 
冒险 action
 | 
518 
 | 
  	adv:cost(cost, {log = {desc = "upArtifact", int1 = id}})
 
 | 
85ded242
 
  zhouhaihai
 
丰富返回事件
 | 
519 
 | 
  	adv:backCost(cost)
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
520
521 
 | 
  	if status == 1 then -- 现在穿着呢。更新下
  		adv:saveDB()
 
 | 
284482c6
 
  zhouhaihai
 
冒险成就
 | 
522
523 
 | 
  	else
  		adv:updateAchievement()
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
524
525
526
527
528 
 | 
  	end
  	SendPacket(actionCodes.Adv_upArtifactRpc, '')
  	return true
  end
  
 
 | 
ec87b4a5
 
  zhouahaihai
 
冒险 完善
 | 
529
530
531
532 
 | 
  --退出
  function _M.exitAdvRpc(agent, data)
  	local role = agent.role
  	-- local msg = MsgPack.unpack(data)
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
533
534 
 | 
  	if not isCanContinue(role) then return end
  
 
 | 
ec87b4a5
 
  zhouahaihai
 
冒险 完善
 | 
535 
 | 
  	local adv = role:getAdvData()
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
536 
 | 
  	adv:log({desc = "exit"})
 
 | 
ec87b4a5
 
  zhouahaihai
 
冒险 完善
 | 
537
538
539
540
541 
 | 
  	local status = adv:exit() -- target {roomId = 1, blockId = 1} 选择的目标
  	SendPacket(actionCodes.Adv_exitAdvRpc, MsgPack.pack({events = adv:popBackEvents()}))
  	return true
  end 
  
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
542
543
544
545
546
547
548
549
550
551
552 
 | 
  --开始战斗
  function _M.startBattleRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
  	-- 校验一下信息
  	local roomId = msg.roomId
  	local blockId = msg.blockId
  	local monsterId = msg.monsterId
  	local enemyId = msg.enemyId
  	if not enemyId then return end
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
553 
 | 
  	if not isCanContinue(role) then return end
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
554
555 
 | 
  
  	local adv = role:getAdvData()
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
556 
 | 
  
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
557 
 | 
  	if adv:isWaitChooseArtifact() then return end
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580 
 | 
  	local enemy = adv.battle:getEnemyById(enemyId)
  
  	if enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId or enemy.lock or enemy.isDead then return end
  
  	local key = tostring(math.random())
  	adv.__battleCache = {
  		enemyId = enemyId,
  		key = key
  	}
  	SendPacket(actionCodes.Adv_startBattleRpc, MsgPack.pack({key = key}))
  	return true
  end
  
  -- 结束战斗
  function _M.endBattleRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local roomId = msg.roomId
  	local blockId = msg.blockId
  	local monsterId = msg.monsterId
  	local enemyId = msg.enemyId
  	local key =  msg.key
  	local player = msg.player
 
 | 
d3da3368
 
  zhouhaihai
 
冒险地图被动技, buff  神器
 | 
581 
 | 
  	local bySkill = msg.bySkill --死于 技能
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
582
583 
 | 
  
  	if not player or not player.hp or not player.sp or not enemyId or not key then return end
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
584
585 
 | 
  	if not isCanContinue(role) then return end
  	
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
586 
 | 
  	local adv = role:getAdvData()
 
 | 
ccbafe67
 
  zhouhaihai
 
冒险神器和buff
 | 
587 
 | 
  	if adv:isWaitChooseArtifact() then return end
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
588
589
590
591
592
593
594 
 | 
  	-- 校验
  	if not adv.__battleCache then return end
  	if adv.__battleCache.enemyId ~= enemyId then return end
  	local enemy = adv.battle:getEnemyById(enemyId)
  	if enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId then return end
  	adv.__battleCache = nil
  
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
595 
 | 
  	adv:log({desc = "endBattle"})
 
 | 
d3da3368
 
  zhouhaihai
 
冒险地图被动技, buff  神器
 | 
596 
 | 
  	local status = adv:clickBlock(roomId, blockId, {player = player, bySkill = bySkill})
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
597 
 | 
  
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
598
599
600
601
602 
 | 
  	if not status then return end
  	SendPacket(actionCodes.Adv_endBattleRpc, MsgPack.pack({events = adv:popBackEvents()}))
  	return true
  end
  
 
 | 
007af97e
 
  zhouhaihai
 
item_random 结构更改
 | 
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629 
 | 
  -- function _M.workshopRpc(agent, data)
  -- 	local role = agent.role
  -- 	local msg = MsgPack.unpack(data)
  
  -- 	local id = msg.id 
  -- 	local count = msg.count or 1
  -- 	local mergeData = csvdb["adv_mergeCsv"][id]
  -- 	if not mergeData then return 1 end
  
  -- 	if not role:isFuncOpen(FuncOpenType.AdvWS) or role:getFuncLv(FuncOpenType.AdvWS) < mergeData.unlock then return 2 end
  
  -- 	local advWs = role.dailyData:getProperty("advWs")
  -- 	if math.illegalNum(count, 1, mergeData.limit - (advWs[id] or 0)) then return 3 end
  
  -- 	local cost = mergeData.formula:toNumMap()
  -- 	for k, v in pairs(cost) do
  -- 		cost[k] = v * count
  -- 	end
  -- 	if not role:checkItemEnough(cost) then return 4 end
  
  -- 	role:costItems(cost)
  -- 	advWs[id] = (advWs[id] or 0) + count
  -- 	role.dailyData:updateProperty({field = "advWs", value = advWs})
  -- 	local reward = role:award({[id] = count})
  -- 	SendPacket(actionCodes.Adv_workshopRpc, MsgPack.pack({reward = reward}))
  -- 	return true
  -- end
 
 | 
12f7b52c
 
  zhouhaihai
 
冒险战斗
 | 
630 
 | 
  
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
631
632 
 | 
  function _M.wheelSurfRpc(agent, data)
  	local role = agent.role
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
633 
 | 
  	-- if not role:isFuncOpen(FuncOpenType.AdvWheelSurf) then return end -- 默认解锁
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
634 
 | 
  
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
635 
 | 
  	local msg = MsgPack.unpack(data)
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
636 
 | 
  
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
637
638 
 | 
  	local ptype = msg.ptype  -- 池子类型 1, 2
  	local ctype = msg.ctype  -- 抽取次数  1 1次,2 10次
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
639 
 | 
  
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
640
641
642
643
644 
 | 
  	local countPool = {
  		[1] = 1,
  		[2] = 10
  	}
  	local count = countPool[ctype]
 
 | 
8f5218e6
 
  zhouhaihai
 
犯回错误区分
 | 
645 
 | 
  	if not count then return 1 end
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
646 
 | 
  
 
 | 
6b5c9206
 
  zhouhaihai
 
冒险资助升级属性奖励
 | 
647 
 | 
  	if ptype == 2 and not role:isFuncOpen(FuncOpenType.AdvEndless) then
 
 | 
8f5218e6
 
  zhouhaihai
 
犯回错误区分
 | 
648 
 | 
  		return 2
 
 | 
6b5c9206
 
  zhouhaihai
 
冒险资助升级属性奖励
 | 
649 
 | 
  	end
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
650 
 | 
  
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
651 
 | 
  	local drawTypeData = csvdb["adv_wheelsurfCsv"][ptype]
 
 | 
8f5218e6
 
  zhouhaihai
 
犯回错误区分
 | 
652 
 | 
  	if not drawTypeData then return 3 end
 
 | 
6b5c9206
 
  zhouhaihai
 
冒险资助升级属性奖励
 | 
653 
 | 
  	local drawData = drawTypeData[role:getAdvWheelSurfLv(ptype)]
 
 | 
8f5218e6
 
  zhouhaihai
 
犯回错误区分
 | 
654 
 | 
  	if not drawData then return 4 end
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
655 
 | 
  
 
 | 
7474dd12
 
  zhouhaihai
 
资助抽奖bug
 | 
656
657
658
659 
 | 
  	local cost = drawData.cost:toArray(true, "=")
  	local costs = {[ItemId.OldCoin] = cost[ctype]}
  	if not next(costs) then return 6 end
  
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
660 
 | 
  
 
 | 
8f5218e6
 
  zhouhaihai
 
犯回错误区分
 | 
661 
 | 
  	if not role:checkItemEnough(costs) then return 5 end
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
662 
 | 
  	role:costItems(costs, {log = {desc = "advWheelSurf", int1 = ptype}})
 
 | 
6b5c9206
 
  zhouhaihai
 
冒险资助升级属性奖励
 | 
663 
 | 
  	role:addAdvLvExp(costs[ItemId.OldCoin] or 0)
 
 | 
764e5296
 
  zhouhaihai
 
冒险抽奖保底
 | 
664
665
666 
 | 
  	local advDrawB = role:getProperty("advDrawB")
  	advDrawB[ptype] = (advDrawB[ptype] or 0) + count
  	role:updateProperty({field = "advDrawB", value = advDrawB})
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
667 
 | 
  	-- 随机池子
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
668
669
670 
 | 
  	local reward = {}
  	local backReward = {}
  	for i = 1, count do
 
 | 
7474dd12
 
  zhouhaihai
 
资助抽奖bug
 | 
671 
 | 
  		local pool = drawData.weight:randWeight()
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
672
673
674
675 
 | 
  		local gift = drawData["pool" .. pool]:randWeight(true)
  		reward[gift[1]] = (reward[gift[1]] or 0) + gift[2]
  		table.insert(backReward, gift)
  	end
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
676
677 
 | 
  	role:award(reward, {log = {desc = "advWheelSurf", int1 = ptype}})
  
 
 | 
9912e064
 
  zhouhaihai
 
新增3个每日任务类型
 | 
678 
 | 
  	role:checkTaskEnter("AdvDraw", {count = count, ptype = ptype})
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
679
680 
 | 
  	role:log("adv_action", {desc = "advWheelSurf", int1 = ptype, int2 = count})
  
 
 | 
81032a9c
 
  zhouhaihai
 
抽奖
 | 
681 
 | 
  	SendPacket(actionCodes.Adv_wheelSurfRpc, MsgPack.pack({reward = backReward}))
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
682
683 
 | 
  	return true
  end
 
 | 
764e5296
 
  zhouhaihai
 
冒险抽奖保底
 | 
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706 
 | 
  function _M.repayWheelSurfRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
  	local ptype = msg.ptype
  
  	if ptype == 2 and not role:isFuncOpen(FuncOpenType.AdvEndless) then
  		return
  	end
  
  	local drawTypeData = csvdb["adv_wheelsurfCsv"][ptype]
  	if not drawTypeData then return end
  	local drawData = drawTypeData[role:getAdvWheelSurfLv(ptype)]
  	if not drawData then return end
  
  	local advDrawB = role:getProperty("advDrawB")
  	if (advDrawB[ptype] or 0) < globalCsv.adv_draw_back_cond then
  		return
  	end
  	advDrawB[ptype] = advDrawB[ptype] - globalCsv.adv_draw_back_cond
  	role:updateProperty({field = "advDrawB", value = advDrawB})
  	local gift = drawData["pool3"]:randWeight(true)
  	local reward = {[gift[1]] = gift[2]}
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
707
708 
 | 
  	reward = role:award(reward, {log = {desc = "advRepayWheelSurf", int1 = ptype}})
  	role:log("adv_action", {desc = "advRepayWheelSurf", int1 = ptype})
 
 | 
764e5296
 
  zhouhaihai
 
冒险抽奖保底
 | 
709
710
711
712 
 | 
  
  	SendPacket(actionCodes.Adv_repayWheelSurfRpc, MsgPack.pack({reward = reward}))
  	return true
  end
 
 | 
f4c65591
 
  zhouhaihai
 
抽奖
 | 
713 
 | 
  
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
714
715
716 
 | 
  function _M.finishAchievRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
717 
 | 
  	local ctype = msg.ctype or 2 -- 领取类型 1 成就  2 pt累计奖励
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
718
719
720
721 
 | 
  	local chapterId = msg.chapterId --章节id
  	local taskId = msg.taskId  -- 领取id
  
  	local adv = role:getAdvData()
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
722 
 | 
  
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
723 
 | 
  	local status, reward
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
724
725
726 
 | 
  	if ctype == 1 then
  		status, reward = adv:finishAchievement(chapterId, taskId)
  	elseif ctype == 2 then
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
727 
 | 
  		status, reward = adv:getAchievementReward(chapterId, taskId)
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
728 
 | 
  	end
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
729
730 
 | 
  	if not status then return end
  	adv:updateAchievement()
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
731
732 
 | 
  	role:log("adv_action", {desc = "finishAchiev", short1 = ctype, int1 = chapterId, int2 = taskId})
  
 
 | 
b176d7d3
 
  zhouhaihai
 
冒险成就
 | 
733
734
735
736 
 | 
  	SendPacket(actionCodes.Adv_finishAchievRpc, MsgPack.pack({reward = reward}))
  	return true
  end
  
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
737
738
739
740 
 | 
  function _M.rankRpc(agent, data)
  	local role = agent.role
  
  	local list = {}
 
 | 
b2e41074
 
  zhouhaihai
 
冒险 排行榜拆分
 | 
741 
 | 
  	local ids = redisproxy:zrevrange(role:getAdvRankKey(), 0 , 99, "WITHSCORES")
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
742
743
744 
 | 
  	local redret = {}
  	if ids and next(ids) then
  		redret = redisproxy:pipelining(function (red)
 
 | 
1313eac0
 
  zhouhaihai
 
冒险的一些bug
 | 
745 
 | 
  			for i = 1, #ids, 2 do
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
746 
 | 
  				local roleId = ids[i]
 
 | 
1313eac0
 
  zhouhaihai
 
冒险的一些bug
 | 
747
748 
 | 
  				local score = tonum(ids[i + 1])
  				table.insert(list, {roleId = tonumber(roleId), score = score})
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
749
750
751
752
753
754
755
756
757
758 
 | 
  				red:hget(RANK_ADV_INFO, roleId)
  			end
  		end)
  	end
  	for i = 1, #redret do
  		local player = MsgPack.unpack(redret[i])
  		player.format = nil
  		list[i].player = player
  	end
  	local redret = redisproxy:pipelining(function(red)
 
 | 
b2e41074
 
  zhouhaihai
 
冒险 排行榜拆分
 | 
759
760 
 | 
  		red:ZREVRANK(role:getAdvRankKey(), role:getProperty("id"))
  		red:zscore(role:getAdvRankKey(), role:getProperty("id"))
 
 | 
1b20cfdb
 
  zhouhaihai
 
赛季更新完善 无尽冒险排行榜
 | 
761
762
763
764
765
766
767
768
769
770
771
772 
 | 
  	end)
  	local rank = redret[1]
  	if not rank then
  		rank = -1
  	else
  		rank = redret[1] + 1
  	end
  	local score = tonum(redret[2], 0)
  
  	SendPacket(actionCodes.Adv_rankRpc, MsgPack.pack({list = list, rank = rank, score = score}))
  	return true
  end
 
 | 
ae20365b
 
  suhongyang
 
Revert "修改冒险战斗逻辑"
 | 
773 
 | 
  
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
774
775
776
777
778
779
780 
 | 
  function _M.refreshSupportRpc(agent, data)
  	local role = agent.role
  
  	local cr = role.dailyData:getProperty("advSupRe")	
  	local al = role:getAdvSupportFreeCount()
  
  	if cr < al then  --免费
 
 | 
1a04c06c
 
  zhouhaihai
 
冒险 被动调整
 | 
781 
 | 
  		role.dailyData:updateProperty({field = "advSupRe", delta = 1})
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
782
783 
 | 
  	else -- 付费
  		if not role:checkItemEnough({[ItemId.Diamond] = globalCsv.adv_support_refresh_cost}) then return end
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
784 
 | 
  		role:costItems({[ItemId.Diamond] = globalCsv.adv_support_refresh_cost}, {log = {desc = "advReSupport"}})
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
785
786
787 
 | 
  	end
  
  	role:advRandomSupportEffect()
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
788 
 | 
  	role:log("adv_action", {desc = "advSupRe", short1 = cr < al and 0 or 1})
 
 | 
9ced5432
 
  zhouhaihai
 
冒险支援效果 保底事件
 | 
789
790
791
792
793 
 | 
  
  	SendPacket(actionCodes.Adv_refreshSupportRpc, '')
  	return true
  end
  
 
 | 
23d89d13
 
  zhouahaihai
 
冒险 结构
 | 
794 
 | 
  return _M
 
 |