public static void Notify(Client client, bool ulst = false, bool joining = false)
        {
            var pslm = new TdfList("PSLM", TdfBaseType.Integer, new ArrayList {
            });

            pslm.List.AddRange(new ulong[] { 268374015, 268374015, 268374015, 268374015, 268374015 });

            var data = new List <Tdf>
            {
                new TdfStruct("DATA", new List <Tdf>
                {
                    new TdfUnion("ADDR", NetworkAddressMember.IPPAirAddress, new List <Tdf>
                    {
                        new TdfStruct("VALU", new List <Tdf>
                        {
                            new TdfStruct("EXIP", new List <Tdf>
                            {
                                new TdfInteger("IP", client.ExternalIP),
                                new TdfInteger("PORT", client.ExternalPort)
                            }),
                            new TdfStruct("INIP", new List <Tdf>
                            {
                                new TdfInteger("IP", client.InternalIP),
                                new TdfInteger("PORT", client.InternalPort)
                            })
                        })
                    }),
                    new TdfString("BPS", "ams"),
                    new TdfString("CTY", ""),
                    new TdfInteger("HWFG", 0),
                    pslm,
                    new TdfInteger("UATT", 0)
                }),
                new TdfInteger("USID", client.User.ID)
            };

            if (ulst == true)
            {
                ((TdfStruct)data[0]).Data.Add(new TdfList("ULST", TdfBaseType.TDF_TYPE_BLAZE_OBJECT_ID, new ArrayList
                {
                    new TdfVector3("0", 4, 1, client.GameID)
                }));
            }

            if (joining)
            {
                var game       = GameManager.Games[client.GameID];
                var gameClient = BlazeServer.Clients[game.ClientID];

                gameClient.Notify(Component.UserSessions, 1, 0, data);
            }
            else
            {
                client.Notify(Component.UserSessions, 1, 0, data);
            }
        }
        public static void Notify(Client client, bool ulst = false, bool joining = false)
        {
            var pslm = new TdfList("PSLM", TdfBaseType.Integer, new ArrayList { });
            pslm.List.AddRange(new ulong[] { 268374015, 268374015, 268374015, 268374015, 268374015 });

            var data = new List<Tdf>
            {
                new TdfStruct("DATA", new List<Tdf>
                {
                    new TdfUnion("ADDR", NetworkAddressMember.IPPAirAddress, new List<Tdf>
                    {
                        new TdfStruct("VALU", new List<Tdf>
                        {
                            new TdfStruct("EXIP", new List<Tdf>
                            {
                                new TdfInteger("IP", client.ExternalIP),
                                new TdfInteger("PORT", client.ExternalPort)
                            }),
                            new TdfStruct("INIP", new List<Tdf>
                            {
                                new TdfInteger("IP", client.InternalIP),
                                new TdfInteger("PORT", client.InternalPort)
                            })
                        })
                    }),
                    new TdfString("BPS", "ams"),
                    new TdfString("CTY", ""),
                    new TdfInteger("HWFG", 0),
                    pslm,
                    new TdfInteger("UATT", 0)
                }),
                new TdfInteger("USID", client.User.ID)
            };

            if (ulst == true)
            {
                ((TdfStruct)data[0]).Data.Add(new TdfList("ULST", TdfBaseType.TDF_TYPE_BLAZE_OBJECT_ID, new ArrayList
                {
                    new TdfVector3("0", 4, 1, client.GameID)
                }));
            }

            if (joining)
            {
                var game = GameManager.Games[client.GameID];
                var gameClient = BlazeServer.Clients[game.ClientID];

                gameClient.Notify(Component.UserSessions, 1, 0, data);
            }
            else
            {
                client.Notify(Component.UserSessions, 1, 0, data);
            }
        }
コード例 #3
0
ファイル: TdfDecoder.cs プロジェクト: stingercod/blaze-server
        private TdfList DecodeTdfList(string label)
        {
            // read list type
            byte listType = (byte)_stream.ReadByte();

            // read list size
            int listSize = _stream.ReadByte();

            // read list
            ArrayList data = DecodeList((TdfBaseType)listType, listSize);

            TdfList list = new TdfList(label, (TdfBaseType)listType, data);

            return(list);
        }
