Support for protocol 7.7/7.72 / Tiny fix
This commit is contained in:
parent
91c182d93d
commit
da959aca28
2
init.lua
2
init.lua
|
@ -48,7 +48,7 @@ g_modules.ensureModuleLoaded("game_interface")
|
||||||
-- mods 1000-9999
|
-- mods 1000-9999
|
||||||
g_modules.autoLoadModules(9999)
|
g_modules.autoLoadModules(9999)
|
||||||
|
|
||||||
local script = '/' .. g_app.getCompactName() .. 'rc'
|
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
|
||||||
|
|
||||||
if g_resources.fileExists(script) then
|
if g_resources.fileExists(script) then
|
||||||
dofile(script)
|
dofile(script)
|
||||||
|
|
|
@ -14,7 +14,7 @@ function reloadScripts()
|
||||||
g_textures.clearCache()
|
g_textures.clearCache()
|
||||||
g_modules.reloadModules()
|
g_modules.reloadModules()
|
||||||
|
|
||||||
local script = '/' .. g_app.getCompactName() .. 'rc'
|
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
|
||||||
if g_resources.fileExists(script) then
|
if g_resources.fileExists(script) then
|
||||||
dofile(script)
|
dofile(script)
|
||||||
end
|
end
|
||||||
|
|
|
@ -48,11 +48,12 @@ end
|
||||||
|
|
||||||
function g_game.getSupportedClients()
|
function g_game.getSupportedClients()
|
||||||
return {
|
return {
|
||||||
760, 810, 811, 840, 842, 850, 853,
|
760, 770, 772, 810, 811, 840, 842,
|
||||||
854, 860, 861, 862, 870, 910, 940,
|
850, 853, 854, 860, 861, 862, 870,
|
||||||
944, 953, 954, 960, 961, 963, 970,
|
910, 940, 944, 953, 954, 960, 961,
|
||||||
980, 981, 982, 983, 984, 985, 986,
|
963, 970, 980, 981, 982, 983, 984,
|
||||||
1001, 1002, 1010, 1020, 1021, 1022,
|
985, 986, 1001, 1002, 1010, 1020,
|
||||||
|
1021, 1022
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ function ProtocolLogin:sendLoginPacket()
|
||||||
|
|
||||||
local offset = msg:getMessageSize()
|
local offset = msg:getMessageSize()
|
||||||
|
|
||||||
if g_game.getProtocolVersion() >= 800 then
|
if g_game.getProtocolVersion() >= 770 then
|
||||||
-- first RSA byte must be 0
|
-- first RSA byte must be 0
|
||||||
msg:addU8(0)
|
msg:addU8(0)
|
||||||
-- xtea key
|
-- xtea key
|
||||||
|
@ -74,7 +74,7 @@ function ProtocolLogin:sendLoginPacket()
|
||||||
local paddingBytes = g_crypt.rsaGetSize() - (msg:getMessageSize() - offset)
|
local paddingBytes = g_crypt.rsaGetSize() - (msg:getMessageSize() - offset)
|
||||||
assert(paddingBytes >= 0)
|
assert(paddingBytes >= 0)
|
||||||
msg:addPaddingBytes(paddingBytes, 0)
|
msg:addPaddingBytes(paddingBytes, 0)
|
||||||
if g_game.getProtocolVersion() >= 800 then
|
if g_game.getProtocolVersion() >= 770 then
|
||||||
msg:encryptRsa()
|
msg:encryptRsa()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ function ProtocolLogin:sendLoginPacket()
|
||||||
end
|
end
|
||||||
|
|
||||||
self:send(msg)
|
self:send(msg)
|
||||||
if g_game.getProtocolVersion() >= 800 then
|
if g_game.getProtocolVersion() >= 770 then
|
||||||
self:enableXteaEncryption()
|
self:enableXteaEncryption()
|
||||||
end
|
end
|
||||||
self:recv()
|
self:recv()
|
||||||
|
|
|
@ -1445,7 +1445,7 @@ void Game::setProtocolVersion(int version)
|
||||||
if(isOnline())
|
if(isOnline())
|
||||||
stdext::throw_exception("Unable to change protocol version while online");
|
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));
|
stdext::throw_exception(stdext::format("Protocol version %d not supported", version));
|
||||||
|
|
||||||
m_features.reset();
|
m_features.reset();
|
||||||
|
@ -1453,6 +1453,8 @@ void Game::setProtocolVersion(int version)
|
||||||
|
|
||||||
if(version >= 770)
|
if(version >= 770)
|
||||||
{
|
{
|
||||||
|
enableFeature(Otc::GameLooktypeU16);
|
||||||
|
enableFeature(Otc::GameMessageStatements);
|
||||||
enableFeature(Otc::GameWritableDate); // might not be since 770
|
enableFeature(Otc::GameWritableDate); // might not be since 770
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1462,9 +1464,7 @@ void Game::setProtocolVersion(int version)
|
||||||
enableFeature(Otc::GamePlayerStamina);
|
enableFeature(Otc::GamePlayerStamina);
|
||||||
enableFeature(Otc::GameNewFluids);
|
enableFeature(Otc::GameNewFluids);
|
||||||
enableFeature(Otc::GameMessageLevel);
|
enableFeature(Otc::GameMessageLevel);
|
||||||
enableFeature(Otc::GameMessageStatements);
|
|
||||||
enableFeature(Otc::GamePlayerStateU16);
|
enableFeature(Otc::GamePlayerStateU16);
|
||||||
enableFeature(Otc::GameLooktypeU16);
|
|
||||||
enableFeature(Otc::GameNewOutfitProtocol);
|
enableFeature(Otc::GameNewOutfitProtocol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1553,7 +1553,7 @@ void Game::setClientVersion(int version)
|
||||||
if(isOnline())
|
if(isOnline())
|
||||||
stdext::throw_exception("Unable to change client version while online");
|
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));
|
stdext::throw_exception(stdext::format("Client version %d not supported", version));
|
||||||
|
|
||||||
m_clientVersion = version;
|
m_clientVersion = version;
|
||||||
|
|
|
@ -1462,8 +1462,15 @@ void ProtocolGame::parseOpenOutfitWindow(const InputMessagePtr& msg)
|
||||||
outfitList.push_back(std::make_tuple(outfitId, outfitName, outfitAddons));
|
outfitList.push_back(std::make_tuple(outfitId, outfitName, outfitAddons));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int outfitStart = msg->getU8();
|
int outfitStart, outfitEnd;
|
||||||
int outfitEnd = msg->getU8();
|
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++)
|
for(int i = outfitStart; i <= outfitEnd; i++)
|
||||||
outfitList.push_back(std::make_tuple(i, "", 0));
|
outfitList.push_back(std::make_tuple(i, "", 0));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue