From 67b46a6b2f99987c0ab3d2a6964b5dd7c83d8694 Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Thu, 21 Jan 2021 10:47:20 +0800 Subject: [PATCH] 修复存在的冒险进不去的玩家 --- src/GlobalVar.lua | 1 + src/actions/AdvAction.lua | 6 ++++++ src/adv/Adv.lua | 2 +- src/models/Role.lua | 2 +- src/models/RoleChangeStruct.lua | 18 ++++++++++++++---- src/models/RolePlugin.lua | 4 ++-- 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/GlobalVar.lua b/src/GlobalVar.lua index 367dd74..92738b3 100644 --- a/src/GlobalVar.lua +++ b/src/GlobalVar.lua @@ -16,6 +16,7 @@ TIME_ZONE = math.floor(os.difftime(START_RESET_TIME_BASE, os.time(os.date("!*t", START_RESET_TIME = START_RESET_TIME_BASE - TIME_ZONE * 3600 +STRUCT_VERSION = 3 -- 数据结构版本 MAX_ROLE_NUM = 1000000 -- 属性枚举 diff --git a/src/actions/AdvAction.lua b/src/actions/AdvAction.lua index 4956dd8..c77878c 100644 --- a/src/actions/AdvAction.lua +++ b/src/actions/AdvAction.lua @@ -963,6 +963,9 @@ function _M.roleFormatRpc(agent , data) local index = msg.index -- 阵容索引 local title = msg.title -- 阵容名称 local team = {} + + if role:getAdvData():isRunning() then return 3 end + for slot, heroId in pairs(msg.heros) do if not role.heros[heroId] then return 1 @@ -1005,6 +1008,9 @@ function _M.selectTeamRpc(agent, data) local role = agent.role local msg = MsgPack.unpack(data) local index = msg.index -- 阵容索引 + + if role:getAdvData():isRunning() then return 1 end + local team = role:getAdvTeamFormat(index) if not next(team) then return end team["index"] = index diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 6d4dfe3..e41b0e7 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -408,7 +408,7 @@ function Adv:forceOver(notNotify) for itemId, count in pairs(reward) do reward[itemId] = math.ceil(count * globalCsv.adv_fail_reward_ratio / 100) -- 奖励相当于失败 end - self.owner:award(reward, {log = {desc = "advOver", int1 = self.chapterId}}) + self.owner:award(reward, {log = {desc = "advOver", int1 = self.chapterId}, notNotify = notNotify}) self:clear() self.owner:updateProperties({ diff --git a/src/models/Role.lua b/src/models/Role.lua index 3981a1f..827a394 100644 --- a/src/models/Role.lua +++ b/src/models/Role.lua @@ -57,7 +57,7 @@ Role.schema = { ltime = {"number", 0}, -- 最后登录时间 ctime = {"number", skynet.timex()}, -- 创建时间 ignoreMt = {"number", 0}, -- 忽略维护拦截 - sversion = {"number", globalCsv.StructVersion or 0}, -- 重整数据版本 + sversion = {"number", STRUCT_VERSION or 0}, -- 重整数据版本 timeReset = {"table", {}}, --重置轮回记录 diamond = {"number", 0}, reDiamond = {"number", 0}, diff --git a/src/models/RoleChangeStruct.lua b/src/models/RoleChangeStruct.lua index cb8997d..81aef4d 100644 --- a/src/models/RoleChangeStruct.lua +++ b/src/models/RoleChangeStruct.lua @@ -31,6 +31,7 @@ local awardGift = createVersionFunc(VersionType.Override ,function(role, params) print("awardGift" .. " >>> " .. params) end) + local bugFixSuduku = createVersionFunc(VersionType.DoOnly, function(role, params) local sudoku = role:getProperty("sudoku") local phase = sudoku[-1] or 1 @@ -65,12 +66,21 @@ local bugFixRune = createVersionFunc(VersionType.DoOnly, function(role, params) -- 补偿 end end) + +-- 清除 player 消失 的冒险 +local bugFixAdvPlayer = createVersionFunc(VersionType.Override, function(role, params) + if role:getAdvData():isRunning() and not role:getProperty("advTeam").player then + role:getAdvData():forceOver(true) + end +end) + ---------------------版本方法 end ---------------------- -- version 罗列start local versionList = {} -- version 列表 versionList[1] = {bugFixSuduku, {}} versionList[2] = {bugFixRune, {}} +versionList[3] = {bugFixAdvPlayer, {}} -- versionList[2] = {clearActivity, {5, 7}} -- versionList[3] = {changeStructF, "test1"} -- versionList[4] = {changeStructF, "test2"} @@ -87,11 +97,11 @@ function RoleChangeStruct.bind(Role) function Role:changeStructVersion() local curVersion = self:getProperty("sversion") - if not globalCsv.StructVersion or curVersion >= globalCsv.StructVersion then return end + if not STRUCT_VERSION or curVersion >= STRUCT_VERSION then return end local jumpVersion = {} local versionTemp = {} - for version = curVersion + 1, globalCsv.StructVersion do + for version = curVersion + 1, STRUCT_VERSION do local versionData = versionList[version] if versionData then if versionData[1].vType == VersionType.DoOnly then @@ -124,7 +134,7 @@ function RoleChangeStruct.bind(Role) end end - for version = curVersion + 1, globalCsv.StructVersion do + for version = curVersion + 1, STRUCT_VERSION do if not jumpVersion[version] then local versionData = versionList[version] if versionData[1].vType == VersionType.DoOnly or versionData[1].vType == VersionType.Override then @@ -134,7 +144,7 @@ function RoleChangeStruct.bind(Role) end end end - self:setProperty("sversion", globalCsv.StructVersion) + self:setProperty("sversion", STRUCT_VERSION) end end diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 9ffb3dd..978936c 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -286,7 +286,7 @@ function RolePlugin.bind(Role) print("addPlayExp no log ", debug.traceback()) end - self:updateProperties({level = level, exp = newExp}) + self:updateProperties({level = level, exp = newExp}, params.notNotify) self:changeCrossServerPvpSelfInfo("level") end @@ -387,7 +387,7 @@ function RolePlugin.bind(Role) end if update then - self:updateProperty({field = "boxL", value = boxL}) + self:updateProperty({field = "boxL", value = boxL, notNotify = pms.notNotify}) end end -- libgit2 0.21.2