Commit b176d7d37ea0467d18e72f6ec9cd4a2acaf0a278

Authored by zhouhaihai
1 parent 7828ffd0

冒险成就

src/ProtocolCode.lua
@@ -42,6 +42,7 @@ actionCodes = { @@ -42,6 +42,7 @@ actionCodes = {
42 Adv_finishTaskRpc = 161, 42 Adv_finishTaskRpc = 161,
43 Adv_workshopRpc = 162, 43 Adv_workshopRpc = 162,
44 Adv_wheelSurfRpc = 163, 44 Adv_wheelSurfRpc = 163,
  45 + Adv_finishAchievRpc = 164,
45 46
46 Hero_loadInfos = 201, 47 Hero_loadInfos = 201,
47 Hero_updateProperty = 202, 48 Hero_updateProperty = 202,
src/actions/AdvAction.lua
@@ -242,6 +242,8 @@ function _M.finishTaskRpc(agent, data) @@ -242,6 +242,8 @@ function _M.finishTaskRpc(agent, data)
242 status, reward = adv:finishMTask() 242 status, reward = adv:finishMTask()
243 else 243 else
244 status, reward = adv:finishTask(taskId) 244 status, reward = adv:finishTask(taskId)
  245 + adv:checkAchievement(adv.AchievType.TaskLayer, 1, taskId)
  246 + adv:updateAchievement()
245 end 247 end
246 adv:updateTask() 248 adv:updateTask()
247 if not status then return end 249 if not status then return end
@@ -382,6 +384,7 @@ end @@ -382,6 +384,7 @@ end
382 function _M.wheelSurfRpc(agent, data) 384 function _M.wheelSurfRpc(agent, data)
383 local role = agent.role 385 local role = agent.role
384 if not role:isFuncOpen(FuncOpenType.AdvWheelSurf) then return end 386 if not role:isFuncOpen(FuncOpenType.AdvWheelSurf) then return end
  387 +
385 if not role._advWheelSurfCount then return end 388 if not role._advWheelSurfCount then return end
386 389
387 local drawData = csvdb["adv_wheelsurfCsv"][role:getFuncLv(FuncOpenType.AdvWheelSurf)] 390 local drawData = csvdb["adv_wheelsurfCsv"][role:getFuncLv(FuncOpenType.AdvWheelSurf)]
@@ -413,5 +416,26 @@ function _M.wheelSurfRpc(agent, data) @@ -413,5 +416,26 @@ function _M.wheelSurfRpc(agent, data)
413 return true 416 return true
414 end 417 end
415 418
  419 +function _M.finishAchievRpc(agent, data)
  420 + local role = agent.role
  421 + local msg = MsgPack.unpack(data)
  422 + -- local ctype = msg.ctype -- 领取类型 1 成就 2 pt累计奖励
  423 + local chapterId = msg.chapterId --章节id
  424 + local taskId = msg.taskId -- 领取id
  425 +
  426 + local adv = role:getAdvData()
  427 +
  428 + local status, reward
  429 + -- if ctype == 1 then
  430 + -- status = adv:finishAchievement(chapterId, taskId)
  431 + -- elseif ctype == 2 then
  432 + status, reward = adv:getAchievementReward(chapterId, taskId)
  433 + -- end
  434 + if not status then return end
  435 + adv:updateAchievement()
  436 + SendPacket(actionCodes.Adv_finishAchievRpc, MsgPack.pack({reward = reward}))
  437 + return true
  438 +end
  439 +
416 440
417 return _M 441 return _M
418 \ No newline at end of file 442 \ No newline at end of file
@@ -43,8 +43,13 @@ end @@ -43,8 +43,13 @@ end
43 43
44 -- 随机新的地图 44 -- 随机新的地图
45 function Adv:initByChapter(chapterId, level, isToNext, notNotify) 45 function Adv:initByChapter(chapterId, level, isToNext, notNotify)
46 - if self.chapterId and chapterId ~= self.chapterId then return end --新的关卡 或者 去到下一层  
47 - self.chapterId = chapterId 46 + if not self.chapterId then -- 开始新的章节
  47 + self.chapterId = chapterId
  48 + self:checkAchievement(Adv.AchievType.StartBattle, 1)
  49 + elseif chapterId ~= self.chapterId then -- 正常不会出现
  50 + return
  51 + end
  52 +
48 self.level = level or 1 53 self.level = level or 1
49 self.round = 0 54 self.round = 0
50 self.score = self.score or {} 55 self.score = self.score or {}
@@ -110,6 +115,7 @@ function Adv:saveDB(notNotify) @@ -110,6 +115,7 @@ function Adv:saveDB(notNotify)
110 end 115 end
111 116
112 self:updateTask(notNotify) 117 self:updateTask(notNotify)
  118 + self:updateAchievement(notNotify)
113 self.owner:updateProperties({advInfo = advInfo, advTeam = advTeam}, notNotify) 119 self.owner:updateProperties({advInfo = advInfo, advTeam = advTeam}, notNotify)
114 end 120 end
115 121
@@ -163,6 +169,19 @@ function Adv:over(success) @@ -163,6 +169,19 @@ function Adv:over(success)
163 if success then 169 if success then
164 reward = self.owner:award(self.owner:getProperty("advItems"):toNumMap()) 170 reward = self.owner:award(self.owner:getProperty("advItems"):toNumMap())
165 self.owner:checkTaskEnter(self.owner.TaskType.AdvPass, {id = self.chapterId}) 171 self.owner:checkTaskEnter(self.owner.TaskType.AdvPass, {id = self.chapterId})
  172 +
  173 + -- 冒险队等级升一下子
  174 + local advL = self.owner:getProperty("advL")
  175 + advL[2] = (advL[2] or 0) + 1
  176 + for level = ((advL[1] or 0) + 1), #csvdb["adv_rankCsv"] do
  177 + local ldata = csvdb["adv_rankCsv"][level]
  178 + if ldata.unlock >= advL[2] then
  179 + advL[1] = level
  180 + self.owner:award(ldata.reward)
  181 + end
  182 + end
  183 + self.owner:updateProperty("advL", advL)
  184 +
166 if self.owner:isFuncOpen(FuncOpenType.AdvWheelSurf) then 185 if self.owner:isFuncOpen(FuncOpenType.AdvWheelSurf) then
167 self.owner._advWheelSurfCount = 0 -- 抽奖进行次数 186 self.owner._advWheelSurfCount = 0 -- 抽奖进行次数
168 end 187 end
@@ -238,6 +257,7 @@ function Adv:award(gift, params) @@ -238,6 +257,7 @@ function Adv:award(gift, params)
238 if count > 0 then 257 if count > 0 then
239 self:scoreChange(AdvScoreType.Item, {itemId, count}) 258 self:scoreChange(AdvScoreType.Item, {itemId, count})
240 self:checkTask(Adv.TaskType.Item, count, itemId) 259 self:checkTask(Adv.TaskType.Item, count, itemId)
  260 + self:checkAchievement(Adv.AchievType.GetItem, count, itemId)
241 end 261 end
242 local origin = items:getv(itemId, 0) 262 local origin = items:getv(itemId, 0)
243 local nums = origin + count 263 local nums = origin + count
@@ -300,6 +320,8 @@ local function clickOut(self, room, block, params) @@ -300,6 +320,8 @@ local function clickOut(self, room, block, params)
300 if params.relay then 320 if params.relay then
301 if self.level % globalCsv.adv_can_out_layer_pre ~= 0 or not self.owner:isFuncOpen(FuncOpenType.AdvRelay) then return end 321 if self.level % globalCsv.adv_can_out_layer_pre ~= 0 or not self.owner:isFuncOpen(FuncOpenType.AdvRelay) then return end
302 end 322 end
  323 +
  324 + self:checkAchievement(Adv.AchievType.OverWin, 1, self.level)
303 local levellimit = csvdb["adv_chapterCsv"][self.chapterId].limitlevel 325 local levellimit = csvdb["adv_chapterCsv"][self.chapterId].limitlevel
304 if params.relay or (not AdvCommon.isEndless(self.chapterId) and (self.level >= levellimit or not self.owner:advChapterIsOpen(self.chapterId, self.level + 1))) then --关卡结束 326 if params.relay or (not AdvCommon.isEndless(self.chapterId) and (self.level >= levellimit or not self.owner:advChapterIsOpen(self.chapterId, self.level + 1))) then --关卡结束
305 self:over(true) 327 self:over(true)
@@ -307,6 +329,7 @@ local function clickOut(self, room, block, params) @@ -307,6 +329,7 @@ local function clickOut(self, room, block, params)
307 self:initByChapter(self.chapterId, self.level + 1, true, true) 329 self:initByChapter(self.chapterId, self.level + 1, true, true)
308 self:backNext() --下一关 330 self:backNext() --下一关
309 end 331 end
  332 +
310 end 333 end
311 334
312 return true 335 return true
@@ -395,6 +418,7 @@ local function chooseCommon(self, room, block, chooseData, choose) @@ -395,6 +418,7 @@ local function chooseCommon(self, room, block, chooseData, choose)
395 doEffect[effect[1]]() 418 doEffect[effect[1]]()
396 end 419 end
397 self:checkTask(Adv.TaskType.Choose, 1, block.event.id) 420 self:checkTask(Adv.TaskType.Choose, 1, block.event.id)
  421 + self:checkAchievement(Adv.AchievType.Choose, 1, block.event.id)
398 return true, clearBlock 422 return true, clearBlock
399 end 423 end
400 424
@@ -421,6 +445,7 @@ local function clickLinkChoose(self, room, block, params) @@ -421,6 +445,7 @@ local function clickLinkChoose(self, room, block, params)
421 if idx == 9 or not csvdb["event_linkchooseCsv"][block.event.id + 1] then --全部完成 445 if idx == 9 or not csvdb["event_linkchooseCsv"][block.event.id + 1] then --全部完成
422 local startId = math.floor(block.event.id / 10) * 10 + 1 446 local startId = math.floor(block.event.id / 10) * 10 + 1
423 self.lchoose[startId] = (self.lchoose[startId] or 0) + 1 447 self.lchoose[startId] = (self.lchoose[startId] or 0) + 1
  448 + self:checkAchievement(Adv.AchievType.LinkChoose, 1, startId)
424 else 449 else
425 self.lchoose.ing = block.event.id + 1 --后面会出现后继事件 450 self.lchoose.ing = block.event.id + 1 --后面会出现后继事件
426 end 451 end
@@ -428,7 +453,7 @@ local function clickLinkChoose(self, room, block, params) @@ -428,7 +453,7 @@ local function clickLinkChoose(self, room, block, params)
428 if clearBlock then 453 if clearBlock then
429 block:clear() 454 block:clear()
430 end 455 end
431 - 456 +
432 return true 457 return true
433 end 458 end
434 459
@@ -454,6 +479,7 @@ local function clickTrader(self, room, block, params) @@ -454,6 +479,7 @@ local function clickTrader(self, room, block, params)
454 local reward = self:award({[block.event.shop[buyId][1]] = block.event.shop[buyId][2]}) 479 local reward = self:award({[block.event.shop[buyId][1]] = block.event.shop[buyId][2]})
455 block.event.status = block.event.status:setv(buyId, 1) 480 block.event.status = block.event.status:setv(buyId, 1)
456 self:checkTask(Adv.TaskType.Shop, 1, block.event.id) 481 self:checkTask(Adv.TaskType.Shop, 1, block.event.id)
  482 + self:checkAchievement(Adv.AchievType.Shop, 1, block.event.id)
457 self:backReward(reward) 483 self:backReward(reward)
458 return true 484 return true
459 end 485 end
@@ -483,6 +509,7 @@ local function clickBuild(self, room, block, params) @@ -483,6 +509,7 @@ local function clickBuild(self, room, block, params)
483 if not self:cost(buildData.required:toNumMap(), {}) then return end 509 if not self:cost(buildData.required:toNumMap(), {}) then return end
484 doEffect[effect[1]]() 510 doEffect[effect[1]]()
485 self:checkTask(Adv.TaskType.Build, 1, block.event.id) 511 self:checkTask(Adv.TaskType.Build, 1, block.event.id)
  512 + self:checkAchievement(Adv.AchievType.Build, 1, block.event.id)
486 if clearBlock then 513 if clearBlock then
487 block:clear() 514 block:clear()
488 end 515 end
@@ -526,6 +553,7 @@ local function clickLayer(self, room, block, params) @@ -526,6 +553,7 @@ local function clickLayer(self, room, block, params)
526 553
527 self.maps[mapIdx] = AdvMap.new(self, mapIdx, mapId) 554 self.maps[mapIdx] = AdvMap.new(self, mapIdx, mapId)
528 self.battle:initMapEnemys(mapIdx) 555 self.battle:initMapEnemys(mapIdx)
  556 + self:checkAchievement(Adv.AchievType.EnterILayer, 1, mapId)
529 end 557 end
530 self:backLayer() 558 self:backLayer()
531 return true 559 return true
@@ -625,6 +653,8 @@ function Adv:useItem(itemId, count, target) @@ -625,6 +653,8 @@ function Adv:useItem(itemId, count, target)
625 return 653 return
626 end 654 end
627 655
  656 + self:checkAchievement(Adv.AchievType.UseItem, count, itemId)
  657 +
628 self:afterRound() 658 self:afterRound()
629 self:saveDB() 659 self:saveDB()
630 return true 660 return true
@@ -715,6 +745,7 @@ function Adv:enemyDead(enemy, escape) @@ -715,6 +745,7 @@ function Adv:enemyDead(enemy, escape)
715 end 745 end
716 self:checkTask(Adv.TaskType.Kill, 1, enemyId) 746 self:checkTask(Adv.TaskType.Kill, 1, enemyId)
717 self:checkTask(Adv.TaskType.KillAll) 747 self:checkTask(Adv.TaskType.KillAll)
  748 + self:checkAchievement(Adv.AchievType.Kill, 1, enemyId)
718 end 749 end
719 end 750 end
720 self:backBlockChange(roomId, blockId) 751 self:backBlockChange(roomId, blockId)
src/adv/AdvBlock.lua
@@ -107,6 +107,7 @@ function Block:open() @@ -107,6 +107,7 @@ function Block:open()
107 self.room.map.adv:mapItemChange(effect[2]) 107 self.room.map.adv:mapItemChange(effect[2])
108 end 108 end
109 end 109 end
  110 + adv:checkAchievement(adv.AchievType.Trap, 1, self.event.id)
110 adv:backTrap() 111 adv:backTrap()
111 self:clear() 112 self:clear()
112 end 113 end
src/adv/AdvBuff.lua
@@ -19,6 +19,7 @@ Buff.SP_CHANGE = 15 -- sp变化(每回合) @@ -19,6 +19,7 @@ Buff.SP_CHANGE = 15 -- sp变化(每回合)
19 Buff.HP_CHANGE_NOW = 16 -- 生命变化(每回合生效,立刻生效) 19 Buff.HP_CHANGE_NOW = 16 -- 生命变化(每回合生效,立刻生效)
20 Buff.BATTLE_BUFF = 17 -- 切换为战斗中的buff 20 Buff.BATTLE_BUFF = 17 -- 切换为战斗中的buff
21 Buff.CHANGE_DROP = 18 -- 转换掉落 21 Buff.CHANGE_DROP = 18 -- 转换掉落
  22 +Buff.BATTLE_PASSIVE = 19 -- 切换为战斗中的被动技
22 23
23 --角色一些属性的变化 24 --角色一些属性的变化
24 local function commonAttr(_Buff, attrName) 25 local function commonAttr(_Buff, attrName)
@@ -58,7 +59,7 @@ local BuffFactory = { @@ -58,7 +59,7 @@ local BuffFactory = {
58 if value > 0 then 59 if value > 0 then
59 self.owner:recover(value, self.release) 60 self.owner:recover(value, self.release)
60 elseif value < 0 then 61 elseif value < 0 then
61 - self.owner:hurt(-value, self.release, {hurtType = 2}) 62 + self.owner:hurt(-value, self.release, {hurtType = 2, buffId = self.id})
62 end 63 end
63 end 64 end
64 _Buff._effectValue = function(self) 65 _Buff._effectValue = function(self)
@@ -85,7 +86,7 @@ local BuffFactory = { @@ -85,7 +86,7 @@ local BuffFactory = {
85 if self._changeV > 0 then 86 if self._changeV > 0 then
86 self.owner:recover(self._changeV, self.release) -- 防止release不存在,地图点buff 87 self.owner:recover(self._changeV, self.release) -- 防止release不存在,地图点buff
87 elseif self._changeV < 0 then 88 elseif self._changeV < 0 then
88 - self.owner:hurt(self.release and self.release:getHurtValue(-self._changeV) or -self._changeV, self.release, {hurtType = 2}) 89 + self.owner:hurt(self.release and self.release:getHurtValue(-self._changeV) or -self._changeV, self.release, {hurtType = 2, buffId = self.id})
89 self.owner.hp = math.min(self.owner.hpMax, self.owner.hp) 90 self.owner.hp = math.min(self.owner.hpMax, self.owner.hp)
90 end 91 end
91 end 92 end
@@ -214,7 +215,7 @@ local BuffFactory = { @@ -214,7 +215,7 @@ local BuffFactory = {
214 if value > 0 then 215 if value > 0 then
215 self.owner:recover(value, self.release) 216 self.owner:recover(value, self.release)
216 elseif value < 0 then 217 elseif value < 0 then
217 - self.owner:hurt(-value, self.release, {hurtType = 2}) 218 + self.owner:hurt(-value, self.release, {hurtType = 2, buffId = self.id})
218 end 219 end
219 end 220 end
220 _Buff._effectValue = function(self) 221 _Buff._effectValue = function(self)
@@ -284,7 +285,7 @@ end @@ -284,7 +285,7 @@ end
284 285
285 286
286 function Buff:afterRound() 287 function Buff:afterRound()
287 - if self.isDel or self.owner.isDead or self.buffData.round == 0 then return end 288 + if self.isDel or self.owner.isDead then return end
288 if self.roundSpace > 0 then 289 if self.roundSpace > 0 then
289 self.roundSpace = self.roundSpace - 1 290 self.roundSpace = self.roundSpace - 1
290 self:decRound() 291 self:decRound()
src/adv/AdvPlayer.lua
@@ -289,6 +289,10 @@ function BaseObject:hurt(value, releaser, params) @@ -289,6 +289,10 @@ function BaseObject:hurt(value, releaser, params)
289 team:triggerPassive(Passive.TEAM_DEAD) 289 team:triggerPassive(Passive.TEAM_DEAD)
290 end 290 end
291 291
  292 + if params.hurtType == 2 and self ~= self.battle.player then
  293 + self.battle.adv:checkAchievement(self.battle.adv.AchievType.KillByBuff, 1, params.buffId)
  294 + end
  295 +
292 self.isDead = true 296 self.isDead = true
293 self.battle.adv:backDead(self.id) 297 self.battle.adv:backDead(self.id)
294 end 298 end
@@ -475,7 +479,7 @@ end @@ -475,7 +479,7 @@ end
475 --战斗结束了扣战斗buff次数 479 --战斗结束了扣战斗buff次数
476 function Player:effectBattleBuff() 480 function Player:effectBattleBuff()
477 for _, buff in ipairs(self.buffs) do 481 for _, buff in ipairs(self.buffs) do
478 - if not buff.isDel and buff:getType() == Buff.BATTLE_BUFF then 482 + if not buff.isDel and (buff:getType() == Buff.BATTLE_BUFF or buff:getType() == Buff.BATTLE_PASSIVE) then
479 buff:effect() 483 buff:effect()
480 end 484 end
481 end 485 end
src/adv/AdvTask.lua
@@ -177,6 +177,99 @@ function AdvTask.bind(Adv) @@ -177,6 +177,99 @@ function AdvTask.bind(Adv)
177 end 177 end
178 advTaskChange = {} 178 advTaskChange = {}
179 end 179 end
  180 +
  181 +
  182 +
  183 + ------ 冒险成就 ------------
  184 + Adv.AchievType = {
  185 + StartBattle = 1, --累计挑战N次
  186 + OverWin = 2, --通关N次M层
  187 + TaskLayer = 3, --完成每层任务N次
  188 + UseItem = 4, --使用道具N次
  189 + GetItem = 5, --获得道具N个
  190 + GetMWeapon = 6, --获得神器N个 -todo
  191 + Build = 7, --完成建筑N个
  192 + Choose = 8, --完成事件N个
  193 + Shop = 9, --完成商店N次
  194 + LinkChoose = 10, --完成连锁事件N次
  195 + Trap = 11, --触发陷阱N次
  196 + Kill = 12, --消灭怪物N个
  197 + EnterILayer = 13, --进入夹层N次
  198 + KillByBuff = 14, --使用BUFF消灭敌人N个
  199 + }
  200 +
  201 +
  202 +
  203 + local advAchievChange = {}
  204 +
  205 + local function insertChange(chapterId, taskId, value)
  206 + table.insert(advAchievChange, {type = "advAchiev", field = {chapterId, taskId}, value = value})
  207 + end
  208 +
  209 + function Adv:checkAchievement(taskType, count, cond)
  210 + local advAchiev = self.owner:getProperty("advAchiev")[self.chapterId] or {}
  211 + for taskId , data in pairs(csvdb["adv_achievementCsv"][self.chapterId] or {}) do
  212 + local oldStatus = advAchiev[taskId] or 0
  213 + if oldStatus ~= -1 and data.type == taskType then
  214 + local status
  215 + local checkTaskFunc = {}
  216 + -- checkTaskFunc[Adv.AchievType.] = function()
  217 +
  218 + -- end
  219 + if checkTaskFunc[taskType] then
  220 + status = checkTaskFunc[taskType]()
  221 + else
  222 + if count ~= 0 and (data.value2 == 0 or data.value2 == cond) then
  223 + status = oldStatus + count
  224 + end
  225 + end
  226 + if (status or -1) >= data.value1 then
  227 + status = -1
  228 + end
  229 + if status ~= oldStatus then
  230 + insertChange(self.chapterId, taskId, status)
  231 + if status == -1 then
  232 + local ptcount = (self.owner:getProperty("advAchiev")[self.chapterId] or {})[-1] or 0
  233 + ptcount = ptcount + data.pt
  234 + insertChange(self.chapterId, -1, ptcount)
  235 + end
  236 + end
  237 +
  238 + end
  239 + end
  240 + end
  241 +
  242 + -- --说不用领取 注释掉
  243 + -- function Adv:finishAchievement(chapterId, taskId)
  244 + -- local achievData = (csvdb["adv_achievementCsv"][chapterId] or {})[taskId]
  245 + -- local status = (self.owner:getProperty("advAchiev")[chapterId] or {})[taskId] or -1
  246 +
  247 + -- if status >= achievData.value1 then
  248 + -- insertChange(chapterId, taskId, -1)
  249 + -- local count = (self.owner:getProperty("advAchiev")[chapterId] or {})[-1] or 0
  250 + -- count = count + achievData.pt
  251 + -- insertChange(chapterId, -1, count)
  252 + -- return true
  253 + -- end
  254 + -- end
  255 +
  256 + function Adv:getAchievementReward(chapterId, taskId)
  257 + local count = (self.owner:getProperty("advAchiev")[chapterId] or {})[-1] or 0
  258 + local achievData = (csvdb["adv_achievement_rewardCsv"][chapterId] or {})[taskId]
  259 + local status = ((self.owner:getProperty("advAchiev")[chapterId] or {})["pts"] or {})[taskId] or 0
  260 + if status == -1 or count < achievData.pt then return end
  261 +
  262 + local reward = self.owner:award(achievData.reward)
  263 + self.owner:changeUpdates({{type = "advAchiev", field = {chapterId, "pts", taskId}, value = -1}}, notNotify)
  264 +
  265 + return true, reward
  266 + end
  267 +
  268 + function Adv:updateAchievement(notNotify)
  269 + if not next(advAchievChange) then return end
  270 + self.owner:changeUpdates(advAchievChange, notNotify)
  271 + end
  272 +
180 end 273 end
181 274
182 275
src/models/Role.lua
@@ -51,8 +51,8 @@ Role.schema = { @@ -51,8 +51,8 @@ Role.schema = {
51 advHang = {"table", {}}, -- 挂机信息 -- {chapterId = {format = teaminfo, time = endtime}} 51 advHang = {"table", {}}, -- 挂机信息 -- {chapterId = {format = teaminfo, time = endtime}}
52 advTask = {"table", {}}, -- 冒险已领取任务完成状态 {id = status} --每层重置 52 advTask = {"table", {}}, -- 冒险已领取任务完成状态 {id = status} --每层重置
53 advMTask = {"table", {id = 1, status = 0, lock = true}}, -- 冒险主线任务 -- {id = id, status = status, lock = true} -- 当前主线id 当前主线状态 是否锁定状态 53 advMTask = {"table", {id = 1, status = 0, lock = true}}, -- 冒险主线任务 -- {id = id, status = status, lock = true} -- 当前主线id 当前主线状态 是否锁定状态
54 - advAchiev = {"table", {}}, -- 冒险成就 {chapterId = {achievId = status}}  
55 - advL = {"number", 1}, -- 冒险队等级 54 + advAchiev = {"table", {}}, -- 冒险成就 {chapterId = {achievId = status, -1 = pt, pts = {}}, }
  55 + advL = {"table", {0, 0}}, -- 冒险队等级 {lv, winCount}
56 advElM = {"number", 0}, -- 无尽模式通关的最高层数 endless max layer 56 advElM = {"number", 0}, -- 无尽模式通关的最高层数 endless max layer
57 advElS = {"number", globalCsv.adv_endless_season}, -- 无尽模式记录的赛季 endless season 57 advElS = {"number", globalCsv.adv_endless_season}, -- 无尽模式记录的赛季 endless season
58 58