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
 
  测试
 
双倍掉掉落bug
 | 
22 
 | 
  		return false
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
23
24 
 | 
  	end
  	local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId]
 
 | 
8cd3770f
 
  测试
 
挂机关卡可以选择,经验金币根据最高...
 | 
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 
 | 
  
 
 | 
00bf6029
 
  测试
 
限时礼包,抽卡ssr广播
 | 
29
30 
 | 
  	local expCoef, itemCoef = role.storeData:getHangDropCoef()
  
 
 | 
706b517e
 
  测试
 
翻倍掉落活动,商城免费宝箱
 | 
31
32
33 
 | 
  	-- 此次挂机,其中翻倍时长占多少
  	local doubleTime = role.activity:getActHangDoubleTime(hangInfo.coinTime, nowCoinTime)
  	local normalTime = nowCoinTime - hangInfo.coinTime - doubleTime
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
34 
 | 
  
 
 | 
706b517e
 
  测试
 
翻倍掉落活动,商城免费宝箱
 | 
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
 
  测试
 
双倍掉掉落bug
 | 
39 
 | 
  	normalTime = nowItemTime - hangInfo.itemTime
 
 | 
706b517e
 
  测试
 
翻倍掉落活动,商城免费宝箱
 | 
40 
 | 
  	local itemCount = math.max(0, math.floor((normalTime) / globalCsv.idle_item_produce_cd))
 
 | 
706b517e
 
  测试
 
翻倍掉落活动,商城免费宝箱
 | 
41 
 | 
  	hangInfo.itemTime = nowItemTime
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
42
43 
 | 
  
  	local items = role:getProperty("hangBag")
 
 | 
00bf6029
 
  测试
 
限时礼包,抽卡ssr广播
 | 
44 
 | 
  	coinCount = (coinCount + coinDoubleCount) * expCoef
 
 | 
8cd3770f
 
  测试
 
挂机关卡可以选择,经验金币根据最高...
 | 
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
 
  测试
 
添加特权卡
 | 
61
62
63 
 | 
  
  	-- 特权卡挂机额外栏位
  	local privExtraCnt = role.storeData:getHangSlotExtraCount()
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
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
 
  测试
 
双倍掉掉落bug
 | 
75 
 | 
  			local cur = clone(pool[idx])
 
 | 
93f6e69b
 
  测试
 
拾荒选择时间,抽卡增加sr保底
 | 
76 
 | 
  			if cur[1] ~= 0 then  -- 轮空 id
 
 | 
024370be
 
  测试
 
双倍掉掉落bug
 | 
77
78 
 | 
  				if cur[1] == ItemId.BreakCost and doubleTime > 0 then
  					cur[2] = cur[2] * 2
 
 | 
64e63ad0
 
  wangyujie
 
完成需求:挂机栏位物品数量上限和钻...
 | 
79 
 | 
  				end
 
 | 
00bf6029
 
  测试
 
限时礼包,抽卡ssr广播
 | 
80 
 | 
  				cur[2] = cur[2] * itemCoef
 
 | 
024370be
 
  测试
 
双倍掉掉落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
 
  测试
 
双倍掉掉落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
 
  测试
 
双倍掉掉落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
 
  测试
 
双倍掉掉落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
 
 | 
8cd3770f
 
  测试
 
挂机关卡可以选择,经验金币根据最高...
 | 
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
 
 | 
072db127
 
  zhouhaihai
 
推送
 | 
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
 
 | 
072db127
 
  zhouhaihai
 
推送
 | 
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 
 | 
  
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
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)
 
 | 
8cd3770f
 
  测试
 
挂机关卡可以选择,经验金币根据最高...
 | 
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
 
 | 
8cd3770f
 
  测试
 
挂机关卡可以选择,经验金币根据最高...
 | 
227 
 | 
  
 
 | 
460afa6e
 
  测试
 
付费签到改为主动领取,战斗关卡不一...
 | 
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 
 | 
  
 
 | 
edf2ee12
 
  zhouhaihai
 
防作弊
 | 
238
239
240
241
242
243
244
245
246
247 
 | 
  	-- 防作弊
  	if not role:checkBattleCheat("hang", {
  		id = carbonId,
  		isWin = isWin,
  		info = msg.info
  	}) then
  		SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({errorCode = 1}))
  		return true
  	end
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
248 
 | 
  	local reward, change
 
 | 
d4e9b817
 
  zhouhaihai
 
战斗 日志
 | 
249 
 | 
  	if isWin then --win
 
 | 
33be3111
 
  zhouhaihai
 
修改hangPass 结构
 | 
250 
 | 
  		role:hangFinish(carbonId)
 
 | 
