コード例 #1
0
        public static void RemovePlayer(Blaze.Packet p, PlayerInfo pi, NetworkStream ns)
        {
            List <Blaze.Tdf> input = Blaze.ReadPacketContent(p);

            Blaze.TdfInteger CNTX = (Blaze.TdfInteger)input[1];
            Blaze.TdfInteger PID  = (Blaze.TdfInteger)input[3];
            Blaze.TdfInteger REAS = (Blaze.TdfInteger)input[4];
            pi.game.removePlayer((int)PID.Value);
            GC.Collect();
            byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List <Blaze.Tdf>());
            ns.Write(buff, 0, buff.Length);
            ns.Flush();
            foreach (PlayerInfo player in BlazeServer.allClients)
            {
                if (player != null && player.userId == PID.Value)
                {
                    player.cntx = CNTX.Value;
                }
            }
            foreach (PlayerInfo player in pi.game.players)
            {
                if (player != null && player.userId != PID.Value)
                {
                    try
                    {
                        AsyncGameManager.NotifyPlayerRemoved(player, p, player, player.ns, PID.Value, CNTX.Value, REAS.Value);
                    }
                    catch
                    {
                        Logger.Error("[CLNT] #" + pi.userId + " : 'RemovePlayer' peer crashed!");
                    }
                }
            }
        }
コード例 #2
0
        public static void RemovePlayer(Blaze.Packet p, PlayerInfo pi, NetworkStream ns)
        {
            List <Blaze.Tdf> input = Blaze.ReadPacketContent(p);

            Blaze.TdfInteger PID = (Blaze.TdfInteger)input[3];
            pi.game.removePlayer((int)PID.Value);
            pi.game = null;
            GC.Collect();
            byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List <Blaze.Tdf>());
            ns.Write(buff, 0, buff.Length);
            ns.Flush();
        }
コード例 #3
0
        public static void UpdateMeshConnection(Blaze.Packet p, PlayerInfo pi, NetworkStream ns)
        {
            List <Blaze.Tdf>       input   = Blaze.ReadPacketContent(p);
            List <Blaze.TdfStruct> entries = (List <Blaze.TdfStruct>)((Blaze.TdfList)input[1]).List;

            Blaze.TdfInteger pid  = (Blaze.TdfInteger)entries[0].Values[1];
            Blaze.TdfInteger stat = (Blaze.TdfInteger)entries[0].Values[2];
            byte[]           buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List <Blaze.Tdf>());
            ns.Write(buff, 0, buff.Length);
            ns.Flush();

            PlayerInfo target = null;

            foreach (PlayerInfo info in BlazeServer.allClients)
            {
                if (info.userId == pid.Value)
                {
                    target = info;
                    break;
                }
            }
            if (target != null)
            {
                if (stat.Value == 2)
                {
                    if (pi.isServer)
                    {
                        AsyncUserSessions.UserSessionExtendedDataUpdateNotification(pi, p, target, ns);
                        AsyncGameManager.NotifyGamePlayerStateChange(pi, p, target, ns, 4);
                        AsyncGameManager.NotifyPlayerJoinCompleted(pi, p, target, ns);
                    }
                    else
                    {
                        AsyncGameManager.NotifyGamePlayerStateChange(pi, p, pi, ns, 4);
                        AsyncGameManager.NotifyPlayerJoinCompleted(pi, p, pi, ns);
                    }
                }
                else
                {
                    AsyncUserSessions.NotifyUserRemoved(pi, p, pid.Value, ns);
                }
            }
        }
