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,
|
||||||
|
|
|
@ -60,6 +60,8 @@ function onModalDialog(id, title, message, enterId, enterText, escapeId, escapeT
|
||||||
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