Commit 7d44dca251802172fcfbfbc168c417010d2cc833
1 parent
f9c6cac9
支援技能升级逻辑
Showing
2 changed files
with
35 additions
and
0 deletions
Show diff stats
src/ProtocolCode.lua
| @@ -62,6 +62,7 @@ actionCodes = { | @@ -62,6 +62,7 @@ actionCodes = { | ||
| 62 | Diner_getSellRewardRpc = 302, | 62 | Diner_getSellRewardRpc = 302, |
| 63 | Diner_levelUpRpc = 303, | 63 | Diner_levelUpRpc = 303, |
| 64 | Diner_talentUpRpc = 304, | 64 | Diner_talentUpRpc = 304, |
| 65 | + Diner_skillUpRpc = 305, | ||
| 65 | } | 66 | } |
| 66 | 67 | ||
| 67 | rpcResponseBegin = 10000 | 68 | rpcResponseBegin = 10000 |
src/actions/DinerAction.lua
| @@ -164,4 +164,38 @@ function _M.talentUpRpc( agent, data ) | @@ -164,4 +164,38 @@ function _M.talentUpRpc( agent, data ) | ||
| 164 | return true | 164 | return true |
| 165 | end | 165 | end |
| 166 | 166 | ||
| 167 | +function _M.skillUpRpc( agent, data ) | ||
| 168 | + local role = agent.role | ||
| 169 | + local msg = MsgPack.unpack(data) | ||
| 170 | + | ||
| 171 | + local skill = msg.skill | ||
| 172 | + local skillSet = csvdb["diner_skillCsv"][skill] | ||
| 173 | + if not skillSet then | ||
| 174 | + return | ||
| 175 | + end | ||
| 176 | + | ||
| 177 | + local skillTree = role.dinerData:getProperty("skillTree") | ||
| 178 | + local skillLevel = skillTree:getv(skill, 1) | ||
| 179 | + local skillData = skillSet[skillLevel] | ||
| 180 | + if not skillData then | ||
| 181 | + return | ||
| 182 | + end | ||
| 183 | + if skillData.unlock ~= "" then | ||
| 184 | + local id, level = skillData.unlock:math("(%d+)=(%d+)") | ||
| 185 | + if skillTree:getv(tonumber(id), 1) < tonumber(level) then | ||
| 186 | + return | ||
| 187 | + end | ||
| 188 | + end | ||
| 189 | + local cost = skillData.cost:toNumMap() | ||
| 190 | + if not role:checkItemEnough(cost) then | ||
| 191 | + return | ||
| 192 | + end | ||
| 193 | + | ||
| 194 | + role:costItems(cost) | ||
| 195 | + role.dinerData:updateProperty({field = "skillTree", value = skillTree:setv(skill, skillLevel + 1)}) | ||
| 196 | + | ||
| 197 | + SendPacket(actionCodes.Diner_skillUpRpc, '') | ||
| 198 | + return true | ||
| 199 | +end | ||
| 200 | + | ||
| 167 | return _M | 201 | return _M |
| 168 | \ No newline at end of file | 202 | \ No newline at end of file |