Hello, how do I make a script run an event when I press on a specific key?
I’ve tried my luck with these scripts, but they don’t seem to work.
client.lua
RegisterNetEvent("keypress")
Citizen.CreateThread(function()
if IsControlPressed(1, 168) then -- F7
TriggerServerEvent("keypress")
end
end)
server.lua
RegisterNetEvent("keypress")
AddEventHandler("keypress", function()
print("test")
end)
It must be on while true do
loop
Because it must check it every frame. If user click it then trigger event. So code would look that:
Citizen.CreateThread(function()
while true do
if IsControlPressed(1, 168) then -- F7
TriggerServerEvent("keypress")
end
Citizen.Wait(0)
end
end)
PS. If you registered event in server-side as a net event, you don’t have to do the same in client-side
d0p3t
December 16, 2020, 2:11pm
3
Creating a thread that constantly loops to listen for a key press is “deprecated”. Moreover, the example will result in an insane amount of events sent . Just RegisterKeyMapping
instead - FiveM native reference
-- client side
RegisterKeyMapping('+keypress', ' My Keypress Key', 'keyboard', 'f7')
RegisterCommand('+keypress', function()
-- key F7 has been pressed
TriggerServerEvent('keypress')
end)
5 Likes
Hmm, it seems like it doesn’t trigger the event?
@d0p3t
Thanks! But this types in the chat.
And why is it “RegisterCommand”?
d0p3t
December 16, 2020, 2:40pm
6
To get rid of that also register a command for -keypress
which indicates a key has been released .
Okay, just registered -keypress
, but why does the event not print?
1 Like
d0p3t
December 16, 2020, 2:57pm
8
I don’t know. Your server code looks fine. You don’t need to RegisterNetEvent
for server side events though if i remember correctly.
Apparently I do, or else it gives me an error…
But everything works perfectly now, thank you very much!
1 Like