Commit a6508219f2328c5af95cef8b158c9c5456969f67

Authored by zhouhaihai
1 parent 00298f6a

挂机奖励

src/ProtocolCode.lua
... ... @@ -98,6 +98,7 @@ actionCodes = {
98 98 Hang_buyBonusCountRpc = 259,
99 99 Hang_startBonusBattleRpc = 260,
100 100 Hang_endBonusBattleRpc = 261,
  101 + Hang_hangGiftRpc = 262,
101 102  
102 103 Diner_updateProperty = 300,
103 104 Diner_addSellRpc = 301,
... ...
src/actions/HangAction.lua
... ... @@ -486,6 +486,25 @@ function _M.endBonusBattleRpc(agent, data)
486 486 return true
487 487 end
488 488  
  489 +function _M.hangGiftRpc(agent, data)
  490 + local role = agent.role
  491 + local msg = MsgPack.unpack(data)
  492 +
  493 + local id = msg.id
  494 + local carbonData = csvdb["idle_battleCsv"][id]
  495 + if not carbonData or carbonData.item_clear_special == "" then return 1 end
  496 +
  497 + local hangGift = role:getProperty("hangGift")
  498 + if hangGift[id] then return 2 end
  499 +
  500 + local reward = role:award(carbonData.item_clear_special, {log = {desc = "hangGift", int1 = id}})
  501 + role:log("hang_action", {desc = "hangGift", int1 = id})
  502 +
  503 + role:changeUpdates({{type = "hangGift", field = id, value = 1}})
  504 +
  505 + SendPacket(actionCodes.Hang_hangGiftRpc, MsgPack.pack(reward))
  506 + return true
  507 +end
489 508  
490 509  
491 510 return _M
492 511 \ No newline at end of file
... ...
src/models/HeroPlugin.lua
... ... @@ -214,6 +214,52 @@ function HeroPlugin.bind(Hero)
214 214 end
215 215 return {}
216 216 end
  217 +
  218 + function Hero:getRunes()
  219 + local rune = self:getProperty("rune")
  220 + if not rune or rune == "" then
  221 + rune = "1=0 2=0 3=0 4=0 5=0 6=0"
  222 + end
  223 + local result = rune:toNumMap()
  224 + for i = 1, 6 do
  225 + if not result[i] then
  226 + result[i] = 0
  227 + end
  228 + end
  229 + return result
  230 + end
  231 +
  232 + -- 101 冒险战斗被动技
  233 + -- 102 挂机战斗被动技
  234 + function Hero:getRuneSkill(skillType)
  235 + local suits = {}
  236 + for _,uid in pairs(self:getRunes()) do
  237 + if uid > 0 then
  238 + local runeData = self.owner.runeBag[uid]
  239 + if not runeData then return end
  240 + local csvData = csvdb["runeCsv"][runeData.type][runeData.id]
  241 + if not suits[csvData.suit] then suits[csvData.suit] = {} end
  242 + table.insert(suits[csvData.suit],csvData)
  243 + end
  244 + end
  245 +
  246 + for suitId,runes in pairs(suits) do
  247 + local suitCsv = csvdb["rune_suitCsv"][tonumber(suitId)]
  248 + if not suitCsv then return end
  249 + local effects = suitCsv.effect:toTableArray(true)
  250 + local count = #runes
  251 + if count >= 2 and effects[1][1] == skillType then
  252 + return effects[1][2]
  253 + end
  254 + if count >= 4 and effects[2][1] == skillType then
  255 + return effects[2][2]
  256 + end
  257 + if count >= 6 and effects[3][1] == skillType then
  258 + return effects[3][2]
  259 + end
  260 + end
  261 + return
  262 + end
217 263 end
218 264  
219 265  
... ...
src/models/Role.lua
... ... @@ -86,6 +86,7 @@ Role.schema = {
86 86  
87 87 --挂机相关
88 88 hangPass = {"table", {}}, -- 挂机通过的最大关卡
  89 + hangGift = {"table", {}}, -- 挂机奖励 {id = 1}
89 90 hangTeam = {"table", {}}, -- 挂机队伍
90 91 hangTS = {"table", {}}, -- 挂机队伍他人可读的队伍信息
91 92 hangTB = {"table", {}}, -- 挂机队伍他人可用的战斗信息mao
... ... @@ -321,6 +322,7 @@ function Role:data()
321 322 advSup = self:getProperty("advSup"),
322 323  
323 324 hangPass = self:getProperty("hangPass"),
  325 + hangGift = self:getProperty("hangGift"),
324 326 hangTeam = self:getProperty("hangTeam"),
325 327 hangInfo = self:getProperty("hangInfo"),
326 328 hangBag = self:getProperty("hangBag"),
... ...
src/models/RolePlugin.lua
... ... @@ -1192,6 +1192,7 @@ function RolePlugin.bind(Role)
1192 1192 info.level = hero:getProperty("level")
1193 1193 info.blockLevel = hero:getSkillLevel(4)
1194 1194 info.specialLevel = hero:getSkillLevel(1)
  1195 + info.runeSkill = hero:getRuneSkill(102)
1195 1196 teamInfo.heros[slot] = info
1196 1197 end
1197 1198 for slot, id in pairs(team.supports or {}) do
... ...