I have a Shop GUI that works on PC but doesn't on mobile. This is my script:

local x, y = pcall(function()
	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
	
	game.ReplicatedStorage.SendEquipped.OnClientEvent:Connect(function(equipped)
		
		equippedItem.Value = equipped
		if equippedItem.Value ~= "" then
			
			local fakeCam = Instance.new("Camera")
			fakeCam.Parent = equippedItemViewport
			local handle = game.ReplicatedStorage:WaitForChild("ToolModels"):FindFirstChild(equippedItem.Value.."Handle"):Clone()
			handle.Parent = equippedItemViewport
			equippedItemViewport.CurrentCamera = fakeCam
			fakeCam.CFrame = handle.CameraCFrame.Value
			
		end
	
	end)

	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
            	numRows = numRows + 1
            	box.Position = UDim2.new(PADDING_X,0,box.Position.Y.Scale,0) + UDim2.new(0,0,DROPDOWN_X*(numRows - 1))
        	else
            	box.Position = itemFrame["Item"..(i-1)].Position + 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")
        	print("Made camera")
        	itemViewportCam.Parent = itemViewport

        	local handle = game.ReplicatedStorage:WaitForChild("ToolModels"):FindFirstChild(availableTools[i][1].."Handle"):Clone()
        	handle.Parent = itemViewport
        	print("Made Handle")

        	itemViewport.CurrentCamera = itemViewportCam
        	itemViewportCam.CFrame = handle.CameraCFrame.Value
        	print("All of that stuff")

        	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][2]
        	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)
			
			local fakeCam = Instance.new("Camera")
			fakeCam.Parent = box.VPF
			local handle = game.ReplicatedStorage:WaitForChild("ToolModels"):FindFirstChild(availableTools[i][1].."Handle"):Clone()
			handle.Parent = box.VPF
			box.VPF.CurrentCamera = fakeCam
			fakeCam.CFrame = handle.CameraCFrame.Value
			itemFrame["Item"..i].ItemName.Text = availableTools[i][1]
			
		end 
		
		
		buyButton.MouseButton1Click:Connect(function()
			
			local result = game.ReplicatedStorage.PurchaseItem:InvokeServer(selectedItem.Value)
			
			if result == true then
				buyButton.BackgroundColor3 = Color3.fromRGB(42,149,42)
				buyButton.Text = "Bought"
				wait(0.5)
				buyButton.Text = "Equip"
				buyButton.BackgroundColor3 = Color3.fromRGB(55,193,55)
			elseif result == "NotEnoughBucks" then
				buyButton.BackgroundColor3 = Color3.fromRGB(204,31,31)
				buyButton.Text = "Not enough Bucks!"
				wait(0.5)
				buyButton.Text = "Buy"
				buyButton.BackgroundColor3 = Color3.fromRGB(55,193,55)
			elseif result == "Equipped" then
				equippedItem.Value = selectedItem.Value
				buyButton.BackgroundColor3 = Color3.fromRGB(42,149,42)
				buyButton.Text = "Equipped"
				wait(0.5)
				buyButton.Text = "Unequip"
				buyButton.BackgroundColor3 = Color3.fromRGB(55,193,55)
			elseif result == "Unequipped" then
				equippedItem.Value = ""
				buyButton.BackgroundColor3 = Color3.fromRGB(42,149,42)
				buyButton.Text = "Unequipped"
				wait(0.5)
				buyButton.Text = "Equip"
				buyButton.BackgroundColor3 = Color3.fromRGB(55,193,55)
			end
		end)
		
		if equippedItem.Value ~= "" then
			local fakeCam = Instance.new("Camera")
			fakeCam.Parent = equippedItemViewport
			local handle = game.ReplicatedStorage:WaitForChild("ToolModels"):FindFirstChild(equippedItem.Value.."Handle"):Clone()
			handle.Parent = equippedItemViewport
			equippedItemViewport.CurrentCamera = fakeCam
			fakeCam.CFrame = handle.CameraCFrame.Value
		end
		
		equippedItem:GetPropertyChangedSignal("Value"):Connect(function()
			if equippedItem.Value ~= "" then
				
				for _, v in pairs(equippedItemViewport:GetChildren()) do
					if not v:IsA("Folder") then
						v:Destroy()
					end
				end
				
				local fakeCam = Instance.new("Camera")
				fakeCam.Parent = equippedItemViewport
				local handle = game.ReplicatedStorage:WaitForChild("ToolModels"):FindFirstChild(equippedItem.Value.."Handle"):Clone()
				handle.Parent = equippedItemViewport
				equippedItemViewport.CurrentCamera = fakeCam
				fakeCam.CFrame = handle.CameraCFrame.Value
			else
				for _, v in pairs(equippedItemViewport:GetChildren()) do
					if not v:IsA("Folder") then
						v:Destroy()
					end
				end
			end
		end)
	
end) if not x == true then warn(y) end

The Shop menu opens but you can't select an item.

2 comments

0

Is it a button? If not, click detector/

0

This is a button