HpMpRecover.lua 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. sethp(actor,numLastHp)
  26. info("恢复当前HP", "之前的HP:", numLastHp, "现在的HP:", numCurrHp)
  27. end
  28. end
  29. if not string.isNullOrEmpty(lastMp) then
  30. local numLastMp = tonumber(lastMp)
  31. local numCurrMp = getbaseinfo(actor, "mp")
  32. if numLastMp ~= numCurrMp then
  33. setmp(actor, numLastMp)
  34. info("恢复当前MP", "之前的MP:", numLastMp,"现在的MP:", numCurrMp)
  35. end
  36. end
  37. end