mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-16 07:14:55 +02:00
Resolve "Merge the best from 7.40 branch"
This commit is contained in:
119
SabrehavenOTClient/modules/game_hotkeys/hotkeys_extra.lua
Normal file
119
SabrehavenOTClient/modules/game_hotkeys/hotkeys_extra.lua
Normal file
@@ -0,0 +1,119 @@
|
||||
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 not child:isOn() 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 = nil
|
||||
for i, child in ipairs(battlePanel:getChildren()) do
|
||||
if not child.creature or not child:isOn() 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
|
Reference in New Issue
Block a user