Commit 93f6e69bdbe4f5405c6c34844013610a13b09e65

Authored by liuzujun
1 parent 19d3f079

拾荒选择时间,抽卡增加sr保底

@@ -304,4 +304,10 @@ TriggerEventType = { @@ -304,4 +304,10 @@ TriggerEventType = {
304 HangPass = 1, 304 HangPass = 1,
305 LevelUp = 2, 305 LevelUp = 2,
306 TowerPass = 3, 306 TowerPass = 3,
  307 +}
  308 +
  309 +DrawCardType = {
  310 + SpecifyDraw = 1,
  311 + NormalDraw = 2,
  312 + FriendDraw = 3
307 } 313 }
308 \ No newline at end of file 314 \ No newline at end of file
src/actions/AdvAction.lua
@@ -184,11 +184,22 @@ function _M.startHangRpc(agent, data) @@ -184,11 +184,22 @@ function _M.startHangRpc(agent, data)
184 local role = agent.role 184 local role = agent.role
185 local msg = MsgPack.unpack(data) 185 local msg = MsgPack.unpack(data)
186 local chapterId = msg.chapterId --关卡id 186 local chapterId = msg.chapterId --关卡id
  187 + local campId = msg.campId or 2 --营地id
187 local format = msg.format --编队 188 local format = msg.format --编队
  189 + local index = msg.index or 1--时间索引id
188 190
189 - local chapterData = csvdb["adv_chapterCsv"][chapterId] 191 + local chapterData = csvdb["adv_chapter_campsiteCsv"][chapterId]
190 if not chapterData then return 1 end 192 if not chapterData then return 1 end
191 - if chapterData.idleReward == "" then return 2 end --没有奖励 没有挂机 193 + local campSiteData = chapterData[campId]
  194 + if not campSiteData then return 1 end
  195 + if campSiteData.idleReward_1 == "" and campSiteData.idleReward_2 == "" then return 2 end --没有奖励 没有挂机
  196 +
  197 + local adv_idle_time = globalCsv.adv_idle_time[index]
  198 + local adv_idle_energy = globalCsv.adv_idle_energy[index]
  199 + local adv_idle_reward_coef = globalCsv.adv_idle_reward[index]
  200 + if not adv_idle_time or not adv_idle_energy or not adv_idle_reward_coef then
  201 + return 2
  202 + end
192 203
193 local advHang = role:getProperty("advHang") 204 local advHang = role:getProperty("advHang")
194 if advHang[chapterId] then return 3 end --正在挂机 205 if advHang[chapterId] then return 3 end --正在挂机
@@ -201,7 +212,7 @@ function _M.startHangRpc(agent, data) @@ -201,7 +212,7 @@ function _M.startHangRpc(agent, data)
201 if not next(advRelay[chapterId] or {}) then return 6 end -- 没有开放 212 if not next(advRelay[chapterId] or {}) then return 6 end -- 没有开放
202 213
203 214
204 - if not role:checkAdvCount(chapterData.limitlevel) then return 7 end -- 是否有体力 215 + if not role:checkAdvCount(adv_idle_energy) then return 7 end -- 是否有体力
205 216
206 if not checkFormat(role, format, role:getAdvData():isRunning()) then return 8 end --编队是否正确 217 if not checkFormat(role, format, role:getAdvData():isRunning()) then return 8 end --编队是否正确
207 218
@@ -220,7 +231,7 @@ function _M.startHangRpc(agent, data) @@ -220,7 +231,7 @@ function _M.startHangRpc(agent, data)
220 + 0.226 * player["hit"] 231 + 0.226 * player["hit"]
221 + 0.26 * player["miss"] 232 + 0.26 * player["miss"]
222 233
223 - if battleV < chapterData.idleValue then return 9 end -- 战斗力是否满足 234 + if battleV < campSiteData.idleValue then return 9 end -- 战斗力是否满足
224 235
225 local info = {} 236 local info = {}
226 info.format = {} 237 info.format = {}
@@ -230,7 +241,9 @@ function _M.startHangRpc(agent, data) @@ -230,7 +241,9 @@ function _M.startHangRpc(agent, data)
230 for slot, heroId in pairs(format.heros) do 241 for slot, heroId in pairs(format.heros) do
231 info.format.heros[slot] = heroId 242 info.format.heros[slot] = heroId
232 end 243 end
233 - info.time = skynet.timex() + chapterData.idleTime --挂机时间 244 + info.time = skynet.timex() + adv_idle_time --挂机时间
  245 + info.campId = campId
  246 + info.index = index
