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 |