bcf5bfbb
 
  zhouahaihai
 
挂机new
 | 
251
252
253 
 | 
  		if carbonData.main ~= 1 then
  			hangInfo.bossTime = nil
  		end
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
254
255 
 | 
  		-- reward
  		reward = {}
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
256
257 
 | 
  		reward[ItemId.Gold] = carbonData.money_clear
  		reward[ItemId.Exp] = carbonData.exp_clear
 
 | 
00115a7a
 
  zhouahaihai
 
奖励发放
 | 
258 
 | 
  		reward[ItemId.PlayerExp] = carbonData.playerExp_clear
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
259 
 | 
  		for itemId, count in pairs(carbonData.item_clear:toNumMap()) do
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
260
261 
 | 
  			reward[itemId] = count
  		end
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
262 
 | 
  		reward, change = role:award(reward, {log = {desc = "hangBattle", int1 = carbonId}})
 
 | 
00e663bd
 
  zhouhaihai
 
剧情相关
 | 
263 
 | 
  
 
 | 
03a6166a
 
  zhouhaihai
 
餐厅优化
 | 
264 
 | 
  		role:checkTaskEnter("HangPass", {id = carbonId})
 
 | 
286c980a
 
  chenyueqi
 
挂机战斗胜利才触发对应的引导
 | 
265
266
267 
 | 
  		
  		-- 引导
  		if carbonId == 10101 then
 
 | 
a5b98c30
 
  chenyueqi
 
引导调整
 | 
268 
 | 
  			role:finishGuide(6)
 
 | 
be0c7a19
 
  chenyueqi
 
挂机打完困难20101才设定完成引导22
 | 
269 
 | 
  		elseif carbonId == 20101 then
 
 | 
286c980a
 
  chenyueqi
 
挂机战斗胜利才触发对应的引导
 | 
270
271
272
273
274
275
276
277 
 | 
  			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
 
挂机
 | 
278 
 | 
  	end
 
 | 
53b4b8bd
 
  测试
 
自动挂机下一关
 | 
279
280 
 | 
  	local nextCarbonId = role:getNextCarbonId(carbonId)
  	-- 设置挂机关卡
 
 | 
87c65a8d
 
  测试
 
挂机经验关卡改为最终通关关卡
 | 
281 
 | 
  	if isWin then --and (hangInfo.carbonId or 0) < nextCarbonId then
 
 | 
98d32f92
 
  测试
 
多编队
 | 
282
283
284
285
286
287
288
289
290 
 | 
  		if not hangInfo.expCarbonId then
  			hangInfo.expCarbonId = carbonId
  		else
  			local oldCarbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId]
  			local newCarbonData = csvdb["idle_battleCsv"][carbonId]
  			if oldCarbonData.money < newCarbonData.money then
  				hangInfo.expCarbonId = carbonId
  			end
  		end
 
 | 
87c65a8d
 
  测试
 
挂机经验关卡改为最终通关关卡
 | 
291
292
293
294 
 | 
  		--local cfg = csvdb["idle_battleCsv"][nextCarbonId]
  		--if cfg then
  		--	hangInfo.bossTime = skynet.timex() + cfg.idle_time
  		--end
 
 | 
93f6e69b
 
  测试
 
拾荒选择时间,抽卡增加sr保底
 | 
295 
 | 
  	end
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
296 
 | 
  	role:updateProperty({field = "hangInfo", value = hangInfo})
 
 | 
33be3111
 
  zhouhaihai
 
修改hangPass 结构
 | 
297 
 | 
  	
 
 | 
d4e9b817
 
  zhouhaihai
 
战斗 日志
 | 
298
299
300
301
302
303 
 | 
  	role:checkBattle("hang", {
  		id = carbonId,
  		isWin = isWin,
  		info = msg.info,
  		reward = reward,
  	})
 
 | 
1e9cb217
 
  chenyueqi
 
服务器记录控制引导过程
 | 
304 
 | 
  
 
 | 
d02f7904
 
  zhouhaihai
 
遗失的log
 | 
305
306
307 
 | 
  	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
 
挂机
 | 
308
309
310 
 | 
  	SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({
  		starNum = msg.starNum, 
  		reward = reward,
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
311 
 | 
  		change = change,
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
312
313
314
315 
 | 
  		}))
  	return true
  end
  
 
 | 
7efe5275
 
  zhouhaihai
 
检查leader
 | 
316
317
318
319
320
321
322 
 | 
  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
 
挂机
 | 
