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
|
98d32f92
liuzujun
多编队
|
50
51
52
53
|
if not format then
format = role:getProperty("advTeam")
end
|
c3d5fe54
zhouhaihai
无战斗状态挂机清掉战斗队伍
|
54
|
if checkAdvTeam then
|
09be9059
zhouhaihai
冒险接口
|
55
56
57
58
59
|
for _, heroId in pairs(role:getProperty("advTeam").heros or {}) do
hadHero[heroId] = true
end
end
|
a1d80fd6
liuzujun
多队挂机 电台任务英雄也不能重用
|
60
61
62
63
64
65
66
67
68
|
-- 多队挂机 电台任务英雄也不能重用
local radioTask = role:getProperty("radioTask")
for id, taskInfo in pairs(radioTask) do
local heros = taskInfo["heros"] or {}
for _, heroId in ipairs(heros) do
hadHero[heroId] = true
end
end
|
09be9059
zhouhaihai
冒险接口
|
69
|
if not format.leader then return end
|
bfd33de5
zhouhaihai
队长技
|
70
|
if format.leader2 == format.leader then return end
|
09be9059
zhouhaihai
冒险接口
|
71
|
local hadLeader = false
|
bfd33de5
zhouhaihai
队长技
|
72
73
|
local hadLeader2 = false
local heroCount = 0
|
09be9059
zhouhaihai
冒险接口
|
74
75
76
77
78
79
80
|
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
队长技
|
81
82
83
84
85
86
87
|
if heroId == format.leader2 then
hadLeader2 = true
end
heroCount = heroCount + 1
end
if not hadLeader2 and heroCount >= 2 then
return
|
09be9059
zhouhaihai
冒险接口
|
88
89
90
91
92
|
end
if not hadLeader then return end
return true
end
|
46fac6f1
zhouahaihai
酱料
|
93
|
--开始一个新的关卡
|
23d89d13
zhouahaihai
冒险 结构
|
94
95
96
|
function _M.startAdvRpc( agent, data )
local role = agent.role
local msg = MsgPack.unpack(data)
|
09be9059
zhouhaihai
冒险接口
|
97
|
local chapterId = msg.chapterId --关卡id
|
98be031a
liuzujun
新年活动
|
98
|
local actid = msg.actid --活动id
|
09be9059
zhouhaihai
冒险接口
|
99
|
local layer = msg.layer or 1 --选择层数
|
98d32f92
liuzujun
多编队
|
100
|
--local format = msg.format --编队
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
101
|
local supportIdx = msg.supportIdx --选择的支援效果
|
d232676a
zhouhaihai
功能解锁 冒险返回
|
102
|
if not role:isFuncUnlock(FuncUnlock.Adv) then return end
|
493a8b1f
liuzujun
拾荒活动关卡开启时间检测
|
103
|
|
8da953a7
zhouhaihai
无尽模式
|
104
|
--上一个关卡结束才可以开始新的关卡
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
105
|
if role:getAdvData():isRunning() then return 8 end
|
a7c0f779
zhouhaihai
挂机加成
|
106
|
local advHang = role:getProperty("advHang")
|
533db86a
liuzujun
代理拾荒bug
|
107
|
-- if advHang[chapterId] then return 9 end --正在挂机
|
a7c0f779
zhouhaihai
挂机加成
|
108
|
|
98be031a
liuzujun
新年活动
|
109
110
111
112
113
114
115
116
117
118
|
-- 检查活动正确性
if actid then
if not role.activity:isOpenById(actid, "AdvLevel") then
return 20
end
local actCfg = csvdb["activity_adv_chapterCsv"][actid]
if not actCfg then return 21 end
actCfg = actCfg[chapterId]
if not actCfg then return 22 end
|
493a8b1f
liuzujun
拾荒活动关卡开启时间检测
|
119
120
121
122
|
if actCfg["unlockTime"] ~= 0 then
local st = toUnixtime(actCfg["unlockTime"]..string_format("%02x", RESET_TIME))
if st > skynet.timex() then return 23 end
end
|
98be031a
liuzujun
新年活动
|
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
if actCfg["prepose"] ~= "" then
local type, cid = actCfg["prepose"]:toArray(true, "=")
if type == 1 then
local actData = role.activity:getActData("ChallengeLevel")
local battleInfo = actData[cid] or {}
if (battleInfo["star"] or 0) == 0 then
return 24
end
elseif type == 2 then
local actData = role.activity:getActData("AdvLevel")
local advInfo = actData[cid] or {}
if not advInfo["pass"] then
return 25
end
end
end
end
|
8da953a7
zhouhaihai
无尽模式
|
141
|
|
09be9059
zhouhaihai
冒险接口
|
142
|
local chapterData = csvdb["adv_chapterCsv"][chapterId]
|
8da953a7
zhouhaihai
无尽模式
|
143
|
if not chapterData or layer < 1 then return 1 end
|
09be9059
zhouhaihai
冒险接口
|
144
|
|
47d5d769
zhouhaihai
中继判断 随机任务
|
145
|
local advPass = role:getProperty("advPass")
|
0e3ab88d
zhouhaihai
中继层
|
146
|
|
3bbb90ba
zhouhaihai
冒险次数
|
147
148
|
if not checkFormat(role) then return 7 end
|
dfa9ae5e
liuzujun
战令任务活动
|
149
|
local cost = 0
|
0e3ab88d
zhouhaihai
中继层
|
150
151
|
if AdvCommon.isEndless(chapterId) then -- 无尽模式判断
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
152
153
|
if chapterId ~= role.advElChapter then return end -- 不是当前进行的章节
if not isOpenEndless(role) then return end
|
0e3ab88d
zhouhaihai
中继层
|
154
|
|
e38b9c49
zhouhaihai
无尽次数
|
155
|
if role.dailyData:getProperty("advElC") >= role:getAdvElLimit() then return 2 end -- 是否有体力
|
0e3ab88d
zhouhaihai
中继层
|
156
157
158
|
if not role:isFuncOpen(FuncOpenType.AdvEndless) then return 11 end -- 无尽模式 才可以玩儿无尽模式
local advElM = role:getProperty("advElM") --最高通关的层数
|
e51ff6d2
zhouhaihai
冒险~
|
159
|
if not role:advChapterIsOpen(chapterId) then return 13 end
|
e38b9c49
zhouhaihai
无尽次数
|
160
|
|
e51ff6d2
zhouhaihai
冒险~
|
161
|
if layer ~= 1 then
|
0e3ab88d
zhouhaihai
中继层
|
162
|
local relayData = role:getAdvData():isHaveRelay(layer, chapterId)
|
e51ff6d2
zhouhaihai
冒险~
|
163
164
|
if not relayData then return 14 end -- 不是中继层
if advElM < relayData.unlockfloor then return 15 end --未解锁
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
165
|
end
|
3bbb90ba
zhouhaihai
冒险次数
|
166
167
|
role.dailyData:updateProperty({field = "advElC", delta = 1})
|
dfa9ae5e
liuzujun
战令任务活动
|
168
|
cost = 1
|
0e3ab88d
zhouhaihai
中继层
|
169
|
else -- 普通模式判断
|
e51ff6d2
zhouhaihai
冒险~
|
170
|
if layer >= chapterData.limitlevel then return 4 end
|
e51ff6d2
zhouhaihai
冒险~
|
171
|
|
1ef9a7e3
zhouhaihai
错误的
|
172
|
local relayData = role:getAdvData():isHaveRelay(layer, chapterId, true)
|
3bbb90ba
zhouhaihai
冒险次数
|
173
|
if not relayData then return 6 end -- 不是中继层
|
e51ff6d2
zhouhaihai
冒险~
|
174
|
if layer ~= 1 then
|
f2648427
zhouhaihai
修改中继营地解锁条件
|
175
176
|
local advRelay = role:getProperty("advRelay")
if not (advRelay[chapterId] or {})[layer] then return 21 end -- 没有开放
|
e51ff6d2
zhouhaihai
冒险~
|
177
|
end
|
3bbb90ba
zhouhaihai
冒险次数
|
178
179
180
|
if not role:checkAdvCount(relayData.supply) then return 2 end -- 是否有体力
-- 关卡开放判断
if not role:advChapterIsOpen(chapterId) then return 5 end
|
98d32f92
liuzujun
多编队
|
181
|
|
3bbb90ba
zhouhaihai
冒险次数
|
182
|
role:changeAdvCount(relayData.supply)
|
dfa9ae5e
liuzujun
战令任务活动
|
183
|
cost = relayData.supply
|
e38b9c49
zhouhaihai
无尽次数
|
184
|
end
|
dfa9ae5e
liuzujun
战令任务活动
|
185
|
role:checkTaskEnter("AdvCostPower", {count = cost})
|
70fb62d1
liuzujun
服务器数据打点
|
186
|
role:mylog("adv_action", {desc = "costPower", int1 = cost})
|
3bbb90ba
zhouhaihai
冒险次数
|
187
|
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
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
|
3bbb90ba
zhouhaihai
冒险次数
|
207
|
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
208
209
210
211
212
213
|
role:getAdvData():initByChapter({
chapterId = chapterId,
level = layer,
isRelay = layer ~= 1,
isEnter = true,
support = support,
|
98be031a
liuzujun
新年活动
|
214
|
actid = actid
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
215
|
})
|
3bbb90ba
zhouhaihai
冒险次数
|
216
|
|
53e8037e
zhouhaihai
任务
|
217
|
role:checkTaskEnter("AdvStart", {id = chapterId})
|
f60b89b1
zhouhaihai
奖励副本
|
218
|
role:checkTaskEnter("AdvStartSelf", {id = chapterId})
|
ecf464a3
zhouhaihai
冒险开始bug
|
219
|
role:getAdvData():popBackEvents() -- 清一下事件
|
f22a33af
zhouhaihai
自己的日志
|
220
|
role:getAdvData():mylog({desc = "start", int1 = supportIdx})
|
3133cb76
zhouhaihai
日志
|
221
|
|
23d89d13
zhouahaihai
冒险 结构
|
222
223
224
|
SendPacket(actionCodes.Adv_startAdvRpc, '')
return true
end
|
09be9059
zhouhaihai
冒险接口
|
225
226
|
function _M.startHangRpc(agent, data)
|
46fac6f1
zhouahaihai
酱料
|
227
228
|
local role = agent.role
local msg = MsgPack.unpack(data)
|
09be9059
zhouhaihai
冒险接口
|
229
|
local chapterId = msg.chapterId --关卡id
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
230
|
local campId = msg.campId or 2 --营地id
|
09be9059
zhouhaihai
冒险接口
|
231
|
local format = msg.format --编队
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
232
|
local index = msg.index or 1--时间索引id
|
493a8b1f
liuzujun
拾荒活动关卡开启时间检测
|
233
234
235
236
237
238
239
240
241
242
243
244
|
local actid = msg.actid
-- 检查活动正确性
if actid then
if not role.activity:isOpenById(actid, "AdvLevel") then
return 20
end
local actCfg = csvdb["activity_adv_chapterCsv"][actid]
if not actCfg then return 21 end
actCfg = actCfg[chapterId]
if not actCfg then return 22 end
|
7cbf1146
liuzujun
去除advmap monster类型
|
245
246
247
248
|
if actCfg["unlockTime"] ~= 0 then
local st = toUnixtime(actCfg["unlockTime"]..string_format("%02x", RESET_TIME))
if st > skynet.timex() then return 23 end
end
|
493a8b1f
liuzujun
拾荒活动关卡开启时间检测
|
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
|
if actCfg["prepose"] ~= "" then
local type, cid = actCfg["prepose"]:toArray(true, "=")
if type == 1 then
local actData = role.activity:getActData("ChallengeLevel")
local battleInfo = actData[cid] or {}
if (battleInfo["star"] or 0) == 0 then
return 24
end
elseif type == 2 then
local actData = role.activity:getActData("AdvLevel")
local advInfo = actData[cid] or {}
if not advInfo["pass"] then
return 25
end
end
end
end
|
09be9059
zhouhaihai
冒险接口
|
267
|
|
f2648427
zhouhaihai
修改中继营地解锁条件
|
268
|
local chapterData = csvdb["adv_chapter_campsiteCsv"][chapterId]
|
39e60fd1
zhouhaihai
支持上传 oss
|
269
|
if not chapterData then return 1 end
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
270
271
272
273
274
275
276
277
278
279
|
local campSiteData = chapterData[campId]
if not campSiteData then return 1 end
if campSiteData.idleReward_1 == "" and campSiteData.idleReward_2 == "" then return 2 end --没有奖励 没有挂机
local adv_idle_time = globalCsv.adv_idle_time[index]
local adv_idle_energy = globalCsv.adv_idle_energy[index]
local adv_idle_reward_coef = globalCsv.adv_idle_reward[index]
if not adv_idle_time or not adv_idle_energy or not adv_idle_reward_coef then
return 2
end
|
a42130ee
chenyueqi
电波塔加成错误
|
280
|
adv_idle_time = adv_idle_time * 60
|
40b19300
chenyueqi
电波塔激活加成效果后对各个系统的加成
|
281
|
|
09be9059
zhouhaihai
冒险接口
|
282
283
|
local advHang = role:getProperty("advHang")
|
39e60fd1
zhouhaihai
支持上传 oss
|
284
|
if advHang[chapterId] then return 3 end --正在挂机
|
09be9059
zhouhaihai
冒险接口
|
285
|
|
533db86a
liuzujun
代理拾荒bug
|
286
|
-- if role:getAdvData():isRunning() and role:getAdvData().chapterId == chapterId then return 4 end
|
73da9b9d
zhouhaihai
冒险队伍优化
|
287
|
|
39e60fd1
zhouhaihai
支持上传 oss
|
288
|
if AdvCommon.isEndless(chapterId) then return 5 end -- 无尽没有代理
|
a7c0f779
zhouhaihai
挂机加成
|
289
|
|
be4e8031
zhouhaihai
活动 拾荒
|
290
|
local advRelay = role:getProperty("advRelay")
|
f2648427
zhouhaihai
修改中继营地解锁条件
|
291
|
if not (advRelay[chapterId] or {})[campSiteData.floor] then return 6 end -- 没有开放
|
a7c0f779
zhouhaihai
挂机加成
|
292
|
|
09be9059
zhouhaihai
冒险接口
|
293
|
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
294
|
if not role:checkAdvCount(adv_idle_energy) then return 7 end -- 是否有体力
|
09be9059
zhouhaihai
冒险接口
|
295
|
|
75876cb3
liuzujun
代理拾荒出勤人数计数错误, 代理拾...
|
296
|
role:checkTaskEnter("AdvCostPower", {count = adv_idle_energy})
|
70fb62d1
liuzujun
服务器数据打点
|
297
|
role:mylog("adv_action", {desc = "costPower", int1 = adv_idle_energy})
|
75876cb3
liuzujun
代理拾荒出勤人数计数错误, 代理拾...
|
298
|
|
39e60fd1
zhouhaihai
支持上传 oss
|
299
|
if not checkFormat(role, format, role:getAdvData():isRunning()) then return 8 end --编队是否正确
|
09be9059
zhouhaihai
冒险接口
|
300
|
|
a7c0f779
zhouhaihai
挂机加成
|
301
302
303
304
305
306
307
|
local player = {}
local attrs = role:getTeamBattleInfo(format).heros
for attrName, _ in pairs(AdvAttsEnum) do
for _, hero in pairs(attrs) do
player[attrName] = (player[attrName] or 0) + hero[attrName]
end
player[attrName] = player[attrName] * (globalCsv.adv_battle_attr_ratio[attrName] or 1)
|
09be9059
zhouhaihai
冒险接口
|
308
|
end
|
a7c0f779
zhouhaihai
挂机加成
|
309
310
311
312
313
314
315
|
local battleV = 1 * player["hp"]
+ 2 * player["atk"]
+ 1.25 * player["def"]
+ 0.226 * player["hit"]
+ 0.26 * player["miss"]
|
63190722
liuzujun
计算英雄战斗力,天赋,信赖
|
316
317
|
--print(math.ceil(battleV), campSiteData.idleValue)
if math.ceil(battleV) < campSiteData.idleValue then return 9 end -- 战斗力是否满足
|
09be9059
zhouhaihai
冒险接口
|
318
319
320
321
|
local info = {}
info.format = {}
info.format.leader = format.leader
|
bfd33de5
zhouhaihai
队长技
|
322
|
info.format.leader2 = format.leader2
|
09be9059
zhouhaihai
冒险接口
|
323
324
325
326
|
info.format.heros = {}
for slot, heroId in pairs(format.heros) do
info.format.heros[slot] = heroId
end
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
327
|
info.time = skynet.timex() + adv_idle_time --挂机时间
|
50bcef87
liuzujun
代理拾荒开始不移除拾荒队伍阵容
|
328
|
info.duration = adv_idle_time
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
329
330
|
info.campId = campId
info.index = index
|
09be9059
zhouhaihai
冒险接口
|
331
|
|
c3d5fe54
zhouhaihai
无战斗状态挂机清掉战斗队伍
|
332
|
-- 没有在战斗 用team来挂机了 把team清掉
|
50bcef87
liuzujun
代理拾荒开始不移除拾荒队伍阵容
|
333
334
335
|
--if not role:getAdvData():isRunning() then
-- role:updateProperty({field = "advTeam", value = {}})
--end
|
072db127
zhouhaihai
推送
|
336
|
role:pushMsg({type = "adv", slot = chapterId, time = adv_idle_time})
|
09be9059
zhouhaihai
冒险接口
|
337
338
|
role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
339
|
role:changeAdvCount(adv_idle_energy)
|
7b570ef2
liuzujun
新春活动任务
|
340
|
role:checkTaskEnter("AdvStart", {id = chapterId, actid = actid})
|
f22a33af
zhouhaihai
自己的日志
|
341
|
role:mylog("adv_action", {desc = "startHang", int1 = chapterId})
|
3133cb76
zhouhaihai
日志
|
342
|
|
09be9059
zhouhaihai
冒险接口
|
343
344
345
346
|
SendPacket(actionCodes.Adv_startHangRpc, '')
return true
end
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
347
348
349
350
351
352
353
354
355
356
|
local function addHeroFaith(role, heroId, exp)
local hero = role.heros[heroId]
if not hero then
return
end
hero:addHeroFaith(exp)
return hero:getProperty("faith")
end
|
5404ee7d
zhouhaihai
冒险挂机加速
|
357
358
359
360
361
362
363
364
365
366
|
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
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
367
368
|
local index = info.index
local chapterData = csvdb["adv_chapter_campsiteCsv"][chapterId]
|
5404ee7d
zhouhaihai
冒险挂机加速
|
369
|
if not chapterData then return end
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
370
371
372
373
374
375
376
377
378
|
local campSiteData = chapterData[info.campId]
if not campSiteData then return 1 end
if campSiteData.idleReward_1 == "" and campSiteData.idleReward_2 == "" then return 2 end --没有奖励 没有挂机
local adv_idle_time = globalCsv.adv_idle_time[index]
if not adv_idle_time then
return 2
end
|
533db86a
liuzujun
代理拾荒bug
|
379
|
adv_idle_time = adv_idle_time * 60
|
5404ee7d
zhouhaihai
冒险挂机加速
|
380
381
382
383
|
local reward, isFull
if skynet.timex() >= info.time then return end -- 已经完成了
|
533db86a
liuzujun
代理拾荒bug
|
384
|
local cost = math.ceil((info.time - skynet.timex()) / 3600 * globalCsv.adv_idle_quicken)
|
5404ee7d
zhouhaihai
冒险挂机加速
|
385
|
|
3d8050ef
liuzujun
钻石3改成虹光玉8
|
386
387
|
if not role:checkItemEnough({[ItemId.Jade] = cost}) then return end
role:costItems({[ItemId.Jade] = cost}, {log = {desc = "advQuickHang", int1 = chapterId}})
|
5404ee7d
zhouhaihai
冒险挂机加速
|
388
389
390
|
info.time = 0
role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
|
072db127
zhouhaihai
推送
|
391
|
role:pushCancel({type = "adv", slot = chapterId})
|
f22a33af
zhouhaihai
自己的日志
|
392
393
|
role:mylog("adv_action", {desc = "advQuickHang", int1 = chapterId})
|
5404ee7d
zhouhaihai
冒险挂机加速
|
394
395
396
397
|
SendPacket(actionCodes.Adv_quickHangRpc, '')
return true
end
|
09be9059
zhouhaihai
冒险接口
|
398
399
400
401
402
403
404
405
406
407
408
|
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
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
409
410
|
local index = info.index or 1
local chapterData = csvdb["adv_chapter_campsiteCsv"][chapterId]
|
09be9059
zhouhaihai
冒险接口
|
411
|
if not chapterData then return end
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
412
413
414
415
416
417
418
419
420
421
|
local campSiteData = chapterData[info.campId or 2]
if not campSiteData then return 1 end
if campSiteData.idleReward_1 == "" and campSiteData.idleReward_2 == "" then return 2 end --没有奖励 没有挂机
local adv_idle_time = globalCsv.adv_idle_time[index]
local adv_idle_energy = globalCsv.adv_idle_energy[index]
local adv_idle_reward_coef = globalCsv.adv_idle_reward[index]
if not adv_idle_time or not adv_idle_energy or not adv_idle_reward_coef then
return 2
end
|
a42130ee
chenyueqi
电波塔加成错误
|
422
|
adv_idle_time = adv_idle_time * 60
|
09be9059
zhouhaihai
冒险接口
|
423
|
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
424
|
local reward, isFull, change, heroFaithMap
|
f76d63e1
liuzujun
联动任务活动
|
425
|
local heroCnt = 0
|
09be9059
zhouhaihai
冒险接口
|
426
|
if skynet.timex() >= info.time then
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
427
428
|
-- 最新需求加成取消
--[[
|
a7c0f779
zhouhaihai
挂机加成
|
429
430
431
|
-- 英雄加成
local idleUnit = chapterData.idleUnit:toNumMap()
local upUnit = 0
|
be4e8031
zhouhaihai
活动 拾荒
|
432
433
434
435
436
437
|
for slot, heroId in pairs((info.format or {}).heros or {}) do
local hero = role.heros[heroId]
if hero then
if idleUnit[hero:getProperty("type")] then
upUnit = upUnit + idleUnit[hero:getProperty("type")]
end
|
a7c0f779
zhouhaihai
挂机加成
|
438
439
440
441
442
443
444
445
446
|
end
end
-- 中继加成
local advPass = role:getProperty("advPass")
local maxCampsite = nil
local campsiteCsv = csvdb["adv_chapter_campsiteCsv"][chapterId]
for _, campsite in ipairs(campsiteCsv) do
if campsite.floor <= advPass[chapterId] then
maxCampsite = campsite
|
be4e8031
zhouhaihai
活动 拾荒
|
447
448
|
else
break
|
a7c0f779
zhouhaihai
挂机加成
|
449
450
451
452
|
end
end
if not maxCampsite then return end
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
453
|
]]
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
454
455
456
457
458
459
|
-- 增加英雄信赖
local exp = info.duration / 60
heroFaithMap = {}
for _, heroId in pairs(info.format.heros) do
local curFaith = addHeroFaith(role, heroId, exp)
heroFaithMap[heroId] = curFaith
|
f76d63e1
liuzujun
联动任务活动
|
460
|
heroCnt = heroCnt + 1
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
461
462
|
end
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
463
|
local totalReward = campSiteData.idleReward_1 .. " " .. campSiteData.idleReward_2
|
a7c0f779
zhouhaihai
挂机加成
|
464
|
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
465
|
local idleReward = totalReward:toNumMap()
|
a7c0f779
zhouhaihai
挂机加成
|
466
|
for itemId, count in pairs(idleReward) do
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
467
|
idleReward[itemId] = count * adv_idle_reward_coef
|
a7c0f779
zhouhaihai
挂机加成
|
468
|
end
|
40b19300
chenyueqi
电波塔激活加成效果后对各个系统的加成
|
469
470
471
472
473
474
475
476
477
|
local bnousReward = role:getBnousAdv()
for time, set in pairs(bnousReward) do
local delta = math.floor(adv_idle_time / time)
for key, value in pairs(set) do
idleReward[key] = (idleReward[key] or 0) + value * delta
end
end
|
7bb30dca
zhouhaihai
修改发奖
|
478
|
reward, change = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}})
|
09be9059
zhouhaihai
冒险接口
|
479
480
|
else
if cancel then
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
481
|
--role:changeAdvCount(-chapterData.limitlevel)
|
fc316d1f
zhouhaihai
冒险体力优化
|
482
483
484
485
486
|
-- if role:getProperty("advC") <= 0 then
-- isFull = true
-- else
-- role:updateProperty({field = "advC", delta = -chapterData.limitlevel})
-- end
|
072db127
zhouhaihai
推送
|
487
|
role:pushCancel({type = "adv", slot = chapterId})
|
09be9059
zhouhaihai
冒险接口
|
488
|
else
|
46fac6f1
zhouahaihai
酱料
|
489
490
491
|
return
end
end
|
09be9059
zhouhaihai
冒险接口
|
492
493
494
|
role:changeUpdates({{type = "advHang", field = chapterId, value = nil}})
|
f22a33af
zhouhaihai
自己的日志
|
495
496
|
role:mylog("adv_action", {desc = "endHang", int1 = chapterId, short1 = cancel and 1 or 0})
|
e0ad10e9
liuzujun
英雄帖任务简单类型测试
|
497
|
role:checkTaskEnter("AdvHang", {})
|
f76d63e1
liuzujun
联动任务活动
|
498
|
role:checkTaskEnter("AdvHangHeroCnt", {count = heroCnt})
|
0c6b1a62
chenyueqi
物资危机增加 代理拾荒时间和拾荒击...
|
499
|
role:checkTaskEnter("AdvHangTime", {count = math.ceil(adv_idle_time / 3600)})
|
e0ad10e9
liuzujun
英雄帖任务简单类型测试
|
500
|
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
501
|
SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, change = change, isFull = isFull, heroFaith = heroFaithMap}))
|
09be9059
zhouhaihai
冒险接口
|
502
503
504
505
506
507
508
509
|
return true
end
function _M.buyAdvCountRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local count = msg.count --购买次数
|
e38b9c49
zhouhaihai
无尽次数
|
510
511
512
|
local isEl = msg.isEl -- 是否是无尽模式
local cost
if isEl then
|
0e3ab88d
zhouhaihai
中继层
|
513
|
if math.illegalNum(count, 1, globalCsv.adv_endless_daily_buy_count - role.dailyData:getProperty("advElBC")) then return end
|
3d8050ef
liuzujun
钻石3改成虹光玉8
|
514
|
cost = {[ItemId.Jade] = count * globalCsv.adv_endless_daily_buy_cost}
|
e38b9c49
zhouhaihai
无尽次数
|
515
|
else
|
0e3ab88d
zhouhaihai
中继层
|
516
|
if math.illegalNum(count, 1, globalCsv.adv_daily_buy_count - role.dailyData:getProperty("advBC")) then return end
|
3d8050ef
liuzujun
钻石3改成虹光玉8
|
517
|
cost = {[ItemId.Jade] = count * globalCsv.adv_daily_buy_cost}
|
e38b9c49
zhouhaihai
无尽次数
|
518
519
520
|
end
|
09be9059
zhouhaihai
冒险接口
|
521
|
if not role:checkItemEnough(cost) then return end
|
887c1843
zhouhaihai
日志新一批
|
522
|
role:costItems(cost, {log = {desc = "buyAdvCount", int1 = isEl and 1 or 0, int2 = count}})
|
e38b9c49
zhouhaihai
无尽次数
|
523
524
525
526
|
if isEl then
role.dailyData:updateProperty({field = "advElC", delta = -count})
role.dailyData:updateProperty({field = "advElBC", delta = count})
else
|
fc316d1f
zhouhaihai
冒险体力优化
|
527
|
role:changeAdvCount(-count * globalCsv.adv_daily_buy_num)
|
e38b9c49
zhouhaihai
无尽次数
|
528
529
|
role.dailyData:updateProperty({field = "advBC", delta = count})
end
|
f22a33af
zhouhaihai
自己的日志
|
530
|
role:mylog("adv_action", {desc = "buyAdvCount", short1 = isEl and 1 or 0, int1 = count})
|
09be9059
zhouhaihai
冒险接口
|
531
532
|
SendPacket(actionCodes.Adv_buyAdvCountRpc, '')
|
46fac6f1
zhouahaihai
酱料
|
533
534
535
|
return true
end
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
536
537
538
539
|
function _M.finishTaskRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
540
|
if not isCanContinue(role) then return end
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
541
542
|
local adv = role:getAdvData()
local taskId = msg.taskId -- -1 则是主线任务
|
7bb30dca
zhouhaihai
修改发奖
|
543
|
local status, reward, change
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
544
|
if taskId == -1 then
|
7bb30dca
zhouhaihai
修改发奖
|
545
|
status, reward, change = adv:finishMTask()
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
546
547
|
else
status, reward = adv:finishTask(taskId)
|
b176d7d3
zhouhaihai
冒险成就
|
548
549
|
adv:checkAchievement(adv.AchievType.TaskLayer, 1, taskId)
adv:updateAchievement()
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
550
|
end
|
f99f48df
zhouhaihai
冒险任务
|
551
|
adv:updateTask()
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
552
|
if not status then return end
|
53e8037e
zhouhaihai
任务
|
553
|
role:checkTaskEnter("AdvOverTask", {id = taskId})
|
3133cb76
zhouhaihai
日志
|
554
|
|
f22a33af
zhouhaihai
自己的日志
|
555
|
adv:mylog({desc = "finishTask", int1 = taskId})
|
97807511
zhouhaihai
增加日志
|
556
557
558
559
560
561
562
563
564
565
|
role:log("mission_pick_achiev", {
mission_threadid = adv.chapterId, -- 大地图ID
mission_threadname = (csvdb["adv_chapterCsv"][adv.chapterId] or {})["chapter"] or "auto", -- 大地图名称
mission_id = adv.level, -- 关卡ID
mission_sequenceid = adv.logid, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志
mission_pick_achiev_id = taskId, -- 任务ID
mission_pick_achiev_reward = reward, -- 任务奖励,[{"id":101,"num":10},{"id":102,"num":20},{"id":103,"num":30}]
})
|
f22a33af
zhouhaihai
自己的日志
|
566
|
|
7bb30dca
zhouhaihai
修改发奖
|
567
|
SendPacket(actionCodes.Adv_finishTaskRpc, MsgPack.pack(role:packReward(reward, change)))
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
568
569
570
|
return true
end
|
46fac6f1
zhouahaihai
酱料
|
571
572
573
574
575
|
-- 点击地块(解锁)(触发事件)
function _M.clickBlockRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
6fc397d6
zhouhaihai
角色新突破 冒险优化点击地块
|
576
577
578
579
580
581
582
583
|
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
酱料
|
584
|
local adv = role:getAdvData()
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
585
|
|
6fc397d6
zhouhaihai
角色新突破 冒险优化点击地块
|
586
|
if adv:isWaitChooseArtifact() then return returnFail() end
|
3133cb76
zhouhaihai
日志
|
587
|
|
f22a33af
zhouhaihai
自己的日志
|
588
589
|
adv:mylog({desc = "clickBlock", int1 = msg.roomId, int2 = msg.blockId})
|
8c4a6f4c
zhouhaihai
冒险增加错误返回
|
590
|
local status, errorCode = adv:clickBlock(msg.roomId, msg.blockId, msg)
|
6fc397d6
zhouhaihai
角色新突破 冒险优化点击地块
|
591
|
if not status then return returnFail(errorCode) end
|
3133cb76
zhouhaihai
日志
|
592
|
|
46fac6f1
zhouahaihai
酱料
|
593
594
595
596
597
598
599
600
601
|
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
冒险使用道具
|
602
603
604
605
606
607
608
|
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
赛季更新完善 无尽冒险排行榜
|
609
|
if not isCanContinue(role) then return end
|
46fac6f1
zhouahaihai
酱料
|
610
|
local adv = role:getAdvData()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
611
|
if adv:isWaitChooseArtifact() then return end
|
25a376de
zhouhaihai
冒险使用道具
|
612
613
614
615
|
--重置数量
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
冒险使用道具
|
616
617
|
--消耗
if itemData["function"] == 0 or itemData["function"] == 1 then
|
498f0eb2
zhouhaihai
冒险 action
|
618
|
adv:cost({[itemId] = count}, {log = {desc = "useItem", int1 = itemId, int2 = count}})
|
85ded242
zhouhaihai
丰富返回事件
|
619
|
adv:backUse({[itemId] = count})
|
25a376de
zhouhaihai
冒险使用道具
|
620
|
end
|
8955225b
zhouhaihai
快速拾取。快速使用
|
621
622
|
adv:useItem(itemId, count, target)
|
6dc482bb
zhouhaihai
中继层完成, 新增两个冒险物品使用效果
|
623
|
|
25a376de
zhouhaihai
冒险使用道具
|
624
625
626
|
adv:afterRound()
adv:saveDB()
|
46fac6f1
zhouahaihai
酱料
|
627
628
629
630
|
SendPacket(actionCodes.Adv_useItemRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
|
42f2d1d3
suhongyang
战斗内技能序列逻辑
|
631
|
--使用营养技能
|
d27ad5e0
suhongyang
使用营养技
|
632
|
function _M.usePotionRpc(agent, data)
|
46fac6f1
zhouahaihai
酱料
|
633
634
|
local role = agent.role
local msg = MsgPack.unpack(data)
|
4f0a5fae
zhouhaihai
营养剂
|
635
636
|
local potionId = msg.potionId -- 营养剂Id
local target = msg.target -- {roomId = 1, blockId = 1} 选择的目标
|
0027e33b
chenyueqi
调理剂生产和使用逻辑优化
|
637
638
|
local potionLv = role.dinerData:getProperty("dishTree"):getv(potionId, 1)
if potionLv < 1 then return 1 end
|
4f0a5fae
zhouhaihai
营养剂
|
639
640
641
642
643
644
645
|
local potionSet = csvdb["adv_potionCsv"][potionId]
if not potionSet then return 2 end
local potionData = potionSet[potionLv]
if not potionData then return 3 end
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
646
|
if not isCanContinue(role) then return end
|
46fac6f1
zhouahaihai
酱料
|
647
|
local adv = role:getAdvData()
|
0027e33b
chenyueqi
调理剂生产和使用逻辑优化
|
648
|
if not adv:cost({[potionId] = 1}, {}, true) then return 4 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
649
650
|
if adv:isWaitChooseArtifact() then return end
|
f22a33af
zhouhaihai
自己的日志
|
651
|
adv:mylog({desc = "usePotion", int1 = potionId})
|
3133cb76
zhouhaihai
日志
|
652
|
|
4f0a5fae
zhouhaihai
营养剂
|
653
|
local status = adv:doActive(potionData.effect, target) -- target
|
46fac6f1
zhouahaihai
酱料
|
654
|
if not status then return end
|
4f0a5fae
zhouhaihai
营养剂
|
655
|
|
0027e33b
chenyueqi
调理剂生产和使用逻辑优化
|
656
|
adv:cost({[potionId] = 1}, {log = {desc = "usePotion", int1 = potionId}})
|
85ded242
zhouhaihai
丰富返回事件
|
657
|
adv:pushBackEvent(AdvBackEventType.Potion, {id = potionId})
|
4f0a5fae
zhouhaihai
营养剂
|
658
659
660
661
|
adv:afterRound()
adv:saveDB()
role:checkTaskEnter("AdvUsePotion")
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
662
663
|
role:finishGuide(61)
|
d27ad5e0
suhongyang
使用营养技
|
664
|
SendPacket(actionCodes.Adv_usePotionRpc, MsgPack.pack({events = adv:popBackEvents()}))
|
46fac6f1
zhouahaihai
酱料
|
665
666
|
return true
end
|
23d89d13
zhouahaihai
冒险 结构
|
667
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
668
669
670
671
|
-- 选择神器
function _M.chooseArtifactRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
672
|
|
41e118a5
zhouhaihai
增加输出
|
673
|
if not isCanContinue(role) then return 1 end
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
674
675
|
local adv = role:getAdvData()
|
41e118a5
zhouhaihai
增加输出
|
676
677
|
if not msg.idx then return 2 end
if not adv:isWaitChooseArtifact() then return 3 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
678
|
local status = adv:chooseArtifact(msg.idx)
|
41e118a5
zhouhaihai
增加输出
|
679
|
if not status then return 4 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
680
|
adv:saveDB()
|
3133cb76
zhouhaihai
日志
|
681
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
682
683
684
685
686
687
688
689
690
691
692
|
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
赛季更新完善 无尽冒险排行榜
|
693
694
|
if not isCanContinue(role) then return end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
695
696
|
local adv = role:getAdvData()
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
697
|
if math.illegalNum(slot, 1, 5) then return 1 end
|
c992c911
zhouhaihai
中继
|
698
|
if adv:isWaitChooseArtifact() then return 2 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
699
700
|
local status = adv:wearArtifact(slot, id)
|
c992c911
zhouhaihai
中继
|
701
|
if not status then return 3 end
|
97807511
zhouhaihai
增加日志
|
702
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
703
704
|
adv:saveDB()
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
705
706
|
role:finishGuide(55)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
707
708
709
710
711
712
713
714
715
716
|
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
赛季更新完善 无尽冒险排行榜
|
717
718
|
if not isCanContinue(role) then return end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
719
|
local adv = role:getAdvData()
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
720
|
if adv:isWaitChooseArtifact() then return 1 end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
721
|
local curLevel = adv:isHaveArtifact(id)
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
722
723
724
725
|
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
|
726
727
|
local status = adv:artifactLevelUp(id)
|
97807511
zhouhaihai
增加日志
|
728
729
730
731
732
733
734
735
736
737
738
739
740
741
|
if not status then
return 5
else
role:log("mission_pick_reform", {
mission_threadid = adv.chapterId, -- 大地图ID
mission_threadname = (csvdb["adv_chapterCsv"][adv.chapterId] or {})["chapter"] or "auto", -- 大地图名称
mission_id = adv.level, -- 关卡ID
mission_pick_equip_id = id, -- 神器ID
mission_pick_reform_beflv = curLevel, -- 神器原等级
mission_pick_reform_aftlv = curLevel + 1, -- 神器现等级
mission_pick_reform_cost = cost[ItemId.AdvPoint], -- 消耗探险点数
mission_sequenceid = adv.logid, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志
})
end
|
498f0eb2
zhouhaihai
冒险 action
|
742
|
adv:cost(cost, {log = {desc = "upArtifact", int1 = id}})
|
85ded242
zhouhaihai
丰富返回事件
|
743
|
adv:backCost(cost)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
744
745
|
if status == 1 then -- 现在穿着呢。更新下
adv:saveDB()
|
284482c6
zhouhaihai
冒险成就
|
746
747
|
else
adv:updateAchievement()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
748
|
end
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
749
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
750
751
752
753
|
SendPacket(actionCodes.Adv_upArtifactRpc, '')
return true
end
|
ec87b4a5
zhouahaihai
冒险 完善
|
754
755
756
757
|
--退出
function _M.exitAdvRpc(agent, data)
local role = agent.role
-- local msg = MsgPack.unpack(data)
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
758
|
if not isCanContinue(role) then return end
|
0c90a4f4
chenyueqi
拾荒引导结束要设定引导步骤为成就引导
|
759
|
-- 冒险中途退出的时候要把引导步骤设定到成就引导
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
760
761
762
|
if not role:checkOverGuide(57) then
role:saveGuide(57,1,true)
end
|
ec87b4a5
zhouahaihai
冒险 完善
|
763
|
local adv = role:getAdvData()
|
f22a33af
zhouhaihai
自己的日志
|
764
|
adv:mylog({desc = "exit"})
|
ec87b4a5
zhouahaihai
冒险 完善
|
765
766
767
768
769
|
local status = adv:exit() -- target {roomId = 1, blockId = 1} 选择的目标
SendPacket(actionCodes.Adv_exitAdvRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
|
12f7b52c
zhouhaihai
冒险战斗
|
770
771
772
773
774
775
776
777
778
779
780
|
--开始战斗
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
赛季更新完善 无尽冒险排行榜
|
781
|
if not isCanContinue(role) then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
782
783
|
local adv = role:getAdvData()
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
784
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
785
|
if adv:isWaitChooseArtifact() then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
786
787
|
local enemy = adv.battle:getEnemyById(enemyId)
|
5aecad36
zhouhaihai
安全判定
|
788
|
if not enemy or enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId or enemy.lock or enemy.isDead then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
|
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 神器
|
809
|
local bySkill = msg.bySkill --死于 技能
|
12f7b52c
zhouhaihai
冒险战斗
|
810
811
|
if not player or not player.hp or not player.sp or not enemyId or not key then return end
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
812
813
|
if not isCanContinue(role) then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
814
|
local adv = role:getAdvData()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
815
|
if adv:isWaitChooseArtifact() then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
816
817
818
819
|
-- 校验
if not adv.__battleCache then return end
if adv.__battleCache.enemyId ~= enemyId then return end
local enemy = adv.battle:getEnemyById(enemyId)
|
5aecad36
zhouhaihai
安全判定
|
820
|
if not enemy or enemy.monsterId ~= monsterId or enemy.roomId ~= roomId or enemy.blockId ~= blockId then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
821
822
|
adv.__battleCache = nil
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
823
824
825
826
|
-- 打完野猪怪
role:finishGuide(52)
-- 调理剂使用引导(生命药剂)
if not role:checkOverGuide(61) then
|
0027e33b
chenyueqi
调理剂生产和使用逻辑优化
|
827
|
local potionBag = role:getProperty("advItems"):toNumMap()
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
828
829
830
831
832
833
834
|
local own = potionBag[10] or 0
if own > 0 then
-- 造假
player.hp = player.hp * 0.8
role:saveGuide(61,1,true)
end
end
|
f22a33af
zhouhaihai
自己的日志
|
835
|
adv:mylog({desc = "endBattle"})
|
8cfb25d7
zhouhaihai
传递 敌人信息
|
836
|
local status = adv:clickBlock(roomId, blockId, {player = player, enemy = msg.enemy, bySkill = bySkill})
|
3133cb76
zhouhaihai
日志
|
837
|
|
12f7b52c
zhouhaihai
冒险战斗
|
838
839
840
841
842
|
if not status then return end
SendPacket(actionCodes.Adv_endBattleRpc, MsgPack.pack({events = adv:popBackEvents()}))
return true
end
|
007af97e
zhouhaihai
item_random 结构更改
|
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
|
-- 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
冒险战斗
|
870
|
|
f4c65591
zhouhaihai
抽奖
|
871
872
|
function _M.wheelSurfRpc(agent, data)
local role = agent.role
|
81032a9c
zhouhaihai
抽奖
|
873
|
-- if not role:isFuncOpen(FuncOpenType.AdvWheelSurf) then return end -- 默认解锁
|
b176d7d3
zhouhaihai
冒险成就
|
874
|
|
81032a9c
zhouhaihai
抽奖
|
875
|
local msg = MsgPack.unpack(data)
|
f4c65591
zhouhaihai
抽奖
|
876
|
|
81032a9c
zhouhaihai
抽奖
|
877
878
|
local ptype = msg.ptype -- 池子类型 1, 2
local ctype = msg.ctype -- 抽取次数 1 1次,2 10次
|
f4c65591
zhouhaihai
抽奖
|
879
|
|
81032a9c
zhouhaihai
抽奖
|
880
881
882
883
884
|
local countPool = {
[1] = 1,
[2] = 10
}
local count = countPool[ctype]
|
8f5218e6
zhouhaihai
犯回错误区分
|
885
|
if not count then return 1 end
|
f4c65591
zhouhaihai
抽奖
|
886
|
|
6b5c9206
zhouhaihai
冒险资助升级属性奖励
|
887
|
if ptype == 2 and not role:isFuncOpen(FuncOpenType.AdvEndless) then
|
8f5218e6
zhouhaihai
犯回错误区分
|
888
|
return 2
|
6b5c9206
zhouhaihai
冒险资助升级属性奖励
|
889
|
end
|
f4c65591
zhouhaihai
抽奖
|
890
|
|
81032a9c
zhouhaihai
抽奖
|
891
|
local drawTypeData = csvdb["adv_wheelsurfCsv"][ptype]
|
8f5218e6
zhouhaihai
犯回错误区分
|
892
|
if not drawTypeData then return 3 end
|
6b5c9206
zhouhaihai
冒险资助升级属性奖励
|
893
|
local drawData = drawTypeData[role:getAdvWheelSurfLv(ptype)]
|
8f5218e6
zhouhaihai
犯回错误区分
|
894
|
if not drawData then return 4 end
|
f4c65591
zhouhaihai
抽奖
|
895
|
|
7474dd12
zhouhaihai
资助抽奖bug
|
896
897
898
899
|
local cost = drawData.cost:toArray(true, "=")
local costs = {[ItemId.OldCoin] = cost[ctype]}
if not next(costs) then return 6 end
|
f4c65591
zhouhaihai
抽奖
|
900
|
|
8f5218e6
zhouhaihai
犯回错误区分
|
901
|
if not role:checkItemEnough(costs) then return 5 end
|
3133cb76
zhouhaihai
日志
|
902
|
role:costItems(costs, {log = {desc = "advWheelSurf", int1 = ptype}})
|
97807511
zhouhaihai
增加日志
|
903
|
local oldLv, lv = role:addAdvLvExp(costs[ItemId.OldCoin] or 0)
|
764e5296
zhouhaihai
冒险抽奖保底
|
904
905
906
|
local advDrawB = role:getProperty("advDrawB")
advDrawB[ptype] = (advDrawB[ptype] or 0) + count
role:updateProperty({field = "advDrawB", value = advDrawB})
|
81032a9c
zhouhaihai
抽奖
|
907
|
-- 随机池子
|
81032a9c
zhouhaihai
抽奖
|
908
909
910
|
local reward = {}
local backReward = {}
for i = 1, count do
|
7474dd12
zhouhaihai
资助抽奖bug
|
911
|
local pool = drawData.weight:randWeight()
|
81032a9c
zhouhaihai
抽奖
|
912
913
914
915
|
local gift = drawData["pool" .. pool]:randWeight(true)
reward[gift[1]] = (reward[gift[1]] or 0) + gift[2]
table.insert(backReward, gift)
end
|
3133cb76
zhouhaihai
日志
|
916
|
role:award(reward, {log = {desc = "advWheelSurf", int1 = ptype}})
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
917
|
role:finishGuide(58)
|
f22a33af
zhouhaihai
自己的日志
|
918
|
|
9912e064
zhouhaihai
新增3个每日任务类型
|
919
|
role:checkTaskEnter("AdvDraw", {count = count, ptype = ptype})
|
f22a33af
zhouhaihai
自己的日志
|
920
|
role:mylog("adv_action", {desc = "advWheelSurf", int1 = ptype, int2 = count})
|
3133cb76
zhouhaihai
日志
|
921
|
|
97807511
zhouhaihai
增加日志
|
922
923
924
925
926
927
928
929
930
931
|
role:log("mission_pick_fund", {
item_id = ItemId.OldCoin, -- 资助花费道具ID
mission_pick_fund_amount = costs[ItemId.OldCoin], -- 资助花费道具数量
mission_pick_fund_cnt = count, -- 资助花费道具次数,1或者10
mission_pick_fund_reward = reward, -- 资助获得奖励,[{"id":100,"num":10},{"id":101,"num":20},{"id":102,"num":30}]
mission_pick_fund_stagereward = {}, -- 资助阶段奖励
mission_pick_fund_beflv = oldLv, -- 资助前资助等级
mission_pick_fund_aftlv = lv, -- 资助后资助等级
})
|
81032a9c
zhouhaihai
抽奖
|
932
|
SendPacket(actionCodes.Adv_wheelSurfRpc, MsgPack.pack({reward = backReward}))
|
f4c65591
zhouhaihai
抽奖
|
933
934
|
return true
end
|
764e5296
zhouhaihai
冒险抽奖保底
|
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
|
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)
|
7bb30dca
zhouhaihai
修改发奖
|
957
958
|
local reward, change = {[gift[1]] = gift[2]}
reward, change = role:award(reward, {log = {desc = "advRepayWheelSurf", int1 = ptype}})
|
f22a33af
zhouhaihai
自己的日志
|
959
|
role:mylog("adv_action", {desc = "advRepayWheelSurf", int1 = ptype})
|
764e5296
zhouhaihai
冒险抽奖保底
|
960
|
|
7bb30dca
zhouhaihai
修改发奖
|
961
|
SendPacket(actionCodes.Adv_repayWheelSurfRpc, MsgPack.pack(role:packReward(reward, change)))
|
764e5296
zhouhaihai
冒险抽奖保底
|
962
963
|
return true
end
|
f4c65591
zhouhaihai
抽奖
|
964
|
|
b176d7d3
zhouhaihai
冒险成就
|
965
966
967
|
function _M.finishAchievRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
968
|
local ctype = msg.ctype or 2 -- 领取类型 1 成就 2 pt累计奖励
|
b176d7d3
zhouhaihai
冒险成就
|
969
970
971
972
|
local chapterId = msg.chapterId --章节id
local taskId = msg.taskId -- 领取id
local adv = role:getAdvData()
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
973
|
|
7bb30dca
zhouhaihai
修改发奖
|
974
|
local status, reward, change
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
975
|
if ctype == 1 then
|
7bb30dca
zhouhaihai
修改发奖
|
976
|
status, reward, change = adv:finishAchievement(chapterId, taskId)
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
977
|
elseif ctype == 2 then
|
7bb30dca
zhouhaihai
修改发奖
|
978
|
status, reward, change = adv:getAchievementReward(chapterId, taskId)
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
979
|
end
|
b176d7d3
zhouhaihai
冒险成就
|
980
981
|
if not status then return end
adv:updateAchievement()
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
982
|
role:finishGuide(57)
|
f22a33af
zhouhaihai
自己的日志
|
983
984
|
role:mylog("adv_action", {desc = "finishAchiev", short1 = ctype, int1 = chapterId, int2 = taskId})
|
7bb30dca
zhouhaihai
修改发奖
|
985
|
SendPacket(actionCodes.Adv_finishAchievRpc, MsgPack.pack(role:packReward(reward, change)))
|
b176d7d3
zhouhaihai
冒险成就
|
986
987
988
|
return true
end
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
989
990
991
992
|
function _M.rankRpc(agent, data)
local role = agent.role
local list = {}
|
b2e41074
zhouhaihai
冒险 排行榜拆分
|
993
|
local ids = redisproxy:zrevrange(role:getAdvRankKey(), 0 , 99, "WITHSCORES")
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
994
995
996
|
local redret = {}
if ids and next(ids) then
redret = redisproxy:pipelining(function (red)
|
1313eac0
zhouhaihai
冒险的一些bug
|
997
|
for i = 1, #ids, 2 do
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
998
|
local roleId = ids[i]
|
1313eac0
zhouhaihai
冒险的一些bug
|
999
1000
|
local score = tonum(ids[i + 1])
table.insert(list, {roleId = tonumber(roleId), score = score})
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
|
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
冒险 排行榜拆分
|
1011
1012
|
red:ZREVRANK(role:getAdvRankKey(), role:getProperty("id"))
red:zscore(role:getAdvRankKey(), role:getProperty("id"))
|
1b20cfdb
zhouhaihai
赛季更新完善 无尽冒险排行榜
|
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
|
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 "修改冒险战斗逻辑"
|
1025
|
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
1026
1027
1028
1029
1030
1031
1032
|
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
冒险 被动调整
|
1033
|
role.dailyData:updateProperty({field = "advSupRe", delta = 1})
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
1034
|
else -- 付费
|
3d8050ef
liuzujun
钻石3改成虹光玉8
|
1035
1036
|
if not role:checkItemEnough({[ItemId.Jade] = globalCsv.adv_support_refresh_cost}) then return end
role:costItems({[ItemId.Jade] = globalCsv.adv_support_refresh_cost}, {log = {desc = "advReSupport"}})
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
1037
1038
1039
|
end
role:advRandomSupportEffect()
|
f22a33af
zhouhaihai
自己的日志
|
1040
|
role:mylog("adv_action", {desc = "advSupRe", short1 = cr < al and 0 or 1})
|
9ced5432
zhouhaihai
冒险支援效果 保底事件
|
1041
1042
1043
1044
1045
|
SendPacket(actionCodes.Adv_refreshSupportRpc, '')
return true
end
|
98d32f92
liuzujun
多编队
|
1046
1047
1048
1049
1050
1051
|
function _M.roleFormatRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local index = msg.index -- 阵容索引
local title = msg.title -- 阵容名称
local team = {}
|
67b46a6b
zhouhaihai
修复存在的冒险进不去的玩家
|
1052
1053
1054
|
if role:getAdvData():isRunning() then return 3 end
|
98d32f92
liuzujun
多编队
|
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
|
for slot, heroId in pairs(msg.heros) do
if not role.heros[heroId] then
return 1
end
end
if index > 10 then
return 2
end
team.heros = {}
for slot, heroId in pairs(msg.heros) do
team.heros[slot] = heroId
end
team.leader = msg.leader
team.leader2 = msg.leader2
team.title = title
role:setAdvTeamFormat(index, team)
local advTeam = role:getProperty("advTeam")
|
782ee57d
liuzujun
多编队功能
|
1075
1076
1077
|
local curIndex = advTeam.index
if curIndex == index then
table.clear(advTeam)
|
98d32f92
liuzujun
多编队
|
1078
|
|
782ee57d
liuzujun
多编队功能
|
1079
1080
1081
1082
1083
1084
1085
1086
|
advTeam.heros = {}
for slot, heroId in pairs(msg.heros) do
advTeam.heros[slot] = heroId
end
advTeam.leader = msg.leader
advTeam.leader2 = msg.leader2
advTeam.index = index
role:updateProperty({field = "advTeam", value = advTeam})
|
98d32f92
liuzujun
多编队
|
1087
|
end
|
98d32f92
liuzujun
多编队
|
1088
1089
1090
1091
1092
1093
1094
1095
1096
|
SendPacket(actionCodes.Adv_roleFormatRpc, '')
return true
end
function _M.selectTeamRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local index = msg.index -- 阵容索引
|
67b46a6b
zhouhaihai
修复存在的冒险进不去的玩家
|
1097
1098
1099
|
if role:getAdvData():isRunning() then return 1 end
|
98d32f92
liuzujun
多编队
|
1100
1101
|
local team = role:getAdvTeamFormat(index)
if not next(team) then return end
|
782ee57d
liuzujun
多编队功能
|
1102
|
team["index"] = index
|
98d32f92
liuzujun
多编队
|
1103
1104
1105
1106
1107
1108
|
role:updateProperty({field = "advTeam", value = team})
SendPacket(actionCodes.Adv_selectTeamRpc, '')
return true
end
|
23d89d13
zhouahaihai
冒险 结构
|
1109
|
return _M
|