Quote
Index: Core/WCell.Constants/WCellInfo.cs
===================================================================
--- Core/WCell.Constants/WCellInfo.cs (revision 1135)
+++ Core/WCell.Constants/WCellInfo.cs (working copy)
@@ -21,7 +21,7 @@
/// <summary>
/// The version of the WoW Client that is currently supported.
/// </summary>
- public static readonly ClientVersion RequiredVersion = new ClientVersion(3, 2, 0, 10314);
+ public static readonly ClientVersion RequiredVersion = new ClientVersion(3, 2, 2, 10505); }
Index: Services/WCell.RealmServer/Handlers/CharacterHandler.cs
===================================================================
--- Services/WCell.RealmServer/Handlers/CharacterHandler.cs (revision 1135)
+++ Services/WCell.RealmServer/Handlers/CharacterHandler.cs (working copy)
@@ -118,7 +118,6 @@
record.FacialHair = packet.ReadByte();
record.Outfit = packet.ReadByte();
record.ShowAsGameMaster = acc.Role.AppearAsGM;
-
record.Setup(archetype);
var charCreateTask = new Message2<IRealmClient, CharacterRecord>
@@ -296,46 +295,47 @@
packet.Write(EntityId.GetPlayerId(record.EntityLowId)); // 8
packet.WriteCString(record.Name); // 9 + namelength
- packet.Write((byte)record.Race); // 10 + namelength
- packet.Write((byte)record.Class); // 11 + namelength
- packet.Write((byte)record.Gender); // 12 + namelength
- packet.Write(record.Skin); // 13 + namelength
- packet.Write(record.Face); // 14 + namelength
- packet.Write(record.HairStyle); // 15 + namelength
- packet.Write(record.HairColor); // 16 + namelength
- packet.Write(record.FacialHair); // 17 + namelength
- packet.Write((byte)record.Level); // 18 + namelength
- packet.Write((int)record.Zone); // 22 + namelength
- packet.Write((int)record.RegionId); // 26 + namelength
+ packet.WriteByte((byte)record.Race); // 10 + namelength
+ packet.WriteByte((byte)record.Class); // 11 + namelength
+ packet.WriteByte((byte)record.Gender); // 12 + namelength
+ packet.WriteByte(record.Skin); // 13 + namelength
+ packet.WriteByte(record.Face); // 14 + namelength
+ packet.WriteByte(record.HairStyle); // 15 + namelength
+ packet.WriteByte(record.HairColor); // 16 + namelength
+ packet.WriteByte(record.FacialHair & 0xFF); // 17 + namelength
+ packet.WriteByte((byte)record.Level); // 18 + namelength
+ packet.WriteUInt((int)record.Zone); // 22 + namelength
+ packet.WriteUInt((int)record.RegionId); // 26 + namelength
packet.WriteFloat(record.PositionX); // 30 + namelength
packet.WriteFloat(record.PositionY); // 34 + namelength
packet.WriteFloat(record.PositionZ); // 38 + namelength
packet.WriteUInt(0); // guild id // 42 + namelength
- packet.Write((int)record.CharacterFlags); // 46 + namelength
+ packet.WriteUInt((int)record.CharacterFlags); // 46 + namelength
- packet.Write(0u); // NEW 0.0.2.8970
+ packet.WriteUInt(0); // NEW 0.0.2.8970 ; char customize flags
- packet.Write((byte)1); // NEW 3.2.0
+ packet.WriteByte(1); // NEW 3.2.0 unknown
+ // hum?
// Rest State
- var restState = record.RestXp > 0 ? RestState.Resting : RestState.Normal;
- packet.WriteByte((byte)restState); // 47 + namelength
+ /*var restState = record.RestXp > 0 ? RestState.Resting : RestState.Normal;
+ packet.WriteByte((byte)restState);*/ // 47 + namelength
// pet info (51 - 63)
var petEntry = record.PetEntry;
if (petEntry != null)
{
- packet.Write(petEntry.DisplayIds[0]);
- packet.Write(record.Level); // liars!
- packet.Write((int)petEntry.FamilyId);
+ packet.WriteUInt(petEntry.DisplayIds[0]);
+ packet.WriteUInt(record.Level); // liars!
+ packet.WriteUInt((int)petEntry.FamilyId);
}
else
{
- packet.Write(0); // 51 + namelength
- packet.Write(0); // 55 + namelength
- packet.Write(0); // 59 + namelength
+ packet.WriteUInt(0); // 51 + namelength
+ packet.WriteUInt(0); // 55 + namelength
+ packet.WriteUInt(0); // 59 + namelength
}
@@ -355,9 +355,9 @@
if (template.IsInventory && template.EquipmentSlots != null)
{
packet.Position = itemOffset + ((int)template.EquipmentSlots[0] * CharEnumItemBytes);
- packet.Write(template.DisplayId);
- packet.Write((byte)template.InventorySlotType);
- packet.Write(0);
+ packet.WriteUInt(template.DisplayId);
+ packet.WriteByte((byte)template.InventorySlotType);
+ packet.WriteUInt(0);
}
}
}
@@ -383,16 +383,16 @@
packet.Position = itemOffset + (item.Slot * CharEnumItemBytes);
if (template != null)
{
- packet.Write(template.DisplayId);
- packet.Write((byte)template.InventorySlotType);
+ packet.WriteUInt(template.DisplayId);
+ packet.WriteByte((byte)template.InventorySlotType);
var enchant = item.GetEnchant(EnchantSlot.Permanent);
- packet.Write(enchant != null ? enchant.Visual : 0);
+ packet.WriteUInt(enchant != null ? enchant.Visual : 0);
}
else
{
- packet.Write(0);
- packet.Write((byte)0);
- packet.Write(0);
+ packet.WriteUInt(0);
+ packet.WriteByte(0);
+ packet.WriteUInt(0);
}
}
}
Index: Services/WCell.RealmServer/Handlers/LoginHandler.cs
===================================================================
--- Services/WCell.RealmServer/Handlers/LoginHandler.cs (revision 1135)
+++ Services/WCell.RealmServer/Handlers/LoginHandler.cs (working copy)
@@ -29,17 +29,28 @@
}
else if (!client.IsEncrypted)
{
+ var builtNumberClient = packet.ReadUInt32();
- packet.SkipBytes(8);
- //var accName = packet.ReadCString().ToCapitalizedString();
+ uint new302 = packet.ReadUInt32(); // NEW 0.0.2.8970
+
var accName = packet.ReadCString();
- uint new302 = packet.ReadUInt32(); // NEW 0.0.2.8970
+ var unk322 = packet.ReadUInt32();
+
client.ClientSeed = packet.ReadUInt32();
- //var unk322 = packet.ReadUInt64();
+
+
+ var unk4 = packet.ReadUInt64();
+
client.ClientDigest = packet.ReadBigInteger(20);
+#if DEBUG
+ log.Debug("builtNumberClient:{0} new302:{1} accName:{2} unk322:{3} client.ClientSeed:{4} unk4:{5} ClientDigest:{6}",
+ builtNumberClient,
+ new302, accName, unk322, client.ClientSeed, unk4, client.ClientDigest);
+#endif
+
int decompressedDataLength = packet.ReadInt32();
var compressedData = packet.ReadBytes(packet.RemainingLength);
client.Addons = new byte[decompressedDataLength];
@@ -58,14 +69,14 @@
{
using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_AUTH_CHALLENGE))
{
- // packet.WriteUInt(0); // unk, 3.2.2, 0...31
+ packet.WriteUInt(1); // 1...31
packet.Write(RealmServer.Instance.AuthSeed);
// new 3.2.2 random data
- //packet.WriteUInt(0xF3539DA3);
- //packet.WriteUInt(0x6E8547B9);
- //packet.WriteUInt(0x9A6AA2F8);
- //packet.WriteUInt(0xA4F170F4);
+ packet.WriteUInt(0xF3539DA3);
+ packet.WriteUInt(0x6E8547B9);
+ packet.WriteUInt(0x9A6AA2F8);
+ packet.WriteUInt(0xA4F170F4);
client.Send(packet);
}