234 247
235 -- 没有在战斗 用team来挂机了 把team清掉 248 -- 没有在战斗 用team来挂机了 把team清掉
236 if not role:getAdvData():isRunning() then 249 if not role:getAdvData():isRunning() then
@@ -239,7 +252,7 @@ function _M.startHangRpc(agent, data) @@ -239,7 +252,7 @@ function _M.startHangRpc(agent, data)
239 252
240 role:changeUpdates({{type = "advHang", field = chapterId, value = info}}) 253 role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
241 254
242 - role:changeAdvCount(chapterData.limitlevel) 255 + role:changeAdvCount(adv_idle_energy)
243 role:checkTaskEnter("AdvStart", {id = chapterId}) 256 role:checkTaskEnter("AdvStart", {id = chapterId})
244 role:log("adv_action", {desc = "startHang", int1 = chapterId}) 257 role:log("adv_action", {desc = "startHang", int1 = chapterId})
245 258
@@ -257,13 +270,24 @@ function _M.quickHangRpc(agent, data) @@ -257,13 +270,24 @@ function _M.quickHangRpc(agent, data)
257 local info = advHang[chapterId] 270 local info = advHang[chapterId]
258 if not info then return end 271 if not info then return end
259 272
260 - local chapterData = csvdb["adv_chapterCsv"][chapterId] 273 + local index = info.index
  274 + local chapterData = csvdb["adv_chapter_campsiteCsv"][chapterId]
261 if not chapterData then return end 275 if not chapterData then return end
  276 +
  277 + local campSiteData = chapterData[info.campId]
  278 + if not campSiteData then return 1 end
  279 + if campSiteData.idleReward_1 == "" and campSiteData.idleReward_2 == "" then return 2 end --没有奖励 没有挂机
  280 +
  281 + local adv_idle_time = globalCsv.adv_idle_time[index]
  282 + if not adv_idle_time then
  283 + return 2
  284 + end
  285 +
262 286
263 local reward, isFull 287 local reward, isFull
264 if skynet.timex() >= info.time then return end -- 已经完成了 288 if skynet.timex() >= info.time then return end -- 已经完成了
265 289
266 - local cost = math.ceil((info.time - skynet.timex()) / chapterData.idleTime * chapterData.accelerate) 290 + local cost = math.ceil((info.time - skynet.timex()) / adv_idle_time * globalCsv.adv_idle_quicken)
267 291
268 if not role:checkItemEnough({[ItemId.Diamond] = cost}) then return end 292 if not role:checkItemEnough({[ItemId.Diamond] = cost}) then return end
269 role:costItems({[ItemId.Diamond] = cost}, {log = {desc = "advQuickHang", int1 = chapterId}}) 293 role:costItems({[ItemId.Diamond] = cost}, {log = {desc = "advQuickHang", int1 = chapterId}})
@@ -287,11 +311,24 @@ function _M.endHangRpc(agent, data) @@ -287,11 +311,24 @@ function _M.endHangRpc(agent, data)
287 local info = advHang[chapterId] 311 local info = advHang[chapterId]
288 if not info then return end 312 if not info then return end
289 313
290 - local chapterData = csvdb["adv_chapterCsv"][chapterId] 314 + local index = info.index or 1
  315 + local chapterData = csvdb["adv_chapter_campsiteCsv"][chapterId]
291 if not chapterData then return end 316 if not chapterData then return end
  317 + local campSiteData = chapterData[info.campId or 2]
  318 + if not campSiteData then return 1 end
  319 + if campSiteData.idleReward_1 == "" and campSiteData.idleReward_2 == "" then return 2 end --没有奖励 没有挂机
  320 +
  321 + local adv_idle_time = globalCsv.adv_idle_time[index]
  322 + local adv_idle_energy = globalCsv.adv_idle_energy[index]
  323 + local adv_idle_reward_coef = globalCsv.adv_idle_reward[index]
  324 + if not adv_idle_time or not adv_idle_energy or not adv_idle_reward_coef then
  325 + return 2
  326 + end
