From 7d44dca251802172fcfbfbc168c417010d2cc833 Mon Sep 17 00:00:00 2001 From: zhengshouren <448949750@qq.com> Date: Tue, 14 May 2019 15:30:58 +0800 Subject: [PATCH] 支援技能升级逻辑 --- src/ProtocolCode.lua | 1 + src/actions/DinerAction.lua | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-) diff --git a/src/ProtocolCode.lua b/src/ProtocolCode.lua index 3c61358..51142ff 100644 --- a/src/ProtocolCode.lua +++ b/src/ProtocolCode.lua @@ -62,6 +62,7 @@ actionCodes = { Diner_getSellRewardRpc = 302, Diner_levelUpRpc = 303, Diner_talentUpRpc = 304, + Diner_skillUpRpc = 305, } rpcResponseBegin = 10000 diff --git a/src/actions/DinerAction.lua b/src/actions/DinerAction.lua index efb8083..d33d8ce 100644 --- a/src/actions/DinerAction.lua +++ b/src/actions/DinerAction.lua @@ -164,4 +164,38 @@ function _M.talentUpRpc( agent, data ) return true end +function _M.skillUpRpc( agent, data ) + local role = agent.role + local msg = MsgPack.unpack(data) + + local skill = msg.skill + local skillSet = csvdb["diner_skillCsv"][skill] + if not skillSet then + return + end + + local skillTree = role.dinerData:getProperty("skillTree") + local skillLevel = skillTree:getv(skill, 1) + local skillData = skillSet[skillLevel] + if not skillData then + return + end + if skillData.unlock ~= "" then + local id, level = skillData.unlock:math("(%d+)=(%d+)") + if skillTree:getv(tonumber(id), 1) < tonumber(level) then + return + end + end + local cost = skillData.cost:toNumMap() + if not role:checkItemEnough(cost) then + return + end + + role:costItems(cost) + role.dinerData:updateProperty({field = "skillTree", value = skillTree:setv(skill, skillLevel + 1)}) + + SendPacket(actionCodes.Diner_skillUpRpc, '') + return true +end + return _M \ No newline at end of file -- libgit2 0.21.2