コード例 #4
0
        private static void PreAuth(Blaze.Packet p, PlayerInfo pi, NetworkStream ns)
        {
            List <Blaze.Tdf> input = Blaze.ReadPacketContent(p);

            Blaze.TdfStruct  CDAT = (Blaze.TdfStruct)input[0];
            Blaze.TdfInteger TYPE = (Blaze.TdfInteger)CDAT.Values[3];
            pi.isServer = TYPE.Value != 0;
            if (pi.isServer)
            {
                pi.game    = new GameInfo();
                pi.profile = Profiles.Create("test-server", 999);
                pi.userId  = 999;
            }
            Blaze.TdfStruct  CINF = (Blaze.TdfStruct)input[1];
            Blaze.TdfString  CVER = (Blaze.TdfString)CINF.Values[4];
            Blaze.TdfInteger LOC  = (Blaze.TdfInteger)CINF.Values[7];
            pi.loc     = LOC.Value;
            pi.version = CVER.Value;
            BlazeServer.Log("[CLNT] #" + pi.userId + " is a " + (pi.isServer ? "server" : "client"), System.Drawing.Color.Blue);
            List <Blaze.Tdf> Result = new List <Blaze.Tdf>();

            Result.Add(Blaze.TdfInteger.Create("ANON", 0));
            Result.Add(Blaze.TdfString.Create("ASRC", "300294"));
            List <string> t  = Helper.ConvertStringList("{1} {25} {4} {27} {28} {6} {7} {9} {10} {11} {30720} {30721} {30722} {30723} {20} {30725} {30726} {2000}");
            List <long>   t2 = new List <long>();

            foreach (string v in t)
            {
                t2.Add(Convert.ToInt64(v));
            }
            Result.Add(Blaze.TdfList.Create("CIDS", 0, t2.Count, t2));
            t = new List <string>();
            List <string> t3 = new List <string>();

            Helper.ConvertDoubleStringList("{connIdleTimeout ; 90s} {defaultRequestTimeout ; 60s} {pingPeriod ; 20s} {voipHeadsetUpdateRate ; 1000} {xlspConnectionIdleTimeout ; 300}", out t, out t3);
            Blaze.TdfDoubleList conf2 = Blaze.TdfDoubleList.Create("CONF", 1, 1, t, t3, t.Count);
            List <Blaze.Tdf>    t4    = new List <Blaze.Tdf>();

            t4.Add(conf2);
            Result.Add(Blaze.TdfStruct.Create("CONF", t4));
            Result.Add(Blaze.TdfString.Create("INST", "battlefield-assault-pc"));
            Result.Add(Blaze.TdfInteger.Create("MINR", 0));
            Result.Add(Blaze.TdfString.Create("NASP", "cem_ea_id"));
            Result.Add(Blaze.TdfString.Create("PILD", ""));
            Result.Add(Blaze.TdfString.Create("PLAT", "pc"));
            List <Blaze.Tdf> QOSS = new List <Blaze.Tdf>();
            List <Blaze.Tdf> BWPS = new List <Blaze.Tdf>();

            BWPS.Add(Blaze.TdfString.Create("PSA\0", ProviderInfo.QOS_IP));
            BWPS.Add(Blaze.TdfInteger.Create("PSP\0", ProviderInfo.QOS_Port));
            BWPS.Add(Blaze.TdfString.Create("SNA\0", ProviderInfo.QOS_Name));
            QOSS.Add(Blaze.TdfStruct.Create("BWPS", BWPS));
            QOSS.Add(Blaze.TdfInteger.Create("LNP\0", 0xA));
            List <Blaze.Tdf> LTPS1 = new List <Blaze.Tdf>();

            LTPS1.Add(Blaze.TdfString.Create("PSA\0", ProviderInfo.QOS_IP));
            LTPS1.Add(Blaze.TdfInteger.Create("PSP\0", ProviderInfo.QOS_Port));
            LTPS1.Add(Blaze.TdfString.Create("SNA\0", ProviderInfo.QOS_Name));
            List <Blaze.TdfStruct> LTPS = new List <Blaze.TdfStruct>();

            LTPS.Add(Blaze.CreateStructStub(LTPS1));
            t = Helper.ConvertStringList("{" + ProviderInfo.QOS_SName + "}");
            QOSS.Add(Blaze.TdfDoubleList.Create("LTPS", 1, 3, t, LTPS, 1));
            QOSS.Add(Blaze.TdfInteger.Create("SVID", 0x45410805));
            Result.Add(Blaze.TdfStruct.Create("QOSS", QOSS));
            Result.Add(Blaze.TdfString.Create("RSRC", "300294"));
            Result.Add(Blaze.TdfString.Create("SVER", "WV Server"));
            byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result);
            ns.Write(buff, 0, buff.Length);
            ns.Flush();
        }
