NewEquipWear.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. -- 涉及到的相关属性在属性表配置
  2. NewEquipWear = {}
  3. local this = NewEquipWear;
  4. function NewEquipWear.closePet(actor)
  5. local petActor = NewEquipWear.GetEquipPet(actor)
  6. if petActor ~= nil then
  7. removepartner(petActor);
  8. end
  9. end
  10. function NewEquipWear.onLoginEnd(actor)
  11. local equiplist = getputonequipinfo(actor)
  12. local data = {}
  13. for index, value in ipairs(equiplist) do
  14. local equip = equiplist[index]
  15. data[equip.subtype] = equip.cfgid;
  16. end
  17. NewEquipWear.UpdateWear(actor, data);
  18. end
  19. function NewEquipWear.onLogout(actor)
  20. NewEquipWear.closePet(actor)
  21. end
  22. function NewEquipWear.UpdateWear(actor, data)
  23. if data[10002] then
  24. local petActor = NewEquipWear.SummonEquipPet(actor, data[10002])
  25. if petActor == nil then
  26. return
  27. end
  28. setplaydef(actor, "@" .. "EQUIP_PET_TYPE", petActor:toString())
  29. else
  30. NewEquipWear.closePet(actor)
  31. end
  32. end
  33. function NewEquipWear.SummonEquipPet(actor, cfgPetId)
  34. local isSummon = NewEquipWear.GetEquipPet(actor) ~= nil
  35. if not isSummon then
  36. local monsterId = ConfigDataManager.getTableValue("cfg_pet", "mid", "id", cfgPetId)
  37. if monsterId == nil or monsterId == "" then
  38. return nil
  39. end
  40. monsterId = tonumber(monsterId)
  41. if monsterId == nil then
  42. return nil
  43. end
  44. return callpartner(actor, monsterId, 1)
  45. end
  46. return nil
  47. end
  48. function NewEquipWear.GetEquipPet(actor)
  49. local pets = getpartners(actor)
  50. local typeString = type(pets)
  51. if typeString ~= "table" then
  52. return nil
  53. end
  54. local petId = getplaydef(actor, "@" .. "EQUIP_PET_TYPE")
  55. for index, value in pairs(pets) do
  56. local petActor = pets[index]
  57. local pet1 = petActor:toString()
  58. local pet2 = tostring(petId)
  59. if pet1 == pet2 then
  60. return petActor
  61. end
  62. end
  63. return nil
  64. end