From ad85748a62a4e20a31672a57d8a815b0085613fc Mon Sep 17 00:00:00 2001 From: Image <> Date: Sun, 28 Jun 2020 19:03:41 -0400 Subject: [PATCH] Allow 'classic' 283 and 'dof free trial' 546 client to function in login server (login reply accepted, cannot create char) update opcodes set version_range1=283 where version_range1=839; --- EQ2/source/LoginServer/client.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/EQ2/source/LoginServer/client.cpp b/EQ2/source/LoginServer/client.cpp index 8721e7486..4f9b04748 100644 --- a/EQ2/source/LoginServer/client.cpp +++ b/EQ2/source/LoginServer/client.cpp @@ -165,13 +165,23 @@ bool Client::Process() { switch(app->GetOpcode()) { case OP_LoginRequestMsg:{ -// DumpPacket(app); + DumpPacket(app); PacketStruct* packet = configReader.getStruct("LS_LoginRequest", 1); if(packet->LoadPacketData(app->pBuffer,app->size)){ - version = packet->getType_int32_ByName("version"); + version = packet->getType_int16_ByName("version"); + LogWrite(LOGIN__DEBUG, 0, "Login", "Classic Client Version Provided: %i", version); + + if (version == 0 || EQOpcodeManager.count(GetOpcodeVersion(version)) == 0) + { + safe_delete(packet); + packet = configReader.getStruct("LS_LoginRequest", 1212); + if (packet->LoadPacketData(app->pBuffer, app->size)) { + version = packet->getType_int32_ByName("version"); + } + } //[7:19 PM] Kirmmin: Well, I very quickly learned that unknown3 in LS_LoginRequest packet is the same value as cl_eqversion in the eq2_defaults.ini file. - LogWrite(LOGIN__DEBUG, 0, "Login", "Client Version Provided: %i", version); + LogWrite(LOGIN__DEBUG, 0, "Login", "New Client Version Provided: %i", version); if (EQOpcodeManager.count(GetOpcodeVersion(version)) == 0) { LogWrite(LOGIN__ERROR, 0, "Login", "Incompatible client version provided: %i", version); @@ -537,6 +547,7 @@ void Client::SendLoginAccepted() { packet->setDataByName("class_flag", 0x7FFFFFE); packet->setMediumStringByName("username", GetAccountName()); packet->setMediumStringByName("password", GetAccountName()); + packet->setDataByName("unknown5", 0x7C); packet->setDataByName("unknown7", 0xFF6FFFBF);