323
324
325 
 | 
  function _M.roleFormatRpc(agent , data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
98d32f92
 
  测试
 
多编队
 | 
326
327 
 | 
  	local index = msg.index	-- 阵容索引
  	local title = msg.title -- 阵容名称
 
 | 
7d662b85
 
  测试
 
编队增加战术字段
 | 
328 
 | 
  	local tactics = msg.tactics	-- 战术
 
 | 
761b3ea8
 
  chenyueqi
 
再改一波电波塔整容相关信息
 | 
329 
 | 
  	local tower = msg.tower
 
 | 
98d32f92
 
  测试
 
多编队
 | 
330 
 | 
  	local team = {}
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
331
332 
 | 
  	for slot, heroId in pairs(msg.heros) do
  		if not role.heros[heroId] then
 
 | 
e6ebee44
 
  zhouhaihai
 
编队bug
 | 
333 
 | 
  			return 1
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
334
335 
 | 
  		end
  	end
 
 | 
f603a60f
 
  zhouhaihai
 
支援技实装
 | 
336
337
338 
 | 
  
  	local supports = {}
  	for slot, support in pairs(msg.supports or {}) do
 
 | 
e6ebee44
 
  zhouhaihai
 
编队bug
 | 
339 
 | 
  		if slot ~= 1 and slot ~= 2 then return 2 end
 
 | 
f603a60f
 
  zhouhaihai
 
支援技实装
 | 
340 
 | 
  		local level = role.dinerData:getProperty("dishTree"):getv(support, 0)
 
 | 
e6ebee44
 
  zhouhaihai
 
编队bug
 | 
341 
 | 
  		if level <= 0 then return 3 end
 
 | 
f603a60f
 
  zhouhaihai
 
支援技实装
 | 
342
343 
 | 
  		supports[slot] = support
  	end
 
 | 
e6ebee44
 
  zhouhaihai
 
编队bug
 | 
344 
 | 
  	if not checkLeader(msg.heros, msg.leader) then return 4 end
 
 | 
f603a60f
 
  zhouhaihai
 
支援技实装
 | 
345 
 | 
  
 
 | 
98d32f92
 
  测试
 
多编队
 | 
346
347
348
349
350
351
352
353
354 
 | 
  	if index > 10 then
  		return 5
  	end
  
  	if #title > 100 then
  		return 6
  	end
  
  	team.heros = {}
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
355 
 | 
  	for slot, heroId in pairs(msg.heros) do
 
 | 
98d32f92
 
  测试
 
多编队
 | 
356
357
358
359
360 
 | 
  		team.heros[slot] = heroId
  	end
  	team.leader = msg.leader
  	team.supports = supports
  	team.title = title
 
 | 
f7f26c15
 
  zhouhaihai
 
编队整理 增加 tactics战术
 | 
361
362
363 
 | 
  	if msg.tactics and globalCsv.tactics_skill_passive_cell[msg.tactics] then
  		team.tactics = msg.tactics
  	end
 
 | 
98d32f92
 
  测试
 
多编队
 | 
364 
 | 
  
 
 | 
761b3ea8
 
  chenyueqi
 
再改一波电波塔整容相关信息
 | 
365
366
367
368
369 
 | 
  	if tower then
  		role:setTowerTeamFormat(index, team)
  	else
  		role:setTeamFormat(index, team)
  	end
 
 | 
98d32f92
 
  测试
 
多编队
 | 
370 
 | 
  
 
 | 
384bb077
 
  zhouahaihai
 
挂机
 | 
371
372
373
374 
 | 
  	SendPacket(actionCodes.Hang_roleFormatRpc, '')
  	return true
  end
  
 
 | 
5af8b4aa
 
  zhouahaihai
 
挂机down
 | 
375
376
377
378
379 
 | 
  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
 
修改发奖
 | 
380 
 | 
  	local reward, change = role:award(items, {log = {desc = "hangReward"}})
 
 | 
5af8b4aa
 
  zhouahaihai
 
挂机down
 | 
381
382
383 
 | 
  	table.clear(items)
  	local hangInfo = role:getProperty("hangInfo")
  	local nowTime = skynet.timex()
 
 | 
a42130ee
 
  chenyueqi
 
电波塔加成错误
 | 
384
385
386 
 | 
  	local timeAdd = role:getBnousHangTime()
  	hangInfo.endItemTime = nowTime + globalCsv.idle_producetime_max + timeAdd
  	hangInfo.endCoinTime = nowTime + globalCsv.idle_producetime_max + timeAdd
 
 | 
5af8b4aa
 
  zhouahaihai
 
挂机down
 | 
387
388
389
390 
 | 
  	hangInfo.coinTime = nowTime
  	hangInfo.itemTime = nowTime
  	role:updateProperty({field = "hangBag", value = items})
  	role:updateProperty({field = "hangInfo", value = hangInfo})
 
 | 
072db127
 
  zhouhaihai
 
推送
 | 
391
392 
 | 
  	role:pushMsg({type = "hang", time = globalCsv.idle_producetime_max})
  	
 
 | 
190e1415
 
  测试
 
英雄帖活动初始化
 | 
393 
 | 
  	role:checkTaskEnter("HangGet", {reward = reward})
 
 | 
53e8037e
 
  zhouhaihai
 
任务
 | 
394
395 
 | 
  	if reward[ItemId.Gold] then
  		role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]})
 
 | 
