Support for protocol 7.7/7.72 / Tiny fix

This commit is contained in:
Sam 2013-12-26 21:31:55 +01:00
parent 91c182d93d
commit da959aca28
6 changed files with 24 additions and 16 deletions

View File

@ -48,7 +48,7 @@ g_modules.ensureModuleLoaded("game_interface")
-- mods 1000-9999
g_modules.autoLoadModules(9999)
local script = '/' .. g_app.getCompactName() .. 'rc'
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)

View File

@ -14,7 +14,7 @@ function reloadScripts()
g_textures.clearCache()
g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc'
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)
end

View File

@ -48,11 +48,12 @@ end
function g_game.getSupportedClients()
return {
760, 810, 811, 840, 842, 850, 853,
854, 860, 861, 862, 870, 910, 940,
944, 953, 954, 960, 961, 963, 970,
980, 981, 982, 983, 984, 985, 986,
1001, 1002, 1010, 1020, 1021, 1022,
760, 770, 772, 810, 811, 840, 842,
850, 853, 854, 860, 861, 862, 870,
910, 940, 944, 953, 954, 960, 961,
963, 970, 980, 981, 982, 983, 984,
985, 986, 1001, 1002, 1010, 1020,
1021, 1022
}
end

View File

@ -46,7 +46,7 @@ function ProtocolLogin:sendLoginPacket()
local offset = msg:getMessageSize()
if g_game.getProtocolVersion() >= 800 then
if g_game.getProtocolVersion() >= 770 then
-- first RSA byte must be 0
msg:addU8(0)
-- xtea key
@ -74,7 +74,7 @@ function ProtocolLogin:sendLoginPacket()
local paddingBytes = g_crypt.rsaGetSize() - (msg:getMessageSize() - offset)
assert(paddingBytes >= 0)
msg:addPaddingBytes(paddingBytes, 0)
if g_game.getProtocolVersion() >= 800 then
if g_game.getProtocolVersion() >= 770 then
msg:encryptRsa()
end
@ -83,7 +83,7 @@ function ProtocolLogin:sendLoginPacket()
end
self:send(msg)
if g_game.getProtocolVersion() >= 800 then
if g_game.getProtocolVersion() >= 770 then
self:enableXteaEncryption()
end
self:recv()

View File

@ -1445,7 +1445,7 @@ void Game::setProtocolVersion(int version)
if(isOnline())
stdext::throw_exception("Unable to change protocol version while online");
if(version != 0 && version != 760 && (version < 810 || version > 1022))
if(version != 0 && (version < 760 || (version > 772 && version < 810) || version > 1022))
stdext::throw_exception(stdext::format("Protocol version %d not supported", version));
m_features.reset();
@ -1453,6 +1453,8 @@ void Game::setProtocolVersion(int version)
if(version >= 770)
{
enableFeature(Otc::GameLooktypeU16);
enableFeature(Otc::GameMessageStatements);
enableFeature(Otc::GameWritableDate); // might not be since 770
}
@ -1462,9 +1464,7 @@ void Game::setProtocolVersion(int version)
enableFeature(Otc::GamePlayerStamina);
enableFeature(Otc::GameNewFluids);
enableFeature(Otc::GameMessageLevel);
enableFeature(Otc::GameMessageStatements);
enableFeature(Otc::GamePlayerStateU16);
enableFeature(Otc::GameLooktypeU16);
enableFeature(Otc::GameNewOutfitProtocol);
}
@ -1553,7 +1553,7 @@ void Game::setClientVersion(int version)
if(isOnline())
stdext::throw_exception("Unable to change client version while online");
if(version != 0 && version != 760 && (version < 810 || version > 1022))
if(version != 0 && (version < 760 || (version > 772 && version < 810) || version > 1022))
stdext::throw_exception(stdext::format("Client version %d not supported", version));
m_clientVersion = version;

View File

@ -1462,8 +1462,15 @@ void ProtocolGame::parseOpenOutfitWindow(const InputMessagePtr& msg)
outfitList.push_back(std::make_tuple(outfitId, outfitName, outfitAddons));
}
} else {
int outfitStart = msg->getU8();
int outfitEnd = msg->getU8();
int outfitStart, outfitEnd;
if(g_game.getFeature(Otc::GameLooktypeU16)) {
outfitStart = msg->getU16();
outfitEnd = msg->getU16();
} else {
outfitStart = msg->getU8();
outfitEnd = msg->getU8();
}
for(int i = outfitStart; i <= outfitEnd; i++)
outfitList.push_back(std::make_tuple(i, "", 0));
}