public static void HandleRequest(Packet packet, IClient client, bool fromQueue) { int id = packet.GetInt(); if (id < 0 || id > client.Account.Characters.Count) throw new ArgumentOutOfRangeException("Login character ID out of range"); client.SelectCharacter(client.Account.Characters[id]); Packet reply = new Packet(PacketFamily.Welcome, PacketAction.Reply); reply.AddShort((short)WelcomeReply.CharacterInfo); reply.AddShort((short)client.Id); reply.AddInt(id); reply.AddShort((short)client.Character.Map.Data.Id); reply.AddBytes(client.Character.Map.Data.RevisionID); reply.AddThree((int)client.Character.Map.Data.PubFileLength); reply.AddBytes(client.Server.ItemData.revisionId); reply.AddShort((short)client.Server.ItemData.Count); reply.AddBytes(client.Server.NpcData.revisionId); reply.AddShort((short)client.Server.NpcData.Count); reply.AddBytes(client.Server.SpellData.revisionId); reply.AddShort((short)client.Server.SpellData.Count); reply.AddBytes(client.Server.ClassData.revisionId); reply.AddShort((short)client.Server.ClassData.Count); reply.AddBreakString(client.Character.Name); reply.AddBreakString(client.Character.Title ?? ""); reply.AddBreakString("Guild Name"); reply.AddBreakString("Guild Rank"); reply.AddChar(0); // Class reply.AddString("TAG"); // Guild tag reply.AddChar((byte)client.Character.Admin); reply.AddChar(client.Character.Level); // Level reply.AddInt(client.Character.Exp); // Exp reply.AddInt(client.Character.Usage); // Usage reply.AddShort(client.Character.Hp); // HP reply.AddShort(client.Character.MaxHp); // MaxHP reply.AddShort(client.Character.Tp); // TP reply.AddShort(client.Character.MaxTp); // MaxTP reply.AddShort(client.Character.MaxSp); // MaxSP reply.AddShort(client.Character.StatPoints); // StatPts reply.AddShort(client.Character.SkillPoints); // SkillPts reply.AddShort(client.Character.Karma); // Karma reply.AddShort(client.Character.MinDamage); // MinDam reply.AddShort(client.Character.MaxDamage); // MaxDam reply.AddShort(client.Character.Accuracy); // Accuracy reply.AddShort(client.Character.Evade); // Evade reply.AddShort(client.Character.Defence); // Armor reply.AddShort(client.Character.Strength); // Str reply.AddShort(client.Character.Wisdom); // Wis reply.AddShort(client.Character.Intelligence); // Int reply.AddShort(client.Character.Agility); // Agi reply.AddShort(client.Character.Constitution); // Con reply.AddShort(client.Character.Charisma); // Cha // Inventory reply.AddBreak(); reply.AddChar(1); // Guild Rank reply.AddShort(2); // Jail map reply.AddShort(4); // ? reply.AddChar(24); // ? reply.AddChar(24); // ? reply.AddShort(10); // ? reply.AddShort(10); // ? reply.AddShort(0); // Admin command flood rate reply.AddShort(2); // ? reply.AddChar(0); // Login warning message reply.AddBreak(); client.Send(reply); }