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 | ... | ... |