119 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.2 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 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 |