Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Help with equiping tools using keydown events?

Asked by
xTalzo 10
8 years ago

For example, I have a tool, Fly, but I only want the player to access it if the double tap spacebar. How should I type the script?

2 answers

Log in to vote
0
Answered by
ImageLabel 1541 Moderation Voter
8 years ago

An alternative to KeyDown is UserInputService. I had already helped you with something similar before so I won't go into too much detail as far as explaining goes. If you have any questions, comment on this reply and I will answer it in an edit.

local player = game:GetService("Players").LocalPlayer
local uis = game:GetService("UserInputService")
local key = "R" -- key to bind
local time = os.time()

local character = player.Character or player.CharacterAdded:wait()

uis.InputBegan:connect(function(inputObject, processed)
    if not processed then
        if inputObject.KeyCode == Enum.KeyCode[key] then
            if(os.difftime(os.time(), time) < 0.8)then
                warn("double pressed")
                -- clone tool into
                -- player's inventory/ backpack
            end
            time = os.time()
        end
    end
end)
Ad
Log in to vote
3
Answered by 8 years ago

Use the KeyDown event given by the player mouse object. You can get this object by calling GetMouse() on the local player (in local scripts only)

Here's an example:

local player = game:GetService("Players").LocalPlayer
local mouse = player:GetMouse()

mouse.KeyDown:connect(function(key)  -- The "key" is what the user pressed
    if key:lower()=="q" then
        print(key.." was pressed")
    end
end)

Now, if you're looking for double pressing space bar, you could use some debounce method as such:

local player = game:GetService("Players").LocalPlayer
local mouse = player:GetMouse()

local between = 0.5 -- Time in which double tap is needed (in seconds)
local double = false

mouse.KeyDown:connect(function(key)
    if key:byte()==32 then -- 32 is space bar
        if double then
            print("Double space")
        else
            double = false
            wait(between)
            double = true
        end
    end
end)

Answer this question