HpMpRecover.lua 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. local KEY = {
  2. LAST_HP_KEY = "T$LAST_HP",
  3. LAST_MP_KEY = "T$LAST_MP"
  4. }
  5. HpMpRecover = {}
  6. --记录下血量和蓝量,在进入跨服地图或者登录游戏的时候恢复
  7. function HpMpRecover.record(actor)
  8. local hp = getbaseinfo(actor, "hp")
  9. local mp = getbaseinfo(actor, "mp")
  10. setplaydef(actor, KEY.LAST_HP_KEY, hp)
  11. setplaydef(actor, KEY.LAST_MP_KEY, mp)
  12. info("记录当前血量和蓝量", "hp",hp, "mp", mp)
  13. end
  14. --恢复血量和蓝量
  15. function HpMpRecover.recover(actor)
  16. intervalcalldelay(actor, 500, 0, 1, "hpmprecover_recover")
  17. end
  18. function hpmprecover_recover(actor)
  19. local lastHp = getplaydef(actor, KEY.LAST_HP_KEY)
  20. local lastMp = getplaydef(actor, KEY.LAST_MP_KEY)
  21. if not string.isNullOrEmpty(lastHp) then
  22. local numLastHp = tonumber(lastHp)
  23. local numCurrHp = getbaseinfo(actor, "hp")
  24. if numLastHp ~= numCurrHp then
  25. if numLastHp >= 0 then
  26. sethp(actor,numLastHp)
  27. end
  28. info("恢复当前HP", "之前的HP:", numLastHp, "现在的HP:", numCurrHp)
  29. end
  30. end
  31. if not string.isNullOrEmpty(lastMp) then
  32. local numLastMp = tonumber(lastMp)
  33. local numCurrMp = getbaseinfo(actor, "mp")
  34. if numLastMp ~= numCurrMp then
  35. setmp(actor, numLastMp)
  36. info("恢复当前MP", "之前的MP:", numLastMp,"现在的MP:", numCurrMp)
  37. end
  38. end
  39. end