otclientv8/modules/game_hotkeys/hotkeys_extra.lua

119 lines
3.4 KiB
Lua

extraHotkeys = {}
function addExtraHotkey(name, description, callback)
table.insert(extraHotkeys, {
name = name:lower(),
description = tr(description),
callback = callback
})
end
function setupExtraHotkeys(combobox)
addExtraHotkey("none", "None", nil)
addExtraHotkey("cancelAttack", "Stop attacking", function(repeated)
if not repeated then
g_game.attack(nil)
end
end)
addExtraHotkey("attackNext", "Attack next target from battle list", function(repeated)
if repeated or not modules.game_battle then
return
end
local battlePanel = modules.game_battle.battlePanel
local attackedCreature = g_game.getAttackingCreature()
local nextChild = nil
local breakNext = false
for i, child in ipairs(battlePanel:getChildren()) do
if not child.creature or child:isDisabled() then
break
end
nextChild = child
if breakNext then
break
end
if child.creature == attackedCreature then
breakNext = true
nextChild = battlePanel:getFirstChild()
end
end
if not breakNext then
nextChild = battlePanel:getFirstChild()
end
if nextChild and nextChild.creature ~= attackedCreature then
g_game.attack(nextChild.creature)
end
end)
addExtraHotkey("attackPrevious", "Attack previous target from battle list", function(repeated)
if repeated or not modules.game_battle then
return
end
local battlePanel = modules.game_battle.battlePanel
local attackedCreature = g_game.getAttackingCreature()
local prevChild = battlePanel:getLastChild()
for i, child in ipairs(battlePanel:getChildren()) do
if not child.creature or child:isDisabled() then
break
end
if child.creature == attackedCreature then
break
end
prevChild = child
end
if prevChild and prevChild.creature ~= attackedCreature then
g_game.attack(prevChild.creature)
end
end)
addExtraHotkey("toogleWsad", "Enable/disable wsad walking", function(repeated)
if repeated or not modules.game_console then
return
end
if not modules.game_console.consoleToggleChat:isChecked() then
modules.game_console.disableChat(true)
else
modules.game_console.enableChat(true)
end
end)
for index, actionDetails in ipairs(extraHotkeys) do
combobox:addOption(actionDetails.description)
end
end
function executeExtraHotkey(action, repeated)
action = action:lower()
for index, actionDetails in ipairs(extraHotkeys) do
if actionDetails.name == action and actionDetails.callback then
actionDetails.callback(repeated)
end
end
end
function translateActionToActionComboboxIndex(action)
action = action:lower()
for index, actionDetails in ipairs(extraHotkeys) do
if actionDetails.name == action then
return index
end
end
return 1
end
function translateActionComboboxIndexToAction(index)
if index > 1 and index <= #extraHotkeys then
return extraHotkeys[index].name
end
return nil
end
function getActionDescription(action)
action = action:lower()
for index, actionDetails in ipairs(extraHotkeys) do
if actionDetails.name == action then
return actionDetails.description
end
end
return "invalid action"
end