-- 涉及到的相关属性在属性表配置 NewEquipWear = {} local this = NewEquipWear; function NewEquipWear.closePet(actor) local petActor = NewEquipWear.GetEquipPet(actor) if petActor ~= nil then removepartner(petActor); end end function NewEquipWear.onLoginEnd(actor) local equiplist = getputonequipinfo(actor) local data = {} for index, value in ipairs(equiplist) do local equip = equiplist[index] data[equip.subtype] = equip.cfgid; end NewEquipWear.UpdateWear(actor, data); end function NewEquipWear.onLogout(actor) NewEquipWear.closePet(actor) end function NewEquipWear.UpdateWear(actor, data) if data[10002] then local petActor = NewEquipWear.SummonEquipPet(actor, data[10002]) if petActor == nil then return end setplaydef(actor, "@" .. "EQUIP_PET_TYPE", petActor:toString()) else NewEquipWear.closePet(actor) end end function NewEquipWear.SummonEquipPet(actor, cfgPetId) local isSummon = NewEquipWear.GetEquipPet(actor) ~= nil if not isSummon then local monsterId = ConfigDataManager.getTableValue("cfg_pet", "mid", "id", cfgPetId) if monsterId == nil or monsterId == "" then return nil end monsterId = tonumber(monsterId) if monsterId == nil then return nil end return callpartner(actor, monsterId, 1) end return nil end function NewEquipWear.GetEquipPet(actor) local pets = getpartners(actor) local typeString = type(pets) if typeString ~= "table" then return nil end local petId = getplaydef(actor, "@" .. "EQUIP_PET_TYPE") for index, value in pairs(pets) do local petActor = pets[index] local pet1 = petActor:toString() local pet2 = tostring(petId) if pet1 == pet2 then return petActor end end return nil end