bcf5bfbb
 
  zhouahaihai
 
挂机new
 | 
396 
 | 
  	end
 
 | 
d43246b0
 
  zhouhaihai
 
log 增加
 | 
397
398
399
400
401
402
403
404
405
406
407 
 | 
  
  	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
 
任务
 | 
408 
 | 
  	SendPacket(actionCodes.Hang_getRewardRpc, MsgPack.pack({
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
409
410 
 | 
  		reward = reward,
  		change = change
 
 | 
bcf5bfbb
 
  zhouahaihai
 
挂机new
 | 
411
412
413
414 
 | 
  	}))
  	return true
  end
  
 
 | 
9962b061
 
  zhouahaihai
 
补充 挂机
 | 
415
416
417
418
419
420 
 | 
  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
 
  测试
 
挂机关卡可以选择,经验金币根据最高...
 | 
421 
 | 
  	local expCarbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId]
 
 | 
9962b061
 
  zhouahaihai
 
补充 挂机
 | 
422
423
424
425
426
427 
 | 
  
  	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
 
日志
 | 
428 
 | 
  		role:costItems({[ItemId.Diamond] = costs[curCount]}, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
 
 | 
9962b061
 
  zhouahaihai
 
补充 挂机
 | 
429
430
431
432
433
434
435
436
437 
 | 
  	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
 
  测试
 
挂机关卡可以选择,经验金币根据最高...
 | 
438
439
440 
 | 
  	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
 
补充 挂机
 | 
441
442
443
444
445
446
447
448
449 
 | 
  
  	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
 
  测试
 
添加特权卡
 | 
450 
 | 
  
 
 | 
9e1a93c2
 
  测试
 
快速挂机掉落浮点数取整
 | 
451 
 | 
  	local doubleCoef = role.activity:isOpen("DoubleDrop") and 2 or 1
 
 | 
317a46a9
 
  测试
 
添加特权卡
 | 
452
453 
 | 
  	-- 特权卡获取加速获得额外道具
  	local coef = role.storeData:getProduceItemSpeedCoef()
 
 | 
accf94c4
 
  测试
 
活动以类型标识,修改双倍活动bug
 | 
454 
 | 
  	if coef > 1 or doubleCoef > 1 then
 
 | 
317a46a9
 
  测试
 
添加特权卡
 | 
455 
 | 
  		for k, cnt in pairs(reward) do
 
 | 
9e1a93c2
 
  测试
 
快速挂机掉落浮点数取整
 | 
456 
 | 
  			reward[k] = math.floor(cnt * coef * doubleCoef)
 
 | 
317a46a9
 
  测试
 
添加特权卡
 | 
457
458
459 
 | 
  		end
  	end
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
460
461 
 | 
  	local change
  	reward, change = role:award(reward, {log = {desc = "quickHang", int1 = hangInfo.carbonId}})
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
462
463
464 
 | 
  	if reward[ItemId.Gold] then
  		role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]})
  	end
 
 | 
53e8037e
 
  zhouhaihai
 
任务
 | 
465 
 | 
  	role:checkTaskEnter("HangQuick")
 
 | 
d43246b0
 
  zhouhaihai
 
log 增加
 | 
466
467
468
469
470
471
472
473
474 
 | 
  
  	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
 
补充 挂机
 | 
475 
 | 
  	SendPacket(actionCodes.Hang_quickRpc, MsgPack.pack({
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
476
477 
 | 
  		reward = reward,
  		change = change
 
 | 
9962b061
 
  zhouahaihai
 
补充 挂机
 | 
478
479
480
481 
 | 
  	}))
  	return true
  end
  
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
482
483
484
485
486
487
488
489 
 | 
  
  function _M.buyBonusCountRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  
  	local count = msg.count
  	local btype = msg.type
  
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
490 
 | 
  	if not TimeReset["DailyBattle" .. btype] then return end
 
 | 
accf94c4
 
  测试
 
活动以类型标识,修改双倍活动bug
 | 
491
492 
 | 
  	local open, actId = role.activity:isOpen("BonusDouble")
  	local actData = csvdb["activity_ctrlCsv"][actId]
 
 | 
accf94c4
 
  测试
 