コード例 #4
0
        private void WriteTdfList(TdfList tdf)
        {
            // write list type
            _stream.WriteByte((byte)tdf.ListType);

            // write list size
            _stream.WriteByte((byte)tdf.List.Count);

            if (tdf.Stub)
            {
                _stream.WriteByte(2);
            }

            // write list
            WriteList(tdf.ListType, tdf.List);
        }
コード例 #5
0
        public static void HandleRequest(Request request)
        {
            Log.Info(string.Format("Client {0} pre-authenticating", request.Client.ID));

            var clientData = (TdfStruct)request.Data["CDAT"];
            var clientType = (TdfInteger)clientData.Data.Find(tdf => tdf.Label == "TYPE");
            var clientService = (TdfString)clientData.Data.Find(tdf => tdf.Label == "SVCN");

            var clientInfo = (TdfStruct)request.Data["CINF"];
            var clientLocalization = (TdfInteger)clientInfo.Data.Find(tdf => tdf.Label == "LOC");

            request.Client.Type = (ClientType)clientType.Value;
            request.Client.Localization = (ulong)clientLocalization.Value;
            request.Client.Service = clientService.Value;

            // TODO: fix this
            var cids = new TdfList("CIDS", TdfBaseType.Integer, new ArrayList
            {
                //1, 25, 4, 27, 28, 6, 7, 9, 10, 11, 30720, 30721, 30722, 30723, 20, 30725, 30726, 2000
            });
            cids.List.AddRange((new ulong[] { 1, 25, 4, 27, 28, 6, 7, 9, 10, 11, 30720, 30721, 30722, 30723, 20, 30725, 30726, 2000 }).ToArray());

            var data = new List<Tdf>
            {
                new TdfInteger("ANON", 0),
                new TdfString("ASRC", "300294"),
                cids,
                new TdfString("CNGN", ""),
                new TdfStruct("CONF", new List<Tdf>
                {
                    new TdfMap("CONF", TdfBaseType.String, TdfBaseType.String, new Dictionary<object, object>
                    {
                        { "connIdleTimeout", "90s" },
                        { "defaultRequestTimeout", "80s" },
                        { "pingPeriod", "20s" },
                        { "voipHeadsetUpdateRate", "1000" },
                        { "xlspConnectionIdleTimeout", "300" }
                    })
                }),
                new TdfString("INST", request.Client.Service),
                new TdfInteger("MINR", 0),
                new TdfString("NASP", "cem_ea_id"),
                new TdfString("PILD", ""),
                new TdfString("PLAT", "pc"), // TODO: fetch from decoded data
                new TdfString("PTAG", ""),
                new TdfStruct("QOSS", new List<Tdf>
                {
                    new TdfStruct("BWPS", new List<Tdf>
                    {
                        new TdfString("PSA", "127.0.0.1"),
                        new TdfInteger("PSP", 17502),
                        new TdfString("SNA", "ams")
                    }),
                    new TdfInteger("LNP", 10),
                    new TdfMap("LTPS", TdfBaseType.String, TdfBaseType.Struct, new Dictionary<object, object>
                    {
                        { "ams", new List<Tdf>
                            {
                                new TdfString("PSA", "127.0.0.1"),
                                new TdfInteger("PSP", 17502),
                                new TdfString("SNA", "ams")
                            }
                        }
                    }),
                    new TdfInteger("SVID", 1161889797)
                }),
                new TdfString("RSRC", "300294"),
                new TdfString("SVER", "Blaze 3.15.08.0 (CL# 1060080)")
            };

            request.Reply(0, data);
        }
