I’m trying to basically remove a player when they leave and do checks if they were an owner of the family. If so, give the next player in the table ownership. However, from the prints, can see it’s seemingly still getting Player1 as the first player in the table, even tho they are removed before the function is fired.
print(#familyData.Members)
Should print 1, NOT 2. The prints indicate that Player1 is being removed, yet when I go into the NewOwner function they are for some reason still there?
-- New owner needs to be set
local function NewOwner(familyData)
print("Getting new owner")
print(familyData.Name) -- Player1 family
local FamilyFolder = Families:FindFirstChild(familyData.Name)
if not FamilyFolder then return end
print(1, familyData.Owner) -- 1 Player1
-- Set next owner from table
print(#familyData.Members) -- 2
local NextMember = familyData.Members[1]
familyData.Owner = NextMember
print(2, familyData.Owner) -- 2 Player1
-- Set owner value for member folder
print(NextMember.Name) -- Player1
local MemberFolder = FamilyFolder:FindFirstChild(NextMember.Name)
if not MemberFolder then return end
print(3) -- Does not print
MemberFolder.Value = 'Owner'
end
-- Remove family member
function Family:RemoveMember(member)
RemoveMemberFolder(self.Name, member)
-- Remove member from family
local MemberIndex = table.find(self.Members, member)
if MemberIndex then
print("Removing", member, MemberIndex) -- Removing Player1 1
table.remove(self.Members, MemberIndex)
end
print(member, self.Owner) -- Player1 Player1
if member == self.Owner then
print("Was owner")
-- Owner has left, set next person in line as Owner
NewOwner(self)
end
if #self.Members == 0 then
-- No members of family
self = nil
end
end
Output
Removing Player1 1