Пример #1
0
        public void Filters()
        {
            using (var client = new Facepunch.Steamworks.Client(252490))
            {
                var filter = new Facepunch.Steamworks.ServerList.Filter();
                filter.Add("map", "barren");


                var query = client.ServerList.Internet(filter);

                while (true)
                {
                    client.Update();
                    System.Threading.Thread.Sleep(2);

                    if (query.Finished)
                    {
                        break;
                    }
                }

                foreach (var x in query.Responded)
                {
                    Assert.AreEqual(x.Map.ToLower(), "barren");
                }

                query.Dispose();

                for (int i = 0; i < 100; i++)
                {
                    client.Update();
                    System.Threading.Thread.Sleep(1);
                }
            }
        }
Пример #2
0
        public void InternetList()
        {
            using (var client = new Facepunch.Steamworks.Client(252490))
            {
                var filter = new Facepunch.Steamworks.ServerList.Filter();
                filter.Add("appid", client.AppId.ToString());
                filter.Add("gamedir", "rust");
                filter.Add("secure", "1");

                var query = client.ServerList.Internet(filter);

                for (int i = 0; i < 1000; i++)
                {
                    client.Update();
                    System.Threading.Thread.Sleep(100);

                    foreach (var s in query.Responded)
                    {
                        Assert.AreEqual(s.AppId, client.AppId);
                        Assert.AreEqual(s.GameDir, "rust");
                    }

                    if (query.Finished)
                    {
                        break;
                    }
                }

                Assert.IsTrue(query.Responded.Count > 0);

                Console.WriteLine("Responded: " + query.Responded.Count.ToString());
                Console.WriteLine("Unresponsive: " + query.Unresponsive.Count.ToString());

                foreach (var server in query.Responded.Take(20))
                {
                    Console.WriteLine("{0} {1}", server.Address, server.Name);
                }

                query.Dispose();

                for (int i = 0; i < 100; i++)
                {
                    client.Update();
                    System.Threading.Thread.Sleep(1);
                }
            }
        }
Пример #3
0
        public void LocalList()
        {
            using (var client = new Facepunch.Steamworks.Client(252490))
            {
                var filter = new Facepunch.Steamworks.ServerList.Filter();
                filter.Add("appid", client.AppId.ToString());
                filter.Add("gamedir", "rust");
                filter.Add("secure", "1");

                var query = client.ServerList.Local(filter);

                while (true)
                {
                    client.Update();
                    System.Threading.Thread.Sleep(2);

                    if (query.Finished)
                    {
                        break;
                    }
                }

                Console.WriteLine("Responded: " + query.Responded.Count.ToString());
                Console.WriteLine("Unresponsive: " + query.Unresponsive.Count.ToString());

                foreach (var x in query.Responded)
                {
                    Console.WriteLine(x.Map);
                }

                query.Dispose();

                for (int i = 0; i < 100; i++)
                {
                    client.Update();
                    System.Threading.Thread.Sleep(1);
                }
            }
        }
Пример #4
0
        public void MultipleInternetList()
        {
            using (var client = new Facepunch.Steamworks.Client(252490))
            {
                var queries = new List <Facepunch.Steamworks.ServerList.Request>();

                var filter = new Facepunch.Steamworks.ServerList.Filter();
                filter.Add("map", "barren");

                for (int i = 0; i < 10; i++)
                {
                    queries.Add(client.ServerList.Internet(filter));
                }

                for (int i = 0; i < 100; i++)
                {
                    client.Update();
                    System.Threading.Thread.Sleep(5);

                    if (queries.Any(x => x.Finished))
                    {
                        break;
                    }
                }

                foreach (var query in queries)
                {
                    Console.WriteLine("Responded: " + query.Responded.Count.ToString());
                    Console.WriteLine("Unresponsive: " + query.Unresponsive.Count.ToString());

                    client.Update();
                    query.Dispose();
                    client.Update();
                }
            }
        }
Пример #5
0
        public void Rules()
        {
            using (var client = new Facepunch.Steamworks.Client(252490))
            {
                var filter = new Facepunch.Steamworks.ServerList.Filter();
                filter.Add("appid", client.AppId.ToString());
                filter.Add("gamedir", "rust");
                filter.Add("secure", "1");

                filter.Add("addr", "185.97.254.146");

                using (var query = client.ServerList.Internet(filter))
                {
                    for (int i = 0; i < 1000; i++)
                    {
                        GC.Collect();
                        client.Update();
                        GC.Collect();
                        System.Threading.Thread.Sleep(10);

                        //    if ( query.Responded.Count > 20 )
                        //       break;

                        if (query.Finished)
                        {
                            break;
                        }
                    }

                    query.Dispose();

                    var servers = query.Responded.Take(100);

                    foreach (var server in servers)
                    {
                        server.FetchRules();

                        int i = 0;
                        while (!server.HasRules)
                        {
                            i++;
                            client.Update();
                            System.Threading.Thread.Sleep(10);

                            if (i > 100)
                            {
                                break;
                            }
                        }

                        if (server.HasRules)
                        {
                            Console.WriteLine("");
                            Console.WriteLine("");
                            Console.WriteLine(server.Address);
                            Console.WriteLine("");

                            foreach (var rule in server.Rules)
                            {
                                Console.WriteLine(rule.Key + " = " + rule.Value);
                            }
                        }
                        else
                        {
                            Console.WriteLine("SERVER HAS NO RULES :(");
                        }
                    }
                }
            }
        }