Commit bab3066620f5d7fb835982fe3d857b467fed3498
1 parent
f99f48df
增加通用功能等级 字段
Showing
6 changed files
with
60 additions
and
9 deletions
Show diff stats
src/GlobalVar.lua
@@ -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 |