Commit ee999bde1e1fe576ded87a907936ac46513cd4f3
1 parent
056c01a0
零件优化
Showing
6 changed files
with
58 additions
and
44 deletions
Show diff stats
src/ProtocolCode.lua
| @@ -23,6 +23,7 @@ actionCodes = { | @@ -23,6 +23,7 @@ actionCodes = { | ||
| 23 | Role_pipelining = 109, | 23 | Role_pipelining = 109, |
| 24 | Role_saleItemRpc = 110, | 24 | Role_saleItemRpc = 110, |
| 25 | Role_openItemRpc = 111, | 25 | Role_openItemRpc = 111, |
| 26 | + Role_loadRunes = 112, | ||
| 26 | Role_updateRune = 113, | 27 | Role_updateRune = 113, |
| 27 | Role_storyBookRewardRpc = 114, | 28 | Role_storyBookRewardRpc = 114, |
| 28 | Role_unLockStoryBookRpc = 115, | 29 | Role_unLockStoryBookRpc = 115, |
src/actions/GmAction.lua
| @@ -51,7 +51,7 @@ function _M.get(role, pms) | @@ -51,7 +51,7 @@ function _M.get(role, pms) | ||
| 51 | if not csvdb["itemCsv"][itemId] then | 51 | if not csvdb["itemCsv"][itemId] then |
| 52 | return "物品不存在" | 52 | return "物品不存在" |
| 53 | end | 53 | end |
| 54 | - local count = tonum(pms.pm2) | 54 | + local count = tonum(pms.pm2, 1) |
| 55 | role:award({[itemId] = count}) | 55 | role:award({[itemId] = count}) |
| 56 | end | 56 | end |
| 57 | return "成功" | 57 | return "成功" |
src/actions/HeroAction.lua
| @@ -517,19 +517,17 @@ function _M.referEquipsRpc(agent, data) | @@ -517,19 +517,17 @@ function _M.referEquipsRpc(agent, data) | ||
| 517 | for typ = 1, 4 do -- 4件装备 | 517 | for typ = 1, 4 do -- 4件装备 |
| 518 | if equips[typ] then | 518 | if equips[typ] then |
| 519 | local cur = curEquip:getv(typ, 0) | 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 | curEquip = curEquip:delk(typ) | 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 | role:addEquip(typ, equips[typ], -1) -- 穿上 | 524 | role:addEquip(typ, equips[typ], -1) -- 穿上 |
| 531 | curEquip = curEquip:setv(typ, equips[typ]) | 525 | curEquip = curEquip:setv(typ, equips[typ]) |
| 532 | end | 526 | end |
| 527 | + | ||
| 528 | + if cur ~= 0 then | ||
| 529 | + role:addEquip(typ, cur, 1) -- 脱掉 | ||
| 530 | + end | ||
| 533 | end | 531 | end |
| 534 | end | 532 | end |
| 535 | end | 533 | end |
| @@ -549,37 +547,35 @@ function _M.referRunesRpc(agent, data) | @@ -549,37 +547,35 @@ function _M.referRunesRpc(agent, data) | ||
| 549 | local runes = msg.runes | 547 | local runes = msg.runes |
| 550 | if not runes or not next(runes) then return 11 end | 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 | end | 555 | end |
| 566 | end | 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 | end | 576 | end |
| 578 | - local ownRune = role.runeBag[uid] | ||
| 579 | - ownRune:updateProperty({field = "refer",value = hero:getProperty("id")}) | ||
| 580 | end | 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 | end | 579 | end |
| 584 | SendPacket(actionCodes.Hero_referRunesRpc, "") | 580 | SendPacket(actionCodes.Hero_referRunesRpc, "") |
| 585 | return true | 581 | return true |
src/models/Hero.lua
| @@ -25,9 +25,14 @@ end | @@ -25,9 +25,14 @@ end | ||
| 25 | 25 | ||
| 26 | function Hero:notifyUpdateProperty(field, newValue, oldValue) | 26 | function Hero:notifyUpdateProperty(field, newValue, oldValue) |
| 27 | local datas = { | 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 | self:notifyUpdateProperties(datas) | 37 | self:notifyUpdateProperties(datas) |
| 33 | end | 38 | end |
src/models/RolePlugin.lua
| @@ -460,7 +460,11 @@ function RolePlugin.bind(Role) | @@ -460,7 +460,11 @@ function RolePlugin.bind(Role) | ||
| 460 | newRune:generateAttrs() | 460 | newRune:generateAttrs() |
| 461 | newRune.owner = self | 461 | newRune.owner = self |
| 462 | self.runeBag[runeUid] = newRune | 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 | return 0 | 468 | return 0 |
| 465 | else | 469 | else |
| 466 | return 1 | 470 | return 1 |
src/models/Rune.lua
| @@ -14,9 +14,14 @@ end | @@ -14,9 +14,14 @@ end | ||
| 14 | 14 | ||
| 15 | function Rune:notifyUpdateProperty(field, newValue, oldValue) | 15 | function Rune:notifyUpdateProperty(field, newValue, oldValue) |
| 16 | local datas = { | 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 | self:notifyUpdateProperties(datas) | 26 | self:notifyUpdateProperties(datas) |
| 22 | end | 27 | end |
| @@ -38,7 +43,10 @@ function Rune:updateProperty(params) | @@ -38,7 +43,10 @@ function Rune:updateProperty(params) | ||
| 38 | elseif params.value then | 43 | elseif params.value then |
| 39 | self:setProperty(params.field, params.value) | 44 | self:setProperty(params.field, params.value) |
| 40 | end | 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 | end | 50 | end |
| 43 | 51 | ||
| 44 | -- types 类型=权重"2=100 3=100 4=100" value最大值=最小值 "50=100 50=100 100=200" | 52 | -- types 类型=权重"2=100 3=100 4=100" value最大值=最小值 "50=100 50=100 100=200" |