From ee3ac0b544a8841b9607a77caa27cdd04120868b Mon Sep 17 00:00:00 2001 From: gaofengduan <782277855@qq.com> Date: Thu, 4 Jul 2019 11:12:07 +0800 Subject: [PATCH] fix magic --- src/actions/HeroAction.lua | 37 +++++++++++++++++++++++++++++++++++-- src/models/RolePlugin.lua | 16 ++++++---------- src/models/Rune.lua | 9 +++------ 3 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/actions/HeroAction.lua b/src/actions/HeroAction.lua index 21c5353..d1f88c1 100644 --- a/src/actions/HeroAction.lua +++ b/src/actions/HeroAction.lua @@ -521,14 +521,47 @@ function _M.referEquipsRpc(agent, data) return true end --- typ 位置,id等级对应唯一符文,id为0时为移除,不为0时无则装备,有则替换 -function _M.referRunes(agent, data) +-- typ 位置,uid对应唯一符文,uid为0时为移除,不为0时无则装备,有则替换 +function _M.referRunesRpc(agent, data) local role = agent.role local msg = MsgPack.unpack(data) local hero = role.heros[msg.id] if not hero then return 10 end local runes = msg.runes if not runes or not next(runes) then return 11 end + + for typ,uid in pairs(runes) do + local referUid = hero:getProperty("rune"):getv(typ,0) + if uid == 0 then + if referUid == 0 then return 2 end + else + local ownRune = role.runeBag[uid] + if not ownRune then return 3 end + if ownRune:getProperty("refer") ~= 0 then return 4 end + + local runeSet = csvdb["runeCsv"][typ] + if not runeSet then return 5 end + local runeData = runeSet[ownRune.id] + if not runeData then return 6 end + end + end + + for typ,uid in pairs(runes) do + local referUid = hero:getProperty("rune"):getv(typ,0) + if uid == 0 then + local referRune = role.runeBag[referUid] + referRune:updateProperty({field = "refer",value = 0}) + else + if referUid ~= 0 then + local referRune = role.runeBag[referUid] + referRune:updateProperty({field = "refer",value = 0}) + end + local ownRune = role.runeBag[uid] + ownRune:updateProperty({field = "refer",value = hero:getProperty("id")}) + end + hero:updateProperty({field = "rune", value = hero:getProperty("equip"):setv(typ,uid)}) + end + SendPacket(actionCodes.Hero_referRunesRpc, "") return true end diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 3bbeab3..117dba3 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -481,18 +481,14 @@ function RolePlugin.bind(Role) end end - function Role:getRuneCount(id,lv) - local runeSet = self.runeBag[id] - if runeSet then - local rune = runeSet[lv] - if rune then - return rune:getProperty("count") - else - return 0 + function Role:getRuneByType(typ) + local runeSet = {} + for _,v in pairs(self.runeBag) do + if v.type == typ then + table.insert(runeSet,v) end - else - return 0 end + return runeSet end function Role:getAdvData() diff --git a/src/models/Rune.lua b/src/models/Rune.lua index d4e7412..6f0e8e8 100644 --- a/src/models/Rune.lua +++ b/src/models/Rune.lua @@ -65,18 +65,15 @@ local function getRandomValue(types,values) local range = valueArry[tk]:toArray(true,"=") value = math.random(range[1],range[2]) - print("typ "..typ.." value "..value) return typ,value end function Rune:generateAttrs() local runeData = csvdb["runeCsv"][self:getProperty("type")][self:getProperty("id")] local attrs = "" - attrs:setv(1,20) - attrs:setv(getRandomValue(runeData.attr1,runeData.range1)) - attrs:setv(getRandomValue(runeData.attr2,runeData.range2)) - print(attrs) - self:setProperty("attrs","2=30") + attrs = attrs:setv(getRandomValue(runeData.attr1,runeData.range1)) + attrs = attrs:setv(getRandomValue(runeData.attr2,runeData.range2)) + self:setProperty("attrs",attrs) end function Rune:data() -- libgit2 0.21.2