292 327
293 local reward, isFull, change 328 local reward, isFull, change
294 if skynet.timex() >= info.time then 329 if skynet.timex() >= info.time then
  330 + -- 最新需求加成取消
  331 + --[[
295 -- 英雄加成 332 -- 英雄加成
296 local idleUnit = chapterData.idleUnit:toNumMap() 333 local idleUnit = chapterData.idleUnit:toNumMap()
297 local upUnit = 0 334 local upUnit = 0
@@ -316,15 +353,17 @@ function _M.endHangRpc(agent, data) @@ -316,15 +353,17 @@ function _M.endHangRpc(agent, data)
316 end 353 end
317 354
318 if not maxCampsite then return end 355 if not maxCampsite then return end
  356 + ]]
  357 + local totalReward = campSiteData.idleReward_1 .. " " .. campSiteData.idleReward_2
319 358
320 - local idleReward = chapterData.idleReward:toNumMap() 359 + local idleReward = totalReward:toNumMap()
321 for itemId, count in pairs(idleReward) do 360 for itemId, count in pairs(idleReward) do
322 - idleReward[itemId] = math.floor(count * (maxCampsite.idleValue + upUnit) / 100) 361 + idleReward[itemId] = count * adv_idle_reward_coef
323 end 362 end
324 reward, change = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}}) 363 reward, change = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}})
325 else 364 else
326 if cancel then 365 if cancel then
327 - role:changeAdvCount(-chapterData.limitlevel) 366 + --role:changeAdvCount(-chapterData.limitlevel)
328 -- if role:getProperty("advC") <= 0 then 367 -- if role:getProperty("advC") <= 0 then
329 -- isFull = true 368 -- isFull = true
330 -- else 369 -- else
src/actions/HangAction.lua
@@ -69,7 +69,7 @@ local function checkReward(role) @@ -69,7 +69,7 @@ local function checkReward(role)
69 while #tempPool > 0 do 69 while #tempPool > 0 do
70 local idx = math.randWeight(tempPool, 3) 70 local idx = math.randWeight(tempPool, 3)
71 local cur = clone(pool[idx]) 71 local cur = clone(pool[idx])
72 - if cur[1] ~= 1 then -- 轮空 id 72 + if cur[1] ~= 0 then -- 轮空 id
73 if cur[1] == ItemId.BreakCost and doubleTime > 0 then 73 if cur[1] == ItemId.BreakCost and doubleTime > 0 then
74 cur[2] = cur[2] * 2 74 cur[2] = cur[2] * 2
75 end 75 end
@@ -242,6 +242,9 @@ function _M.endBattleRpc(agent, data) @@ -242,6 +242,9 @@ function _M.endBattleRpc(agent, data)
242 242
243 role:checkTaskEnter("HangPass", {id = carbonId}) 243 role:checkTaskEnter("HangPass", {id = carbonId})
244 end 244 end
  245 + if hangInfo.carbonId < carbonId then
  246 + hangInfo.carbonId = carbonId
  247 + end
245 role:updateProperty({field = "hangInfo", value = hangInfo}) 248 role:updateProperty({field = "hangInfo", value = hangInfo})
246 249
247 local team = role:getProperty("pvpTC") 250 local team = role:getProperty("pvpTC")
src/actions/HeroAction.lua
@@ -938,6 +938,9 @@ function _M.drawHeroRpc(agent, data) @@ -938,6 +938,9 @@ function _M.drawHeroRpc(agent, data)
938 local drawCount = {1, 10} -- 抽取次数 938 local drawCount = {1, 10} -- 抽取次数
939 if not drawCount[drawType] then return 2 end 939 if not drawCount[drawType] then return 2 end
940 940
  941 + local draw_floor_back_counts = globalCsv.draw_floor_back_counts[btype]
  942 + local floorHeroCount = role:getProperty("floorHero")[btype] or 0
  943 +
