Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

My Shop GUI can't select items. Can someone help me with it?

Asked by 4 years ago

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.

0
Is it a button? If not, click detector/ maddysIife 0 — 4y
0
This is a button HugigoRoblox 6 — 4y

Answer this question