Commit bab3066620f5d7fb835982fe3d857b467fed3498

Authored by zhouhaihai
1 parent f99f48df

增加通用功能等级 字段

src/GlobalVar.lua
... ... @@ -46,12 +46,19 @@ ItemType = {
46 46 FuncOpen = 15, -- 管理功能开放
47 47 }
48 48  
  49 +--在这个里面的会记录的是功能开放 对应类型open 而不是 ID
49 50 FuncOpenType = {
50   - AdvEndless = 5919, -- 无尽模式
51   - AdvRelay = 5920, -- 中继开放
52   - AdvArtifact = 5921, -- 神器开放
  51 + AdvEndless = 2, -- 无尽模式
  52 + AdvRelay = 3, -- 中继开放
  53 + AdvArtifact = 4, -- 神器开放
  54 + AdvWS = 6, -- 工坊解锁
53 55 }
54 56  
  57 +TypeIsFunc = {}
  58 +for _, v in pairs(FuncOpenType) do
  59 + TypeIsFunc[v] = true
  60 +end
  61 +
55 62 -- 物品起始id
56 63 ItemStartId = {
57 64 Hero = 300, -- 英雄
... ...
src/ProtocolCode.lua
... ... @@ -40,6 +40,7 @@ actionCodes = {
40 40 Adv_endHangRpc = 159,
41 41 Adv_buyAdvCountRpc = 160,
42 42 Adv_finishTaskRpc = 161,
  43 + Adv_workshopRpc = 162,
43 44  
44 45 Hero_loadInfos = 201,
45 46 Hero_updateProperty = 202,
... ...
src/actions/AdvAction.lua
... ... @@ -315,6 +315,33 @@ function _M.endBattleRpc(agent, data)
315 315 return true
316 316 end
317 317  
  318 +function _M.workshopRpc(agent, data)
  319 + local role = agent.role
  320 + local msg = MsgPack.unpack(data)
  321 +
  322 + local id = msg.id
  323 + local count = msg.count or 1
  324 + local mergeData = csvdb["adv_mergeCsv"][id]
  325 + if not mergeData then return 1 end
  326 +
  327 + if not role:isFuncOpen(FuncOpenType.AdvWS) or role:getFuncLv(FuncOpenType.AdvWS) < mergeData.unlock then return 2 end
  328 +
  329 + local advWs = role.dailyData:getProperty("advWs")
  330 + if math.illegalNum(count, 1, mergeData.limit - (advWs[id] or 0)) then return 3 end
  331 +
  332 + local cost = mergeData.formula:toNumMap()
  333 + for k, v in pairs(cost) do
  334 + cost[k] = v * count
  335 + end
  336 + if not role:checkItemEnough(cost) then return 4 end
  337 +
  338 + role:costItems(cost)
  339 + advWs[id] = (advWs[id] or 0) + count
  340 + role.dailyData:updateProperty({field = advWs, value = advWs})
  341 + local reward = role:award({[id] = count})
  342 + SendPacket(actionCodes.Adv_workshopRpc, MsgPack.pack({reward = reward}))
  343 + return true
  344 +end
318 345  
319 346  
320 347 return _M
321 348 \ No newline at end of file
... ...
src/models/Daily.lua
... ... @@ -12,6 +12,7 @@ Daily.schema = {
12 12 dinerQC = {"number", 0}, -- 贩卖加速次数
13 13 advC = {"number", 0}, -- 冒险次数(消耗体力)
14 14 advBC = {"number", 0}, -- 冒险次数购买次数(冒险体力购买次数)
  15 + advWs = {"table", {}}, -- 冒险队工坊
15 16 }
16 17  
17 18 function Daily:updateProperty(params)
... ... @@ -48,6 +49,7 @@ function Daily:data()
48 49 dinerQC = self:getProperty("dinerQC"),
49 50 advC = self:getProperty("advC"),
50 51 advBC = self:getProperty("advBC"),
  52 + advWs = self:getProperty("advWs"),
51 53 }
52 54 end
53 55  
... ...
src/models/Role.lua
... ... @@ -37,6 +37,7 @@ Role.schema = {
37 37 exp = {"number", 0},
38 38 items = {"string", ""},
39 39 funcOpen = {"table", {}}, --功能是否开放
  40 + funcLv = {"table", {}}, --功能等级
40 41 loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL
41 42 crown = {"number", 0}, -- 看伴娘
42 43  
... ... @@ -51,6 +52,8 @@ Role.schema = {
51 52 advTask = {"table", {}}, -- 冒险已领取任务完成状态 {id = status} --每层重置
52 53 advMTask = {"table", {id = 1, status = 0, lock = true}}, -- 冒险主线任务 -- {id = id, status = status, lock = true} -- 当前主线id 当前主线状态 是否锁定状态
53 54 advAchiev = {"table", {}}, -- 冒险成就 {chapterId = {achievId = status}}
  55 + advL = {"number", 1}, -- 冒险队等级
  56 +
54 57 --挂机相关
55 58 hangPass = {"table", {}}, -- 挂机通过的最大关卡
56 59 hangTeam = {"table", {}}, -- 挂机队伍
... ... @@ -175,6 +178,7 @@ function Role:data()
175 178 exp = self:getProperty("exp"),
176 179 items = self:getProperty("items"):toNumMap(),
177 180 funcOpen = self:getProperty("funcOpen"),
  181 + funcLv = self:getProperty("funcLv"),
178 182 loveStatus = self:getProperty("loveStatus"):toNumMap(),
179 183 diamond = self:getAllDiamond(),
180 184 bagLimit = self:getProperty("bagLimit"),
... ... @@ -186,6 +190,8 @@ function Role:data()
186 190 advHang = self:getProperty("advHang"),
187 191 advTask = self:getProperty("advTask"),
188 192 advMTask = self:getProperty("advMTask"),
  193 + advAchiev = self:getProperty("advAchiev"),
  194 + advL = self:getProperty("advL"),
189 195  
190 196 hangPass = self:getProperty("hangPass"),
191 197 hangTeam = self:getProperty("hangTeam"),
... ...
src/models/RolePlugin.lua
... ... @@ -593,15 +593,23 @@ function RolePlugin.bind(Role)
593 593 return self:getProperty("funcOpen")[func] == 1
594 594 end
595 595  
596   - function Role:funcOpen(func)
597   - if csvdb["itemCsv"][func] and csvdb["itemCsv"][func].type == ItemType.FuncOpen then
598   - self:changeUpdates({{type = "funcOpen", field = func, value = 1}})
599   - end
  596 + function Role:getFuncLv(func)
  597 + return self:getProperty("funcLv")[func] or 1
600 598 end
601 599  
602   - function Role:funcClose(func)
  600 + function Role:funcOpen(func)
603 601 if csvdb["itemCsv"][func] and csvdb["itemCsv"][func].type == ItemType.FuncOpen then
604   - self:changeUpdates({{type = "funcOpen", field = func, value = nil}})
  602 + local unlockData = csvdb["unlockCsv"][func]
  603 + if TypeIsFunc[unlockData.type] then
  604 + if unlockData.value1 == 0 or unlockData.value1 == 1 then
  605 + self:changeUpdates({{type = "funcOpen", field = unlockData.type, value = 1}})
  606 + else
  607 + local oldV = self:getFuncLv(unlockData.type)
  608 + self:changeUpdates({{type = "funcLv", field = unlockData.type, value = oldV + 1}})
  609 + end
  610 + else
  611 + self:changeUpdates({{type = "funcOpen", field = func, value = 1}})
  612 + end
605 613 end
606 614 end
607 615  
... ...