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