Im tyring to make a shop Gui but failed

Hello! Im tyring to make a shop Gui but It doesnt work how I wanted it to. It doesnt update any of the Guis

what I got in the output

  16:23:19.323  Potition is not a valid member of ImageButton "Players.NubblyFry.PlayerGui.Shop.MainFrame.SafeArea.ItemFrame.Item1"  -  Client - Core:49
  16:23:19.323  Stack Begin  -  Studio
  16:23:19.323  Script 'Players.NubblyFry.PlayerGui.Shop.Core', Line 49  -  Studio - Core:49
  16:23:19.323  Stack End  -  Studio

The Script

-- Core UI localscript

local availableTools = game.ReplicatedStorage:WaitForChild("GetTools"):InvokeServer()
local mainFrame = script.Parent:WaitForChild("MainFrame")
local safeArea = mainFrame:WaitForChild("SafeArea")
local itemInformation = safeArea:WaitForChild("ItemInformation")
local infoFrame = itemInformation.InfoFrame
local selectedItem = itemInformation.SelectedItem
local equippedItem = itemInformation.EquippedItem
local numberOfItems = #availableTools

local itemFrame = safeArea.ItemFrame
local shopButton = script.Parent:WaitForChild("ShopButton")
local buyButton = infoFrame.BuyButton
local equippedItemViewport = script.Parent:WaitForChild("EquippedItemViewport")
local itemViewport = itemInformation.ItemViewport


shopButton.MouseButton1Click:Connect(function()
	mainFrame.Visible = not mainFrame.Visible
end)

local PADDING_X = 0.02
local DROPDOWN_Y = 0.2
local DROPDOWN_X = 0.25

local item1 = itemFrame:WaitForChild("Item1")

local box
local numRows = 1

for i = 1,numberOfItems,1 do
	if i == 1 then
		box = item1
	else
		
		box = item1:Clone()
		box.Name = "Item"..i
		box.Parent = itemFrame
		
		
		
		if (i-1) / (4*numRows) == 1 then
			-- New Row
			numRows = numRows + 1
			box.Position = UDim2.new(PADDING_X,0,box.Potition.Y.Scale,0) + UDim2.new(0,0,DROPDOWN_Y*(numRows - 1))
		else
			-- Add to the X only
			box.Potition = itemFrame["Item"..(i-1)].Potition + UDim2.new(DROPDOWN_X,0,0,0)
		end
		
	end
	
	box.MouseButton1Click:Connect(function()
		for _, v in pairs(itemViewport:GetChildren()) do
			if not v:IsA("Frame") then
				v:Destroy()
			end
		end
		
		local itemViewportCam = Instance.new("Camera")
		itemViewportCam.Parent = itemViewport
		
		local handle = game.ReplicatedStorage:WaitForChild("ToolModels"):FindFirstChild(availableTools[i][1].."Handle"):Clone()
		handle.Parent = itemViewport
		
		itemViewport.CurrentCamera = itemViewportCam
		itemViewportCam.CFrame = handle.CameraCFrame.Value
		
		local owned = game.ReplicatedStorage.ItemCheck:InvokeServer(availableTools[i][1])
		
		if equippedItem.Value == availableTools[i][1] then
			infoFrame.Cash.Text = "Owned"
			infoFrame.BuyButton.Text = "Unequip"
		elseif owned == true then
			infoFrame.Cash.Text = "Owned"
			infoFrame.BuyButton.Text = "Equip"
		else
			infoFrame.BuyButton.Text = "Buy"
			infoFrame.Cash.Text = "$"..availableTools[i][1]
		end
		
		infoFrame.ItemName.Text = availableTools[i][1]
		selectedItem.Value = availableTools[i][1]
		
		for _, v in pairs(itemFrame:GetChildren()) do
			if v:IsA("ImageButton") then
				v.BorderSizePixel = 0
			end
		end
		
		itemFrame["Item"..i].BorderSizePixel = 2
	end)
	
end

Because you made a typo. Write ‘Position’ instead of

1 Like

in which line of the code???

in the if (1-1) / (4*numRows == 1 then block

1 Like

actually thats not the case I actually kept righting potition…

1 Like

Mark my reply as solved if it helped you out.

1 Like

can you tell me were all the potitions are?

It’s ‘Position’ not ‘Potition’.
If you want to check where your spelling mistakes are do Ctrl + F while being in script and type ‘potition’. Now you can easily navigate through all your typos and correct them.
Note: you can also use Ctrl + H with parameters Potition and Position.

2 Likes

You can use the find and replace hot key which is Ctrl+H