941 -- 计算抽卡消耗品 944 -- 计算抽卡消耗品
942 local cost = {} 945 local cost = {}
943 local lastCount = drawCount[drawType] 946 local lastCount = drawCount[drawType]
@@ -976,16 +979,21 @@ function _M.drawHeroRpc(agent, data) @@ -976,16 +979,21 @@ function _M.drawHeroRpc(agent, data)
976 end 979 end
977 980
978 --TODO 活动覆盖 981 --TODO 活动覆盖
  982 + local actPoolId = role.activity:getActivityPool(btype, subType)
  983 + if actPoolId ~= 0 then
  984 + poolId = actPoolId
  985 + end
979 986
980 local unitPool = csvdb["build_unitCsv"][poolId] 987 local unitPool = csvdb["build_unitCsv"][poolId]
981 if not unitPool then return 4 end 988 if not unitPool then return 4 end
982 989
983 -- 开始抽 990 -- 开始抽
984 local resultPool = {} 991 local resultPool = {}
985 - local function fillDrawPool() 992 + local function fillDrawPool(isFloorBack)
986 local condition = {"rare", "camp"} 993 local condition = {"rare", "camp"}
987 local values = {} 994 local values = {}
988 995
  996 +
989 for idx, field in ipairs(condition) do 997 for idx, field in ipairs(condition) do
990 if not values[idx] then 998 if not values[idx] then
991 local lpool = {} 999 local lpool = {}
@@ -1001,8 +1009,9 @@ function _M.drawHeroRpc(agent, data) @@ -1001,8 +1009,9 @@ function _M.drawHeroRpc(agent, data)
1001 end 1009 end
1002 end 1010 end
1003 1011
1004 - for itemId, oneData in pairs(csvdb["build_poolCsv"]) do  
1005 - if oneData["pool_" .. poolId] and oneData["pool_" .. poolId] ~= "" then 1012 + for itemId, oneData in pairs(isFloorBack and csvdb["build_floorCsv"] or csvdb["build_poolCsv"]) do
  1013 + local pool_str = "pool_" .. poolId
  1014 + if oneData[pool_str] and oneData[pool_str] ~= "" then
1006 local itemData = csvdb["itemCsv"][itemId] 1015 local itemData = csvdb["itemCsv"][itemId]
1007 while itemData do 1016 while itemData do
1008 if itemData.type ~= ItemType.Hero then break end 1017 if itemData.type ~= ItemType.Hero then break end
@@ -1013,8 +1022,8 @@ function _M.drawHeroRpc(agent, data) @@ -1013,8 +1022,8 @@ function _M.drawHeroRpc(agent, data)
1013 if heroData[field] ~= values[idx] then ok = false break end 1022 if heroData[field] ~= values[idx] then ok = false break end
1014 end 1023 end
1015 if not ok then break end 1024 if not ok then break end
1016 - if oneData["pool_" .. poolId] > 0 then  
1017 - resultPool[itemId] = {oneData["pool_" .. poolId]} -- itemId, count, 概率 1025 + if oneData[pool_str] > 0 then
  1026 + resultPool[itemId] = {oneData[pool_str]} -- itemId, count, 概率
1018 end 1027 end
1019 break 1028 break
1020 end 1029 end
@@ -1027,9 +1036,13 @@ function _M.drawHeroRpc(agent, data) @@ -1027,9 +1036,13 @@ function _M.drawHeroRpc(agent, data)
1027 local ssrCount = 0 1036 local ssrCount = 0
1028 local reward = {} 1037 local reward = {}
1029 for i = 1, drawCount[drawType] do 1038 for i = 1, drawCount[drawType] do
  1039 + floorHeroCount = floorHeroCount + 1
  1040 + local isFloorBack = draw_floor_back_counts and floorHeroCount >= draw_floor_back_counts
1030 resultPool = {} 1041 resultPool = {}
1031 - while not next(resultPool) do  
1032 - fillDrawPool() 1042 + fillDrawPool(isFloorBack)
  1043 + if not next(resultPool) then
  1044 + skynet.error("random pool error, poolId:" .. poolId)
  1045 + return
