There is a certain amount of string value inside the player. That number is currently 4. There are also image buttons inside a scrolling frame. It’s the same amount as the string value’s. I used a table to get the names of the four string values. And I want to set the image button’s names to the names of the string values.
Inside the player:
Outcome in the scrollingframe:
It’s clearly not the same. I’m kind of stuck and have no idea how to fix this.
LocalScript inside ReplicatedFirst:
local petsInInventoryNumber = 0
for _,v in pairs(Player.PetInventory:GetChildren()) do
petsInInventoryNumber = petsInInventoryNumber + 1
end
local petsInScrollingFrameNumber = 0
for _,v in pairs(Player.PetInventory:GetChildren()) do
petsInScrollingFrameNumber = petsInScrollingFrameNumber + 1
end
local names = {}
for i, pet in pairs(Player.PetInventory:GetChildren()) do
table.insert(names,pet.Name)
end
if petsInScrollingFrameNumber == petsInInventoryNumber then
for i, petName in pairs(names) do
for i, petInScrollingFrame in ipairs(Player.PlayerGui.Inventory.Pets.ScrollingFrame:GetChildren()) do
if petInScrollingFrame:IsA("ImageButton") then
if petInScrollingFrame.Name ~= petName then
petInScrollingFrame.Name = petName
break
end
end
end
end
end
local Player = game.Players.LocalPlayer
local PetInventory = Player:WaitForChild("PetInventory")
local PetInventoryGUI = Player.PlayerGui:WaitForChild("Inventory")
local petsInInventoryNumber = 0
for _,v in pairs(Player.PetInventory:GetChildren()) do
petsInInventoryNumber = petsInInventoryNumber + 1
end
local petsInScrollingFrameNumber = 0
for _,v in pairs(Player.PetInventory:GetChildren()) do
petsInScrollingFrameNumber = petsInScrollingFrameNumber + 1
end
local names = {}
for i, pet in pairs(Player.PetInventory:GetChildren()) do
table.insert(names,pet.Name)
end
if petsInScrollingFrameNumber == petsInInventoryNumber then
for i, petName in pairs(names) do
local imagebutton = PetInventoryGUI.Pets.ScrollingFrame:GetChildren()[i]
if imagebutton:IsA("ImageButton") and imagebutton.Name ~= petName then
imagebutton.Name = petName
end
end
end
Here should be the fixed code, it’s more optimized as it only does one loop and not three. I don’t know why you used three so I just made it one.
local petsInInventoryNumber = 0
local petsInScrollingFrameNumber = 0
local names = {}
for i, v in ipairs(Player.PetInventory:GetChildren()) do
petsInInventoryNumber += 1
petsInScrollingFrameNumber = petsInScrollingFrameNumber + 1
table.insert(names, pet.Name)
end
if petsInScrollingFrameNumber == petsInInventoryNumber then
for i, petName in ipairs(names) do
for i, petInScrollingFrame in ipairs(Player.PlayerGui.Inventory.Pets.ScrollingFrame:GetChildren()) do
if not petInScrollingFrame:IsA("ImageButton") then continue end
petInScrollingFrame.Name = petName
end
end
end
Why don’t you create the image buttons in the code instead? Other then counting and doing all of this, just loop through the folder and create buttons for each value there.