I'm trying to make it so when i press 1, 2 , 3 it equips weapon. So far, every time i've tried making it with UserInputService, it crashes the GUI itself. Here's my script.


local Items = {}
local frames = {}
local Equiped = nil
local Player = game.Players.LocalPlayer
local Character = Player.Character
local UserInputService = game:GetService("UserInputService")
local bp = Player.Backpack
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack,false)

local inputKeys = { 
	Enum.KeyCode.One
	Enum.KeyCode.Two
	Enum.KeyCode.Three
	Enum.KeyCode.Four
	Enum.KeyCode.Five
	Enum.KeyCode.Six
	Enum.KeyCode.Seven
	Enum.KeyCode.Eight
	Enum.KeyCode.Nine
	Enum.KeyCode.Zero}
end

function Scan(location)
	for i,v in pairs(location:GetChildren()) do
		if v:IsA("Tool") then
			table.insert(Items,v)
		end
	end
end

function Update()
	print(Equiped)
	for i,v in pairs(frames) do
		v:Destroy()
	end
	for i,v in pairs(Items) do
		local sam = script.Sample:Clone()
		sam.Name = v.Name
		sam.Parent = script.Parent.Holder
		sam.ImageLabel.Image = v.TextureId
		sam.Text = v.Name
		table.insert(frames,sam)
		if Equiped ~= nil and Equiped == v then
			sam.BorderSizePixel = 2
		end
		sam.MouseButton1Click:connect(function()
			if Equiped == nil or Equiped ~= v then
				Equiped = v
				Character.Humanoid:UnequipTools()
				Character.Humanoid:EquipTool(v)
			else
				Eqeys to equip/unequipuiped = nil
				Character.Humanoid:UnequipTools()
			end
		end)
	end
end

function onKeyPress(inputObject)
	local key = inputObject.KeyCode.Name
	local value = inputKeys[key]
	if value and UserInputService:GetFocusedTextBox() == nil then 
		Equiped(value["tool"])
	end 
end


function backpackchanged()
	Items = {}
	Scan(Character)
	Scan(Player.Backpack)
	Update()
end

backpackchanged()

Player.Backpack.ChildAdded:connect(backpackchanged)
Player.Backpack.ChildRemoved:connect(backpackchanged)

Character.ChildAdded:connect(backpackchanged)
Character.ChildRemoved:connect(backpackchanged)

2 comments

0

Enum.KeyCode.Zero} end... ??? What's with the "end"? You already have the covered with }.

0

thanks for finding that, but it still doesn't work.