RegisterInput

Inputs are buttons events that handle both key press and release states. They must be registered using registerInput() at root level, outside of any event, in the init.lua file.

The button state (press/release) is defined in the first argument passed to the callback.

Definition

registerInput(slug, label, callback)
--
-- registerInput()
--
-- @param  string    slug      The internal slug (must be unique in your mod scope)
-- @param  string    label     The label displayed in CET Bindings
-- @param  function  callback  The callback function
--
registerInput('slug', 'label', function(keypress)
    
    if keypress then
        -- key is pressed
    else
        -- key is released
    end
    
end)

Alternative Usage

You can register an Input and make it behave like a Hotkey. This method is more reactive as it triggers on key press, when a Hotkey is triggered on release.

registerInput('slug', 'label', function(keypress)
    
    -- bail early on key release
    if not keypress then
        return
    end
    
    -- key is pressed
    
end)

Usage Note

It is important to check the keypress argument inside the callback. Otherwise the code will be executed twice:

  • One time when the key is pressed

  • A second time when released

registerInput('slug', 'label', function(keypress)
    
    -- this will be called 2 times!
    
end)

Usage Example

Activate slow motion effect as long as the input key is pressed:

init.lua
-- register input
registerInput('slow_motion', 'Slow Motion', function(keypress)
    
    -- get time system
    local timeSystem = Game.GetTimeSystem()
    
    -- bail early if time system doesn't exists
    if not timeSystem then
        return
    end
    
    -- key is pressed
    if keypress then
        timeSystem:SetTimeDilation('MySlowMo', 0.3)
        
    -- key is released
    else
        timeSystem:UnsetTimeDilation('MySlowMo')
    end


end)

Advanced Example

Continuously give money as long as the input key is pressed:

This example use the onUpdate event, which is triggered continuously. Make sure to check the documentation before any modification.

init.lua
-- set initial switch state
keep_giving = false

-- register input
registerInput('give_continuous_money', 'Give Continuous Money', function(keypress)

    -- input pressed
    if keypress then
        keep_giving = true -- switch on

    -- input released
    else
        keep_giving = false -- switch off
    end

end)

-- onUpdate
-- this event is triggered continuously
registerForEvent('onUpdate', function()
    
    -- check switch state
    if keep_giving then
        Game.AddToInventory('Items.money', 20)
    end

end)

Last updated