From d2473fd42480e2c7d960967fa834bec0dad155bb Mon Sep 17 00:00:00 2001 From: conde2 Date: Sun, 10 Nov 2013 03:13:51 -0200 Subject: [PATCH 1/2] Login support for 10.21 ~ 10.22 Please someone test more it ! Not tested in real Tibia ! --- modules/gamelib/protocollogin.lua | 50 ++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/modules/gamelib/protocollogin.lua b/modules/gamelib/protocollogin.lua index 68ff5b09..c8219e8d 100644 --- a/modules/gamelib/protocollogin.lua +++ b/modules/gamelib/protocollogin.lua @@ -135,19 +135,47 @@ end function ProtocolLogin:parseCharacterList(msg) local characters = {} - local charactersCount = msg:getU8() - for i=1,charactersCount do - local character = {} - character.name = msg:getString() - character.worldName = msg:getString() - character.worldIp = iptostring(msg:getU32()) - character.worldPort = msg:getU16() - - if g_game.getProtocolVersion() >= 971 then - character.unknown = msg:getU8() + + if g_game.getProtocolVersion() > 1010 then + local worlds = {} + + local worldsCount = msg:getU8() + for i=1, worldsCount do + local world = {} + local worldId = msg:getU8() + world.worldName = msg:getString() + world.worldIp = iptostring(msg:getU32()) + world.worldPort = msg:getU16() + msg:getU8() -- unknow byte? + worlds[worldId] = world + end + + local charactersCount = msg:getU8() + for i=1, charactersCount do + local character = {} + local worldId = msg:getU8() + character.name = msg:getString() + character.worldName = worlds[worldId].worldName + character.worldIp = worlds[worldId].worldIp + character.worldPort = worlds[worldId].worldPort + characters[i] = character end - characters[i] = character + else + local charactersCount = msg:getU8() + for i=1,charactersCount do + local character = {} + character.name = msg:getString() + character.worldName = msg:getString() + character.worldIp = iptostring(msg:getU32()) + character.worldPort = msg:getU16() + + if g_game.getProtocolVersion() >= 971 then + character.unknown = msg:getU8() + end + + characters[i] = character + end end local account = {} From e60372fdeaba6fe6d4cc4e9f19fb471af3e480d5 Mon Sep 17 00:00:00 2001 From: conde2 Date: Sun, 10 Nov 2013 03:17:49 -0200 Subject: [PATCH 2/2] A little fix! --- modules/gamelib/protocollogin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/gamelib/protocollogin.lua b/modules/gamelib/protocollogin.lua index c8219e8d..cdc857f4 100644 --- a/modules/gamelib/protocollogin.lua +++ b/modules/gamelib/protocollogin.lua @@ -144,7 +144,7 @@ function ProtocolLogin:parseCharacterList(msg) local world = {} local worldId = msg:getU8() world.worldName = msg:getString() - world.worldIp = iptostring(msg:getU32()) + world.worldIp = msg:getString() world.worldPort = msg:getU16() msg:getU8() -- unknow byte? worlds[worldId] = world