活动以类型标识,修改双倍活动bug
 | 
493 
 | 
  
 
 | 
a526f9ef
 
  测试
 
奖励关卡活动未开启导致Bug
 | 
494
495
496
497 
 | 
  	local coef = 1
  	if open and actData then
  		coef= tonumber(actData.condition2)
  	end
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
498
499 
 | 
  
  	local bonusC = role.dailyData:getProperty("bonusC")
 
 | 
00bf6029
 
  测试
 
限时礼包,抽卡ssr广播
 | 
500 
 | 
  	local extraCnt = role.storeData:getBonusExtraFightCount()
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
501 
 | 
  	bonusC[btype] = bonusC[btype] or {c = 0, b = 0}
 
 | 
00bf6029
 
  测试
 
限时礼包,抽卡ssr广播
 | 
502 
 | 
  	local lastCount = globalCsv.bonus_daily_buy_count * coef + extraCnt - bonusC[btype]["b"]
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
503
504 
 | 
  	if math.illegalNum(count, 1, lastCount)  then return 1 end
  
 
 | 
3133cb76
 
  zhouhaihai
 
日志
 | 
505 
 | 
  	if not role:checkItemEnough({[ItemId.Diamond] = globalCsv.bonus_buy_cost * count}) then return 2 end
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
506 
 | 
  
 
 | 
887c1843
 
  zhouhaihai
 
日志新一批
 | 
507 
 | 
  	role:costItems({[ItemId.Diamond] = globalCsv.bonus_buy_cost * count}, {log = {desc = "buyBonusCount", int1 = btype, int2 = count}})
 
 | 
d481965d
 
  zhouhaihai
 
购买次数bug
 | 
508
509 
 | 
  	bonusC[btype]["b"] = bonusC[btype]["b"] + count
  	bonusC[btype]["c"] = bonusC[btype]["c"] - count
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
510
511
512
513
514
515
516 
 | 
  
  	role.dailyData:updateProperty({field = "bonusC", value = bonusC})
  
  	SendPacket(actionCodes.Hang_buyBonusCountRpc, '')
  	return true
  end
  
 
 | 
40b19300
 
  chenyueqi
 
电波塔激活加成效果后对各个系统的加成
 | 
517 
 | 
  local function bonusWinReward(role, bonusData, rewardType, count, sweep)
 
 | 
be24b6ad
 
  zhouhaihai
 
传递 count
 | 
518 
 | 
  	count = count or 1
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
519 
 | 
  
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
520
521
522
523 
 | 
  	local reward, change = {}
  	if rewardType == 1 or rewardType == 4 then
  		for k, v in pairs(bonusData.clear_reward:toNumMap()) do
  			reward[k] = (reward[k] or 0) + v
 
 | 
be24b6ad
 
  zhouhaihai
 
传递 count
 | 
524
525
526 
 | 
  		end
  	end
  
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
527 
 | 
  	if rewardType == 2 or rewardType == 4 then
 
 | 
e4a17692
 
  zhouhaihai
 
奖励关卡 满星奖励
 | 
528
529
530
531 
 | 
  		for k, v in pairs(bonusData.perfect_reward:toNumMap()) do
  			reward[k] = (reward[k] or 0) + v
  		end
  	end
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
532
533
534 
 | 
  
  	if rewardType == 3 then
  		local open, actId = role.activity:isOpen("BonusDouble")
 
 | 
1ce3adac
 
  zhouhaihai
 
充值
 | 
535
536
537
538 
 | 
  		local actData
  		if open then
  			actData = csvdb["activity_ctrlCsv"][actId]
  		end
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
539
540
541
542
543
544
545
546
547
548
549 
 | 
  
  		reward = bonusData.reward:toNumMap()
  		for itemId, c in pairs(reward) do
  			reward[itemId] = c * count
  		end
  		for i = 1, count do
  			local chance = bonusData.chance:randWeight(true)
  			if chance[1] ~= 0 then
  				reward[chance[1]] = (reward[chance[1]] or 0) + chance[2]
  			end
  		end
 
 | 
1ce3adac
 
  zhouhaihai
 
充值
 | 
550
551
552
553 
 | 
  		if open and actData then
  			for k, v  in pairs(reward) do
  				reward[k] = v * (actData.condition > 1 and actData.condition or 1)
  			end
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
554
555
556 
 | 
  		end
  	end
  	
 
 | 
40b19300
 
  chenyueqi
 
电波塔激活加成效果后对各个系统的加成
 | 
