Browse Source

Additional work done for DoF client character select / create char struct

In support of issue #145
Image 3 years ago
parent
commit
1c7bf4491c

+ 7 - 1
EQ2/source/LoginServer/LoginDatabase.cpp

@@ -63,7 +63,7 @@ void LoginDatabase::SetZoneInformation(int32 server_id, int32 zone_id, int32 ver
 			MYSQL_ROW row2;
 			if(result2 && (row2 = mysql_fetch_row(result2))) {
 
-				if (version < 1212)
+				if (version != 546 && version < 1212)
 				{
 					if (row2[0])
 					{
@@ -169,8 +169,13 @@ void LoginDatabase::LoadCharacters(LoginAccount* acct, int16 version){
 				player->packet->setDataByName("last_played", atol(row[20]));
 			if(version >= 887)
 				player->packet->setDataByName("version", 6);
+			else if ( version == 546 )
+				player->packet->setDataByName("version", 11);
 			else
 				player->packet->setDataByName("version", 5);
+
+			player->packet->setDataByName("client_version", GetVersion());
+
 			player->packet->setDataByName("account_id", acct->getLoginAccountID());
 			player->packet->setDataByName("account_id2", acct->getLoginAccountID());
 			
@@ -182,6 +187,7 @@ void LoginDatabase::LoadCharacters(LoginAccount* acct, int16 version){
 			player->packet->setDataByName("soga_hair_face_type", atoi(row[24]));
 
 			player->packet->setDataByName("soga_race_type", atoi(row[25]));
+
 			player->packet->setDataByName("race_type", atoi(row[26]));
 
 			player->packet->setDataByName("unknown3", 57);

+ 23 - 10
EQ2/source/LoginServer/PacketHeaders.cpp

@@ -19,20 +19,33 @@ void LS_DeleteCharacterRequest::loadData(EQApplicationPacket* packet){
 }
 
 EQ2Packet* LS_CharSelectList::serialize(int16 version){
-	LS_CharListAccountInfo account_info;
-	account_info.account_id = account_id;
-	account_info.unknown1 = 0xFFFFFFFF;
-	account_info.unknown2 = 0;
-	account_info.unknown3 = 10;
-	account_info.unknown4 = 0;
-	for(int i=0;i<3;i++)
-		account_info.unknown5[i] = 0xFFFFFFFF;
-	account_info.unknown5[3] = 0;
 
 	Clear();
 	AddData(num_characters);
 	AddData(char_data);
-	AddData(account_info);
+
+	if (version == 546)
+	{
+		LS_CharListAccountInfoDoF account_info;
+		account_info.account_id = account_id;
+		account_info.unknown1 = 0xFFFFFFFF;
+		account_info.unknown2 = 0;
+		account_info.unknown3 = 10;
+		AddData(account_info);
+	}
+	else
+	{
+		LS_CharListAccountInfo account_info;
+		account_info.account_id = account_id;
+		account_info.unknown1 = 0xFFFFFFFF;
+		account_info.unknown2 = 0;
+		account_info.unknown3 = 10;
+		account_info.unknown4 = 0;
+		for (int i = 0; i < 3; i++)
+			account_info.unknown5[i] = 0xFFFFFFFF;
+		account_info.unknown5[3] = 0;
+		AddData(account_info);
+	}
 	return new EQ2Packet(OP_AllCharactersDescReplyMsg, getData(), getDataSize());
 }
 

+ 8 - 0
EQ2/source/LoginServer/login_structs.h

@@ -35,11 +35,19 @@ struct LS_OLDPlayCharacterRequest{
 	int32	character_id;
 	EQ2_16BitString name;
 };
+struct LS_CharListAccountInfoDoF {
+	int32	account_id;
+	int32	unknown1;
+	int16	unknown2;
+	int8	unknown3;
+};
+
 struct LS_CharListAccountInfo{
 	int32	account_id;
 	int32	unknown1;
 	int16	unknown2;
 	int32	unknown3;
+	// DoF does not have the following data
 	int8	unknown4;
 	int32	unknown5[4];
 	int16	unknown6;

+ 6 - 39
server/CommonStructs.xml

@@ -85,7 +85,7 @@ to zero and treated like placeholders." />
 <Struct Name="CreateCharacter" ClientVersion="546" OpcodeName="OP_CreateCharacterRequestMsg">
 <Data ElementName="unknown0" Type="int8" />
 <Data ElementName="unknown1" Type="int32" />
-<Data ElementName="unknown2" Type="int32" />
+<Data ElementName="account_id" Type="int32" />
 <Data ElementName="server_id" Type="int32" />
 <Data ElementName="name" Type="EQ2_16Bit_String" />
 <Data ElementName="race" Type="int8" />
@@ -95,6 +95,7 @@ to zero and treated like placeholders." />
 <Data ElementName="level" Type="int8" />
 <Data ElementName="starting_zone" Type="int8" />
 <Data ElementName="version" Type="int8" />
+<Data ElementName="unknown0x" Type="int8" />
 <Data ElementName="race_file" Type="EQ2_16Bit_String" />
 <Data ElementName="skin_color" Type="EQ2_Color" Size="1" />
 <Data ElementName="skin_color2" Type="EQ2_Color" Size="1" />
@@ -102,19 +103,17 @@ to zero and treated like placeholders." />
 <Data ElementName="hair_color1" Type="EQ2_Color" Size="1" />
 <Data ElementName="hair_color2" Type="EQ2_Color" Size="1" />
 <Data ElementName="hair_highlight" Type="EQ2_Color" Size="1" />
-<Data ElementName="unknown8" Type="int8" Size="26" />
+<Data ElementName="unknown8" Type="int8" Size="68" />
 <Data ElementName="hair_file" Type="EQ2_16Bit_String" />
 <Data ElementName="hair_type_color" Type="EQ2_Color" Size="1" />
 <Data ElementName="hair_type_highlight_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="face_file" Type="EQ2_16Bit_String" />
 <Data ElementName="hair_face_color" Type="EQ2_Color" Size="1" />
 <Data ElementName="hair_face_highlight_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="wing_file" Type="EQ2_16Bit_String" />
-<Data ElementName="wing_color1" Type="EQ2_Color" Size="1" />
-<Data ElementName="wing_color2" Type="EQ2_Color" Size="1" />
+<Data ElementName="unknown1x" Type="int8" Size="38" />
 <Data ElementName="chest_file" Type="EQ2_16Bit_String" />
 <Data ElementName="shirt_color" Type="EQ2_Color" Size="1" />
 <Data ElementName="unknown_chest_color" Type="EQ2_Color" Size="1" />
+<Data ElementName="unknown2x" Type="int8" Size="9" />
 <Data ElementName="legs_file" Type="EQ2_16Bit_String" />
 <Data ElementName="pants_color" Type="EQ2_Color" Size="1" />
 <Data ElementName="unknown_legs_color" Type="EQ2_Color" Size="1" />
@@ -129,39 +128,7 @@ to zero and treated like placeholders." />
 <Data ElementName="body_size" Type="float" Size="1" />
 <Data ElementName="body_age" Type="float" Size="1" />
 <Data ElementName="soga_version" Type="int8" />
-<Data ElementName="soga_race_file" Type="EQ2_16Bit_String" />
-<Data ElementName="soga_skin_color" Type="EQ2_Color" />
-<Data ElementName="soga_eye_color" Type="EQ2_Color" />
-<Data ElementName="soga_hair_color1" Type="EQ2_Color" />
-<Data ElementName="soga_hair_color2" Type="EQ2_Color" />
-<Data ElementName="soga_hair_highlight" Type="EQ2_Color" />
-<Data ElementName="soga_unknown_color1" Type="EQ2_Color" />
-<Data ElementName="soga_unknown11" Type="int8" Size="26" />
-<Data ElementName="soga_hair_file" Type="EQ2_16Bit_String" />
-<Data ElementName="soga_hair_type_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_hair_type_highlight_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_face_file" Type="EQ2_16Bit_String" />
-<Data ElementName="soga_hair_face_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_hair_face_highlight_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_wing_file" Type="EQ2_16Bit_String" />
-<Data ElementName="soga_wing_color1" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_wing_color2" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_chest_file" Type="EQ2_16Bit_String" />
-<Data ElementName="soga_shirt_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_unknown_chest_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_legs_file" Type="EQ2_16Bit_String" />
-<Data ElementName="soga_pants_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_unknown_legs_color" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_unknown12" Type="EQ2_Color" Size="1" />
-<Data ElementName="soga_eyes2" Type="float" Size="3" />
-<Data ElementName="soga_ears" Type="float" Size="3" />
-<Data ElementName="soga_eye_brows" Type="float" Size="3" />
-<Data ElementName="soga_cheeks" Type="float" Size="3" />
-<Data ElementName="soga_lips" Type="float" Size="3" />
-<Data ElementName="soga_chin" Type="float" Size="3" />
-<Data ElementName="soga_nose" Type="float" Size="3" />
-<Data ElementName="soga_body_size" Type="float" Size="1" />
-<Data ElementName="soga_body_age" Type="float" Size="1" />
+<Data ElementName="unknown3x" Type="EQ2_Color" Size="27" />
 </Struct>
 <Struct Name="CreateCharacter" ClientVersion="869" OpcodeName="OP_CreateCharacterRequestMsg">
 <Data ElementName="unknown0" Type="int8" />

+ 23 - 29
server/LoginStructs.xml

@@ -291,7 +291,7 @@ to zero and treated like placeholders." />
 <Data ElementName="name" Type="EQ2_16BitString" Size="1" />
 <Data ElementName="race" Type="int8" Size="1" />
 <Data ElementName="class" Type="int8" Size="1" />
-<!--<Data ElementName="gender" Type="int8" Size="1" />-->
+<Data ElementName="gender" Type="int8" Size="1" />
 <Data ElementName="level" Type="int32" Size="1" />
 <Data ElementName="zone" Type="EQ2_16BitString" Size="1" />
 <Data ElementName="unknown1" Type="int32" Size="1" />
@@ -302,34 +302,25 @@ to zero and treated like placeholders." />
 <Data ElementName="unknown4" Type="int32" Size="1" />
 <Data ElementName="zonename2" Type="EQ2_16BitString" Size="1" />
 <Data ElementName="zonedesc" Type="EQ2_16BitString" Size="1" />
-<!-- need to work further down at this point things are off! -->
-<Data ElementName="unknown5" Type="int32" Size="1" />
-<Data ElementName="account_id" Type="int32" Size="1" />
-<Data ElementName="unknown6" Type="int8" Size="2" />
-<Data ElementName="unknown7" Type="int32" Size="1" />
-<Data ElementName="tradeskill_class" Type="int8" Size="1" />
-<Data ElementName="tradeskill_level" Type="int32" Size="1" />
-<Data ElementName="unknown8" Type="int8" Size="1" />
+<Data ElementName="unknown5" Type="int32" Size="1" /> <!-- 4 -->
+<Data ElementName="version" Type="int8" Size="1" /> <!-- 4 -->
 <Data ElementName="race_type" Type="int16" Size="1" />
-<Data ElementName="skin_color" Type="EQ2_Color" />
-<Data ElementName="eye_color" Type="EQ2_Color" />
-<Data ElementName="equip" Type="EQ2_EquipmentItem" Size="25" />
+<Data ElementName="skin_color" Type="sint8" Size="3" />
+<Data ElementName="eye_color" Type="sint8" Size="3" />
+<Data ElementName="equip" Type="EQ2_EquipmentItem" Size="21" />
 <Data ElementName="hair_type" Type="int16" Size="1" />
-<Data ElementName="hair_type_color" Type="EQ2_Color" />
-<Data ElementName="hair_type_highlight_color" Type="EQ2_Color" />
+<Data ElementName="hair_type_color" Type="sint8" Size="3" />
+<Data ElementName="hair_type_highlight_color" Type="sint8" Size="3" />
 <Data ElementName="hair_face_type" Type="int16" Size="1" />
-<Data ElementName="hair_face_color" Type="EQ2_Color" />
-<Data ElementName="hair_face_highlight_color" Type="EQ2_Color" />
-<Data ElementName="wing_type" Type="int16" Size="1" />
-<Data ElementName="wing_color1" Type="EQ2_Color" />
-<Data ElementName="wing_color2" Type="EQ2_Color" />
+<Data ElementName="hair_face_color" Type="sint8" Size="3" />
+<Data ElementName="hair_face_highlight_color" Type="sint8" Size="3" />
 <Data ElementName="chest_type" Type="int16" Size="1" />
-<Data ElementName="shirt_color" Type="EQ2_Color" />
-<Data ElementName="unknown_chest_color" Type="EQ2_Color" />
+<Data ElementName="shirt_color" Type="sint8" Size="3" />
+<Data ElementName="unknown_chest_color" Type="sint8" Size="3" />
 <Data ElementName="legs_type" Type="int16" Size="1" />
-<Data ElementName="pants_color" Type="EQ2_Color" />
-<Data ElementName="unknown_legs_color" Type="EQ2_Color" />
-<Data ElementName="unknown9" Type="EQ2_Color" />
+<Data ElementName="pants_color" Type="sint8" Size="3" />
+<Data ElementName="unknown_legs_color" Type="sint8" Size="3" />
+<Data ElementName="unknown9" Type="sint8" Size="3" />
 <Data ElementName="eye_type" Type="sint8" Size="3" />
 <Data ElementName="ear_type" Type="sint8" Size="3" />
 <Data ElementName="eye_brow_type" Type="sint8" Size="3" />
@@ -338,10 +329,12 @@ to zero and treated like placeholders." />
 <Data ElementName="chin_type" Type="sint8" Size="3" />
 <Data ElementName="nose_type" Type="sint8" Size="3" />
 <Data ElementName="body_size" Type="sint8" Size="1" />
-<Data ElementName="unknown10" Type="int8" Size="9" />
-<Data ElementName="hair_color1" Type="EQ2_Color" />
-<Data ElementName="hair_color2" Type="EQ2_Color" />
-<Data ElementName="unknown11" Type="int8" Size="13" />
+<Data ElementName="bump_scale" Type="sint8" Size="1" />
+<Data ElementName="hair_color1" Type="sint8" Size="3" />
+<Data ElementName="hair_color2" Type="sint8" Size="3" />
+<Data ElementName="hair_color3" Type="sint8" Size="3" />
+<Data ElementName="unknown11" Type="int8" Size="6" />
+
 <Data ElementName="soga_race_type" Type="int16" Size="1" />
 <Data ElementName="soga_skin_color" Type="EQ2_Color" />
 <Data ElementName="soga_eye_color" Type="EQ2_Color" />
@@ -363,7 +356,8 @@ to zero and treated like placeholders." />
 <Data ElementName="soga_hair_face_type" Type="int16" Size="1" />
 <Data ElementName="soga_hair_face_color" Type="EQ2_Color" />
 <Data ElementName="soga_hair_face_highlight_color" Type="EQ2_Color" />
-<Data ElementName="unknown15" Type="int8" Size="7" />
+<Data ElementName="unknown15" Type="int8" Size="27" />
+<Data ElementName="flags" Type="int8" Size="1" /> <!-- 4 -->
 </Struct>
 <Struct Name="CharSelectProfile" ClientVersion="887">
 <Data ElementName="version" Type="int32" Size="1" />