384bb077
zhouahaihai
挂机
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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
local _M = {}
local function checkReward(role)
local hangInfo = role:getProperty("hangInfo")
if not hangInfo.carbonId or not hangInfo.coinTime or not hangInfo.itemTime then
|
024370be
liuzujun
双倍掉掉落bug
|
22
|
return false
|
384bb077
zhouahaihai
挂机
|
23
24
|
end
local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId]
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
25
|
local expCarbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId]
|
bcf5bfbb
zhouahaihai
挂机new
|
26
27
|
local nowCoinTime = math.min(skynet.timex(), hangInfo.endCoinTime or 0)
local nowItemTime = math.min(skynet.timex(), hangInfo.endItemTime or 0)
|
384bb077
zhouahaihai
挂机
|
28
|
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
29
30
31
|
-- 此次挂机,其中翻倍时长占多少
local doubleTime = role.activity:getActHangDoubleTime(hangInfo.coinTime, nowCoinTime)
local normalTime = nowCoinTime - hangInfo.coinTime - doubleTime
|
384bb077
zhouahaihai
挂机
|
32
|
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
33
34
35
36
|
local coinCount = math.max(0, math.floor((normalTime) / globalCsv.idle_money_produce_cd))
local coinDoubleCount = math.max(0, math.floor((doubleTime) / globalCsv.idle_money_produce_cd)) * 2
hangInfo.coinTime = nowCoinTime
|
024370be
liuzujun
双倍掉掉落bug
|
37
|
normalTime = nowItemTime - hangInfo.itemTime
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
38
|
local itemCount = math.max(0, math.floor((normalTime) / globalCsv.idle_item_produce_cd))
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
39
|
hangInfo.itemTime = nowItemTime
|
384bb077
zhouahaihai
挂机
|
40
41
|
local items = role:getProperty("hangBag")
|
706b517e
liuzujun
翻倍掉落活动,商城免费宝箱
|
42
|
coinCount = coinCount + coinDoubleCount
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
43
44
45
|
items[ItemId.Gold] = math.floor((items[ItemId.Gold] or 0) + coinCount * expCarbonData.money)
items[ItemId.Exp] = math.floor((items[ItemId.Exp] or 0) + coinCount * expCarbonData.exp)
items[ItemId.PlayerExp] = math.floor((items[ItemId.PlayerExp] or 0) + coinCount * expCarbonData.playerExp)
|
384bb077
zhouahaihai
挂机
|
46
47
48
49
50
|
local pool = {}
for _, temp in pairs(carbonData.item:toArray()) do
table.insert(pool, temp:toArray(true, "="))
end
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
51
52
53
|
local curFC = 0
local curIC = 0
for id, count in pairs(items) do
|
bcf5bfbb
zhouahaihai
挂机new
|
54
|
if id ~= ItemId.Gold and id ~= ItemId.Exp and id ~= ItemId.PlayerExp then
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
55
56
|
curFC = curFC + math.ceil(count / globalCsv.idle_field_limit)
curIC = curIC + count
|
9962b061
zhouahaihai
补充 挂机
|
57
58
|
end
end
|
317a46a9
liuzujun
添加特权卡
|
59
60
61
62
|
-- 特权卡挂机额外栏位
local privExtraCnt = role.storeData:getHangSlotExtraCount()
local selfFC = role:getProperty("hangBagLimit") + privExtraCnt
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
63
64
65
66
67
68
69
70
71
|
local selfIC = selfFC * globalCsv.idle_field_limit
local function randomItem()
if curIC >= selfIC then
return
end
local tempPool = clone(pool)
while #tempPool > 0 do
local idx = math.randWeight(tempPool, 3)
|
024370be
liuzujun
双倍掉掉落bug
|
72
|
local cur = clone(pool[idx])
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
73
|
if cur[1] ~= 0 then -- 轮空 id
|
024370be
liuzujun
双倍掉掉落bug
|
74
75
|
if cur[1] == ItemId.BreakCost and doubleTime > 0 then
cur[2] = cur[2] * 2
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
76
|
end
|
024370be
liuzujun
双倍掉掉落bug
|
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
if (items[cur[1]] and math.ceil((items[cur[1]] + cur[2]) / globalCsv.idle_field_limit) > math.ceil(items[cur[1]] / globalCsv.idle_field_limit))
or not items[cur[1]] then --要占用新栏位的情况
local addFC
if not items[cur[1]] then
addFC = math.ceil(cur[2] / globalCsv.idle_field_limit)
else
local frontC = items[cur[1]] % globalCsv.idle_field_limit
if frontC == 0 then
frontC = globalCsv.idle_field_limit
end
addFC = math.ceil((cur[2] - (globalCsv.idle_field_limit - frontC)) / globalCsv.idle_field_limit)
end
if curFC + addFC <= selfFC then
curFC = curFC + addFC
items[cur[1]] = (items[cur[1]] or 0) + cur[2]
break
else
--加不了,换别的东西
table.remove(tempPool, idx)
end
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
97
|
else
|
024370be
liuzujun
双倍掉掉落bug
|
98
99
|
items[cur[1]] = items[cur[1]] + cur[2]
break
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
100
101
|
end
else
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
102
|
break
|
9962b061
zhouahaihai
补充 挂机
|
103
|
end
|
9962b061
zhouahaihai
补充 挂机
|
104
|
end
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
105
106
|
curIC = curIC + 1
end
|
024370be
liuzujun
双倍掉掉落bug
|
107
|
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
108
109
|
for i = 1, itemCount do
randomItem()
|
384bb077
zhouahaihai
挂机
|
110
111
112
|
end
if coinCount > 0 or itemCount > 0 then
|
5af8b4aa
zhouahaihai
挂机down
|
113
|
return true
|
384bb077
zhouahaihai
挂机
|
114
|
end
|
024370be
liuzujun
双倍掉掉落bug
|
115
116
|
return false
|
384bb077
zhouahaihai
挂机
|
117
118
|
end
|
384bb077
zhouahaihai
挂机
|
119
120
121
122
123
124
|
--开始一个新的关卡
function _M.startRpc( agent, data )
local role = agent.role
local msg = MsgPack.unpack(data)
local carbonId = msg.carbonId
local carbonData = csvdb["idle_battleCsv"][carbonId]
|
f60b89b1
zhouhaihai
奖励副本
|
125
|
if not carbonData then return 1 end
|
384bb077
zhouahaihai
挂机
|
126
|
|
d232676a
zhouhaihai
功能解锁 冒险返回
|
127
128
129
130
|
if math.floor(carbonId / 10000) ~= 1 then
if not role:isFuncUnlock(FuncUnlock.DifficultHang) then return end
end
|
5d80aca6
zhouahaihai
挂机优化
|
131
132
|
for _, preCarbonId in ipairs(carbonData.prepose:toArray(true, "=")) do
|
33be3111
zhouhaihai
修改hangPass 结构
|
133
|
if not role:checkHangPass(preCarbonId) then return 2 end
|
5d80aca6
zhouahaihai
挂机优化
|
134
|
end
|
384bb077
zhouahaihai
挂机
|
135
|
|
5af8b4aa
zhouahaihai
挂机down
|
136
137
138
|
if checkReward(role) then
role:updateProperty({field = "hangBag", value = role:getProperty("hangBag")})
end
|
384bb077
zhouahaihai
挂机
|
139
140
|
local hangInfo = role:getProperty("hangInfo")
|
5af8b4aa
zhouahaihai
挂机down
|
141
|
local isNew = not hangInfo.carbonId
|
384bb077
zhouahaihai
挂机
|
142
|
hangInfo.carbonId = carbonId
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
143
|
hangInfo.expCarbonId = isNew and carbonId or hangInfo.expCarbonId
|
384bb077
zhouahaihai
挂机
|
144
|
local nowTime = skynet.timex()
|
5af8b4aa
zhouahaihai
挂机down
|
145
|
if isNew then
|
1103490d
zhouhaihai
设置 国家时间错误
|
146
147
|
hangInfo.coinTime = nowTime
hangInfo.itemTime = nowTime
|
bcf5bfbb
zhouahaihai
挂机new
|
148
149
|
hangInfo.endCoinTime = nowTime + globalCsv.idle_producetime_max
hangInfo.endItemTime = nowTime + globalCsv.idle_producetime_max
|
1103490d
zhouhaihai
设置 国家时间错误
|
150
151
152
|
else
hangInfo.coinTime = math.min(nowTime, hangInfo.endCoinTime)
hangInfo.itemTime = math.min(nowTime, hangInfo.endItemTime)
|
5af8b4aa
zhouahaihai
挂机down
|
153
|
end
|
072db127
zhouhaihai
推送
|
154
155
|
role:pushMsg({type = "hang", time = math.min(hangInfo.endCoinTime - nowTime, hangInfo.endItemTime - nowTime)})
|
33be3111
zhouhaihai
修改hangPass 结构
|
156
|
if not role:checkHangPass(carbonId) then
|
5af8b4aa
zhouahaihai
挂机down
|
157
158
159
|
hangInfo.bossTime = nowTime + carbonData.idle_time
else
hangInfo.bossTime = nil
|
384bb077
zhouahaihai
挂机
|
160
|
end
|
072db127
zhouhaihai
推送
|
161
|
|
384bb077
zhouahaihai
挂机
|
162
163
|
role:updateProperty({field = "hangInfo", value = hangInfo})
|
5132bac1
chenyueqi
挂机选定关卡时,指定新手引导步骤
|
164
165
166
167
168
169
170
171
172
173
|
-- 指定当前引导的步骤
if carbonId == 10101 then
role:saveGuide(5,11)
elseif carbonId == 10102 then
role:saveGuide(8,2)
elseif carbonId == 10103 then
role:saveGuide(9,2)
elseif carbonId == 10220 then
role:saveGuide(22,1)
end
|
d02f7904
zhouhaihai
遗失的log
|
174
|
role:mylog("hang_action", {desc = "startHang", int1 = carbonId})
|
384bb077
zhouahaihai
挂机
|
175
176
177
178
179
180
181
182
|
SendPacket(actionCodes.Hang_startRpc, '')
return true
end
-- 每隔1分钟检查一次
function _M.checkRpc(agent, data)
local role = agent.role
-- local msg = MsgPack.unpack(data)
|
5af8b4aa
zhouahaihai
挂机down
|
183
184
185
186
|
if checkReward(role) then
role:updateProperty({field = "hangBag", value = role:getProperty("hangBag")})
role:updateProperty({field = "hangInfo", value = role:getProperty("hangInfo")})
end
|
384bb077
zhouahaihai
挂机
|
187
188
189
190
|
SendPacket(actionCodes.Hang_checkRpc, MsgPack.pack({}))
return true
end
|
cc5ca7f3
zhouhaihai
缓存battleKey
|
191
|
local _BattleKey = nil
|
384bb077
zhouahaihai
挂机
|
192
193
194
|
function _M.startBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
bcf5bfbb
zhouahaihai
挂机new
|
195
196
|
local carbonId = msg.carbonId
local curData = csvdb["idle_battleCsv"][carbonId]
|
a1e08c9c
zhengshouren
宝箱关战斗异常
|
197
198
199
|
if not curData then
return 1
end
|
bcf5bfbb
zhouahaihai
挂机new
|
200
|
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
201
|
local hangInfo = role:getProperty("hangInfo") or {}
|
bcf5bfbb
zhouahaihai
挂机new
|
202
|
if curData.main ~= 1 then
|
a1e08c9c
zhengshouren
宝箱关战斗异常
|
203
204
205
|
if carbonId ~= hangInfo.carbonId then
return 2
end
|
bcf5bfbb
zhouahaihai
挂机new
|
206
207
|
end
|
33be3111
zhouhaihai
修改hangPass 结构
|
208
|
if role:checkHangPass(carbonId) then
|
a1e08c9c
zhengshouren
宝箱关战斗异常
|
209
210
|
return 3
end
|
bcf5bfbb
zhouahaihai
挂机new
|
211
|
|
cc5ca7f3
zhouhaihai
缓存battleKey
|
212
213
|
_BattleKey = tostring(math.random())
|
53e8037e
zhouhaihai
任务
|
214
|
role:checkTaskEnter("HangBattle", {id = carbonId})
|
52c87300
zhouhaihai
bug
|
215
|
SendPacket(actionCodes.Hang_startBattleRpc, MsgPack.pack({key = _BattleKey}))
|
384bb077
zhouahaihai
挂机
|
216
217
218
219
220
221
|
return true
end
function _M.endBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
222
|
local hangInfo = role:getProperty("hangInfo") or {}
|
cc5ca7f3
zhouhaihai
缓存battleKey
|
223
|
if not msg.key or msg.key ~= _BattleKey then
|
d6a66c74
zhouhaihai
校验失败也返回
|
224
225
|
SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({errorCode = 1}))
return true
|
4906ebd2
zhengshouren
宝箱关副本结算异常
|
226
|
end
|
bcf5bfbb
zhouahaihai
挂机new
|
227
|
local carbonId = msg.carbonId
|
d4e9b817
zhouhaihai
战斗 日志
|
228
|
local isWin = msg.starNum and msg.starNum > 0
|
bcf5bfbb
zhouahaihai
挂机new
|
229
|
local carbonData = csvdb["idle_battleCsv"][carbonId]
|
4906ebd2
zhengshouren
宝箱关副本结算异常
|
230
231
232
|
if not carbonData then
return 2
end
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
233
|
|
bcf5bfbb
zhouahaihai
挂机new
|
234
|
if carbonData.main ~= 1 then
|
4906ebd2
zhengshouren
宝箱关副本结算异常
|
235
236
237
|
if carbonId ~= hangInfo.carbonId then
return 3
end
|
bcf5bfbb
zhouahaihai
挂机new
|
238
|
end
|
33be3111
zhouhaihai
修改hangPass 结构
|
239
240
|
if role:checkHangPass(carbonId) then
|
4906ebd2
zhengshouren
宝箱关副本结算异常
|
241
242
|
return 4
end
|
d4e9b817
zhouhaihai
战斗 日志
|
243
|
|
7bb30dca
zhouhaihai
修改发奖
|
244
|
local reward, change
|
d4e9b817
zhouhaihai
战斗 日志
|
245
|
if isWin then --win
|
33be3111
zhouhaihai
修改hangPass 结构
|
246
|
role:hangFinish(carbonId)
|
bcf5bfbb
zhouahaihai
挂机new
|
247
248
249
|
if carbonData.main ~= 1 then
hangInfo.bossTime = nil
end
|
384bb077
zhouahaihai
挂机
|
250
251
|
-- reward
reward = {}
|
384bb077
zhouahaihai
挂机
|
252
253
|
reward[ItemId.Gold] = carbonData.money_clear
reward[ItemId.Exp] = carbonData.exp_clear
|
00115a7a
zhouahaihai
奖励发放
|
254
|
reward[ItemId.PlayerExp] = carbonData.playerExp_clear
|
384bb077
zhouahaihai
挂机
|
255
|
for itemId, count in pairs(carbonData.item_clear:toNumMap()) do
|
384bb077
zhouahaihai
挂机
|
256
257
|
reward[itemId] = count
end
|
7bb30dca
zhouhaihai
修改发奖
|
258
|
reward, change = role:award(reward, {log = {desc = "hangBattle", int1 = carbonId}})
|
00e663bd
zhouhaihai
剧情相关
|
259
|
|
03a6166a
zhouhaihai
餐厅优化
|
260
|
role:checkTaskEnter("HangPass", {id = carbonId})
|
286c980a
chenyueqi
挂机战斗胜利才触发对应的引导
|
261
262
263
264
265
266
|
-- 引导
if carbonId == 10101 then
role:finishGuide(5)
elseif carbonId == 10102 then
role:finishGuide(8)
|
e0290d8e
liuzujun
修改引导, 抽卡阶段奖励修改
|
267
|
role:saveGuide(9, 2)
|
286c980a
chenyueqi
挂机战斗胜利才触发对应的引导
|
268
269
|
elseif carbonId == 10103 then
role:finishGuide(9)
|
be0c7a19
chenyueqi
挂机打完困难20101才设定完成引导22
|
270
|
elseif carbonId == 20101 then
|
286c980a
chenyueqi
挂机战斗胜利才触发对应的引导
|
271
272
273
274
275
276
277
278
|
role:finishGuide(22)
end
for _, guideData in pairs(csvdb["guide_unlockCsv"]) do
if guideData.type == 3 and guideData.carbonId == carbonId then
role:saveGuide(guideData.guideId,1,true)
break
end
end
|
384bb077
zhouahaihai
挂机
|
279
|
end
|
53b4b8bd
liuzujun
自动挂机下一关
|
280
281
|
local nextCarbonId = role:getNextCarbonId(carbonId)
-- 设置挂机关卡
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
282
283
|
if isWin and (hangInfo.carbonId or 0) < nextCarbonId then
hangInfo.expCarbonId = nextCarbonId
|
e0290d8e
liuzujun
修改引导, 抽卡阶段奖励修改
|
284
285
286
|
local cfg = csvdb["idle_battleCsv"][nextCarbonId]
if cfg then
hangInfo.bossTime = skynet.timex() + cfg.idle_time
|
e0290d8e
liuzujun
修改引导, 抽卡阶段奖励修改
|
287
|
end
|
93f6e69b
liuzujun
拾荒选择时间,抽卡增加sr保底
|
288
|
end
|
384bb077
zhouahaihai
挂机
|
289
|
role:updateProperty({field = "hangInfo", value = hangInfo})
|
33be3111
zhouhaihai
修改hangPass 结构
|
290
|
|
d4e9b817
zhouhaihai
战斗 日志
|
291
292
293
294
295
296
|
role:checkBattle("hang", {
id = carbonId,
isWin = isWin,
info = msg.info,
reward = reward,
})
|
1e9cb217
chenyueqi
服务器记录控制引导过程
|
297
|
|
d02f7904
zhouhaihai
遗失的log
|
298
299
300
|
local team = role:getProperty("pvpTC")
role:mylog("hang_action", {desc = "hangBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = carbonId, int2 = role:getProperty("hangTBV"), cint1 = role:getHerosCamp(team.heros)})
|
384bb077
zhouahaihai
挂机
|
301
302
303
|
SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({
starNum = msg.starNum,
reward = reward,
|
7bb30dca
zhouhaihai
修改发奖
|
304
|
change = change,
|
384bb077
zhouahaihai
挂机
|
305
306
307
308
|
}))
return true
end
|
7efe5275
zhouhaihai
检查leader
|
309
310
311
312
313
314
315
|
local function checkLeader(heros, leader)
if not leader then return end
for slot, heroId in pairs(heros) do
if heroId == leader then return true end
end
end
|
384bb077
zhouahaihai
挂机
|
316
317
318
|
function _M.roleFormatRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
384bb077
zhouahaihai
挂机
|
319
320
321
|
local hangTeam = role:getProperty("hangTeam")
for slot, heroId in pairs(msg.heros) do
if not role.heros[heroId] then
|
e6ebee44
zhouhaihai
编队bug
|
322
|
return 1
|
384bb077
zhouahaihai
挂机
|
323
324
|
end
end
|
f603a60f
zhouhaihai
支援技实装
|
325
326
327
|
local supports = {}
for slot, support in pairs(msg.supports or {}) do
|
e6ebee44
zhouhaihai
编队bug
|
328
|
if slot ~= 1 and slot ~= 2 then return 2 end
|
f603a60f
zhouhaihai
支援技实装
|
329
|
local level = role.dinerData:getProperty("dishTree"):getv(support, 0)
|
e6ebee44
zhouhaihai
编队bug
|
330
|
if level <= 0 then return 3 end
|
f603a60f
zhouhaihai
支援技实装
|
331
332
|
supports[slot] = support
end
|
e6ebee44
zhouhaihai
编队bug
|
333
|
if not checkLeader(msg.heros, msg.leader) then return 4 end
|
f603a60f
zhouhaihai
支援技实装
|
334
|
|
384bb077
zhouahaihai
挂机
|
335
336
337
338
339
340
|
table.clear(hangTeam)
hangTeam.heros = {}
for slot, heroId in pairs(msg.heros) do
hangTeam.heros[slot] = heroId
end
hangTeam.leader = msg.leader
|
f603a60f
zhouhaihai
支援技实装
|
341
|
hangTeam.supports = supports
|
fa565e0c
zhouhaihai
优化结构
|
342
|
role:saveHangTeam(hangTeam)
|
826a2c9e
chenyueqi
挂机编队完成的时候服务器主动保存下...
|
343
|
role:saveGuide(5,8)
|
384bb077
zhouahaihai
挂机
|
344
345
346
347
|
SendPacket(actionCodes.Hang_roleFormatRpc, '')
return true
end
|
5af8b4aa
zhouahaihai
挂机down
|
348
349
350
351
352
|
function _M.getRewardRpc(agent , data)
local role = agent.role
checkReward(role)
local items = role:getProperty("hangBag")
if not next(items) then return end
|
7bb30dca
zhouhaihai
修改发奖
|
353
|
local reward, change = role:award(items, {log = {desc = "hangReward"}})
|
5af8b4aa
zhouahaihai
挂机down
|
354
355
356
|
table.clear(items)
local hangInfo = role:getProperty("hangInfo")
local nowTime = skynet.timex()
|
bcf5bfbb
zhouahaihai
挂机new
|
357
358
|
hangInfo.endItemTime = nowTime + globalCsv.idle_producetime_max
hangInfo.endCoinTime = nowTime + globalCsv.idle_producetime_max
|
5af8b4aa
zhouahaihai
挂机down
|
359
360
361
362
|
hangInfo.coinTime = nowTime
hangInfo.itemTime = nowTime
role:updateProperty({field = "hangBag", value = items})
role:updateProperty({field = "hangInfo", value = hangInfo})
|
072db127
zhouhaihai
推送
|
363
364
|
role:pushMsg({type = "hang", time = globalCsv.idle_producetime_max})
|
190e1415
liuzujun
英雄帖活动初始化
|
365
|
role:checkTaskEnter("HangGet", {reward = reward})
|
53e8037e
zhouhaihai
任务
|
366
367
|
if reward[ItemId.Gold] then
role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]})
|
bcf5bfbb
zhouahaihai
挂机new
|
368
|
end
|
d43246b0
zhouhaihai
log 增加
|
369
370
371
372
373
374
375
376
377
378
379
|
role:log("residence_reward", {
mission_threadid = math.floor(hangInfo.carbonId / 10000), --大关卡ID
mission_id = hangInfo.carbonId, --关卡ID
mission_type = 100, --关卡类型,见关卡类型枚举表
residence_reward_type = 0, --领取奖励方式,快速(超前领取)记录为1,正常领取记录为0
residence_time = 0, --挂机或排名时长
residence_reward = reward, --获得奖励,建议使用json格式记录。示例:{ "XX": "1", "XXX": "3"}
})
|
53e8037e
zhouhaihai
任务
|
380
|
SendPacket(actionCodes.Hang_getRewardRpc, MsgPack.pack({
|
7bb30dca
zhouhaihai
修改发奖
|
381
382
|
reward = reward,
change = change
|
bcf5bfbb
zhouahaihai
挂机new
|
383
384
385
386
|
}))
return true
end
|
9962b061
zhouahaihai
补充 挂机
|
387
388
389
390
391
392
|
function _M.quickRpc(agent , data)
local role = agent.role
local hangInfo = role:getProperty("hangInfo")
if not hangInfo.carbonId then return end
local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId]
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
393
|
local expCarbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId]
|
9962b061
zhouahaihai
补充 挂机
|
394
395
396
397
398
399
|
local curCount = role.dailyData:getProperty("hangQC") + 1
local costs = globalCsv.idle_quickproduce_cost:toArray(true, "=")
if not costs[curCount] then return end
if costs[curCount] > 0 then
if not role:checkItemEnough({[ItemId.Diamond] = costs[curCount]}) then return end
|
3133cb76
zhouhaihai
日志
|
400
|
role:costItems({[ItemId.Diamond] = costs[curCount]}, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
|
9962b061
zhouahaihai
补充 挂机
|
401
402
403
404
405
406
407
408
409
|
end
role.dailyData:updateProperty({field = "hangQC", value = curCount})
local time = globalCsv.idle_quickproduce_time
local reward = {}
local coinCount = math.floor(time / globalCsv.idle_money_produce_cd)
local itemCount = math.floor(time / globalCsv.idle_item_produce_cd)
|
8cd3770f
liuzujun
挂机关卡可以选择,经验金币根据最高...
|
410
411
412
|
reward[ItemId.Gold] = math.floor((reward[ItemId.Gold] or 0) + coinCount * expCarbonData.money)
reward[ItemId.Exp] = math.floor((reward[ItemId.Exp] or 0) + coinCount * expCarbonData.exp)
reward[ItemId.PlayerExp] = math.floor((reward[ItemId.PlayerExp] or 0) + coinCount * expCarbonData.playerExp)
|
9962b061
zhouahaihai
补充 挂机
|
413
414
415
416
417
418
419
420
421
|
local pool = {}
for _, temp in pairs(carbonData.item:toArray()) do
table.insert(pool, temp:toArray(true, "="))
end
for i = 1, itemCount do
local cur = pool[math.randWeight(pool, 3)]
reward[cur[1]] = (reward[cur[1]] or 0) + cur[2]
end
|
317a46a9
liuzujun
添加特权卡
|
422
|
|
9e1a93c2
liuzujun
快速挂机掉落浮点数取整
|
423
|
local doubleCoef = role.activity:isOpen("DoubleDrop") and 2 or 1
|
317a46a9
liuzujun
添加特权卡
|
424
425
|
-- 特权卡获取加速获得额外道具
local coef = role.storeData:getProduceItemSpeedCoef()
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
426
|
if coef > 1 or doubleCoef > 1 then
|
317a46a9
liuzujun
添加特权卡
|
427
|
for k, cnt in pairs(reward) do
|
9e1a93c2
liuzujun
快速挂机掉落浮点数取整
|
428
|
reward[k] = math.floor(cnt * coef * doubleCoef)
|
317a46a9
liuzujun
添加特权卡
|
429
430
431
|
end
end
|
7bb30dca
zhouhaihai
修改发奖
|
432
433
|
local change
reward, change = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
|
f60b89b1
zhouhaihai
奖励副本
|
434
435
436
|
if reward[ItemId.Gold] then
role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]})
end
|
53e8037e
zhouhaihai
任务
|
437
|
role:checkTaskEnter("HangQuick")
|
d43246b0
zhouhaihai
log 增加
|
438
439
440
441
442
443
444
445
446
|
role:log("residence_reward", {
mission_threadid = math.floor(hangInfo.carbonId / 10000), --大关卡ID
mission_id = hangInfo.carbonId, --关卡ID
mission_type = 100, --关卡类型,见关卡类型枚举表
residence_reward_type = 1, --领取奖励方式,快速(超前领取)记录为1,正常领取记录为0
residence_time = time, --挂机或排名时长
residence_reward = reward, --获得奖励,建议使用json格式记录。示例:{ "XX": "1", "XXX": "3"}
})
|
9962b061
zhouahaihai
补充 挂机
|
447
|
SendPacket(actionCodes.Hang_quickRpc, MsgPack.pack({
|
7bb30dca
zhouhaihai
修改发奖
|
448
449
|
reward = reward,
change = change
|
9962b061
zhouahaihai
补充 挂机
|
450
451
452
453
|
}))
return true
end
|
f60b89b1
zhouhaihai
奖励副本
|
454
455
456
457
458
459
460
461
462
|
function _M.bonusFormatRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local bTeam = role:getProperty("bTeam")
for slot, heroId in pairs(msg.heros) do
if not role.heros[heroId] then
return
end
end
|
f603a60f
zhouhaihai
支援技实装
|
463
464
465
466
467
468
469
|
local supports = {}
for slot, support in pairs(msg.supports) do
if slot ~= 1 and slot ~= 2 then return end
local level = role.dinerData:getProperty("dishTree"):getv(support, 0)
if level <= 0 then return end
supports[slot] = support
end
|
7efe5275
zhouhaihai
检查leader
|
470
471
|
if not checkLeader(msg.heros, msg.leader) then return end
|
f60b89b1
zhouhaihai
奖励副本
|
472
473
474
475
476
477
|
table.clear(bTeam)
bTeam.heros = {}
for slot, heroId in pairs(msg.heros) do
bTeam.heros[slot] = heroId
end
bTeam.leader = msg.leader
|
f603a60f
zhouhaihai
支援技实装
|
478
|
bTeam.supports = supports
|
f60b89b1
zhouhaihai
奖励副本
|
479
480
481
482
483
484
485
486
487
488
489
490
491
|
role:updateProperty({field = "bTeam", value = bTeam})
SendPacket(actionCodes.Hang_bonusFormatRpc, '')
return true
end
function _M.buyBonusCountRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local count = msg.count
local btype = msg.type
|
3133cb76
zhouhaihai
日志
|
492
|
if not TimeReset["DailyBattle" .. btype] then return end
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
493
494
|
local open, actId = role.activity:isOpen("BonusDouble")
local actData = csvdb["activity_ctrlCsv"][actId]
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
495
|
|
a526f9ef
liuzujun
奖励关卡活动未开启导致Bug
|
496
497
498
499
|
local coef = 1
if open and actData then
coef= tonumber(actData.condition2)
end
|
f60b89b1
zhouhaihai
奖励副本
|
500
501
502
|
local bonusC = role.dailyData:getProperty("bonusC")
bonusC[btype] = bonusC[btype] or {c = 0, b = 0}
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
503
|
local lastCount = globalCsv.bonus_daily_buy_count * coef - bonusC[btype]["b"]
|
f60b89b1
zhouhaihai
奖励副本
|
504
505
|
if math.illegalNum(count, 1, lastCount) then return 1 end
|
3133cb76
zhouhaihai
日志
|
506
|
if not role:checkItemEnough({[ItemId.Diamond] = globalCsv.bonus_buy_cost * count}) then return 2 end
|
f60b89b1
zhouhaihai
奖励副本
|
507
|
|
887c1843
zhouhaihai
日志新一批
|
508
|
role:costItems({[ItemId.Diamond] = globalCsv.bonus_buy_cost * count}, {log = {desc = "buyBonusCount", int1 = btype, int2 = count}})
|
d481965d
zhouhaihai
购买次数bug
|
509
510
|
bonusC[btype]["b"] = bonusC[btype]["b"] + count
bonusC[btype]["c"] = bonusC[btype]["c"] - count
|
f60b89b1
zhouhaihai
奖励副本
|
511
512
513
514
515
516
517
518
519
520
521
522
|
role.dailyData:updateProperty({field = "bonusC", value = bonusC})
SendPacket(actionCodes.Hang_buyBonusCountRpc, '')
return true
end
function _M.startBonusBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
523
524
525
|
local open, actId = role.activity:isOpen("BonusDouble")
if not role:isFuncUnlock(FuncUnlock.BonusBattle) then return 1 end
|
d232676a
zhouhaihai
功能解锁 冒险返回
|
526
|
|
f60b89b1
zhouhaihai
奖励副本
|
527
|
local bonusData = csvdb["bonus_battleCsv"][id]
|
bc902e2d
zhouhaihai
增加开放判断
|
528
|
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
529
530
531
|
if not open then
if not role:isTimeResetOpen(TimeReset["DailyBattle" .. bonusData.type]) then return 2 end
end
|
bc902e2d
zhouhaihai
增加开放判断
|
532
|
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
533
534
|
if not bonusData then return 3 end
if not role:checkHangPass(bonusData.unlock) then return 4 end
|
f60b89b1
zhouhaihai
奖励副本
|
535
|
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
536
|
if not next(role:getProperty("bTeam")) then return 5 end
|
f60b89b1
zhouhaihai
奖励副本
|
537
538
539
|
local bonusC = role.dailyData:getProperty("bonusC")
bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0}
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
540
541
|
local actData = csvdb["activity_ctrlCsv"][actId]
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
542
|
|
a526f9ef
liuzujun
奖励关卡活动未开启导致Bug
|
543
544
545
546
|
local coef = 1
if open and actData then
coef = tonumber(actData.condition2)
end
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
547
548
|
if globalCsv.bonus_daily_count * coef - bonusC[bonusData.type]["c"] <= 0 then return 7 end
|
f60b89b1
zhouhaihai
奖励副本
|
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
|
role.__bonusBattleCache = {
key = tostring(math.random()),
id = id,
}
SendPacket(actionCodes.Hang_startBonusBattleRpc, MsgPack.pack({key = role.__bonusBattleCache.key}))
return true
end
function _M.endBonusBattleRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
local key = msg.key
local starNum = msg.starNum
if not role.__bonusBattleCache then return 1 end
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
566
567
|
local open, actId = role.activity:isOpen("BonusDouble")
local actData = csvdb["activity_ctrlCsv"][actId]
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
568
|
|
a526f9ef
liuzujun
奖励关卡活动未开启导致Bug
|
569
570
571
572
|
local coef = 1
if open and actData then
coef = tonumber(actData.condition2)
end
|
f60b89b1
zhouhaihai
奖励副本
|
573
|
|
d6a66c74
zhouhaihai
校验失败也返回
|
574
575
576
577
|
if role.__bonusBattleCache.id ~= id or role.__bonusBattleCache.key ~= key then
SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({errorCode = 1}))
return true
end
|
f60b89b1
zhouhaihai
奖励副本
|
578
579
|
local bonusData = csvdb["bonus_battleCsv"][id]
|
7bb30dca
zhouhaihai
修改发奖
|
580
|
local reward, change
|
f60b89b1
zhouhaihai
奖励副本
|
581
|
if starNum and starNum > 0 then
|
74a8fdc9
zhouhaihai
奖励副本 胜利扣除次数
|
582
583
584
|
-- 胜利扣除次数
local bonusC = role.dailyData:getProperty("bonusC")
bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0}
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
585
|
if globalCsv.bonus_daily_count * coef - bonusC[bonusData.type]["c"] <= 0 then return 3 end
|
74a8fdc9
zhouhaihai
奖励副本 胜利扣除次数
|
586
587
588
|
bonusC[bonusData.type]["c"] = bonusC[bonusData.type]["c"] + 1
role.dailyData:updateProperty({field = "bonusC", value = bonusC})
|
b2747fbc
zhouhaihai
挂机
|
589
590
591
592
593
|
reward = bonusData.reward:toNumMap()
local chance = bonusData.chance:randWeight(true)
if chance[1] ~= 0 then
reward[chance[1]] = (reward[chance[1]] or 0) + chance[2]
end
|
accf94c4
liuzujun
活动以类型标识,修改双倍活动bug
|
594
595
596
|
for k, v in pairs(reward) do
reward[k] = v * (coef > 1 and actData.condition or 1)
end
|
7bb30dca
zhouhaihai
修改发奖
|
597
|
reward, change = role:award(reward, {log = {desc = "bonusBattle", int1 = id}})
|
f60b89b1
zhouhaihai
奖励副本
|
598
599
600
|
role:checkTaskEnter("BonusPass", {id = id})
end
|
d4e9b817
zhouhaihai
战斗 日志
|
601
602
603
604
605
606
|
role:checkBattle("bonus", {
id = id,
isWin = starNum and starNum > 0,
info = msg.info,
reward = reward,
})
|
d02f7904
zhouhaihai
遗失的log
|
607
608
|
role:mylog("hang_action", {desc = "bonusBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = id})
|
f60b89b1
zhouhaihai
奖励副本
|
609
610
|
SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({
starNum = starNum,
|
7bb30dca
zhouhaihai
修改发奖
|
611
612
613
|
reward = reward,
change = change
}))
|
f60b89b1
zhouhaihai
奖励副本
|
614
615
616
|
return true
end
|
a6508219
zhouhaihai
挂机奖励
|
617
618
619
620
621
622
623
624
625
626
627
|
function _M.hangGiftRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
local carbonData = csvdb["idle_battleCsv"][id]
if not carbonData or carbonData.item_clear_special == "" then return 1 end
local hangGift = role:getProperty("hangGift")
if hangGift[id] then return 2 end
|
7bb30dca
zhouhaihai
修改发奖
|
628
|
local reward, change = role:award(carbonData.item_clear_special, {log = {desc = "hangGift", int1 = id}})
|
a6508219
zhouhaihai
挂机奖励
|
629
630
|
role:changeUpdates({{type = "hangGift", field = id, value = 1}})
|
d02f7904
zhouhaihai
遗失的log
|
631
|
role:mylog("hang_action", {desc = "hangGift", int1 = id})
|
a6508219
zhouhaihai
挂机奖励
|
632
|
|
7bb30dca
zhouhaihai
修改发奖
|
633
|
SendPacket(actionCodes.Hang_hangGiftRpc, MsgPack.pack({reward = reward, change = change}))
|
a6508219
zhouhaihai
挂机奖励
|
634
635
|
return true
end
|
f60b89b1
zhouhaihai
奖励副本
|
636
|
|
64e63ad0
wangyujie
完成需求:挂机栏位物品数量上限和钻...
|
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
|
function _M.bagFieldRpc(agent, data)
local role = agent.role
local curBL = role:getProperty("hangBagLimit")
local costD = globalCsv.idle_field_cost[curBL - globalCsv.idle_field_origin]
if not costD then
return 1
end
if costD ~= 0 and not role:checkItemEnough({[ItemId.Diamond] = costD}) then
return 2
end
role:updateProperty({field = "hangBagLimit", value = curBL + 1})
role:costItems({[ItemId.Diamond] = costD}, {log = {desc = "bagField"}})
SendPacket(actionCodes.Hang_bagFieldRpc, '')
return true
end
|
f60b89b1
zhouhaihai
奖励副本
|
652
|
|
ed20f277
zhouhaihai
chatline 奖励
|
653
654
655
|
function _M.chatLineRpc(agent, data)
local role = agent.role
local msg = MsgPack.unpack(data)
|
ed20f277
zhouhaihai
chatline 奖励
|
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
|
local id = msg.id
local idleData = csvdb["idle_battleCsv"][id]
if not idleData or idleData.chatline == 0 then
return
end
local chatline = role:getProperty("chatline")
if chatline[id] then return end
if not role:checkHangPass(id) then return end
chatline[id] = skynet.timex()
role:updateProperty({field = "chatline", value = chatline})
|
7bb30dca
zhouhaihai
修改发奖
|
671
|
local reward, change = role:award(idleData.chatline_reward, {log = {desc = "chatline", int1 = id}})
|
ed20f277
zhouhaihai
chatline 奖励
|
672
|
|
7bb30dca
zhouhaihai
修改发奖
|
673
|
SendPacket(actionCodes.Hang_chatLineRpc, MsgPack.pack({reward = reward, change = change}))
|
ed20f277
zhouhaihai
chatline 奖励
|
674
675
676
|
return true
end
|
384bb077
zhouahaihai
挂机
|
677
|
return _M
|