From 33be31113312a27570350d43307d1e81f3ffaba8 Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Thu, 28 May 2020 11:18:16 +0800 Subject: [PATCH] 修改hangPass 结构 --- src/actions/AdvAction.lua | 4 ++-- src/actions/DinerAction.lua | 6 ++---- src/actions/GmAction.lua | 23 ++++++----------------- src/actions/HangAction.lua | 23 ++++++++++------------- src/actions/RoleAction.lua | 4 +++- src/adv/Adv.lua | 7 ++++--- src/models/Diner.lua | 6 ++---- src/models/RoleCross.lua | 6 ++---- src/models/RolePlugin.lua | 21 +++++++++++++++++---- src/models/RoleTask.lua | 3 +-- src/services/httpweb.lua | 4 ++++ 11 files changed, 53 insertions(+), 54 deletions(-) diff --git a/src/actions/AdvAction.lua b/src/actions/AdvAction.lua index 2e3cc10..dea03a3 100644 --- a/src/actions/AdvAction.lua +++ b/src/actions/AdvAction.lua @@ -245,11 +245,11 @@ function _M.quickHangRpc(agent, data) local cost = math.ceil((info.time - skynet.timex()) / chapterData.idleTime * chapterData.accelerate) if not role:checkItemEnough({[ItemId.Diamond] = cost}) then return end - role:costItems({[ItemId.Diamond] = cost}, {log = {desc = "quickHang", int1 = chapterId}}) + role:costItems({[ItemId.Diamond] = cost}, {log = {desc = "advQuickHang", int1 = chapterId}}) info.time = 0 role:changeUpdates({{type = "advHang", field = chapterId, value = info}}) - role:log("adv_action", {desc = "quickHang", int1 = chapterId}) + role:log("adv_action", {desc = "advQuickHang", int1 = chapterId}) SendPacket(actionCodes.Adv_quickHangRpc, '') return true diff --git a/src/actions/DinerAction.lua b/src/actions/DinerAction.lua index 1d38055..a72132f 100644 --- a/src/actions/DinerAction.lua +++ b/src/actions/DinerAction.lua @@ -364,8 +364,7 @@ function _M.talentUpRpc( agent, data ) end if talentData.levelFront ~= "" then - local hangPass = role:getProperty("hangPass") - if not hangPass[tonumber(talentData.levelFront)] then + if not role:checkHangPass(tonumber(talentData.levelFront)) then return 9 end end @@ -635,8 +634,7 @@ function _M.addWantFoodRpc(agent , data) local foodData = csvdb["diner_materialCsv"][itemId] if not foodData then return 3 end if foodData.unlock ~= 0 then - local hangPass = role:getProperty("hangPass") - if not hangPass[foodData.unlock] then + if not role:checkHangPass(foodData.unlock) then return 4 end end diff --git a/src/actions/GmAction.lua b/src/actions/GmAction.lua index 0ad8a68..28847df 100644 --- a/src/actions/GmAction.lua +++ b/src/actions/GmAction.lua @@ -178,19 +178,17 @@ table.insert(helpDes, {"通关挂机副本", "fb", "挂卡id"}) function _M.fb(role, pms) -- 直接通关 local carbonId = tonum(pms.pm1) if not csvdb["idle_battleCsv"][carbonId] then return "不存在的carbon" end - local passCarbon = role:getProperty("hangPass") local addPre addPre = function(carbonId) local carbonData = csvdb["idle_battleCsv"][carbonId] for _, pre in ipairs(carbonData.prepose:toArray(true, "=")) do - passCarbon[pre] = 1 + role:hangFinish(pre) role:checkTaskEnter("HangPass", {id = pre}) addPre(pre) end end - passCarbon[carbonId] = 1 + role:hangFinish(carbonId) addPre(carbonId) - role:updateProperty({field = "hangPass", value = passCarbon}) role:log("gm_action", {desc = "fb", int1 = carbonId, key1 = pms.sender}) @@ -207,13 +205,14 @@ function _M.fbc(role, pms) -- 直接通关 addPre = function(carbonId) local carbonData = csvdb["idle_battleCsv"][carbonId] for _, pre in ipairs(carbonData.prepose:toArray(true, "=")) do - passCarbon[pre] = 1 + role:hangFinish(pre) role:checkTaskEnter("HangPass", {id = pre}) addPre(pre) end end + role:hangFinish(carbonId) addPre(carbonId) - role:updateProperty({field = "hangPass", value = passCarbon}) + role:checkTaskEnter("HangPass", {id = carbonId}) role:log("gm_action", {desc = "fbc", int1 = carbonId, key1 = pms.sender}) @@ -359,19 +358,9 @@ function _M.adv(role, pms) layer = math.min(layer, advCsv.limitlevel) end local advPass = role:getProperty("advPass") - local addPre - addPre = function(chapterId) - local advCsv = csvdb["adv_chapterCsv"][chapterId] - for pre, l in ipairs(advCsv.prepose:toNumMap()) do - if (advPass[pre] or 0) < l then - advPass[pre] = l - addPre(pre) - end - end - end + if (advPass[chapterId] or 0) < layer then advPass[chapterId] = layer - addPre(chapterId) role:updateProperty({field = "advPass", value = advPass}) end role:log("gm_action", {desc = "advf", int1 = chapterId, int2 = layer, key1 = pms.sender}) diff --git a/src/actions/HangAction.lua b/src/actions/HangAction.lua index fedda22..f2ca5b1 100644 --- a/src/actions/HangAction.lua +++ b/src/actions/HangAction.lua @@ -75,10 +75,9 @@ function _M.startRpc( agent, data ) if not role:isFuncUnlock(FuncUnlock.DifficultHang) then return end end - local hangPass = role:getProperty("hangPass") for _, preCarbonId in ipairs(carbonData.prepose:toArray(true, "=")) do - if not hangPass[preCarbonId] then return 2 end + if not role:checkHangPass(preCarbonId) then return 2 end end if checkReward(role) then @@ -98,7 +97,7 @@ function _M.startRpc( agent, data ) hangInfo.coinTime = math.min(nowTime, hangInfo.endCoinTime) hangInfo.itemTime = math.min(nowTime, hangInfo.endItemTime) end - if not hangPass[carbonId] then + if not role:checkHangPass(carbonId) then hangInfo.bossTime = nowTime + carbonData.idle_time else hangInfo.bossTime = nil @@ -140,8 +139,7 @@ function _M.startBattleRpc(agent, data) end end - local hangPass = role:getProperty("hangPass") - if hangPass[carbonId] then + if role:checkHangPass(carbonId) then return 3 end @@ -169,14 +167,13 @@ function _M.endBattleRpc(agent, data) return 3 end end - local hangPass = role:getProperty("hangPass") - if hangPass[carbonId] then + + if role:checkHangPass(carbonId) then return 4 end local reward if msg.starNum and msg.starNum > 0 then --win - hangPass[carbonId] = 1 - role:updateProperty({field = "hangPass", value = hangPass}) + role:hangFinish(carbonId) if carbonData.main ~= 1 then hangInfo.bossTime = nil end @@ -193,8 +190,9 @@ function _M.endBattleRpc(agent, data) role:checkTaskEnter("HangPass", {id = carbonId}) end role:updateProperty({field = "hangInfo", value = hangInfo}) - - role:log("hang_action", {desc = "hangBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = carbonId}) + + local team = role:getProperty("pvpTC") + role:log("hang_action", {desc = "hangBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = carbonId, int2 = role:getProperty("hangTBV"), cint1 = role:getHerosCamp(team.heros)}) SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({ starNum = msg.starNum, @@ -439,8 +437,7 @@ function _M.startBonusBattleRpc(agent, data) if not role:isTimeResetOpen(TimeReset["DailyBattle" .. bonusData.type]) then return end if not bonusData then return 1 end - local hangPass = role:getProperty("hangPass") - if not hangPass[bonusData.unlock] then return 2 end + if not role:checkHangPass(bonusData.unlock) then return 2 end if not next(role:getProperty("bTeam")) then return 3 end diff --git a/src/actions/RoleAction.lua b/src/actions/RoleAction.lua index 5e3abce..e1416b0 100644 --- a/src/actions/RoleAction.lua +++ b/src/actions/RoleAction.lua @@ -245,8 +245,10 @@ function _M.loginRpc( agent, data ) -- 玩家登陆做的一些操作 role:saveHangTeam() role:savePvpCTeam() + role:savePvpHTeam() - role:log("login", {key1 = agent.ip:toArray(false, ":")[1]}) + local hangPass = role:getProperty("hangPass") + role:log("login", {key1 = agent.ip:toArray(false, ":")[1], int1 = hangPass[1] or 0}) return true end diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index d04803f..e3633c4 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -784,6 +784,7 @@ function Adv:over(success, rewardRatio, overType) self:log({desc = "over", short1 = success and 1 or 0, int1 = overType}) + local chapterId = self.chapterId self:clear() self.owner:checkTaskEnter("AdvScore", {score = score}) @@ -792,7 +793,7 @@ function Adv:over(success, rewardRatio, overType) advAFGet = {}, advAFWear = {}, }) - self:backEnd(success, score, scoreInfo, reward, overType, scoreReward) + self:backEnd(success, score, scoreInfo, reward, overType, scoreReward, chapterId) end function Adv:exit() @@ -1785,8 +1786,8 @@ function Adv:backNext() self:pushBackEvent(AdvBackEventType.Next, {}) end -function Adv:backEnd(success, score, scoreInfo, reward, overType, scoreAward) - self:pushBackEvent(AdvBackEventType.End, {success = success, score = score, scoreInfo = scoreInfo, reward = reward, type = overType, scoreAward = scoreAward}) +function Adv:backEnd(success, score, scoreInfo, reward, overType, scoreAward, chapterId) + self:pushBackEvent(AdvBackEventType.End, {success = success, score = score, scoreInfo = scoreInfo, reward = reward, type = overType, scoreAward = scoreAward, chapterId = chapterId}) end function Adv:backBlockChange(roomId, blockId, itemChangeType) diff --git a/src/models/Diner.lua b/src/models/Diner.lua index 2d5de21..edbe1dd 100644 --- a/src/models/Diner.lua +++ b/src/models/Diner.lua @@ -28,7 +28,6 @@ function Diner:refreshDailyData(notify) -- 委托 local entrust = self:getProperty("entrust") - local hangPass = self.owner:getProperty("hangPass") local entrustB = self:getProperty("entrustB") local had = {} local pool = {} @@ -42,7 +41,7 @@ function Diner:refreshDailyData(notify) -- 不填=默认刷出,1=达成前置任务,2=通关关卡 local showC = data.show:toArray(true, "=") if showC[1] == 2 then - if not hangPass[showC[2]] then + if not role:checkHangPass(showC[2]) then show = false end elseif showC[1] == 1 then @@ -301,9 +300,8 @@ end function Diner:getMaxSlots() local slotCount = globalCsv.diner_sell_slots_init - local hangPass = self.owner:getProperty("hangPass") for _, carbonId in ipairs(globalCsv.diner_sell_slots_unlock) do - if hangPass[carbonId] then + if role:checkHangPass(carbonId) then slotCount = slotCount + 1 end end diff --git a/src/models/RoleCross.lua b/src/models/RoleCross.lua index 67ab837..f84c27a 100644 --- a/src/models/RoleCross.lua +++ b/src/models/RoleCross.lua @@ -144,19 +144,17 @@ RoleCross.bind = function (Role) -- fb local carbonId = initData.fb - local passCarbon = self:getProperty("hangPass") local addPre addPre = function(carbonId) local carbonData = csvdb["idle_battleCsv"][carbonId] for _, pre in ipairs(carbonData.prepose:toArray(true, "=")) do - passCarbon[pre] = 1 + self:checkHangPass(pre) self:checkTaskEnter("HangPass", {id = pre}) addPre(pre) end end - passCarbon[carbonId] = 1 + self:checkHangPass(carbonId) addPre(carbonId) - self:updateProperty({field = "hangPass", value = passCarbon}) self:checkTaskEnter("HangPass", {id = carbonId}) -- talent diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 24b575f..81d7c04 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -845,8 +845,7 @@ function RolePlugin.bind(Role) local data = csvdb["guide_unlockCsv"][func] if not data then return true end -- 没有就是解锁了 - local hangPass = self:getProperty("hangPass") - if hangPass[data.carbonId] then + if self:checkHangPass(data.carbonId) then return true else return false @@ -925,9 +924,8 @@ function RolePlugin.bind(Role) end function Role:advChapterIsOpen(chapterId) - local hangPass = self:getProperty("hangPass") local chapterData = csvdb["adv_chapterCsv"][chapterId] - if chapterData.prepose ~= 0 and not hangPass[chapterData.prepose] then return false end + if chapterData.prepose ~= 0 and not self:checkHangPass(chapterData.prepose) then return false end return true end @@ -1357,6 +1355,21 @@ function RolePlugin.bind(Role) end end + function Role:checkHangPass(carbonId) + local hangPass = self:getProperty("hangPass") + local diff = math.floor(carbonId / 10000) + return (hangPass[diff] or 0) >= carbonId + end + + function Role:hangFinish(carbonId) + local hangPass = self:getProperty("hangPass") + local diff = math.floor(carbonId / 10000) + if (hangPass[diff] or 0) < carbonId then + hangPass[diff] = carbonId + self:updateProperty({field = "hangPass", value = hangPass}) + end + end + function Role:getAdvRankKey() local round = self:getProperty("advElS") local idx = 1 diff --git a/src/models/RoleTask.lua b/src/models/RoleTask.lua index 71cdb7a..0b7a33f 100644 --- a/src/models/RoleTask.lua +++ b/src/models/RoleTask.lua @@ -486,14 +486,13 @@ function RoleTask.bind(Role) } sudoku.task = sudoku.task or {} - local hangPass = self:getProperty("hangPass") for pause, guide_sudokuData in pairs(csvdb["guide_sudokuCsv"]) do if pause >= curPhase then sudoku.task[pause] = sudoku.task[pause] or {} for id , sudikuData in pairs(guide_sudokuData) do local curStatus = sudoku.task[pause][id] or 0 - if curStatus ~= -1 and sudikuData.type == stype and (sudikuData.unlock == 0 or hangPass[sudikuData.unlock]) then + if curStatus ~= -1 and sudikuData.type == stype and (sudikuData.unlock == 0 or self:checkHangPass(sudikuData.unlock)) then if IsFindMax[sudikuData.type] then -- 最大值 if sudikuData.con2 == 0 or sudikuData.con2 == cond then if (count or 0) > curStatus then diff --git a/src/services/httpweb.lua b/src/services/httpweb.lua index 14c2af9..1eddd49 100644 --- a/src/services/httpweb.lua +++ b/src/services/httpweb.lua @@ -56,6 +56,10 @@ local function start() redisd = skynet.localname(".redis") globalCsv = csvdb["GlobalDefineCsv"] + if tonumber(skynet.getenv "logd") == 1 then + logd = skynet.localname(".log") + end + local listen_socket = socket.listen("0.0.0.0", port) print("Listen web port " .. port) socket.start(listen_socket , function(id, addr) -- libgit2 0.21.2