コード例 #6
0
        public static void HandleRequest(Request request)
        {
            Log.Info(string.Format("Client {0} pre-authenticating", request.Client.ID));

            var clientData    = (TdfStruct)request.Data["CDAT"];
            var clientType    = (TdfInteger)clientData.Data.Find(tdf => tdf.Label == "TYPE");
            var clientService = (TdfString)clientData.Data.Find(tdf => tdf.Label == "SVCN");

            var clientInfo         = (TdfStruct)request.Data["CINF"];
            var clientLocalization = (TdfInteger)clientInfo.Data.Find(tdf => tdf.Label == "LOC");

            request.Client.Type         = (ClientType)clientType.Value;
            request.Client.Localization = (ulong)clientLocalization.Value;
            request.Client.Service      = clientService.Value;

            // TODO: fix this
            var cids = new TdfList("CIDS", TdfBaseType.Integer, new ArrayList
            {
                //1, 25, 4, 27, 28, 6, 7, 9, 10, 11, 30720, 30721, 30722, 30723, 20, 30725, 30726, 2000
            });

            cids.List.AddRange((new ulong[] { 1, 25, 4, 27, 28, 6, 7, 9, 10, 11, 30720, 30721, 30722, 30723, 20, 30725, 30726, 2000 }).ToArray());

            var data = new List <Tdf>
            {
                new TdfInteger("ANON", 0),
                new TdfString("ASRC", "300294"),
                cids,
                new TdfString("CNGN", ""),
                new TdfStruct("CONF", new List <Tdf>
                {
                    new TdfMap("CONF", TdfBaseType.String, TdfBaseType.String, new Dictionary <object, object>
                    {
                        { "connIdleTimeout", "90s" },
                        { "defaultRequestTimeout", "80s" },
                        { "pingPeriod", "20s" },
                        { "voipHeadsetUpdateRate", "1000" },
                        { "xlspConnectionIdleTimeout", "300" }
                    })
                }),
                new TdfString("INST", request.Client.Service),
                new TdfInteger("MINR", 0),
                new TdfString("NASP", "cem_ea_id"),
                new TdfString("PILD", ""),
                new TdfString("PLAT", "pc"), // TODO: fetch from decoded data
                new TdfString("PTAG", ""),
                new TdfStruct("QOSS", new List <Tdf>
                {
                    new TdfStruct("BWPS", new List <Tdf>
                    {
                        new TdfString("PSA", "127.0.0.1"),
                        new TdfInteger("PSP", 17502),
                        new TdfString("SNA", "ams")
                    }),
                    new TdfInteger("LNP", 10),
                    new TdfMap("LTPS", TdfBaseType.String, TdfBaseType.Struct, new Dictionary <object, object>
                    {
                        { "ams", new List <Tdf>
                          {
                              new TdfString("PSA", "127.0.0.1"),
                              new TdfInteger("PSP", 17502),
                              new TdfString("SNA", "ams")
                          } }
                    }),
                    new TdfInteger("SVID", 1161889797)
                }),
                new TdfString("RSRC", "300294"),
                new TdfString("SVER", "Blaze 3.15.08.0 (CL# 1060080)")
            };

            request.Reply(0, data);
        }
コード例 #7
0
        public static void HandleRequest(Request request)
        {
            Log.Info(string.Format("Client {0} requested user entitlements", request.Client.ID));

            var  etag         = (TdfString)request.Data["ETAG"];
            bool onlineAccess = (etag.Value == "ONLINE_ACCESS");

            if (!onlineAccess)
            {
                var nlst = new TdfList("NLST", TdfBaseType.Struct, new ArrayList
                {
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2011-11-02T11:2Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1234632478),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "303566"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "DR:224766400"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "ONLINE_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2011-11-02T11:2Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1294632417),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "303566"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "303566"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "PROJECT10_CODE_CONSUMED_LE1"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2013-02-22T14:40Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 5674749135),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306678"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:50401"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PREMIUM_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2014-05-29T6:15Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1005150961807),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "305060"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "DR:235665900"),
                        new TdfInteger("STAT", 2),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "ONLINE_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2013-02-22T14:40Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1002134961807),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "305061"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "DR:235663400"),
                        new TdfInteger("STAT", 2),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "ONLINE_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-06-04T21:13Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1771457489),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306678"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:50400"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PREMIUM_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 1 - Back 2 Karkand
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-06-04T21:13Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1771457490),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "302777"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:50400"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:B2K_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 2
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-06-04T21:13Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1771457491),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "302776"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:48215"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK2_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 3
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2014-02-07T20:15Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1004743136441),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "302778"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:51080"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK3_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 4
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-11-26T9:4Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1000808118611),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "303129"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:55171"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK4_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 5
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2013-03-07T2:21Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1002246118611),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306409"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:109546437"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK5_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // COOP shortcut
                    new List <Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-04-17T15:57Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1684196754),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306215"),
                        new TdfInteger("PRCA", 1),
                        new TdfString("PRID", "OFB-EAST:48642"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:SHORTCUT:COOP"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    }
                });

                request.Reply(0, new List <Tdf> {
                    nlst
                });
            }
            else
            {
                request.Reply();
            }
        }
