Commit ee3ac0b544a8841b9607a77caa27cdd04120868b

Authored by gaofengduan
1 parent ad484303

fix magic

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