557
558
559
560
561
562
563 
 | 
  	if sweep then
  		local bnousReward = role:getBnousSweep()
  		for key, value in pairs(bnousReward) do
  			reward[key] = (reward[key] or 0) + value * count
  		end
  	end
  
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
564
565
566 
 | 
  	reward, change = role:award(reward, {log = {desc = "bonusBattle", int1 = bonusData.id}})
  	role:checkTaskEnter("BonusPass", {id = bonusData.id, count = count})
  	return reward, change
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
567
568 
 | 
  end
  
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
569
570
571
572 
 | 
  function _M.startBonusBattleRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local id = msg.id
 
 | 
be24b6ad
 
  zhouhaihai
 
传递 count
 | 
573 
 | 
  	local count = msg.count or 1
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
574 
 | 
  
 
 | 
accf94c4
 
  测试
 
活动以类型标识,修改双倍活动bug
 | 
575
576
577 
 | 
  	local open, actId = role.activity:isOpen("BonusDouble")
  
  	if not role:isFuncUnlock(FuncUnlock.BonusBattle) then return 1 end
 
 | 
d232676a
 
  zhouhaihai
 
功能解锁  冒险返回
 | 
578 
 | 
  
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
579 
 | 
  	local bonusData = csvdb["bonus_battleCsv"][id]
 
 | 
bc902e2d
 
  zhouhaihai
 
增加开放判断
 | 
580 
 | 
  
 
 | 
accf94c4
 
  测试
 
活动以类型标识,修改双倍活动bug
 | 
581
582
583 
 | 
  	if not open then
  		if not role:isTimeResetOpen(TimeReset["DailyBattle" .. bonusData.type]) then return 2 end
  	end
 
 | 
bc902e2d
 
  zhouhaihai
 
增加开放判断
 | 
584 
 | 
  
 
 | 
accf94c4
 
  测试
 
活动以类型标识,修改双倍活动bug
 | 
585 
 | 
  	if not bonusData then return 3 end
 
 | 
c5e11ffc
 
  zhouhaihai
 
解锁条件修改
 | 
586 
 | 
  	local bonusStar = role:getProperty("bonusStar")
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
587 
 | 
  
 
 | 
4591e219
 
  zhouhaihai
 
bug
 | 
588 
 | 
  	if bonusData.unlock ~= 0 and (not bonusStar[bonusData.unlock] or bonusStar[bonusData.unlock] == 0) then return 4 end
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
589 
 | 
  
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
590 
 | 
  	if bonusStar[id] and bonusStar[id] >= (1 << #bonusData.sweep_condition:toTableArray(true)) - 1 then 
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
591
592
593
594
595
596
597
598
599
600
601
602
603
604 
 | 
  			local bonusC = role.dailyData:getProperty("bonusC")
  			bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0}
  
  			local actData = csvdb["activity_ctrlCsv"][actId]
  			local extraCnt = role.storeData:getBonusExtraFightCount()
  			local coef = 1
  			if open and actData then
  				coef = tonumber(actData.condition2)
  			end
  			if math.illegalNum(count, 1, globalCsv.bonus_daily_count * coef + extraCnt - bonusC[bonusData.type]["c"]) then return 7 end
  
  			bonusC[bonusData.type]["c"] = bonusC[bonusData.type]["c"] + count
  			role.dailyData:updateProperty({field = "bonusC", value = bonusC})
  
 
 | 
40b19300
 
  chenyueqi
 
电波塔激活加成效果后对各个系统的加成
 | 
605 
 | 
  		local reward, change = bonusWinReward(role, bonusData, 3, count, true)
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
606 
 | 
  		SendPacket(actionCodes.Hang_startBonusBattleRpc, MsgPack.pack({reward = reward, change = change}))
 
 | 
f76d63e1
 
  测试
 
联动任务活动
 | 
607
608 
 | 
  
  		role:checkTaskEnter("BonusQuick", {count = count})
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
609
610
611
612
613
614
615
616
617 
 | 
  	else
  		local bTeam = role:getTeamFormatByType(TeamSystemType.BonusBattle)
  		if not next(bTeam) then return 5 end
  		role.__bonusBattleCache = {
  			key = tostring(math.random()),
  			id = id,
  		}
  		SendPacket(actionCodes.Hang_startBonusBattleRpc, MsgPack.pack({key = role.__bonusBattleCache.key}))
  	end
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
618 
 | 
  
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
619
620
621
622
623
624
625
626
627
628 
 | 
  	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
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
629 
 | 
  	
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
630 
 | 
  
 
 | 
d6a66c74
 
  zhouhaihai
 
校验失败也返回
 | 
631
632
633
634 
 | 
  	if role.__bonusBattleCache.id ~= id or role.__bonusBattleCache.key ~= key then 
  		SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({errorCode = 1}))
  		return true
  	end
 
 | 
edf2ee12
 
  zhouhaihai
 
防作弊
 | 
