mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-04-29 18:59:20 +02:00
119 lines
3.4 KiB
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 |