✓ Accepted answer
So im not sure if you know how to use Inputs or not but i will show you a script and try to explain to my fullest on how it works:
local holding = false
game:GetService("UserInputService").InputBegan:Connect(function(input, gameProcessedEvent)
if gameProcessedEvent then return end
if input.KeyCode == Enum.KeyCode.E and db then
so in this first 5 lines of code what is happening is we have a variable which tells weather or not the key is being held or not which ill use in a bit.. so the script is detecting any inputs on line 1 (from the keyboard) and after it detects them, on line 2 it is checking if the input was the player typing or chat, if it was then the script ends but if it wasnt it continues. on line 3 it now checks what the input was, which for you it will be E. after the key E is detected being clicked:
game:GetService("UserInputService").InputBegan:Connect(function(input, gameProcessedEvent)
if gameProcessedEvent then return end
if input.KeyCode == Enum.KeyCode.E then
holding = true
while holding == true do
print("Holding")
wait(.5)
end
end
end)
so after the first 5 lines i have set the variable "holding" to true because now the player is holding the the key E. after it sets the variable value we have a loop which is now checking that while the variable is equal to true to print "Holding" in the output to show you as a test the character is holding the key every 0.5 seconds.(dont get rid of the wait(0.5) or it will cause extreme lag in the loop and cause your studio to crash or the script wont work in general)
so now your probably thinking.. well how do you know if they arent holding the key anymore?
game:GetService("UserInputService").InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.E then
holding = false
end
end)
next a few lines down outside of the first function we add these lines of code..
this piece of code similar to the last one detects any inputs and if its the key E or not except its detecting any input thats Ending, now that it detected that the input E ended it will set the variable value of holding to false causing the first part of the script to stop print "Holding" meaning that the player isnt holding the key E anymore. well i hope this made sense and helped you :)
here is the whole script:
local holding = false
game:GetService("UserInputService").InputBegan:Connect(function(input, gameProcessedEvent)
if gameProcessedEvent then return end
if input.KeyCode == Enum.KeyCode.E and db then
holding = true
while holding == true do
print("Holding")
wait(.5)
end
end
end)
game:GetService("UserInputService").InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.E then
holding = false
end
end)
1 comment
Userinputservice