public static void HandleEnumCharacters(EnumCharacters enumCharacters, CharacterSession session) { // ORM seems to have problems with session.GameAccount.Id... var gameAccount = session.GameAccount; var charList = DB.Character.Where <Character>(c => c.GameAccountId == gameAccount.Id); var enumCharactersResult = new EnumCharactersResult(); charList.ForEach(c => { enumCharactersResult.Characters.Add(new CharacterListEntry { Guid = new SmartGuid { Type = GuidType.Player, MapId = (ushort)c.Map, CreationBits = c.Guid }, Name = c.Name, ListPosition = c.ListPosition, RaceID = c.Race, ClassID = c.Class, SexID = c.Sex, SkinID = c.Skin, FaceID = c.Face, HairStyle = c.HairStyle, HairColor = c.HairColor, FacialHairStyle = c.FacialHairStyle, ExperienceLevel = c.Level, ZoneID = (int)c.Zone, MapID = (int)c.Map, PreloadPos = new Vector3 { X = c.X, Y = c.Y, Z = c.Z }, GuildGUID = new SmartGuid { Type = GuidType.Guild, CreationBits = c.GuildGuid }, Flags = c.CharacterFlags, Flags2 = c.CustomizeFlags, Flags3 = c.Flags3, FirstLogin = c.FirstLogin == 1, PetCreatureDisplayID = c.PetCreatureDisplayId, PetExperienceLevel = c.PetLevel, PetCreatureFamilyID = c.PetCreatureFamily, }); }); session.Send(enumCharactersResult); }
public static async void HandleEnumCharacters(EnumCharacters enumCharacters, CharacterSession session) { var charList = DB.Character.Where <Character>(c => c.GameAccountId == session.GameAccount.Id); var enumCharactersResult = new EnumCharactersResult(); charList.ForEach(c => { var character = new CharacterListEntry { Guid = new CharacterGuid { CreationBits = c.Guid, RealmId = (ushort)c.RealmId }, Name = c.Name, ListPosition = c.ListPosition, RaceID = c.Race, ClassID = c.Class, SexID = c.Sex, SkinID = c.Skin, FaceID = c.Face, HairStyle = c.HairStyle, HairColor = c.HairColor, FacialHairStyle = c.FacialHairStyle, ExperienceLevel = c.ExperienceLevel, ZoneID = (int)c.Zone, MapID = (int)c.Map, PreloadPos = new Vector3 { X = c.X, Y = c.Y, Z = c.Z }, GuildGUID = new GuildGuid { CreationBits = c.GuildGuid }, Flags = c.CharacterFlags, Flags2 = c.CustomizeFlags, Flags3 = c.Flags3, FirstLogin = c.FirstLogin == 1, PetCreatureDisplayID = c.PetCreatureDisplayId, PetExperienceLevel = c.PetLevel, PetCreatureFamilyID = c.PetCreatureFamily, }; if (c.CharacterItems != null) { for (var i = 0; i < character.InventoryItems.Length; i++) { foreach (var ci in c.CharacterItems) { Item item; if ((int)ci.Slot == i && ClientDB.Items.TryGetValue(ci.ItemId, out item) && ci.Equipped) { character.InventoryItems[i].DisplayID = (uint)item.DisplayId; character.InventoryItems[i].InvType = (byte)item.Slot; break; } } } } enumCharactersResult.Characters.Add(character); }); await session.Send(enumCharactersResult); }