Commit ee999bde1e1fe576ded87a907936ac46513cd4f3
1 parent
056c01a0
零件优化
Showing
6 changed files
with
58 additions
and
44 deletions
Show diff stats
src/ProtocolCode.lua
src/actions/GmAction.lua
src/actions/HeroAction.lua
| ... | ... | @@ -517,19 +517,17 @@ function _M.referEquipsRpc(agent, data) |
| 517 | 517 | for typ = 1, 4 do -- 4件装备 |
| 518 | 518 | if equips[typ] then |
| 519 | 519 | local cur = curEquip:getv(typ, 0) |
| 520 | - if equips[typ] == 0 then | |
| 521 | - if cur ~= 0 then | |
| 522 | - role:addEquip(typ, cur, 1) -- 脱掉 | |
| 520 | + if cur ~= equips[typ] then | |
| 521 | + if equips[typ] == 0 then | |
| 523 | 522 | curEquip = curEquip:delk(typ) |
| 524 | - end | |
| 525 | - else | |
| 526 | - if cur ~= equips[typ] then | |
| 527 | - if cur ~= 0 then | |
| 528 | - role:addEquip(typ, cur, 1) -- 脱掉 | |
| 529 | - end | |
| 523 | + else | |
| 530 | 524 | role:addEquip(typ, equips[typ], -1) -- 穿上 |
| 531 | 525 | curEquip = curEquip:setv(typ, equips[typ]) |
| 532 | 526 | end |
| 527 | + | |
| 528 | + if cur ~= 0 then | |
| 529 | + role:addEquip(typ, cur, 1) -- 脱掉 | |
| 530 | + end | |
| 533 | 531 | end |
| 534 | 532 | end |
| 535 | 533 | end |
| ... | ... | @@ -549,37 +547,35 @@ function _M.referRunesRpc(agent, data) |
| 549 | 547 | local runes = msg.runes |
| 550 | 548 | if not runes or not next(runes) then return 11 end |
| 551 | 549 | |
| 552 | - for typ,uid in pairs(runes) do | |
| 553 | - local referUid = hero:getProperty("rune"):getv(typ,0) | |
| 554 | - if uid == 0 then | |
| 555 | - if referUid == 0 then return 2 end | |
| 556 | - else | |
| 557 | - local ownRune = role.runeBag[uid] | |
| 558 | - if not ownRune then return 3 end | |
| 559 | - if ownRune:getProperty("refer") ~= 0 then return 4 end | |
| 560 | - | |
| 561 | - local runeSet = csvdb["runeCsv"][typ] | |
| 562 | - if not runeSet then return 5 end | |
| 563 | - local runeData = runeSet[ownRune:getProperty("id")] | |
| 564 | - if not runeData then return 6 end | |
| 550 | + for typ = 1, 6 do | |
| 551 | + if runes[typ] and runes[typ] ~= 0 then | |
| 552 | + local ownRune = role.runeBag[runes[typ]] | |
| 553 | + if not ownRune then return end | |
| 554 | + if ownRune:getProperty("refer") ~= 0 then return end | |
| 565 | 555 | end |
| 566 | 556 | end |
| 557 | + local curRune = hero:getProperty("rune") | |
| 558 | + for typ = 1, 6 do | |
| 559 | + if runes[typ] then | |
| 560 | + local cur = curRune:getv(typ, 0) | |
| 561 | + if cur ~= runes[typ] then | |
| 562 | + if runes[typ] == 0 then | |
| 563 | + curRune = curRune:delk(typ) | |
| 564 | + else | |
| 565 | + local newRune = role.runeBag[runes[typ]] | |
| 566 | + newRune:updateProperty({field = "refer",value = hero:getProperty("id")}) | |
| 567 | + curRune = curRune:delk(typ) | |
| 568 | + end | |
| 567 | 569 | |
| 568 | - for typ,uid in pairs(runes) do | |
| 569 | - local referUid = hero:getProperty("rune"):getv(typ,0) | |
| 570 | - if uid == 0 then | |
| 571 | - local referRune = role.runeBag[referUid] | |
| 572 | - referRune:updateProperty({field = "refer",value = 0}) | |
| 573 | - else | |
| 574 | - if referUid ~= 0 then | |
| 575 | - local referRune = role.runeBag[referUid] | |
| 576 | - referRune:updateProperty({field = "refer",value = 0}) | |
| 570 | + if cur ~= 0 then | |
| 571 | + local oldR = role.runeBag[cur] | |
| 572 | + if oldR then | |
| 573 | + oldR:updateProperty({field = "refer",value = 0}) | |
| 574 | + end | |
| 575 | + end | |
| 577 | 576 | end |
| 578 | - local ownRune = role.runeBag[uid] | |
| 579 | - ownRune:updateProperty({field = "refer",value = hero:getProperty("id")}) | |
| 580 | 577 | end |
| 581 | - local x = hero:getProperty("rune"):setv(typ,uid) | |
| 582 | - hero:updateProperty({field = "rune", value = x}) | |
| 578 | + hero:updateProperty({field = "rune", value = curRune}) | |
| 583 | 579 | end |
| 584 | 580 | SendPacket(actionCodes.Hero_referRunesRpc, "") |
| 585 | 581 | return true | ... | ... |
src/models/Hero.lua
| ... | ... | @@ -25,9 +25,14 @@ end |
| 25 | 25 | |
| 26 | 26 | function Hero:notifyUpdateProperty(field, newValue, oldValue) |
| 27 | 27 | local datas = { |
| 28 | - key = field, | |
| 29 | - newValue = newValue, | |
| 30 | - oldValue = oldValue, | |
| 28 | + id = self:getProperty("id"), | |
| 29 | + datas = { | |
| 30 | + { | |
| 31 | + key = field, | |
| 32 | + newValue = newValue, | |
| 33 | + oldValue = oldValue, | |
| 34 | + } | |
| 35 | + } | |
| 31 | 36 | } |
| 32 | 37 | self:notifyUpdateProperties(datas) |
| 33 | 38 | end | ... | ... |
src/models/RolePlugin.lua
| ... | ... | @@ -460,7 +460,11 @@ function RolePlugin.bind(Role) |
| 460 | 460 | newRune:generateAttrs() |
| 461 | 461 | newRune.owner = self |
| 462 | 462 | self.runeBag[runeUid] = newRune |
| 463 | - newRune:notifyUpdateProperties(newRune:data()) | |
| 463 | + if not params.notNotify then | |
| 464 | + local response = {} | |
| 465 | + table.insert(response, newRune:data()) | |
| 466 | + SendPacket(actionCodes.Role_loadRunes, MsgPack.pack(response)) | |
| 467 | + end | |
| 464 | 468 | return 0 |
| 465 | 469 | else |
| 466 | 470 | return 1 | ... | ... |
src/models/Rune.lua
| ... | ... | @@ -14,9 +14,14 @@ end |
| 14 | 14 | |
| 15 | 15 | function Rune:notifyUpdateProperty(field, newValue, oldValue) |
| 16 | 16 | local datas = { |
| 17 | - key = field, | |
| 18 | - newValue = newValue, | |
| 19 | - oldValue = oldValue, | |
| 17 | + uid = self:getProperty("uid"), | |
| 18 | + datas = { | |
| 19 | + { | |
| 20 | + key = field, | |
| 21 | + newValue = newValue, | |
| 22 | + oldValue = oldValue, | |
| 23 | + } | |
| 24 | + } | |
| 20 | 25 | } |
| 21 | 26 | self:notifyUpdateProperties(datas) |
| 22 | 27 | end |
| ... | ... | @@ -38,7 +43,10 @@ function Rune:updateProperty(params) |
| 38 | 43 | elseif params.value then |
| 39 | 44 | self:setProperty(params.field, params.value) |
| 40 | 45 | end |
| 41 | - self:notifyUpdateProperties(self:data()) | |
| 46 | + local datas = {} | |
| 47 | + table.insert(datas, {key = params.field, newValue = self:getProperty(params.field)}) | |
| 48 | + | |
| 49 | + self:notifyUpdateProperties(datas) | |
| 42 | 50 | end |
| 43 | 51 | |
| 44 | 52 | -- types 类型=权重"2=100 3=100 4=100" value最大值=最小值 "50=100 50=100 100=200" | ... | ... |