I tried this but it says that Gather1 is not a valid member of backpack, so it breaks. I'm trying to make it so that you can't buy the item if you already have it. I also need this for when they want to sell something.
function onClick(hit) if game.Players.LocalPlayer.leaderstats.Gold.Value >= 5 and game.Players.LocalPlayer.Backpack.Gather1 == nil then game.Players.LocalPlayer.leaderstats.Gold.Value = game.Players.LocalPlayer.leaderstats.Gold.Value - 5 tool = game.ReplicatedStorage.Tools.Gather1:Clone() tool.Parent = game.Players.LocalPlayer.Backpack end end script.Parent.MouseButton1Down:connect(onClick)
Hey, I haven't tested it but I think that should work:
function checkItemInInventory(item) for index, value in pairs(game.Players.LocalPlayer.Backpack:GetChildren()) do if value.Name == item.Name then return false else return true end end end function onClick(hit) if game.Players.LocalPlayer.leaderstats.Gold.Value >= 5 and checkItemInInventory(game.Players.LocalPlayer.Backpack.Gather1) then game.Players.LocalPlayer.leaderstats.Gold.Value = game.Players.LocalPlayer.leaderstats.Gold.Value - 5 local tool = game.ReplicatedStorage.Tools.Gather1:Clone() tool.Parent = game.Players.LocalPlayer.Backpack end end script.Parent.MouseButton1Down:connect(onClick)
What we are doing in this code is calling a function, the function checks if the item is in the inventory, if it is it return false (because we want it to work when the item isn't in the inventory) if it's not it returns true.
I'm not sure it will work because as I said I haven't tested it, so if you face any problem please respond and I will try to do my best to help you.
Have a nice day :)
FindFirstChild
. It’s never a good idea to check the requirements on the server, because the client can manipulate the requirements to less. I suggest doing it on the server with a RemoteFunction
. But do it however you can.local plr = game:GetService("Players").LocalPlayer local tool = game:GetService("ReplicatedStorage").Tools.Gather1 function onClick() -- MouseButton1Click has no parameters if plr.leaderstats.Gold.Value >= 5 then if not plr:FindFirstChild("Gather1", true) and not plr.Character:FindFirstChild"Gather1" then plr.leaderstats.Gold.Value = plr.leaderstats.Gold.Value - 5 tool:Clone().Parent = plr.Backpack tool:Clone().Parent = plr.StarterGear end end end script.Parent.MouseButton1Click:Connect(onClick) -- Switch to :Connect, :connect is deprecated
:Connect()
, as ROBLOX may remove :connect()
soon.--sorry for using space I did this all on mobile function findTool(player, toolname) if player then player.Character.Humanoid:UnequipTools() for i, v in pairs(player.Backpack:GetChildren()) do if v:IsA("Tool") and v.Name == toolname then return true end end end end --use function like this local HasTool = findTool(player, "Gather1") if HasTool == true then Print("has tool") end