Fixes! Closes #235 and more:
* Hotkeys now save by server & player rather than just player * Added double clicking to module dialog options * Fixed a bug in the modal dialog for > pv970 (protocol changed) * Fixed a login bug for pv970. WARNING: Will remove all your current hotkeys.
This commit is contained in:
		
							parent
							
								
									27d5506262
								
							
						
					
					
						commit
						caf86a9fc6
					
				| 
						 | 
					@ -53,6 +53,8 @@ function show()
 | 
				
			||||||
  if g_game.getFeature(GameSpellList) then
 | 
					  if g_game.getFeature(GameSpellList) then
 | 
				
			||||||
    cooldownWindow:show()
 | 
					    cooldownWindow:show()
 | 
				
			||||||
    cooldownButton:show()
 | 
					    cooldownButton:show()
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    hide()
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,10 +91,14 @@ function load()
 | 
				
			||||||
  local hotkeySettings = g_settings.getNode('HotkeysManager')
 | 
					  local hotkeySettings = g_settings.getNode('HotkeysManager')
 | 
				
			||||||
  local hasCombos = false
 | 
					  local hasCombos = false
 | 
				
			||||||
  if not table.empty(hotkeySettings) then
 | 
					  if not table.empty(hotkeySettings) then
 | 
				
			||||||
    local playerHotkeySettings = hotkeySettings[g_game.getLocalPlayer():getName()]
 | 
					    local serverHotkeys = hotkeySettings[G.host]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if not table.empty(playerHotkeySettings) then
 | 
					    local hotkeys
 | 
				
			||||||
      for k, setting in pairs(playerHotkeySettings) do
 | 
					    if not table.empty(serverHotkeys) then
 | 
				
			||||||
 | 
					      hotkeys = serverHotkeys[g_game.getLocalPlayer():getName()]
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    if not table.empty(hotkeys) then
 | 
				
			||||||
 | 
					      for k, setting in pairs(hotkeys) do
 | 
				
			||||||
        addKeyCombo(nil, setting.keyCombo, setting)
 | 
					        addKeyCombo(nil, setting.keyCombo, setting)
 | 
				
			||||||
        hasCombos = true
 | 
					        hasCombos = true
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
| 
						 | 
					@ -109,11 +113,15 @@ end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function save()
 | 
					function save()
 | 
				
			||||||
  local char = g_game.getLocalPlayer():getName()
 | 
					  local char = g_game.getLocalPlayer():getName()
 | 
				
			||||||
 | 
					  local server = G.host
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  local hotkeySettings = g_settings.getNode('HotkeysManager') or {}
 | 
					  local hotkeySettings = g_settings.getNode('HotkeysManager') or {}
 | 
				
			||||||
  hotkeySettings[char] = {}
 | 
					  hotkeySettings[server] = {}
 | 
				
			||||||
 | 
					  hotkeySettings[server][char] = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for i=1, currentHotkeysList:getChildCount() do
 | 
					  for i=1, currentHotkeysList:getChildCount() do
 | 
				
			||||||
    local child = currentHotkeysList:getChildByIndex(i)
 | 
					    local child = currentHotkeysList:getChildByIndex(i)
 | 
				
			||||||
    table.insert(hotkeySettings[char], {
 | 
					    table.insert(hotkeySettings[server][char], {
 | 
				
			||||||
      keyCombo = child.keyCombo,
 | 
					      keyCombo = child.keyCombo,
 | 
				
			||||||
      autoSend = child.autoSend,
 | 
					      autoSend = child.autoSend,
 | 
				
			||||||
      itemId = child.itemId,
 | 
					      itemId = child.itemId,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,6 +59,8 @@ function onModalDialog(id, title, message, enterId, enterText, escapeId, escapeT
 | 
				
			||||||
    g_game.answerModalDialog(id, escapeId, choiceList:getFocusedChild().choiceId)
 | 
					    g_game.answerModalDialog(id, escapeId, choiceList:getFocusedChild().choiceId)
 | 
				
			||||||
    destroy()
 | 
					    destroy()
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  choiceList.onDoubleClick = enterFunc
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  enterButton.onClick = enterFunc
 | 
					  enterButton.onClick = enterFunc
 | 
				
			||||||
  modalDialog.onEnter = enterFunc
 | 
					  modalDialog.onEnter = enterFunc
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1500,20 +1500,26 @@ void ProtocolGame::parseShowModalDialog(const InputMessagePtr& msg)
 | 
				
			||||||
        choiceList.push_back(std::make_tuple(id, value));
 | 
					        choiceList.push_back(std::make_tuple(id, value));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int enterButton = msg->getU8();
 | 
					    int enterButton, escapeButton;
 | 
				
			||||||
    int escapeButton = msg->getU8();
 | 
					    if(g_game.getProtocolVersion() > 970) {
 | 
				
			||||||
 | 
					        escapeButton = msg->getU8();
 | 
				
			||||||
 | 
					        enterButton = msg->getU8();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        enterButton = msg->getU8();
 | 
				
			||||||
 | 
					        escapeButton = msg->getU8();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg->getU8(); // popup value (no clue what it is for)
 | 
					    msg->getU8(); // popup value (no clue what it is for)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::map<int, std::string>::iterator itEnter = buttonList.find(enterButton);
 | 
					    std::map<int, std::string>::iterator itEnter = buttonList.find(enterButton);
 | 
				
			||||||
    if(itEnter == buttonList.end())
 | 
					    if(itEnter == buttonList.end()) {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        g_logger.info(stdext::format("Enter button does not exist for dialog id: %d", id));
 | 
					        g_logger.info(stdext::format("Enter button does not exist for dialog id: %d", id));
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::map<int, std::string >::iterator itEscape = buttonList.find(escapeButton);
 | 
					    std::map<int, std::string >::iterator itEscape = buttonList.find(escapeButton);
 | 
				
			||||||
    if(itEscape == buttonList.end())
 | 
					    if(itEscape == buttonList.end()) {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        g_logger.info(stdext::format("Escape button does not exist for dialog id: %d", id));
 | 
					        g_logger.info(stdext::format("Escape button does not exist for dialog id: %d", id));
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@ void ProtocolGame::sendLoginPacket(uint challengeTimestamp, uint8 challengeRando
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg->addU16(g_game.getProtocolVersion());
 | 
					    msg->addU16(g_game.getProtocolVersion());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if(g_game.getProtocolVersion() >= 970) {
 | 
					    if(g_game.getProtocolVersion() >= 971) {
 | 
				
			||||||
        msg->addU32(g_game.getClientVersion());
 | 
					        msg->addU32(g_game.getClientVersion());
 | 
				
			||||||
        msg->addU8(0); // clientType
 | 
					        msg->addU8(0); // clientType
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue