Commit 659fe2008df897cb084bdaef7217e505e3acbf41
1 parent
d593a874
feat: 天赋点
1. 增加指令228 2. 增加天赋树字段genius 3. 增加检验天赋树的逻辑
Showing
4 changed files
with
86 additions
and
0 deletions
Show diff stats
src/ProtocolCode.lua
src/actions/GmAction.lua
| ... | ... | @@ -1011,4 +1011,17 @@ function _M.treasure(role, pms) |
| 1011 | 1011 | end |
| 1012 | 1012 | end |
| 1013 | 1013 | |
| 1014 | +table.insert(helpDes, {"天赋点设置", "savegenius", "heroId", "wakeL", "awake"}) | |
| 1015 | +function _M.savegenius(role, pms) | |
| 1016 | + local heroId = pms.pm1 | |
| 1017 | + local wakeL = pms.pm2 | |
| 1018 | + local awake = pms.pm3 | |
| 1019 | + local hero = role.heros[tonumber(heroId)] | |
| 1020 | + | |
| 1021 | + if not hero then return "英雄不存在" end | |
| 1022 | + local genius = hero:saveGeniusTree(wakeL, awake) | |
| 1023 | + print(genius) | |
| 1024 | + return "天赋点设置成功" | |
| 1025 | +end | |
| 1026 | + | |
| 1014 | 1027 | return _M |
| 1015 | 1028 | \ No newline at end of file | ... | ... |
src/actions/HeroAction.lua
| ... | ... | @@ -1277,4 +1277,25 @@ function _M.changeSparkRpc(agent, data) |
| 1277 | 1277 | return true |
| 1278 | 1278 | end |
| 1279 | 1279 | |
| 1280 | +function _M.saveGeniusTreeRpc(agent, data) | |
| 1281 | + local role = agent.role | |
| 1282 | + local msg = MsgPack.unpack(data) | |
| 1283 | + | |
| 1284 | + local awake = msg.awake | |
| 1285 | + local wakeL = msg.wakeL | |
| 1286 | + local heroId = msg.hero_id | |
| 1287 | + local hero = role.heros[tonumber(heroId)] | |
| 1288 | + | |
| 1289 | + if not hero then print("hero is nil") return 0 end | |
| 1290 | + local genius = hero:saveGeniusTree(wakeL, awake) | |
| 1291 | + if #genius == 0 then | |
| 1292 | + genius = "" | |
| 1293 | + end | |
| 1294 | + hero:updateProperty({field="genius", value=genius}) | |
| 1295 | + print("genius:") | |
| 1296 | + print(#genius) | |
| 1297 | + SendPacket(actionCodes.Hero_saveGeniusTreeRpc, MsgPack.pack({genius = genius})) | |
| 1298 | + return true | |
| 1299 | +end | |
| 1300 | + | |
| 1280 | 1301 | return _M | ... | ... |
src/models/HeroPlugin.lua
| ... | ... | @@ -384,6 +384,57 @@ function HeroPlugin.bind(Hero) |
| 384 | 384 | self:mylog({desc = "addFaith", int1 = exp}) |
| 385 | 385 | end |
| 386 | 386 | |
| 387 | + --检验天赋树是否合理 | |
| 388 | + function Hero:checkGeniusTree(genius) | |
| 389 | + local maxWakeL = 0 | |
| 390 | + local star = self:getProperty("wakeL") | |
| 391 | + if star < 4 then return maxWakeL end | |
| 392 | + if #genius == 0 then return maxWakeL end | |
| 393 | + | |
| 394 | + local geniusTree = genius:toNumMap() | |
| 395 | + local tmpgenius = "" | |
| 396 | + for wakeL, val in pairs(geniusTree) do | |
| 397 | + print("wakeL:") | |
| 398 | + print(wakeL) | |
| 399 | + if wakeL < 4 then return maxWakeL end | |
| 400 | + if wakeL % 2 == 0 then | |
| 401 | + if geniusTree[wakeL+1] and geniusTree[wakeL+1] ~= val then | |
| 402 | + return 0 | |
| 403 | + end | |
| 404 | + end | |
| 405 | + maxWakeL = math.max(maxWakeL, wakeL) | |
| 406 | + if #tmpgenius == 0 then | |
| 407 | + tmpgenius = string.format("%s=%s", tostring(wakeL), tostring(val)) | |
| 408 | + else | |
| 409 | + tmpgenius = string.format("%s %s=%s", tmpgenius, tostring(wakeL), tostring(val)) | |
| 410 | + end | |
| 411 | + end | |
| 412 | + return tonumber(maxWakeL),tmpgenius | |
| 413 | + end | |
| 414 | + | |
| 415 | + function Hero:saveGeniusTree(wakeL, awake) | |
| 416 | + local genius = self:getProperty("genius") | |
| 417 | + local tid = self:getProperty("type") | |
| 418 | + if not wakeL and not awake then return "" end | |
| 419 | + | |
| 420 | + | |
| 421 | + local heroUnit = csvdb["unitCsv"][tid] | |
| 422 | + if not heroUnit then return genius end | |
| 423 | + if not heroUnit.awake_1 or not heroUnit.awake_2 then return genius end | |
| 424 | + | |
| 425 | + if #genius == 0 then | |
| 426 | + genius = string.format("%s=%s", tostring(wakeL), tostring(awake)) | |
| 427 | + else | |
| 428 | + genius = string.format("%s %s=%s", genius, tostring(wakeL), tostring(awake)) | |
| 429 | + end | |
| 430 | + | |
| 431 | + local maxWakeL, genius = self:checkGeniusTree(genius) | |
| 432 | + if maxWakeL ~= wakeL then | |
| 433 | + genius = self:getProperty("genius") | |
| 434 | + end | |
| 435 | + return genius | |
| 436 | + end | |
| 437 | + | |
| 387 | 438 | end |
| 388 | 439 | |
| 389 | 440 | ... | ... |