Commit 3eb7777532c6afb4f7eba05595481ebf76f3e59d
1 parent
7f1e84e6
完成友情界面功能
Showing
1 changed file
with
44 additions
and
12 deletions
Show diff stats
src/actions/HeroAction.lua
| ... | ... | @@ -362,23 +362,55 @@ end |
| 362 | 362 | function _M.loveItemRpc(agent, data) |
| 363 | 363 | local role = agent.role |
| 364 | 364 | local msg = MsgPack.unpack(data) |
| 365 | - local hero = role.heros[msg.id] | |
| 366 | - if not hero then return end | |
| 367 | - local result = {} | |
| 365 | + local hero = role.heros[msg.heroId] | |
| 366 | + if not hero then | |
| 367 | + return | |
| 368 | + end | |
| 368 | 369 | local curL = hero:getProperty("loveL") |
| 369 | 370 | local curExp = hero:getProperty("loveExp") |
| 370 | 371 | local curPlus = csvdb["unit_love_plusCsv"][hero:getProperty("type")] |
| 371 | - if not curPlus or curL >= curPlus.limit then return end | |
| 372 | - | |
| 372 | + if not curPlus then | |
| 373 | + return | |
| 374 | + end | |
| 375 | + if curL >= curPlus.limit then | |
| 376 | + SendPacket(actionCodes.Hero_loveItemRpc, MsgPack.pack({errMsg = 1})) --已满级 | |
| 377 | + return true | |
| 378 | + end | |
| 373 | 379 | local curEffect = csvdb["unit_love_effectCsv"][curL] |
| 374 | - if not curEffect or curExp >= curEffect.loveValue then return end | |
| 375 | - local delta = 100 -- todo | |
| 376 | - local newExp = curExp + delta | |
| 377 | - hero:updateProperty({field = "loveExp", value = newExp}) | |
| 378 | - if newExp >= curEffect.loveValue then | |
| 379 | - -- todo 发任务 | |
| 380 | + if not curEffect then | |
| 381 | + return | |
| 382 | + end | |
| 383 | + if curExp >= curEffect.loveValue and not msg.bBreak then | |
| 384 | + SendPacket(actionCodes.Hero_loveItemRpc, MsgPack.pack({errMsg = 2})) --当前等级经验已满 | |
| 385 | + return true | |
| 386 | + end | |
| 387 | + | |
| 388 | + if msg.bBreak then | |
| 389 | + local cost = curEffect.cost:toArray(true, "=") | |
| 390 | + if not role:checkItemEnough({[cost[1]] = cost[2]}) then | |
| 391 | + SendPacket(actionCodes.Hero_loveItemRpc, MsgPack.pack({errMsg = 3, itemId = cost[1]})) --物品不足 | |
| 392 | + return true | |
| 393 | + end | |
| 394 | + role:costItems({[cost[1]] = cost[2]}) | |
| 395 | + hero:updateProperty({field = "loveL", value = curL + 1}) | |
| 396 | + hero:updateProperty({field = "loveExp", value = 0}) | |
| 397 | + else | |
| 398 | + local delta = globalCsv.unit_love_presentValue[msg.itemId] | |
| 399 | + if not delta then | |
| 400 | + return | |
| 401 | + end | |
| 402 | + if not role:checkItemEnough({[msg.itemId] = 1}) then | |
| 403 | + SendPacket(actionCodes.Hero_loveItemRpc, MsgPack.pack({errMsg = 3, itemId = msg.itemId})) | |
| 404 | + return true | |
| 405 | + end | |
| 406 | + local newExp = curExp + delta | |
| 407 | + if newExp > curEffect.loveValue then | |
| 408 | + newExp = curEffect.loveValue | |
| 409 | + end | |
| 410 | + role:costItems({[msg.itemId] = 1}) | |
| 411 | + hero:updateProperty({field = "loveExp", value = newExp}) | |
| 380 | 412 | end |
| 381 | - SendPacket(actionCodes.Hero_loveItemRpc, MsgPack.pack({delta = delta})) | |
| 413 | + SendPacket(actionCodes.Hero_loveItemRpc, "") | |
| 382 | 414 | return true |
| 383 | 415 | end |
| 384 | 416 | ... | ... |