Commit 93f6e69bdbe4f5405c6c34844013610a13b09e65
1 parent
19d3f079
拾荒选择时间,抽卡增加sr保底
Showing
11 changed files
with
143 additions
and
32 deletions
Show diff stats
src/GlobalVar.lua
@@ -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 |
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("models.Activity") | @@ -212,7 +212,7 @@ local Activity = require("models.Activity") | ||
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 |