1033 end 1046 end
1034 1047
1035 -- 引导必送 613 丝路德 1048 -- 引导必送 613 丝路德
@@ -1039,6 +1052,10 @@ function _M.drawHeroRpc(agent, data) @@ -1039,6 +1052,10 @@ function _M.drawHeroRpc(agent, data)
1039 ssrCount = ssrCount + 1 1052 ssrCount = ssrCount + 1
1040 end 1053 end
1041 1054
  1055 + if itemData.quality >= HeroQuality.SR then
  1056 + floorHeroCount = 0
  1057 + end
  1058 +
1042 if role:isHaveHero(itemData.id - ItemStartId.Hero) then 1059 if role:isHaveHero(itemData.id - ItemStartId.Hero) then
1043 local fragId = itemData.id - ItemStartId.Hero 1060 local fragId = itemData.id - ItemStartId.Hero
1044 local heroData = csvdb["unitCsv"][fragId] 1061 local heroData = csvdb["unitCsv"][fragId]
@@ -1051,6 +1068,12 @@ function _M.drawHeroRpc(agent, data) @@ -1051,6 +1068,12 @@ function _M.drawHeroRpc(agent, data)
1051 end 1068 end
1052 end 1069 end
1053 1070
  1071 + if draw_floor_back_counts then
  1072 + local floorHero = role:getProperty("floorHero")
  1073 + floorHero[btype] = floorHeroCount
  1074 + role:setProperty("floorHero", floorHero)
  1075 + end
  1076 +
1054 if btype == 1 or btype == 2 then 1077 if btype == 1 or btype == 2 then
1055 local repayHero = role:getProperty("repayHero") or 0 1078 local repayHero = role:getProperty("repayHero") or 0
1056 repayHero = repayHero + drawCount[drawType] 1079 repayHero = repayHero + drawCount[drawType]
src/actions/RoleAction.lua
@@ -116,14 +116,14 @@ function _M.loginRpc( agent, data ) @@ -116,14 +116,14 @@ function _M.loginRpc( agent, data )
116 end 116 end
117 if msg.deviceMode then 117 if msg.deviceMode then
118 local deviceMode = tostring(msg.deviceMode) 118 local deviceMode = tostring(msg.deviceMode)
119 - if self:getProperty("dmode") ~= deviceMode then  
120 - self:setProperty("dmode", deviceMode) 119 + if role:getProperty("dmode") ~= deviceMode then
  120 + role:setProperty("dmode", deviceMode)
121 end 121 end
122 end 122 end
123 if msg.device then 123 if msg.device then
124 local device = tostring(msg.device) 124 local device = tostring(msg.device)
125 - if self:getProperty("device") ~= device then  
126 - self:setProperty("device", device) 125 + if role:getProperty("device") ~= device then
  126 + role:setProperty("device", device)