635
636
637
638
639
640
641
642
643
644
645
646 
 | 
  	role.__bonusBattleCache = nil
  
  	-- 防作弊
  	if not role:checkBattleCheat("bonus", {
  		id = id,
  		isWin = starNum and starNum > 0,
  		info = msg.info
  	}) then
  		SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({errorCode = 1}))
  		return true
  	end
  
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
647
648 
 | 
  	local bonusData = csvdb["bonus_battleCsv"][id]
  
 
 | 
1ce3adac
 
  zhouhaihai
 
充值
 | 
649 
 | 
  	local reward, change = {}
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
650
651 
 | 
  
  	local bonusStar = role:getProperty("bonusStar")
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
652 
 | 
  	local oldStar = bonusStar[id] or 0
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
653 
 | 
  	local curStar = 0
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
654 
 | 
   	if starNum and starNum > 0 then
 
 | 
74a8fdc9
 
  zhouhaihai
 
奖励副本 胜利扣除次数
 | 
655 
 | 
   		-- 胜利扣除次数
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
656 
 | 
   		
 
 | 
ce950b6e
 
  zhouhaihai
 
bug
 | 
657 
 | 
   		local bTeam = role:getTeamFormatByType(TeamSystemType.BonusBattle)
 
 | 
821e2704
 
  zhouhaihai
 
heros 增加 supports
 | 
658 
 | 
   		local herosInfo = role:getTeamHerosInfo(bTeam).heros
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
659
660
661
662
663
664
665
666
667 
 | 
  
   		local check = {}
   		-- 1 通关
  		check[1] = function(_)
  			return true
  		end
  		-- 2 阵亡人数 <= N
  		check[2] = function(_, cond)
  			return msg.info.dead and msg.info.dead <= cond
 
 | 
b2747fbc
 
  zhouhaihai
 
挂机
 | 
668 
 | 
  		end
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
669
670
671 
 | 
  		-- 3 全员存活
  		check[3] = function(_)
  			return msg.info.dead and msg.info.dead == 0
 
 | 
accf94c4
 
  测试
 
活动以类型标识,修改双倍活动bug
 | 
672 
 | 
  		end
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
673
674
675
676 
 | 
  		-- 4 指定种族 >= N
  		check[4] = function(_, cond)
  			local count = 0
  			for _, one in pairs(herosInfo) do
 
 | 
66fe093a
 
  测试
 
元旦关卡活动
 | 
677 
 | 
  				local heroData = csvdb["unitCsv"][one.type]
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
678
679
680
681
682
683
684
685
686
687 
 | 
  				if heroData.camp == cond then
  					count = count + 1
  				end
  			end
  			return count >= cond
  		end
  		-- 5 指定职业 >= N
  		check[5] = function(_, cond)
  			local count = 0
  			for _, one in pairs(herosInfo) do
 
 | 
66fe093a
 
  测试
 
元旦关卡活动
 | 
688 
 | 
  				local heroData = csvdb["unitCsv"][one.type]
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708 
 | 
  				if heroData.job == cond then
  					count = count + 1
  				end
  			end
  			return count >= cond
  		end
  		-- 6 含有指定角色 
  		check[6] = function(_, cond)
  			for _, one in pairs(herosInfo) do
  				if one.type == cond then
  					return true
  				end
  			end
  			return false
  		end
  		-- 7 通关耗时 <= X 秒  msg.info.atime
  		check[7] = function(_, cond)
  			return msg.info.atime and msg.info.atime <= cond
  		end
  		curStar = 0
 
 | 
e4a17692
 
  zhouhaihai
 
奖励关卡 满星奖励
 | 
709
710 
 | 
  		local sweepConds = bonusData.sweep_condition:toTableArray(true)
   		for i, cond in ipairs(sweepConds) do
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
711
712
713
714 
 | 
   			if check[cond[1]] and check[cond[1]](table.unpack(cond)) then
   				curStar = curStar + (1 << (i - 1))
   			end
   		end
 
 | 
e4a17692
 
  zhouhaihai
 
奖励关卡 满星奖励
 | 
