Ok,
I’m basicly trying to make – Very – SImple Inventory system, where when you click on the item, (viewport frame), it equips it, click again, upequip it : here is the code :
local equipped = script.Parent.Handler.Equipped
local selected = script.Parent.Handler.Selected
local location = script.Parent.Handler.Location
local player = game.Players.LocalPlayer
local character = player.Character
local items = {}
local buttons = {}
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack,false) -- Makes the original backpack gui invisible
function search(location)
for i,v in pairs(location:GetChildren()) do -- Find all item in a specific location
if v:isA("Tool") then -- If the item found is a "Tool"
table.insert(items,v) -- We're going to put all the tools found in a table.
print("1")
end
end
end
function refresh()
for i,v in pairs(buttons) do -- Finds all items in the table
v:Destroy() -- Destroy 'em all
print("2")
end
for i,v in pairs(items) do -- Finds all items in the table
local button = script.Sample:Clone() -- clones the sample button inside the localscript
button.Name = v.Name -- sets the cloned button's name to the name of the item
button.LayoutOrder = i
button.Parent = script.Parent.Handler -- Sets the parent of the cloned button to the handler
button.Image = v.TextureId -- Sets the image of the button to the texture id of the tool
table.insert(buttons,button) -- Inserts the button to our table "buttons"
print("3")
button.MouseButton1Click:connect(function()
print("4")
if script.Parent.Handler.Selected.Value == nil or script.Parent.Handler.Selected.Value ~= v then -- Checks if the selected value is nothing or if the selected value is not the button
script.Parent.Frame.ItemName.Text = v.Name -- Sets the TextLabel's Text to the name of the tool/button
script.Parent.Frame.ImageLabel.Image = v.TextureId -- Sets the image label's image to the texture id of the tool
script.Parent.Handler.Selected.Value = v
print("5")
if equipped.Value == nil or equipped.Value ~= selected.Value then -- Just the same as the last one
character.Humanoid:UnequipTools() -- Forces the player to unequip the tool that they equipped
print("6")
character.Humanoid:EquipTool(selected.Value)
equipped.Value = selected.Value
print('7')
end
else
end
end)
end
end
function backpackRefresh()
print("8")
items = {}
search(character)
search(player.Backpack)
refresh()
end
backpackRefresh()
player.Backpack.ChildAdded:connect(backpackRefresh)
player.Backpack.ChildRemoved:connect(backpackRefresh)
character.ChildAdded:connect(backpackRefresh)
character.ChildRemoved:connect(backpackRefresh)
How can I modify it to add these kind of thing
I modified a bit the code after the “else” line
else
character.Humanoid:UnequipTools() -- Forces the player to unequip the tool that they equipped
script.Parent.Handler.Selected.Value = nil
script.Parent.Frame.ItemName.Text = "Name"
Problem is that now, it can unequip the tool (No problem) but I can’t reequip it after, I have to click on another item, then it “unlock” it
Ok I fixed it…
here is the code for those who want :
local equipped = script.Parent.Handler.Equipped
local selected = script.Parent.Handler.Selected
local location = script.Parent.Handler.Location
local player = game.Players.LocalPlayer
local character = player.Character
local items = {}
local buttons = {}
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack,false) -- Makes the original backpack gui invisible
function search(location)
for i,v in pairs(location:GetChildren()) do -- Find all item in a specific location
if v:isA("Tool") then -- If the item found is a "Tool"
table.insert(items,v) -- We're going to put all the tools found in a table.
print("1")
end
end
end
function refresh()
for i,v in pairs(buttons) do -- Finds all items in the table
v:Destroy() -- Destroy 'em all
print("2")
end
for i,v in pairs(items) do -- Finds all items in the table
local button = script.Sample:Clone() -- clones the sample button inside the localscript
button.Name = v.Name -- sets the cloned button's name to the name of the item
button.LayoutOrder = i
button.Parent = script.Parent.Handler -- Sets the parent of the cloned button to the handler
button.Image = v.TextureId -- Sets the image of the button to the texture id of the tool
table.insert(buttons,button) -- Inserts the button to our table "buttons"
print("3")
button.MouseButton1Click:connect(function()
print("4")
if script.Parent.Handler.Selected.Value == nil or script.Parent.Handler.Selected.Value ~= v then -- Checks if the selected value is nothing or if the selected value is not the button
script.Parent.Frame.ItemName.Text = v.Name -- Sets the TextLabel's Text to the name of the tool/button
script.Parent.Frame.ImageLabel.Image = v.TextureId -- Sets the image label's image to the texture id of the tool
script.Parent.Handler.Selected.Value = v
print("5")
if equipped.Value == nil or equipped.Value ~= selected.Value then -- Just the same as the last one
character.Humanoid:UnequipTools() -- Forces the player to unequip the tool that they equipped
print("6")
character.Humanoid:EquipTool(selected.Value)
equipped.Value = selected.Value
print('7')
end
else
character.Humanoid:UnequipTools() -- Forces the player to unequip the tool that they equipped
script.Parent.Handler.Selected.Value = nil
script.Parent.Frame.ItemName.Text = "Name"
equipped.Value = nil
end
end)
end
end
function backpackRefresh()
print("8")
items = {}
search(character)
search(player.Backpack)
refresh()
end
backpackRefresh()
player.Backpack.ChildAdded:connect(backpackRefresh)
player.Backpack.ChildRemoved:connect(backpackRefresh)
character.ChildAdded:connect(backpackRefresh)
character.ChildRemoved:connect(backpackRefresh)