Opcodes:OP LoginReplyMsg
- Last edited 13 years ago by I need to Update My Profile
EQ2Emulator: OP_LoginReplyMsg
This is our current understanding of the massive OP_LoginReplyMsg packet that the LoginServer needs to send to the client (after player name/pwd authentication) so the players client knows what features are enabled. This packet has been a mystery for 7 years, and now thanks to the efforts of Jabantiz, we're finally going to be able to expand our LoginServer options for an even more custom EQ2Emulator experience!
Packet Definition
This packet definition is an on-going process, by no means complete. Posted initially in our Dev whiteboard, now moved to the WIKI for further documentation.
Jabantiz pasted (on 2012.04.26 10:03:54):
// Login error, 0 = accepted, 1 = invalid password, 2 = currently playing, 3+ = unknown reason
0x00,
//setting to 01 causes client crash
// adding an extra byte of 00 prevents crash, making the extra byte 01 causes crash
// Possible EQ2_16Bit_String
// Parental control password maybe? (does it even have a password never used parental controls)
0x00,0x00,
// Parental Control Flag????
0x00,
// Parental Control - Time remainingm, int32
0x00,0x00,0x00,0x00,
// no clue
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
// Account ID, int32
0xA7,0x70,0x99,0x25,
// 1 = crash, extra byte = no crash,
// extra byte set to 1 = crash
//16bit string?
0x00,0x00,
// able to reset appearance
// 0 no 1 yes
0x00,
// 0 = force soga
// 1 = choice
0x01,
// no clue
0x00,
// no clue
0x7C,0x04,
// no clue
0x00,0x00,0x00,0x00,0x00,
// No clue, Always seems to be the same in logs from the same client
// Expansion info maybe? changing had no effect
0xBF,0x3F,0xDA,0x7F,
// Screws with race selection on char creation
// 00 all pictures are black except freeblood, erudite and freeblood is clickable
// 01 Evil races are blacked out
// 02 Good races are blacked out
// 03 Good races are blacked out
// 04 Evil races are blacked out
// 05 Evil
// 08 good
// 10 good
0x3F,
// No clue, may be related to previous byte but got no change screwing around with it
0x00,0x00,0x00,
// Setting above 0 made the char in char selection naked (I mean naked no rags nothing)
// Also prevented the models for all races but freeblood and sarnak from appearing in char creation
// kills the customization options as well
0x00,
// Setting to 00 allows you to skip the entire array, 1 or higher the array need to be here
0x01,
// Array, original value is 0x18
// From IRC [05:37.42] <@Xinux_Work> yea some of it has to do with camera angles also
// This would most likely be it but not 100% sure
0x19,
// this first 1 is custom, put it in to determine the array elements
0x00,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0x05,
0x45,0x02,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x46,0x02,0x08,0x01,0x00,0xF4,0xF4,0xF4,0xFF,0xFF,0xFF,
0x4A,0x02,0x07,0x01,0x00,0xF4,0xF4,0xF4,0xFF,0xFF,0xFF,
0xAE,0x0C,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x34,0x0F,0x10,0x01,0x01,0x93,0x62,0x44,0xCF,0xCF,0xAF,
0x04,0x06,
0x45,0x02,0x03,0x01,0x01,0xB6,0x36,0x36,0xFF,0x00,0x00,
0x4A,0x02,0x07,0x01,0x00,0xB6,0x36,0x36,0xFF,0xFF,0xFF,
0x46,0x02,0x08,0x01,0x00,0xB6,0x36,0x36,0xFF,0xFF,0xFF,
0x0F,0x09,0x00,0x01,0x01,0x67,0x54,0x42,0xA0,0xA0,0x50,
0x0F,0x09,0x00,0x01,0x01,0x67,0x54,0x42,0xA0,0xA0,0x50,
0x34,0x0F,0x10,0x01,0x01,0x93,0x62,0x44,0xCF,0xCF,0xAF,
0x06,0x06,
0xF3,0x02,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x07,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x08,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x01,0x01,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,
0x00,0x00,0x00,0x01,0x01,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,
0xF8,0x0E,0x10,0x01,0x01,0xFF,0xFF,0x00,0x80,0x80,0x00,
0x07,0x06,
0xA6,0x01,0x08,0x01,0x01,0x77,0x60,0x46,0x77,0x60,0x46,
0xAA,0x01,0x07,0x01,0x01,0x77,0x60,0x46,0x77,0x60,0x46,
0xC7,0x0F,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xE6,0x09,0x00,0x01,0x01,0xBA,0x7B,0x42,0xBA,0x7B,0x42,
0xE6,0x09,0x00,0x01,0x01,0xBA,0x7B,0x42,0xBA,0x7B,0x42,
0xB2,0x0C,0x10,0x01,0x01,0xFF,0xFF,0x00,0x80,0x80,0x00,
0x09,0x05,
0x0F,0x02,0x03,0x01,0x00,0x5E,0x5E,0x5E,0xFF,0xFF,0xFF,
0x10,0x02,0x08,0x01,0x00,0x5E,0x5E,0x5E,0xFF,0xFF,0xFF,
0x14,0x02,0x07,0x01,0x00,0x5E,0x5E,0x5E,0xFF,0xFF,0xFF,
0x69,0x09,0x00,0x01,0x01,0x6D,0x1C,0x1C,0x93,0x6B,0x6B,
0x34,0x0F,0x10,0x01,0x01,0x93,0x62,0x44,0xCF,0xCF,0xAF,
0x0A,0x05,
0x0F,0x02,0x03,0x01,0x00,0xAF,0xAF,0xAF,0xFF,0xFF,0xFF,
0x14,0x02,0x07,0x01,0x00,0xAF,0xAF,0xAF,0xFF,0xFF,0xFF,
0x10,0x02,0x08,0x01,0x00,0xAF,0xAF,0xAF,0xFF,0xFF,0xFF,
0x69,0x09,0x00,0x01,0x01,0xA7,0xA7,0xEB,0xA7,0xA7,0xEB,
0x34,0x0F,0x10,0x01,0x01,0x93,0x62,0x44,0xCF,0xCF,0xAF,
0x0D,0x04,
0x95,0x02,0x08,0x01,0x00,0xF4,0xF4,0x0A,0xFF,0xFF,0xFF,
0x94,0x02,0x03,0x01,0x00,0xF4,0xF4,0x0A,0xFF,0xFF,0xFF,
0x99,0x02,0x07,0x01,0x00,0xF4,0xF4,0x0A,0xFF,0xFF,0xFF,
0xEA,0x09,0x00,0x01,0x01,0xDD,0xDD,0x8C,0xDD,0xDD,0x8C,
0x0E,0x04,
0xC6,0x02,0x08,0x01,0x00,0x13,0x13,0x13,0xFF,0xFF,0xFF,
0xC5,0x02,0x03,0x01,0x00,0x13,0x13,0x13,0xFF,0xFF,0xFF,
0xCA,0x02,0x07,0x01,0x00,0x13,0x13,0x13,0xFF,0xFF,0xFF,
0x14,0x09,0x00,0x01,0x01,0x9C,0x4F,0x4F,0x2B,0x15,0x15,
0x10,0x04,
0x38,0x04,0x08,0x01,0x00,0xB6,0xCD,0x2F,0xFF,0xFF,0xFF,
0x37,0x04,0x03,0x01,0x00,0xB6,0xCD,0x2F,0xFF,0xFF,0xFF,
0x3C,0x04,0x07,0x01,0x00,0xB6,0xCD,0x2F,0xFF,0xFF,0xFF,
0xDF,0x09,0x00,0x01,0x01,0x70,0xBA,0x70,0xBA,0x7B,0x42,
0x11,0x04,
0x38,0x04,0x08,0x01,0x00,0x1A,0x41,0x1A,0xFF,0xFF,0xFF,
0x3C,0x04,0x07,0x01,0x00,0x1A,0x41,0x1A,0xFF,0xFF,0xFF,
0x37,0x04,0x03,0x01,0x00,0x1A,0x41,0x1A,0xFF,0xFF,0xFF,
0xDF,0x09,0x00,0x01,0x01,0xBA,0x7B,0x42,0x62,0xB3,0x62,
0x13,0x04,
0x93,0x03,0x08,0x00,0x01,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,
0x92,0x03,0x03,0x00,0x01,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,
0x97,0x03,0x07,0x00,0x01,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,
0x59,0x0E,0x00,0x01,0x01,0x3B,0x7C,0x3B,0xE2,0xE2,0x85,
0x14,0x04,
0x93,0x03,0x08,0x01,0x01,0x18,0x18,0x18,0x18,0x18,0x18,
0x92,0x03,0x03,0x01,0x01,0x18,0x18,0x18,0x18,0x18,0x18,
0x97,0x03,0x07,0x01,0x01,0x18,0x18,0x18,0x18,0x18,0x18,
0x59,0x0E,0x00,0x01,0x01,0x2B,0x34,0x21,0xE2,0xE2,0x85,
0x17,0x04,
0xDA,0x01,0x07,0x01,0x01,0x9E,0x9E,0xD8,0xA3,0x6B,0x80,
0x92,0x17,0x03,0x01,0x01,0x66,0x42,0x4B,0x9E,0x9E,0xD8,
0xD6,0x01,0x08,0x01,0x01,0x9E,0x9E,0xD8,0xA3,0x6B,0x80,
0x4B,0x0E,0x00,0x01,0x01,0xE6,0x95,0xE6,0xE6,0x95,0xE6,
0x18,0x04,
0x92,0x17,0x03,0x01,0x01,0x70,0x70,0x70,0x67,0x2B,0x67,
0xD6,0x01,0x08,0x01,0x01,0x67,0x2B,0x67,0x50,0x50,0x50,
0xDA,0x01,0x07,0x01,0x01,0x67,0x2B,0x67,0x50,0x50,0x50,
0x4D,0x0E,0x00,0x01,0x01,0xCF,0x2F,0xCF,0xE6,0x95,0xE6,
0x1A,0x04,
0x92,0x17,0x03,0x01,0x01,0xDA,0xDA,0xA5,0x60,0x60,0x9E,
0xDA,0x01,0x07,0x01,0x01,0x60,0x60,0x9E,0xDA,0xDA,0xA5,
0xD6,0x01,0x08,0x01,0x01,0x60,0x60,0x9E,0xDA,0xDA,0xA5,
0xE4,0x0C,0x00,0x01,0x01,0xBA,0xFF,0xBA,0xD4,0xE9,0xFF,
0x1B,0x04,
0x92,0x17,0x03,0x01,0x01,0x99,0x48,0x48,0xF7,0xCF,0x82,
0xDA,0x01,0x07,0x01,0x01,0xF7,0xCF,0x82,0x99,0x48,0x48,
0xD6,0x01,0x08,0x01,0x01,0xF7,0xCF,0x82,0x99,0x48,0x48,
0xD7,0x0E,0x00,0x01,0x01,0x8E,0x46,0x46,0x2B,0x15,0x15,
0x1D,0x04,
0x92,0x17,0x03,0x01,0x01,0x57,0x85,0xAE,0xD8,0xE8,0xF4,
0xD6,0x01,0x08,0x01,0x01,0xD8,0xE8,0xF4,0x95,0xB3,0xCD,
0xDA,0x01,0x07,0x01,0x01,0xD8,0xE8,0xF4,0x95,0xB3,0xCD,
0xA9,0x08,0x00,0x01,0x01,0xE8,0xB6,0x85,0xE8,0xB6,0x85,
0x1E,0x04,
0x92,0x17,0x03,0x01,0x01,0x62,0x57,0x4D,0xA3,0x9E,0x9A,
0xD6,0x01,0x08,0x01,0x01,0xFF,0xDA,0xB6,0x6B,0x57,0x44,
0xDA,0x01,0x07,0x01,0x01,0xFF,0xDA,0xB6,0x6B,0x57,0x44,
0x3A,0x0E,0x00,0x01,0x01,0x2B,0x54,0x54,0x2B,0x15,0x15,
0x21,0x06,
0x64,0x03,0x08,0x01,0x00,0x7E,0x4B,0x46,0xFF,0xFF,0xFF,
0x68,0x03,0x07,0x01,0x00,0x7E,0x4B,0x46,0xFF,0xFF,0xFF,
0x63,0x03,0x03,0x01,0x00,0x7E,0x4B,0x46,0xFF,0xFF,0xFF,
0x42,0x0F,0x10,0x01,0x01,0xFF,0xFF,0x00,0x80,0x80,0x00,
0xA9,0x08,0x00,0x01,0x01,0x1F,0x3F,0x60,0x62,0x62,0x62,
0xA9,0x08,0x00,0x01,0x01,0x1F,0x3F,0x60,0x62,0x62,0x62,
0x22,0x06,
0x64,0x03,0x08,0x01,0x00,0x5D,0x42,0x5D,0xFF,0xFF,0xFF,
0x68,0x03,0x07,0x01,0x00,0x5D,0x42,0x5D,0xFF,0xFF,0xFF,
0x63,0x03,0x03,0x01,0x00,0x5D,0x42,0x5D,0xFF,0xFF,0xFF,
0xD6,0x0C,0x00,0x01,0x01,0xE6,0x95,0xE6,0x1A,0x1A,0x70,
0xD6,0x0C,0x00,0x01,0x01,0xE6,0x95,0xE6,0x1A,0x1A,0x70,
0x42,0x0F,0x10,0x01,0x01,0xFF,0xFF,0x00,0x80,0x80,0x00,
0x24,0x06,
0x63,0x03,0x03,0x01,0x00,0x99,0xC8,0xE2,0xFF,0xFF,0xFF,
0x64,0x03,0x08,0x01,0x00,0x99,0xC8,0xE2,0xFF,0xFF,0xFF,
0x68,0x03,0x07,0x01,0x00,0x99,0xC8,0xE2,0xFF,0xFF,0xFF,
0x34,0x0F,0x10,0x01,0x01,0x93,0x62,0x44,0xCF,0xCF,0xAF,
0xD6,0x0C,0x00,0x01,0x01,0x85,0x85,0xA7,0xD1,0xD1,0xAC,
0xD6,0x0C,0x00,0x01,0x01,0x85,0x85,0xA7,0xD1,0xD1,0xAC,
0x25,0x06,
0x63,0x03,0x03,0x01,0x00,0xBF,0xA5,0x7E,0xFF,0xFF,0xFF,
0x5C,0x03,0x08,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x60,0x03,0x07,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xB1,0x08,0x00,0x01,0x01,0x90,0x48,0x48,0x90,0x48,0x48,
0xB1,0x08,0x00,0x01,0x01,0x90,0x48,0x48,0x90,0x48,0x48,
0x34,0x0F,0x10,0x01,0x01,0x93,0x62,0x44,0xCF,0xCF,0xAF,
0x27,0x06,
0xA2,0x16,0x08,0x01,0x01,0x3D,0x54,0x3D,0xBC,0xBC,0xBC,
0xA1,0x16,0x03,0x01,0x01,0x3D,0x54,0x3D,0xBC,0xBC,0xBC,
0xA6,0x16,0x07,0x01,0x01,0x3D,0x54,0x3D,0xBC,0xBC,0xBC,
0x34,0x0F,0x10,0x01,0x01,0x31,0x4D,0x3F,0xCF,0xCF,0xAF,
0xCD,0x08,0x00,0x01,0x01,0x2B,0x54,0x3F,0x3F,0x98,0x6B,
0xCD,0x08,0x00,0x01,0x01,0x2B,0x54,0x3F,0x3F,0x98,0x6B,
0x28,0x06,
0xA2,0x16,0x08,0x01,0x01,0x21,0x21,0x31,0x3F,0x3F,0x3F,
0xA1,0x16,0x03,0x01,0x01,0x21,0x21,0x31,0x3F,0x3F,0x3F,
0xA6,0x16,0x07,0x01,0x00,0x48,0x48,0x54,0xFF,0xFF,0xFF,
0x34,0x0F,0x10,0x01,0x01,0x31,0x4D,0x3F,0xCF,0xCF,0xAF,
0xA9,0x08,0x00,0x01,0x01,0x1A,0x1A,0x70,0xE6,0x95,0xE6,
0xA9,0x08,0x00,0x01,0x01,0x1A,0x1A,0x70,0xE6,0x95,0xE6,
// An array with size of 0A ???
// Changing values seemed to have no effect
0x0A,
0xD1,0x00,0x00,0x00,
0xD0,0x00,0x00,0x00,
0xCF,0x00,0x00,0x00,
0x6E,0x00,0x00,0x00,
0x70,0x00,0x00,0x00,
0x71,0x00,0x00,0x00,
0x72,0x00,0x00,0x00,
0x73,0x00,0x00,0x00,
0x74,0x00,0x00,0x00,
0x76,0x00,0x00,0x00,
// No Idea what this is for, have seen it at 0C in other 1096 logs
0x07,0x00,0x00,0x00,
// FF FF FF FF, all races classes available (except freeblood)
// 02 00 00 00, standard free classes available
// 00 00 00 00 and 01 00 00 00 will cause the "upgrade" website to open when you close the client
// Subscription level?
0xFF,0xFF,0xFF,0xFF,
// Race Flag (int32)
0xFF,0xFF,0x0F,0x00,
// Class Flag (int32)
0x86,0x61,0x18,0x00,
// EQ2_16bit_string - password (same string from the client->server packet right before this packet)
// Leaving this empty (0x00, 0x00) has no effect on the client
0x10,0x00,0x44,0x61,0x79,0x7A,0x64,0x41,0x58,0x33,0x64,0x6E,0x30,0x62,0x7A,0x6D,0x4E,0x4D,
// EQ2_16Bit_String - no clue, seems to be the same type of encryption though, possibly the username encrypted?
// Leaving this empty (0x00, 0x00) has no effect on the client
0x10,0x00,0x44,0x6A,0x64,0x36,0x49,0x67,0x79,0x6D,0x34,0x42,0x2E,0x57,0x31,0x3F,0x59,0x46};
Structure Definition
TBD - right now, LoginServer has no real structs, most everything is hardcoded packets. This could change in the future as we develop more login-based features.