Commit ee3ac0b544a8841b9607a77caa27cdd04120868b
1 parent
ad484303
fix magic
Showing
3 changed files
with
44 additions
and
18 deletions
Show diff stats
src/actions/HeroAction.lua
... | ... | @@ -521,14 +521,47 @@ function _M.referEquipsRpc(agent, data) |
521 | 521 | return true |
522 | 522 | end |
523 | 523 | |
524 | --- typ 位置,id等级对应唯一符文,id为0时为移除,不为0时无则装备,有则替换 | |
525 | -function _M.referRunes(agent, data) | |
524 | +-- typ 位置,uid对应唯一符文,uid为0时为移除,不为0时无则装备,有则替换 | |
525 | +function _M.referRunesRpc(agent, data) | |
526 | 526 | local role = agent.role |
527 | 527 | local msg = MsgPack.unpack(data) |
528 | 528 | local hero = role.heros[msg.id] |
529 | 529 | if not hero then return 10 end |
530 | 530 | local runes = msg.runes |
531 | 531 | if not runes or not next(runes) then return 11 end |
532 | + | |
533 | + for typ,uid in pairs(runes) do | |
534 | + local referUid = hero:getProperty("rune"):getv(typ,0) | |
535 | + if uid == 0 then | |
536 | + if referUid == 0 then return 2 end | |
537 | + else | |
538 | + local ownRune = role.runeBag[uid] | |
539 | + if not ownRune then return 3 end | |
540 | + if ownRune:getProperty("refer") ~= 0 then return 4 end | |
541 | + | |
542 | + local runeSet = csvdb["runeCsv"][typ] | |
543 | + if not runeSet then return 5 end | |
544 | + local runeData = runeSet[ownRune.id] | |
545 | + if not runeData then return 6 end | |
546 | + end | |
547 | + end | |
548 | + | |
549 | + for typ,uid in pairs(runes) do | |
550 | + local referUid = hero:getProperty("rune"):getv(typ,0) | |
551 | + if uid == 0 then | |
552 | + local referRune = role.runeBag[referUid] | |
553 | + referRune:updateProperty({field = "refer",value = 0}) | |
554 | + else | |
555 | + if referUid ~= 0 then | |
556 | + local referRune = role.runeBag[referUid] | |
557 | + referRune:updateProperty({field = "refer",value = 0}) | |
558 | + end | |
559 | + local ownRune = role.runeBag[uid] | |
560 | + ownRune:updateProperty({field = "refer",value = hero:getProperty("id")}) | |
561 | + end | |
562 | + hero:updateProperty({field = "rune", value = hero:getProperty("equip"):setv(typ,uid)}) | |
563 | + end | |
564 | + SendPacket(actionCodes.Hero_referRunesRpc, "") | |
532 | 565 | return true |
533 | 566 | end |
534 | 567 | ... | ... |
src/models/RolePlugin.lua
... | ... | @@ -481,18 +481,14 @@ function RolePlugin.bind(Role) |
481 | 481 | end |
482 | 482 | end |
483 | 483 | |
484 | - function Role:getRuneCount(id,lv) | |
485 | - local runeSet = self.runeBag[id] | |
486 | - if runeSet then | |
487 | - local rune = runeSet[lv] | |
488 | - if rune then | |
489 | - return rune:getProperty("count") | |
490 | - else | |
491 | - return 0 | |
484 | + function Role:getRuneByType(typ) | |
485 | + local runeSet = {} | |
486 | + for _,v in pairs(self.runeBag) do | |
487 | + if v.type == typ then | |
488 | + table.insert(runeSet,v) | |
492 | 489 | end |
493 | - else | |
494 | - return 0 | |
495 | 490 | end |
491 | + return runeSet | |
496 | 492 | end |
497 | 493 | |
498 | 494 | function Role:getAdvData() | ... | ... |
src/models/Rune.lua
... | ... | @@ -65,18 +65,15 @@ local function getRandomValue(types,values) |
65 | 65 | |
66 | 66 | local range = valueArry[tk]:toArray(true,"=") |
67 | 67 | value = math.random(range[1],range[2]) |
68 | - print("typ "..typ.." value "..value) | |
69 | 68 | return typ,value |
70 | 69 | end |
71 | 70 | |
72 | 71 | function Rune:generateAttrs() |
73 | 72 | local runeData = csvdb["runeCsv"][self:getProperty("type")][self:getProperty("id")] |
74 | 73 | local attrs = "" |
75 | - attrs:setv(1,20) | |
76 | - attrs:setv(getRandomValue(runeData.attr1,runeData.range1)) | |
77 | - attrs:setv(getRandomValue(runeData.attr2,runeData.range2)) | |
78 | - print(attrs) | |
79 | - self:setProperty("attrs","2=30") | |
74 | + attrs = attrs:setv(getRandomValue(runeData.attr1,runeData.range1)) | |
75 | + attrs = attrs:setv(getRandomValue(runeData.attr2,runeData.range2)) | |
76 | + self:setProperty("attrs",attrs) | |
80 | 77 | end |
81 | 78 | |
82 | 79 | function Rune:data() | ... | ... |