local mcm_key = DIK_keys.DIK_Z -- your default key local mcm_id = "exo_power" -- change this local key_function = "key_func" -- this too if you renamed the function function key_func() exo_powers.activate_powers() end local mcm_keybinds = ui_mcm and ui_mcm.key_hold local modifier = 0 local second_key = 0 function on_mcm_load() local options = { id = mcm_id, sh = true, gr = { { id = mcm_id , type = "slide" , link = "ui_options_slider_player", text = "ui_mcm_menu_" .. mcm_id, size = {512, 50}, spacing = 20}, { id = "keybind" , type = "key_bind" , val = 2, def = mcm_key }, { id = "modifier" , type = ui_mcm.kb_mod_radio , val = 2, def = 0, hint = "mcm_kb_mode" , content = { { 0, "mcm_kb_mode_press"}, { 1, "mcm_kb_mode_dtap"}, { 2, "mcm_kb_mode_hold"} } }, { id = "second_key" , type = ui_mcm.kb_mod_radio, val = 2, def = 0, hint = "mcm_kb_modifier" , content = { {0,"mcm_kb_mod_none"} , {1,"mcm_kb_mod_shift"} , {2,"mcm_kb_mod_ctrl"}, {3,"mcm_kb_mod_alt"} }}, { id = "desc_mcm" , type = "desc" , text = "ui_mcm_" .. mcm_id .. "_mcm", clr = {255, 175 ,0 ,0}, precondition = {function() return not mcm_keybinds end} } } } return options end local modes = { [0] = { ["call"] = {"on_key_press", "on_key_hold"}, ["function"] = function(key) ui_mcm.simple_press(mcm_id, key, key_function) end }, [1] = { ["call"] = {"on_key_press", "on_key_hold"}, ["function"] = function(key) if ui_mcm.double_tap(mcm_id, key) then key_function() end end }, [2] = { ["call"] = {"on_key_hold", "on_key_press"}, ["function"] = function(key) if ui_mcm.key_hold(mcm_id, key) then key_function() end end } } function on_key_press(key) if key ~= mcm_key then return end if not mcm_keybinds then key_function() return end if ui_mcm.get_mod_key(second_key) then modes[modifier]["function"](key) end end function on_key_hold(key) if key ~= mcm_key then return end if ui_mcm.get_mod_key(second_key) then modes[modifier]["function"](key) end end function on_option_change(mcm) if mcm then mcm_key = ui_mcm.get(mcm_id .. "/keybind") modifier = ui_mcm.get(mcm_id .. "/modifier") second_key = ui_mcm.get(mcm_id .. "/second_key") RegisterScriptCallback(modes[modifier]["call"][1], this[modes[modifier]["call"][1]]) UnregisterScriptCallback(modes[modifier]["call"][2], this[modes[modifier]["call"][2]]) end end function on_game_start() RegisterScriptCallback("on_option_change", on_option_change) RegisterScriptCallback("on_key_press", on_key_press) key_function = this[key_function] on_option_change(mcm_keybinds) end