Commit bab3066620f5d7fb835982fe3d857b467fed3498

Authored by zhouhaihai
1 parent f99f48df

增加通用功能等级 字段

@@ -46,12 +46,19 @@ ItemType = { @@ -46,12 +46,19 @@ ItemType = {
46 FuncOpen = 15, -- 管理功能开放 46 FuncOpen = 15, -- 管理功能开放
47 } 47 }
48 48
  49 +--在这个里面的会记录的是功能开放 对应类型open 而不是 ID
49 FuncOpenType = { 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 -- 物品起始id 62 -- 物品起始id
56 ItemStartId = { 63 ItemStartId = {
57 Hero = 300, -- 英雄 64 Hero = 300, -- 英雄
src/ProtocolCode.lua
@@ -40,6 +40,7 @@ actionCodes = { @@ -40,6 +40,7 @@ actionCodes = {
40 Adv_endHangRpc = 159, 40 Adv_endHangRpc = 159,
41 Adv_buyAdvCountRpc = 160, 41 Adv_buyAdvCountRpc = 160,
42 Adv_finishTaskRpc = 161, 42 Adv_finishTaskRpc = 161,
  43 + Adv_workshopRpc = 162,
43 44
44 Hero_loadInfos = 201, 45 Hero_loadInfos = 201,
45 Hero_updateProperty = 202, 46 Hero_updateProperty = 202,
src/actions/AdvAction.lua
@@ -315,6 +315,33 @@ function _M.endBattleRpc(agent, data) @@ -315,6 +315,33 @@ function _M.endBattleRpc(agent, data)
315 return true 315 return true
316 end 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 return _M 347 return _M
321 \ No newline at end of file 348 \ No newline at end of file
src/models/Daily.lua
@@ -12,6 +12,7 @@ Daily.schema = { @@ -12,6 +12,7 @@ Daily.schema = {
12 dinerQC = {"number", 0}, -- 贩卖加速次数 12 dinerQC = {"number", 0}, -- 贩卖加速次数
13 advC = {"number", 0}, -- 冒险次数(消耗体力) 13 advC = {"number", 0}, -- 冒险次数(消耗体力)
14 advBC = {"number", 0}, -- 冒险次数购买次数(冒险体力购买次数) 14 advBC = {"number", 0}, -- 冒险次数购买次数(冒险体力购买次数)
  15 + advWs = {"table", {}}, -- 冒险队工坊
15 } 16 }
16 17
17 function Daily:updateProperty(params) 18 function Daily:updateProperty(params)
@@ -48,6 +49,7 @@ function Daily:data() @@ -48,6 +49,7 @@ function Daily:data()
48 dinerQC = self:getProperty("dinerQC"), 49 dinerQC = self:getProperty("dinerQC"),
49 advC = self:getProperty("advC"), 50 advC = self:getProperty("advC"),
50 advBC = self:getProperty("advBC"), 51 advBC = self:getProperty("advBC"),
  52 + advWs = self:getProperty("advWs"),
51 } 53 }
52 end 54 end
53 55
src/models/Role.lua
@@ -37,6 +37,7 @@ Role.schema = { @@ -37,6 +37,7 @@ Role.schema = {
37 exp = {"number", 0}, 37 exp = {"number", 0},
38 items = {"string", ""}, 38 items = {"string", ""},
39 funcOpen = {"table", {}}, --功能是否开放 39 funcOpen = {"table", {}}, --功能是否开放
  40 + funcLv = {"table", {}}, --功能等级
40 loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL 41 loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL
41 crown = {"number", 0}, -- 看伴娘 42 crown = {"number", 0}, -- 看伴娘
42 43
@@ -51,6 +52,8 @@ Role.schema = { @@ -51,6 +52,8 @@ Role.schema = {
51 advTask = {"table", {}}, -- 冒险已领取任务完成状态 {id = status} --每层重置 52 advTask = {"table", {}}, -- 冒险已领取任务完成状态 {id = status} --每层重置
52 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 当前主线状态 是否锁定状态
53 advAchiev = {"table", {}}, -- 冒险成就 {chapterId = {achievId = status}} 54 advAchiev = {"table", {}}, -- 冒险成就 {chapterId = {achievId = status}}
  55 + advL = {"number", 1}, -- 冒险队等级
  56 +
54 --挂机相关 57 --挂机相关
55 hangPass = {"table", {}}, -- 挂机通过的最大关卡 58 hangPass = {"table", {}}, -- 挂机通过的最大关卡
56 hangTeam = {"table", {}}, -- 挂机队伍 59 hangTeam = {"table", {}}, -- 挂机队伍
@@ -175,6 +178,7 @@ function Role:data() @@ -175,6 +178,7 @@ function Role:data()
175 exp = self:getProperty("exp"), 178 exp = self:getProperty("exp"),
176 items = self:getProperty("items"):toNumMap(), 179 items = self:getProperty("items"):toNumMap(),
177 funcOpen = self:getProperty("funcOpen"), 180 funcOpen = self:getProperty("funcOpen"),
  181 + funcLv = self:getProperty("funcLv"),
178 loveStatus = self:getProperty("loveStatus"):toNumMap(), 182 loveStatus = self:getProperty("loveStatus"):toNumMap(),
179 diamond = self:getAllDiamond(), 183 diamond = self:getAllDiamond(),
180 bagLimit = self:getProperty("bagLimit"), 184 bagLimit = self:getProperty("bagLimit"),
@@ -186,6 +190,8 @@ function Role:data() @@ -186,6 +190,8 @@ function Role:data()
186 advHang = self:getProperty("advHang"), 190 advHang = self:getProperty("advHang"),
187 advTask = self:getProperty("advTask"), 191 advTask = self:getProperty("advTask"),
188 advMTask = self:getProperty("advMTask"), 192 advMTask = self:getProperty("advMTask"),
  193 + advAchiev = self:getProperty("advAchiev"),
  194 + advL = self:getProperty("advL"),
189 195
190 hangPass = self:getProperty("hangPass"), 196 hangPass = self:getProperty("hangPass"),
191 hangTeam = self:getProperty("hangTeam"), 197 hangTeam = self:getProperty("hangTeam"),
src/models/RolePlugin.lua
@@ -593,15 +593,23 @@ function RolePlugin.bind(Role) @@ -593,15 +593,23 @@ function RolePlugin.bind(Role)
593 return self:getProperty("funcOpen")[func] == 1 593 return self:getProperty("funcOpen")[func] == 1
594 end 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 end 598 end
601 599
602 - function Role:funcClose(func) 600 + function Role:funcOpen(func)
603 if csvdb["itemCsv"][func] and csvdb["itemCsv"][func].type == ItemType.FuncOpen then 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 end 613 end
606 end 614 end
607 615