public SmsgCharEnum(List <Characters> characters) : base(RealmCMD.SMSG_CHAR_ENUM) { Write((byte)characters.Count); foreach (Characters character in characters) { Write((ulong)character.Id); WriteCString(character.name); Write((byte)character.race); Write((byte)character.classe); Write((byte)character.gender); Write(character.char_skin); Write(character.char_face); Write(character.char_hairStyle); Write(character.char_hairColor); Write(character.char_facialHair); Write(character.level); // int8 Write(character.MapZone); // int32 Write(character.MapId); // int32 Write(character.MapX); Write(character.MapY); Write(character.MapZ); Write(0); // Guild ID // if DEAD or any Restriction Write((int)CharacterFlagState.CharacterFlagNone); // RestState Write((byte)0); // SELECT modelid, level, entry FROM character_pet WHERE owner = Write(0); // PetModel Write(0); // PetLevel Write(0); // PetFamily = SELECT family FROM creature_template WHERE entry // DONE: Get items var inventory = MainForm.Database.GetInventory(character); for (int slot = 0; slot < 20; slot++) { CharactersInventorys checkItem = inventory.FirstOrDefault(b => b.slot == slot); if (checkItem != null) { var item = XmlReader.GetItem((int)checkItem.item); Write(item.displayId); Write((byte)item.inventoryType); } else { Write(0); Write((byte)0); } } } }
public ItemEntity(CharactersInventorys inventory, Characters sessionCharacter) : base(new ObjectGuid((uint)inventory.item, TypeId.TypeidItem, HighGuid.HighguidItem)) { SetUpdateField((int)ObjectFields.OBJECT_FIELD_TYPE, 3); // 3 na BAG / 2 naosei / 7 e uma bag SetUpdateField((int)ObjectFields.OBJECT_FIELD_ENTRY, (byte)inventory.item); SetUpdateField((int)ObjectFields.OBJECT_FIELD_SCALE_X, 1.0f); // SetUpdateField((int)ItemFields.ITEM_FIELD_OWNER, (ulong)sessionCharacter.Id); // ID do char SetUpdateField((int)ItemFields.ITEM_FIELD_CONTAINED, (ulong)sessionCharacter.Id); // ID do char // SetUpdateField((int)ItemFields.ITEM_FIELD_STACK_COUNT, inventory.stack); Console.WriteLine($@"ItemEntity: [ID {inventory.Id}] / [{inventory.item}]"); }
internal static UpdateObject CreateItem(CharactersInventorys inventory, Characters sessionCharacter) { BinaryWriter writer = new BinaryWriter(new MemoryStream()); writer.Write((byte)ObjectUpdateType.UPDATETYPE_CREATE_OBJECT); ItemEntity entity = new ItemEntity(inventory, sessionCharacter) { ObjectGuid = new ObjectGuid(inventory.item), Guid = inventory.item }; writer.WritePackedUInt64(entity.ObjectGuid.RawGuid); writer.Write((byte)TypeId.TypeidItem); ObjectUpdateFlag updateFlags = ObjectUpdateFlag.UpdateflagTransport | ObjectUpdateFlag.UpdateflagAll | ObjectUpdateFlag.UpdateflagHasPosition; writer.Write((byte)updateFlags); writer.Write(0f); writer.Write(0f); writer.Write(0f); writer.Write((float)0); writer.Write((uint)0x1); writer.Write((uint)0); entity.WriteUpdateFields(writer); return(new UpdateObject(new List <byte[]> { (writer.BaseStream as MemoryStream)?.ToArray() })); }