keypress library.

Hi everyone. I decided to release my small library of keypress. You can do the same as gamemode.KeyPress but with every key. Explanation of library:

[lua]function keypress.Add(key number,stringid string,func function,[funcunpress] function , [sendtoserver] boolean)[/lua]

This function links a key to a specific function.

  • key is the key you want to detect.
  • stringid is an identificative string
  • func is the funcion will be executed when button is pressed.
  • funcunpress is an optional parameter. Is a function that executes when button is unpressed.
  • sendtoserver is an optional parameter. Is a boolean, if it is true, a console command will be sent to server when key is pressed (and unpressed). The command is:

keypressed_+KEY (if KEY is pressed)
keypressed_-KEY (if KEY is unpressed)

[lua]function keypress.Remove(key number,stringid string, [hideerrors] boolean)[/lua]

This function removes the link between a key and function.

  • key is the key you want to remove from detect.
  • stringid is the stringid
  • hideerrors is an optional parameter. If it is true, no errors will appear if you try to remove more than once the same key.

[lua]function keypress.Clean()[/lua]

This function cleans all links between key and functions.

The code of script:

[lua]// Developed by lilEzek

__EzekListKey = {} //Don’t touch this
keypress = {} // The same with this

function keypress.Add(key,stringid,func,funcunpress,sendtoserver)
if type(key) != “number” then
Error(“Key is not a valid number or KEY”)
return false
end
if type(stringid) != “string” then
Error(“Stringid is not a valid string”)
return false
end
if type(func) != “function” then
Error(“Func is not a valid function”)
return false
end
__EzekListKey[key] = {}
__EzekListKey[key][stringid] = {}
__EzekListKey[key][stringid][“func”] = func
__EzekListKey[key][stringid][“unpress”] = funcunpress
__EzekListKey[key][stringid][“pressed”] = false
__EzekListKey[key][stringid][“toserver”] = sendtoserver
end

function keypress.Remove(key,stringid,hideerrors)
if __EzekListKey[key][stringid] == nil then
if !hideerrors then
Error(stringid…" doesn’t match with “…tostring(key)…” key")
end
return false
end
if #_EzekListKey[key] == 1 then
__EzekListKey[key] = nil
end
end

function keypress.Clean()
__EzekListKey = nil
__EzekListKey = {}
end

local function KeypressAddThink()
for k,v in pairs(EzekListKey) do
if input.IsKeyDown(k) then
for r,j in pairs(v) do
if j[“pressed”] == false then
j"func"
if j[“toserver”] then
RunConsoleCommand("keypressed
+"…tostring(k))
end
end
j[“pressed”] = true
end
else
for r,j in pairs(v) do
if j[“pressed”] == true and type(j[“unpress”]) == “function” then
j"unpress"
if j[“toserver”] then
RunConsoleCommand("keypressed
-"…tostring(k))
end
end
j[“pressed”] = false
end
end
end
end

hook.Add(“Think”, “KeypressAddThink”, KeypressAddThink)
[/lua]

I hope you like it.