コード例 #8
0
        private void WriteTdfList(TdfList tdf)
        {
            // write list type
            _stream.WriteByte((byte)tdf.ListType);

            // write list size
            _stream.WriteByte((byte)tdf.List.Count);

            if (tdf.Stub)
            {
                _stream.WriteByte(2);
            }

            // write list
            WriteList(tdf.ListType, tdf.List);
        }
コード例 #9
0
        private TdfList DecodeTdfList(string label)
        {
            // read list type
            byte listType = (byte)_stream.ReadByte();

            // read list size
            int listSize = _stream.ReadByte();

            // read list
            ArrayList data = DecodeList((TdfBaseType)listType, listSize);

            TdfList list = new TdfList(label, (TdfBaseType)listType, data);

            return list;
        }
コード例 #10
0
        public static void HandleRequest(Request request)
        {
            Log.Info(string.Format("Client {0} requested user entitlements", request.Client.ID));

            var etag = (TdfString)request.Data["ETAG"];
            bool onlineAccess = (etag.Value == "ONLINE_ACCESS");

            if (!onlineAccess)
            {
                var nlst = new TdfList("NLST", TdfBaseType.Struct, new ArrayList
                {
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2011-11-02T11:2Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1234632478),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "303566"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "DR:224766400"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "ONLINE_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2011-11-02T11:2Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1294632417),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "303566"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "303566"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "PROJECT10_CODE_CONSUMED_LE1"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2013-02-22T14:40Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 5674749135),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306678"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:50401"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PREMIUM_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2014-05-29T6:15Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1005150961807),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "305060"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "DR:235665900"),
                        new TdfInteger("STAT", 2),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "ONLINE_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2013-02-22T14:40Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1002134961807),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "305061"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "DR:235663400"),
                        new TdfInteger("STAT", 2),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "ONLINE_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 1),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-06-04T21:13Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1771457489),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306678"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:50400"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PREMIUM_ACCESS"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 1 - Back 2 Karkand
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-06-04T21:13Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1771457490),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "302777"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:50400"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:B2K_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 2
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-06-04T21:13Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1771457491),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "302776"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:48215"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK2_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 3
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2014-02-07T20:15Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1004743136441),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "302778"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:51080"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK3_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 4
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-11-26T9:4Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1000808118611),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "303129"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:55171"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK4_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // DLC 5
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2013-03-07T2:21Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1002246118611),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306409"),
                        new TdfInteger("PRCA", 2),
                        new TdfString("PRID", "OFB-EAST:109546437"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:PC:XPACK5_PURCHASE"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    },

                    // COOP shortcut
                    new List<Tdf>
                    {
                        new TdfString("DEVI", ""),
                        new TdfString("GDAY", "2012-04-17T15:57Z"),
                        new TdfString("GNAM", "BF3PC"),
                        new TdfInteger("ID", 1684196754),
                        new TdfInteger("ISCO", 0),
                        new TdfInteger("PID", 0),
                        new TdfString("PJID", "306215"),
                        new TdfInteger("PRCA", 1),
                        new TdfString("PRID", "OFB-EAST:48642"),
                        new TdfInteger("STAT", 1),
                        new TdfInteger("STRC", 0),
                        new TdfString("TAG", "BF3:SHORTCUT:COOP"),
                        new TdfString("TDAY", ""),
                        new TdfInteger("TYPE", 5),
                        new TdfInteger("UCNT", 0),
                        new TdfInteger("VER", 0)
                    }
                });

                request.Reply(0, new List<Tdf> { nlst });
            }
            else
            {
                request.Reply();
            }
        }