コード例 #5
0
        private void tv1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode t = e.Node;

            if (t != null && t.Name != "")
            {
                int       n   = Convert.ToInt32(t.Name);
                Blaze.Tdf tdf = inlist[n];
                string    s;
                switch (tdf.Type)
                {
                case 0:
                    Blaze.TdfInteger ti = (Blaze.TdfInteger)tdf;
                    rtb2.Text = "0x" + ti.Value.ToString("X");
                    if (ti.Label == "IP  ")
                    {
                        rtb2.Text += Environment.NewLine + "(" + Blaze.GetStringFromIP(ti.Value) + ")";
                    }
                    break;

                case 1:
                    rtb2.Text = ((Blaze.TdfString)tdf).Value.ToString();
                    break;

                case 2:
                    rtb2.Text  = "Length: " + ((Blaze.TdfBlob)tdf).Data.Length.ToString();
                    rtb2.Text += Environment.NewLine + Blaze.HexDump(((Blaze.TdfBlob)tdf).Data);
                    break;

                case 4:
                    Blaze.TdfList l = (Blaze.TdfList)tdf;
                    s = "";
                    for (int i = 0; i < l.Count; i++)
                    {
                        switch (l.SubType)
                        {
                        case 0:
                            s += "{" + ((List <long>)l.List)[i] + "} ";
                            break;

                        case 1:
                            s += "{" + ((List <string>)l.List)[i] + "} ";
                            break;

                        case 9:
                            Blaze.TrippleVal t2 = ((List <Blaze.TrippleVal>)l.List)[i];
                            s += "{" + t2.v1.ToString("X") + "; " + t2.v2.ToString("X") + "; " + t2.v3.ToString("X") + "} ";
                            break;
                        }
                    }
                    rtb2.Text = s;
                    break;

                case 5:
                    s = "";
                    Blaze.TdfDoubleList ll = (Blaze.TdfDoubleList)tdf;
                    for (int i = 0; i < ll.Count; i++)
                    {
                        s += "{";
                        switch (ll.SubType1)
                        {
                        case 0:
                            List <long> l1 = (List <long>)ll.List1;
                            s += l1[i].ToString("X");
                            break;

                        case 1:
                            List <string> l2 = (List <string>)ll.List1;
                            s += l2[i];
                            break;

                        case 0xA:
                            List <float> lf1 = (List <float>)ll.List1;
                            s += lf1[i].ToString();
                            break;

                        default:
                            s += "(see List1[" + i + "])";
                            break;
                        }
                        s += " ; ";
                        switch (ll.SubType2)
                        {
                        case 0:
                            List <long> l1 = (List <long>)ll.List2;
                            s += l1[i].ToString("X");
                            break;

                        case 1:
                            List <string> l2 = (List <string>)ll.List2;
                            s += l2[i];
                            break;

                        case 0xA:
                            List <float> lf1 = (List <float>)ll.List2;
                            s += lf1[i].ToString();
                            break;

                        default:
                            s += "(see List2[" + i + "])";
                            break;
                        }
                        s += "}\n";
                    }
                    rtb2.Text = s;
                    break;

                case 6:
                    rtb2.Text = "Type: 0x" + ((Blaze.TdfUnion)tdf).UnionType.ToString("X2");
                    break;

                case 7:
                    Blaze.TdfIntegerList til = (Blaze.TdfIntegerList)tdf;
                    s = "";
                    for (int i = 0; i < til.Count; i++)
                    {
                        s += til.List[i].ToString("X");
                        if (i < til.Count - 1)
                        {
                            s += "; ";
                        }
                    }
                    rtb2.Text = s;
                    break;

                case 8:
                    Blaze.TdfDoubleVal dval = (Blaze.TdfDoubleVal)tdf;
                    rtb2.Text = "0x" + dval.Value.v1.ToString("X") + " 0x" + dval.Value.v2.ToString("X");
                    break;

                case 9:
                    Blaze.TdfTrippleVal tval = (Blaze.TdfTrippleVal)tdf;
                    rtb2.Text = "0x" + tval.Value.v1.ToString("X") + " 0x" + tval.Value.v2.ToString("X") + " 0x" + tval.Value.v3.ToString("X");
                    break;

                default:
                    rtb2.Text = "";
                    break;
                }
            }
        }