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

Bank/Item Storage GUI Scripting ERROR ~ Doesn't Store item on GUI Button Click?

Asked by 4 years ago

Recently had this Item Storage GUI when I encountered an error! The error occurs when I click the 4th slot on the GUI which you should see in the code.

The Error I Get Players.ELITE_PUGS.PlayerGui.Bank.Bank.LocalScript:24: invalid argument #3 (string expected, got nil)

Server Script

-- Services --
local Replicated = game:GetService("ReplicatedStorage")
local dataStore = game:GetService("DataStoreService")
local ServerStorage = game:GetService("ServerStorage")

-- DataStores --
local DS2 = require(1936396537);

DS2.Combine("DATA", "Bank")

-- Scripting --
local DEBOUNCES = { }
Replicated[script.Name].OnServerEvent:Connect(function(Player, Slot, retrieveName)
    if (typeof(Slot) ~= "number" or Slot > 4) then return; end
    local playerKey = tostring(Player.UserId) .."_Bank"
    local playerStore = DS2("Bank", Player)
    local playerBase = playerStore:Get({
        [1] = "Empty Slot";
        [2] = "Empty Slot";
        [3] = "Empty Slot"; 
        [4] = "Empty Mom";
    });
    if (not retrieveName) then
        if (DEBOUNCES[Player.Name]) then return; end
        DEBOUNCES[Player.Name] = true
        if (playerBase[Slot] == "Empty Slot") then
            local ITEM = Player.Character:FindFirstChildOfClass("Tool");
            if (not ITEM) then
                Replicated[script.Name]:FireClient(Player, Slot, "Read instructions!")
                wait(1)
                Replicated[script.Name]:FireClient(Player, Slot, playerBase[Slot])
            elseif (ITEM) then
                playerBase[Slot] = ITEM.Name;
                ITEM:Destroy()
                Replicated[script.Name]:FireClient(Player, Slot, playerBase[Slot])
                playerStore:Set(playerBase)
            end
        else
            local ITEM = ServerStorage:FindFirstChild(playerBase[Slot])
            if (ITEM) then
                local CLONE = ITEM:Clone()
                CLONE.Parent = Player.Backpack
            end
            playerBase[Slot] = "Empty Slot";
            Replicated[script.Name]:FireClient(Player, Slot, playerBase[Slot])
            playerStore:Set(playerBase)

        end

        DEBOUNCES[Player.Name] = false
    elseif (retrieveName) then
        Replicated[script.Name]:FireClient(Player, tostring(Slot), playerBase[Slot])
    end
end)

Local Script in GUI


-- Services -- local Replicated = game:GetService("ReplicatedStorage") local Players = game:GetService("Players") -- LocalPlayer -- local Player = Players.LocalPlayer -- Scripting -- for _, b in pairs(script.Parent:GetChildren()) do coroutine.resume(coroutine.create(function() if (b:IsA("TextButton")) then Replicated["Bank"]:FireServer(tonumber(b.Name), true) b.MouseButton1Click:Connect(function() Replicated["Bank"]:FireServer(tonumber(b.Name), false) end) end end)) end Replicated["Bank"].OnClientEvent:Connect(function(Slot, Text) script.Parent[Slot].Text = Text; -- Error = Players.ELITE_PUGS.PlayerGui.Bank.Bank.LocalScript:24: invalid argument #3 (string expected, got nil) end)
0
can you specify which line the errors on? zadobyte 692 — 4y
0
Line 20 in the local script. ELITE_PUGS 0 — 4y
0
try doing script.Parent["Slot"].Text = Text; Philipceo90 18 — 4y
0
Nope, gives me the error Slot is not a valid member of Frame and yes I know what this means, but I hope it doesn't come to me remaking all the scripts ELITE_PUGS 0 — 4y
View all comments (2 more)
0
it might help to print(playerBase[slot]) at several points in your code, specifically when you change them. it might help solve the problem zadobyte 692 — 4y
0
I think it's due to playerBase[spot] is nil. And how many textbuttons are there in script.Parent:GetChildren()? Gabe_elvin1226aclan 323 — 4y

Answer this question