i created a script that clone the tool from replicatedStorage, and put in the backpack when press E, but i want it to equip the tool too when press E, but isnt working, there is a other way to do this?
wait() local toolname = script.Parent.Name local replicatedstorage = game:GetService("ReplicatedStorage") local fruit = replicatedstorage.Skills:WaitForChild(script.Parent.Parent.Parent.Parent.Stats.AkumaNoMi.Value) local tool = fruit:WaitForChild(script.Parent.Name) local plr = game.Players.LocalPlayer local plrc = plr.Character Mouse = plr:GetMouse() function PressE(key) --Edit PressQ to what ever key you want. Example: PressF (capitals matter) if (key == "e") then -- Edit "q" to the same key you chose in the line above! Example: "f" (make sure it isn't in caps!) if script.Parent.Reloading.Value == "No" then local toolCloning = tool:Clone() toolCloning.Parent = plr.Backpack wait(0.25) plrc.Humanoid:EquipTool(script.Parent.Parent.Parent.Parent.Backpack.toolname) end end end Mouse.KeyDown:connect(PressE) --Edit (PressQ) to the same key you chose in line 8 and 9. Example: PressF
I agree with what the above person said; UserInputService
is the better, easier, and more developed method.
User input service is fairly easy to use and is actually better than the other service you're currently using. It's also a lot more versatile as you can use `InputBegan`; `InputChanged`; `InputEnded`, `JumpRequest()`; `GamepadConnected`; etc etc etc. Basically, if you're ever planning on making your game multi-platform, you should consider using `UserInputService`. By what you're trying to do, I would suggest `InputBegan`.
Here's an example script
local userInputService = game:GetService("UserInputService") userInputService.InputBegan:connect(function(key) if key.KeyCode == Enum.KeyCode.E then print("The letter E was pushed") end end)
Here is this implemented into your script:
local plr = game.Players.LocalPlayer repeat wait() until plr.Character local plrc = plr.Character local toolName = script.Parent.Name local replicatedStorage = game:GetService("ReplicatedStorage") local fruit = replicatedstorage:WaitForChild("Skills"):WaitForChild(script.Parent.Parent.Parent.Parent.Stats.AkumaNoMi.Value) local tool = fruit:WaitForChild(script.Parent.Name) local uis = game:GetService("UserInputService") uis.InputBegan:connect(function(key) if key.KeyCode == Enum.KeyCode.E and script.Parent.Reloading.Value == "No" then local toolCloning = tool:Clone() toolCloning.Parent = plr.Backpack wait(0.25) plrc.Humanoid:EquipTool(toolCloning) end end)
Another thing: I noticed that you used script.Parent.Parent.Parent.Parent.Backpack.toolname
which isn't the proper method. If you're looking for an item via it's name and it's not in string format, then use script.Parent.Parent.Parent.Parent.Backpack[toolname]
as this will look for the tool with toolname instead of literally toolname.
If this helped, then please accept my answer!
You are using the Mouse.KeyDown
event, which is deprecated and most likely will not work. UserInputService and ContextActionService is more preferred over.
So there are two method to do this.
UserInputService method:
wait() local toolname = script.Parent.Name local replicatedstorage = game:GetService("ReplicatedStorage") local fruit = replicatedstorage.Skills:WaitForChild(script.Parent.Parent.Parent.Parent.Stats.AkumaNoMi.Value) local tool = fruit:WaitForChild(script.Parent.Name) local plr = game.Players.LocalPlayer local plrc = plr.Character local UIS = game:GetService("UserInputService") function PressE(input, gpe) if input.KeyCode == Enum.KeyCode.E then if script.Parent.Reloading.Value == "No" then local toolCloning = tool:Clone() toolCloning.Parent = plr.Backpack wait(0.25) plrc.Humanoid:EquipTool(script.Parent.Parent.Parent.Parent.Backpack.toolname) end end end UIS.InputBegan:Connect(PressE)
ContextActionService method:
wait() local toolname = script.Parent.Name local replicatedstorage = game:GetService("ReplicatedStorage") local fruit = replicatedstorage.Skills:WaitForChild(script.Parent.Parent.Parent.Parent.Stats.AkumaNoMi.Value) local tool = fruit:WaitForChild(script.Parent.Name) local plr = game.Players.LocalPlayer local plrc = plr.Character function PressE(actionName, userInputState, inputObject) if userInputState == Enum.UserInputState.Begin then if script.Parent.Reloading.Value == "No" then local toolCloning = tool:Clone() toolCloning.Parent = plr.Backpack wait(0.25) plrc.Humanoid:EquipTool(script.Parent.Parent.Parent.Parent.Backpack.toolname) end end end game.ContextActionService:BindAction("keyPress", PressE, false, Enum.KeyCode.E)
Either way can be used and they will work as expected.
If it still doesn’t work: check if the Reloading value is set to "No" and your tool is named "toolname" (because the script refers it)
Hope this helps.