Keazain,
You might try using this routine from Ascent, it has the addoncount and the unknown uint32 for 3.0.8, apparently the addon info compressed packet changed, hopefully this will solve the login issues.
Code:
void AddonMgr::SendAddonInfoPacket(WorldPacket *source, uint32 pos, WorldSession *m_session)
{
WorldPacket returnpacket;
returnpacket.Initialize(SMSG_ADDON_INFO); // SMSG_ADDON_INFO
uint32 realsize;
uLongf rsize;
try
{
*source >> realsize;
}
catch (ByteBuffer::error &)
{
sLog.outDebug("Warning: Incomplete auth session sent.");
return;
}
rsize = realsize;
size_t position = source->rpos();
ByteBuffer unpacked;
unpacked.resize(realsize);
if((source->size() - position) < 4 || realsize == 0)
{
// we shouldnt get here.. but just in case this will stop any crash here.
sLog.outDebug("Warning: Incomplete auth session sent.");
return;
}
int32 result;
result = uncompress((uint8*)unpacked.contents(), &rsize, (uint8*)(*source).contents() + position, (uLong)((*source).size() - position));
if(result != Z_OK)
{
sLog.outError("Decompression of addon section of CMSG_AUTH_SESSION failed.");
return;
}
sLog.outDetail("Decompression of addon section of CMSG_AUTH_SESSION succeeded.");
uint32 addoncount;
unpacked >> addoncount;
uint8 Enable; // based on the parsed files from retool
uint32 crc;
uint32 unknown;
std::string name;
for (uint32 i=0; i<addoncount; ++i)
{
unpacked >> name;
unpacked >> Enable;
unpacked >> crc;
unpacked >> unknown;
// Hacky fix, Yea I know its a hacky fix I will make a proper handler one's I got the crc crap
if (crc != 0x4C1C776D) // CRC of public key version 2.0.1
returnpacket.append(PublicKey,264); // part of the hacky fix
else
returnpacket << uint8(0x02) << uint8(0x01) << uint8(0x00) << uint32(0) << uint8(0);
/*if(!AppendPublicKey(returnpacket, name, crc))
returnpacket << uint8(1) << uint8(0) << uint8(0);*/
}
uint32 unk308;
unpacked >> unk308;
m_session->SendPacket(&returnpacket);
}
The above is code from the AddonMgr.cpp module.
This is not my code it is from Ascent, so if it works, all credit is theirs.