715 
 | 
   		local status
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
716
717
718
719
720
721
722
723
724
725
726
727
728 
 | 
   		local rewardType = 0
   		if curStar >= (1 << #sweepConds) - 1 then -- 满星
   			rewardType = 2
   			if oldStar == 0 then  --通关
   				rewardType = 4
   			end
   		elseif oldStar == 0 then --通关
   			rewardType = 1
   		end
  
   		if rewardType ~= 0 then
  	 		reward, change = bonusWinReward(role, bonusData, rewardType)
  	 	end
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
729 
 | 
   	else
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
730 
 | 
   		curStar = oldStar
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
731 
 | 
   	end
 
 | 
55c7c172
 
  zhouhaihai
 
奖励副本 新机制
 | 
732 
 | 
   	if curStar ~= oldStar then
 
 | 
3c51e6d4
 
  zhouhaihai
 
奖励副本 完成
 | 
733
734 
 | 
   		bonusStar[id] = curStar
   		role:updateProperty({field = "bonusStar", value = bonusStar})
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
735
736 
 | 
   	end
  
 
 | 
d4e9b817
 
  zhouhaihai
 
战斗 日志
 | 
737
738
739
740
741
742 
 | 
   	role:checkBattle("bonus", {
  		id = id,
  		isWin = starNum and starNum > 0,
  		info = msg.info,
  		reward = reward,
  	})
 
 | 
d02f7904
 
  zhouhaihai
 
遗失的log
 | 
743
744 
 | 
  	role:mylog("hang_action", {desc = "bonusBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = id})
  
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
745
746 
 | 
  	SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({
  		starNum = starNum, 
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
747
748
749 
 | 
  		reward = reward,
  		change = change
  	}))
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
750
751
752 
 | 
  	return true
  end
  
 
 | 
a6508219
 
  zhouhaihai
 
挂机奖励
 | 
753
754
755
756
757
758
759
760
761
762
763 
 | 
  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
 
修改发奖
 | 
764 
 | 
  	local reward, change = role:award(carbonData.item_clear_special, {log = {desc = "hangGift", int1 = id}})
 
 | 
a6508219
 
  zhouhaihai
 
挂机奖励
 | 
765
766 
 | 
  
  	role:changeUpdates({{type = "hangGift", field = id, value = 1}})
 
 | 
d02f7904
 
  zhouhaihai
 
遗失的log
 | 
767 
 | 
  	role:mylog("hang_action", {desc = "hangGift",  int1 = id})
 
 | 
a6508219
 
  zhouhaihai
 
挂机奖励
 | 
768 
 | 
  
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
769 
 | 
  	SendPacket(actionCodes.Hang_hangGiftRpc, MsgPack.pack({reward = reward, change = change}))
 
 | 
a6508219
 
  zhouhaihai
 
挂机奖励
 | 
770
771 
 | 
  	return true
  end
 
 | 
f60b89b1
 
  zhouhaihai
 
奖励副本
 | 
772 
 | 
  
 
 | 
64e63ad0
 
  wangyujie
 
完成需求:挂机栏位物品数量上限和钻...
 | 
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787 
 | 
  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
 
奖励副本
 | 
788 
 | 
  
 
 | 
ed20f277
 
  zhouhaihai
 
chatline 奖励
 | 
789
790
791 
 | 
  function _M.chatLineRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
 
 | 
ed20f277
 
  zhouhaihai
 
chatline 奖励
 | 
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806 
 | 
  	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
 
修改发奖
 | 
807 
 | 
  	local reward, change = role:award(idleData.chatline_reward, {log = {desc = "chatline", int1 = id}})
 
 | 
ed20f277
 
  zhouhaihai
 
chatline 奖励
 | 
808 
 | 
  	
 
 | 
7bb30dca
 
  zhouhaihai
 
修改发奖
 | 
809 
 | 
  	SendPacket(actionCodes.Hang_chatLineRpc, MsgPack.pack({reward = reward, change = change}))
 
 | 
ed20f277
 
  zhouhaihai
 
chatline 奖励
 | 
810
811
812 
 | 
  	return true
  end
  
 
 | 
98d32f92
 
  测试
 
多编队
 | 
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828 
 | 
  function _M.selectTeamRpc(agent, data)
  	local role = agent.role
  	local msg = MsgPack.unpack(data)
  	local index = msg.index	-- 阵容索引
  	local type = msg.type	-- 系统类型
  
  	if index > 10 then
  		return 1
  	end
  	local team = role:getTeamFormat(index)
  	if not next(team) then return 2 end
  
  	local teamIndex = role:getProperty("teamIndex") or {}
  	teamIndex[type] = index
  	role:updateProperty({field = "teamIndex", value = teamIndex})
  
 
 | 
782ee57d
 
  测试
 
多编队功能
 | 
829
830
831
832
833 
 | 
  	if type == TeamSystemType.Hang then
  		role:finishGuide(5)
  		role:updateHangTeamInfo()
  	end
  
 
 | 
98d32f92
 
  测试
 
多编队
 | 
834
835
836
837 
 | 
  	SendPacket(actionCodes.Hang_selectTeamRpc, '')
  	return true
  end
  
 
 | 
42dcb7da
 
  测试
 
merge code
 | 
838 
 | 
  return _M
 
 |