127 end 127 end
128 end 128 end
129 129
@@ -299,7 +299,7 @@ function _M.createRpc(agent, data) @@ -299,7 +299,7 @@ function _M.createRpc(agent, data)
299 sid = msg.subId or 0, 299 sid = msg.subId or 0,
300 name = roleName, 300 name = roleName,
301 uname = msg.uname or "", 301 uname = msg.uname or "",
302 - device = tostring(msg.device) 302 + device = tostring(msg.device),
303 dmode = msg.deviceMode and tostring(msg.deviceMode) or nil 303 dmode = msg.deviceMode and tostring(msg.deviceMode) or nil
304 }) 304 })
305 305
1 -Subproject commit 3929031d3194a0403fab720ab39bc40bc79c734d 1 +Subproject commit 677f005ec716d0367b8823833a47f2aba29fe08e
src/models/Activity.lua
@@ -8,6 +8,8 @@ Activity.ActivityType = { @@ -8,6 +8,8 @@ Activity.ActivityType = {
8 DrawHero = 4, --抽卡周 招募 8 DrawHero = 4, --抽卡周 招募
9 AdvDraw = 5, --拾荒抽周 资助 9 AdvDraw = 5, --拾荒抽周 资助
10 OpenBox = 6, --拆解周 时钟箱 10 OpenBox = 6, --拆解周 时钟箱
  11 +
  12 + SsrUpPoolChange = 10, -- 特定英雄活动,切卡池
11 } 13 }
12 14
13 15
@@ -181,13 +183,16 @@ activityFunc[Activity.ActivityType.Sign] = { @@ -181,13 +183,16 @@ activityFunc[Activity.ActivityType.Sign] = {
181 --loop2:累计招募N次 183 --loop2:累计招募N次
182 --loop3:累计资助N次 184 --loop3:累计资助N次
183 --loop4:时钟箱拆解N个 185 --loop4:时钟箱拆解N个
184 -function Activity:checkWeeklyAct(actType, notify, count) 186 +function Activity:checkWeeklyAct(actType, notify, count, pool)
185 local actInfoMap = { 187 local actInfoMap = {
186 [Activity.ActivityType.DrawHero] = {mailId = MailId.ActDrawCardReward, table = "activity_loop2Csv"}, 188 [Activity.ActivityType.DrawHero] = {mailId = MailId.ActDrawCardReward, table = "activity_loop2Csv"},
187 [Activity.ActivityType.AdvDraw] = {mailId = MailId.ActAdvDrawReward, table = "activity_loop3Csv"}, 189 [Activity.ActivityType.AdvDraw] = {mailId = MailId.ActAdvDrawReward, table = "activity_loop3Csv"},
188 [Activity.ActivityType.OpenBox] = {mailId = MailId.ActOpenBoxReward, table = "activity_loop4Csv"}, 190 [Activity.ActivityType.OpenBox] = {mailId = MailId.ActOpenBoxReward, table = "activity_loop4Csv"},
189 [Activity.ActivityType.FoodSell] = {mailId = MailId.ActSellFoodReward, table = "activity_loop1Csv"} 191 [Activity.ActivityType.FoodSell] = {mailId = MailId.ActSellFoodReward, table = "activity_loop1Csv"}
190 } 192 }
  193 + if actType == Activity.ActivityType.DrawHero and pool == DrawCardType.FriendDraw then
  194 + return
  195 + end
191 local info = actInfoMap[actType] 196 local info = actInfoMap[actType]
192 if not info then return end 197 if not info then return end
193 198
@@ -234,8 +239,8 @@ end @@ -234,8 +239,8 @@ end
234 239
235 -- 抽卡周 240 -- 抽卡周
236 activityFunc[Activity.ActivityType.DrawHero] = { 241 activityFunc[Activity.ActivityType.DrawHero] = {
237 - ["check"] = function(self, actType, notify, count) -- 检查  
238 - self:checkWeeklyAct(actType, notify, count) 242 + ["check"] = function(self, actType, notify, count, pool) -- 检查
  243 + self:checkWeeklyAct(actType, notify, count, pool)
239 end, 244 end,
240 ["init"] = function(self, actType, isCrossDay, notify) 245 ["init"] = function(self, actType, isCrossDay, notify)
241 local roundData = self:getProperty("round") 246 local roundData = self:getProperty("round")
@@ -355,5 +360,23 @@ function Activity:getActHangDoubleTime(lastTs, nowTs) @@ -355,5 +360,23 @@ function Activity:getActHangDoubleTime(lastTs, nowTs)
355 return 0 360 return 0
356 end 361 end
357 362
  363 +-- 获取活动卡池id
  364 +function Activity:getActivityPool(mainType, subType)
  365 + if not self:isOpen(Activity.ActivityType.SsrUpPoolChange) then
  366 + return 0
  367 + end
  368 + local actData = csvdb["activity_ctrlCsv"][Activity.ActivityType.SsrUpPoolChange]
  369 + if not actData then return 0 end
  370 +
  371 + local poolMap = actData.condition2:toMap(true, "=")
  372 + local key = mainType .. "_" .. subType
  373 + for k, v in pairs(poolMap) do
  374 + if k == key then
  375 + return v
  376 + end
  377 + end
  378 + return 0
  379 +end
  380 +
358 381
359 return Activity 382 return Activity
src/models/Role.lua
@@ -39,7 +39,7 @@ Role.schema = { @@ -39,7 +39,7 @@ Role.schema = {
39 sid = {"number", 0}, 39 sid = {"number", 0},
40 device = {"string", ""}, 40 device = {"string", ""},
41 dmode = {"string", ""}, 41 dmode = {"string", ""},
42 - lday = {"string", 0}, 42 + lday = {"number", 0},
43 banTime = {"number", 0}, 43 banTime = {"number", 0},
44 banType = {"number", 0}, 44 banType = {"number", 0},
45 heartWarning = {"number", 0}, 45 heartWarning = {"number", 0},
src/models/RoleTask.lua
@@ -212,7 +212,7 @@ local Activity = require(&quot;models.Activity&quot;) @@ -212,7 +212,7 @@ local Activity = require(&quot;models.Activity&quot;)
212 local ActivityListener = { 212 local ActivityListener = {
213 func = "checkActivityTask", 213 func = "checkActivityTask",
214 listen = { 214 listen = {
215 - [TaskType.DrawHero] = {{Activity.ActivityType.DrawHero, f("count")}}, 215 + [TaskType.DrawHero] = {{Activity.ActivityType.DrawHero, f("count"), f("pool")}},
216 [TaskType.FoodSell] = {{Activity.ActivityType.FoodSell, f("count")}}, 216 [TaskType.FoodSell] = {{Activity.ActivityType.FoodSell, f("count")}},
217 [TaskType.AdvDraw] = {{Activity.ActivityType.AdvDraw, f("count")}}, 217 [TaskType.AdvDraw] = {{Activity.ActivityType.AdvDraw, f("count")}},
218 [TaskType.OpenBox] = {{Activity.ActivityType.OpenBox, f("count")}}, 218 [TaskType.OpenBox] = {{Activity.ActivityType.OpenBox, f("count")}},
src/models/Store.lua
@@ -309,7 +309,7 @@ function Store:OnTriggerLimitTimePack(eventType, param) @@ -309,7 +309,7 @@ function Store:OnTriggerLimitTimePack(eventType, param)
309 end 309 end
310 record[0] = cfg.id 310 record[0] = cfg.id
311 record[eventType] = (record[eventType] or 0) + 1 311 record[eventType] = (record[eventType] or 0) + 1
312 - if record[eventType] == 1 or record[eventType] % 10 == 0 then 312 + if record[eventType] > 0 and record[eventType] % 10 == 0 then
313 local pool = cfg.packId:toArray(true, "=") 313 local pool = cfg.packId:toArray(true, "=")
314 local idx = math.random(1, #pool) 314 local idx = math.random(1, #pool)
315 shopGoodsId = pool[idx] 315 shopGoodsId = pool[idx]
@@ -342,6 +342,7 @@ function Store:data() @@ -342,6 +342,7 @@ function Store:data()
342 battleLR = self:getProperty("battleLR"), 342 battleLR = self:getProperty("battleLR"),
343 limitTPack = self:getProperty("limitTPack"), 343 limitTPack = self:getProperty("limitTPack"),
344 privCardEx = self:getProperty("privCardEx"), 344 privCardEx = self:getProperty("privCardEx"),
  345 + packTrigger = self:getProperty("packTrigger")
345 } 346 }
346 end 347 end
347 348
src/utils/StringUtil.lua
@@ -331,4 +331,20 @@ function string.setbit(str, pos, yes) @@ -331,4 +331,20 @@ function string.setbit(str, pos, yes)
331 else 331 else
332 return str:sub(1, pos-1) .. yes .. str:sub(pos+1, -1) 332 return str:sub(1, pos-1) .. yes .. str:sub(pos+1, -1)
333 end 333 end
  334 +end
  335 +
  336 +--[[
  337 +from: 1=2 3=4
  338 +to: {["1"]="2" or 2,["3"]="4" or 4}
  339 +]]
  340 +function string.toMap(str, tonum, sep)
  341 + local str_vec = string.split(str, " ")
  342 + local tab = {}
  343 + for _, v in pairs(str_vec) do
  344 + local vec = string.split(v, sep)
  345 + if #vec == 2 then
  346 + tab[vec[1]] = tonum and tonumber(vec[2]) or vec[2]
  347 + end
  348 + end
  349 + return tab
334 end 350 end
335 \ No newline at end of file 351 \ No newline at end of file