mirror of
				https://github.com/OTCv8/otclientv8.git
				synced 2025-10-31 10:56:24 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			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 | 
