Is it even possible to make a player equip a tool via a script (e.g. when he/she presses a certain key)? Any help is appreciated, as I do not have any idea how to make it...
Equip tools via a script?
2 answers
Anything is possible with a script!
Breaking down the problem
All you need to do is ask yourself what to do first, then focus on that. The last thing you want to do is get an idea of something to accomplish without any steps. So, here's what we need to ask:
1: How are tools equipped in the first place?
Tools are equipped by placing a Tool object inside a player's character. You can see this transition by paying close attention to your character as you equip a tool in your inventory in studio.
2: How would I trigger something to happen when a key is pressed?
UserInputService is a neat UI that allows us to compare and connect information when a user inputs certain data. In this case, a KeyCode.
(UserInputService: http://wiki.roblox.com/index.php?title=API:Class/UserInputService)
We can make a simple hello world program when the 'e' key is pressed using this demonstration:
local UserInput = game:GetService("UserInputService")
UserInput.InputBegan:connect(function(Input)
if Input.KeyCode == Enum.KeyCode.E then
print("hello world") -- prints 'hello world' when 'e' is pressed
end
end)
Combining solved problems
Now all we have to do is combine all our solved problems, and create a final result. In this case, all we have to do is make it so a tool appears inside a player's character when a key is pressed. Here's the result:
local UserInput = game:GetService("UserInputService")
local Player = game:GetService("Players").LocalPlayer
local Character = Player.Character or Player.CharacterAdded:wait()
-- Create a tool
local Tool = Instance.new("Tool")
Instance.new("Part",Tool).Name = "Handle"
UserInput.InputBegan:connect(function(Input)
if Input.KeyCode == Enum.KeyCode.E then
Tool.Parent = Character -- Give the player the tool
end
end)
Hope this helped.
Well if you were to search up KeyDown you would get the part of he/she presses down a key. And this was in the forum the other day but the Humanoid has a function called EquipTool. Instead of KeyDown I use UserInputService as KeyDown is deprecated. An example would be um:
local UserInputService = game:GetService'UserInputService'
local p = game.Players.LocalPlayer
repeat wait() until p.Character
local c = p.Character
UserInputService.InputBegan:connect(function(inputObject, gameProcessedEvent) -- key goes down
if not gameProcessedEvent then -- so it doesn't activate when you chat
if inputObject.KeyCode == Enum.KeyCode.F then -- F down
c.Humanoid:EquipTool(game.ReplicatedStorage.Tool) -- tells humanoid to equip tool
end
end
end)
Related links may include: http://wiki.roblox.com/index.php?title=API:Class/Humanoid/EquipTool http://wiki.roblox.com/index.php?title=API:Class/Mouse/KeyDown http://wiki.roblox.com/?title=API:Class/UserInputService http://wiki.roblox.com/index.php?title=API:Class/InputObject http://wiki.roblox.com/index.php?title=API:Class/InputObject/KeyCode
This discussion is preserved as it was. New answers, comments, and votes are closed.

1 comment
Thank you!