// Token: 0x06000975 RID: 2421 RVA: 0x00045884 File Offset: 0x00043A84
    private void OnServerResponded(HServerListRequest request, int iServer)
    {
        gameserveritem_t serverDetails = SteamMatchmakingServers.GetServerDetails(request, iServer);
        string           serverName    = serverDetails.GetServerName();
        ServerData       serverData    = new ServerData();

        serverData.m_name = serverName;
        serverData.m_steamHostAddr.SetIPv4(serverDetails.m_NetAdr.GetIP(), serverDetails.m_NetAdr.GetConnectionPort());
        serverData.m_password = serverDetails.m_bPassword;
        serverData.m_players  = serverDetails.m_nPlayers;
        serverData.m_version  = serverDetails.GetGameTags();
        this.m_dedicatedServers.Add(serverData);
        this.m_updateTriggerAccumulator++;
        if (this.m_updateTriggerAccumulator > 100)
        {
            this.m_updateTriggerAccumulator = 0;
            this.m_serverListRevision++;
        }
    }
Example #2
0
        private void OnResponded(HServerListRequest request, int server)
        {
            var serverDetails = SteamMatchmakingServers.GetServerDetails(request, server);

            var response = new Response
            {
                id          = server,
                name        = serverDetails.GetServerName(),
                players     = serverDetails.m_nPlayers,
                maxplayers  = serverDetails.m_nMaxPlayers,
                map         = serverDetails.GetMap(),
                ping        = serverDetails.m_nPing,
                ip          = serverDetails.m_NetAdr.GetIP(),
                address     = serverDetails.m_NetAdr.GetConnectionAddressString(),
                port        = serverDetails.m_NetAdr.GetConnectionPort(),
                queryPort   = serverDetails.m_NetAdr.GetQueryPort(),
                gamedir     = serverDetails.GetGameDir(),
                description = serverDetails.GetGameDescription(),
                steamid     = serverDetails.m_steamID.m_SteamID,
            };

            _onResponse(response);
        }
Example #3
0
 // Legacy GUI
 void OnGUI()
 {
     if(gameClient != null && drawServerList)
     {
         int count = 0;
         if (request != HServerListRequest.Invalid)
         {
             count = SteamMatchmakingServers.GetServerCount(gameClient.ServerListRequest);
             for (int i = 0; i < count; i++)
             {
                 gameserveritem_t server = SteamMatchmakingServers.GetServerDetails(gameClient.ServerListRequest, i);
                 GUI.Label(new Rect(startServerPosition + new Vector2(0, i * serverHeight), new Vector2(200, serverHeight)), server.GetServerName() + " " + (server.m_bSecure ? "(VAC Secure)" : "(Not VAC Secure)"));
                 if (GUI.Button(new Rect(startServerPosition + new Vector2(200, (i * (serverHeight)) / 2), new Vector2(50, 30)), "Join"))
                 {
                     drawServerList = false;
                     gameClient.ConnectTo(server.m_steamID);
                 }
             }
         }
         if (GUI.Button(new Rect(startServerPosition + new Vector2(100, (count * (serverHeight))), new Vector2(100, 30)), "Refresh LAN"))
         {
             request = gameClient.RefreshList(EServerList.LAN);
         }
     }
 }
Example #4
0
 private void OnRefreshComplete(HServerListRequest hrequest, EMatchMakingServerResponse response)
 => _refreshComplete.OnNext(Unit.Default);
		/// <summary>
		/// <para> Cancel an request which is operation on the given list type.  You should call this to cancel</para>
		/// <para> any in-progress requests before destructing a callback object that may have been passed</para>
		/// <para> to one of the above list request calls.  Not doing so may result in a crash when a callback</para>
		/// <para> occurs on the destructed object.</para>
		/// <para> Canceling a query does not release the allocated request handle.</para>
		/// <para> The request handle must be released using ReleaseRequest( hRequest )</para>
		/// </summary>
		public static void CancelQuery(HServerListRequest hRequest) {
			InteropHelp.TestIfAvailableClient();
			NativeMethods.ISteamMatchmakingServers_CancelQuery(hRequest);
		}
Example #6
0
        private void onServerListResponded(HServerListRequest request, int index)
        {
            if (request != this.serverListRequest)
            {
                return;
            }
            gameserveritem_t serverDetails = SteamMatchmakingServers.GetServerDetails(request, index);

            if (this.matchmakingIgnored.Contains(serverDetails.m_steamID.m_SteamID))
            {
                return;
            }
            SteamServerInfo steamServerInfo = new SteamServerInfo(serverDetails);

            if (index == this.serverListRefreshIndex)
            {
                if (this.onMasterServerQueryRefreshed != null)
                {
                    this.onMasterServerQueryRefreshed(steamServerInfo);
                }
                return;
            }
            if (FilterSettings.filterPlugins == EPlugins.NO)
            {
                if (serverDetails.m_nBotPlayers != 0)
                {
                    return;
                }
            }
            else if (FilterSettings.filterPlugins == EPlugins.YES && serverDetails.m_nBotPlayers != 1)
            {
                return;
            }
            if (steamServerInfo.maxPlayers < (int)CommandMaxPlayers.MIN_NUMBER)
            {
                return;
            }
            if (this.currentList == ESteamServerList.INTERNET)
            {
                if (steamServerInfo.maxPlayers > (int)(CommandMaxPlayers.MAX_NUMBER / 2))
                {
                    return;
                }
            }
            else if (steamServerInfo.maxPlayers > (int)CommandMaxPlayers.MAX_NUMBER)
            {
                return;
            }
            if (PlaySettings.serversName != null && PlaySettings.serversName.Length > 1 && steamServerInfo.name.IndexOf(PlaySettings.serversName, StringComparison.OrdinalIgnoreCase) == -1)
            {
                return;
            }
            int num = this.serverList.BinarySearch(steamServerInfo, this.serverInfoComparer);

            if (num < 0)
            {
                num = ~num;
            }
            this.serverList.Insert(num, steamServerInfo);
            if (this.onMasterServerAdded != null)
            {
                this.onMasterServerAdded(num, steamServerInfo);
            }
            this.matchmakingBestServer = null;
            int num2 = 25;

            while (this.matchmakingBestServer == null && num2 <= OptionsSettings.maxMatchmakingPing)
            {
                int num3 = -1;
                foreach (SteamServerInfo steamServerInfo2 in this.serverList)
                {
                    if (steamServerInfo2.players < OptionsSettings.minMatchmakingPlayers)
                    {
                        break;
                    }
                    if (steamServerInfo2.players != num3)
                    {
                        num3 = steamServerInfo2.players;
                        if (steamServerInfo2.ping <= num2)
                        {
                            this.matchmakingBestServer = steamServerInfo2;
                            break;
                        }
                    }
                }
                num2 += 25;
            }
            if (this.matchmakingProgressed != null)
            {
                this.matchmakingProgressed();
            }
        }
Example #7
0
		public static extern void ISteamMatchmakingServers_RefreshServer(HServerListRequest hRequest, int iServer);
Example #8
0
		public static extern IntPtr ISteamMatchmakingServers_GetServerDetails(HServerListRequest hRequest, int iServer);
 internal void RefreshServer(HServerListRequest hRequest, int iServer)
 {
     _RefreshServer(Self, hRequest, iServer);
 }
    public void RenderOnGUI()
    {
        GUILayout.BeginArea(new Rect(Screen.width - 200, 0, 200, Screen.height));
        GUILayout.Label("Variables:");
        GUILayout.Label("m_ServerListRequest: " + m_ServerListRequest);
        GUILayout.Label("m_ServerQuery: " + m_ServerQuery);
        GUILayout.Label("m_ServerListResponse: " + m_ServerListResponse);
        GUILayout.Label("m_PingResponse: " + m_PingResponse);
        GUILayout.Label("m_PlayersResponse: " + m_PlayersResponse);
        GUILayout.Label("m_RulesResponse: " + m_RulesResponse);
        GUILayout.EndArea();

        GUILayout.BeginVertical("box");
        m_ScrollPos = GUILayout.BeginScrollView(m_ScrollPos, GUILayout.Width(Screen.width - 215), GUILayout.Height(Screen.height - 33));

        if (GUILayout.Button("RequestInternetServerList(TestConstants.Instance.k_AppId_TeamFortress2, filters, (uint)filters.Length, m_ServerListResponse)"))
        {
            ReleaseRequest();

            MatchMakingKeyValuePair_t[] filters =
            {
                new MatchMakingKeyValuePair_t {
                    m_szKey = "appid", m_szValue = TestConstants.Instance.k_AppId_TeamFortress2.ToString()
                },
                new MatchMakingKeyValuePair_t {
                    m_szKey = "gamedir", m_szValue = "tf"
                },
                new MatchMakingKeyValuePair_t {
                    m_szKey = "gametagsand", m_szValue = "beta"
                },
            };
            m_ServerListRequest = SteamMatchmakingServers.RequestInternetServerList(TestConstants.Instance.k_AppId_TeamFortress2, filters, (uint)filters.Length, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestInternetServerList(" + TestConstants.Instance.k_AppId_TeamFortress2 + ", " + filters + ", " + (uint)filters.Length + ", " + m_ServerListResponse + ") : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestLANServerList(new AppId_t(440), m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestLANServerList(new AppId_t(440), m_ServerListResponse);
            print("SteamMatchmakingServers.RequestLANServerList(" + new AppId_t(440) + ", " + m_ServerListResponse + ") : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestFriendsServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestFriendsServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestFriendsServerList(" + new AppId_t(440) + ", " + null + ", " + 0 + ", " + m_ServerListResponse + ") : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestFavoritesServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestFavoritesServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestFavoritesServerList(" + new AppId_t(440) + ", " + null + ", " + 0 + ", " + m_ServerListResponse + ") : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestHistoryServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestHistoryServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestHistoryServerList(" + new AppId_t(440) + ", " + null + ", " + 0 + ", " + m_ServerListResponse + ") : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestSpectatorServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestSpectatorServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestSpectatorServerList(" + new AppId_t(440) + ", " + null + ", " + 0 + ", " + m_ServerListResponse + ") : " + m_ServerListRequest);
        }

        if (GUILayout.Button("ReleaseRequest(m_ServerListRequest)"))
        {
            ReleaseRequest();             // We do this instead, because we want to make sure that m_ServerListRequested gets set to Invalid after releasing.
        }

        if (GUILayout.Button("GetServerDetails(m_ServerListRequest, 0)"))
        {
            gameserveritem_t ret = SteamMatchmakingServers.GetServerDetails(m_ServerListRequest, 0);
            print("SteamMatchmakingServers.GetServerDetails(" + m_ServerListRequest + ", " + 0 + ") : " + ret);
            print(GameServerItemFormattedString(ret));
        }

        if (GUILayout.Button("CancelQuery(m_ServerListRequest)"))
        {
            SteamMatchmakingServers.CancelQuery(m_ServerListRequest);
            print("SteamMatchmakingServers.CancelQuery(" + m_ServerListRequest + ")");
        }

        if (GUILayout.Button("RefreshQuery(m_ServerListRequest)"))
        {
            SteamMatchmakingServers.RefreshQuery(m_ServerListRequest);
            print("SteamMatchmakingServers.RefreshQuery(" + m_ServerListRequest + ")");
        }

        GUILayout.Label("IsRefreshing(m_ServerListRequest) : " + SteamMatchmakingServers.IsRefreshing(m_ServerListRequest));

        GUILayout.Label("GetServerCount(m_ServerListRequest) : " + SteamMatchmakingServers.GetServerCount(m_ServerListRequest));

        if (GUILayout.Button("RefreshServer(m_ServerListRequest, 0)"))
        {
            SteamMatchmakingServers.RefreshServer(m_ServerListRequest, 0);
            print("SteamMatchmakingServers.RefreshServer(" + m_ServerListRequest + ", " + 0 + ")");
        }

        if (GUILayout.Button("PingServer(TestConstants.k_IpAddress208_78_165_233, TestConstants.k_Port27015, m_PingResponse)"))
        {
            CancelServerQuery();
            m_ServerQuery = SteamMatchmakingServers.PingServer(TestConstants.k_IpAddress208_78_165_233, TestConstants.k_Port27015, m_PingResponse);
            print("SteamMatchmakingServers.PingServer(" + TestConstants.k_IpAddress208_78_165_233 + ", " + TestConstants.k_Port27015 + ", " + m_PingResponse + ") : " + m_ServerQuery);
        }

        if (GUILayout.Button("PlayerDetails(TestConstants.k_IpAddress208_78_165_233, TestConstants.k_Port27015, m_PlayersResponse)"))
        {
            CancelServerQuery();
            m_ServerQuery = SteamMatchmakingServers.PlayerDetails(TestConstants.k_IpAddress208_78_165_233, TestConstants.k_Port27015, m_PlayersResponse);
            print("SteamMatchmakingServers.PlayerDetails(" + TestConstants.k_IpAddress208_78_165_233 + ", " + TestConstants.k_Port27015 + ", " + m_PlayersResponse + ") : " + m_ServerQuery);
        }

        if (GUILayout.Button("ServerRules(TestConstants.k_IpAddress208_78_165_233, TestConstants.k_Port27015, m_RulesResponse)"))
        {
            CancelServerQuery();
            m_ServerQuery = SteamMatchmakingServers.ServerRules(TestConstants.k_IpAddress208_78_165_233, TestConstants.k_Port27015, m_RulesResponse);
            print("SteamMatchmakingServers.ServerRules(" + TestConstants.k_IpAddress208_78_165_233 + ", " + TestConstants.k_Port27015 + ", " + m_RulesResponse + ") : " + m_ServerQuery);
        }

        if (GUILayout.Button("CancelServerQuery(m_ServerQuery)"))
        {
            CancelServerQuery();             // We do this instead, because we want to make sure that m_ServerListRequested gets set to Invalid after releasing, and we call it from a number of places.
        }

        GUILayout.EndScrollView();
        GUILayout.EndVertical();
    }
Example #11
0
 private void OnRefreshComplete(HServerListRequest request, EMatchMakingServerResponse response)
 {
     CancelRequest();
 }
Example #12
0
 private void OnFailedToRespond(HServerListRequest request, int server)
 {
 }
Example #13
0
 internal static void ServerFailedToRespond(HServerListRequest hRequest, int iServer)
 {
 }
Example #14
0
 void RefreshServers()
 {
     servers.Clear();
     request = gameClient.RefreshList(EServerList.LAN);
 }
        internal bool IsRefreshing(HServerListRequest hRequest)
        {
            var returnValue = _IsRefreshing(Self, hRequest);

            return(returnValue);
        }
Example #16
0
 public RequestSteamServer(HServerListRequest hRequest, int iServer)
 {
     this._hRequest = hRequest;
     this._iServer  = iServer;
 }
        internal int GetServerCount(HServerListRequest hRequest)
        {
            var returnValue = _GetServerCount(Self, hRequest);

            return(returnValue);
        }
	private void ReleaseRequest() {
		if (m_ServerListRequest != HServerListRequest.Invalid) {
			SteamMatchmakingServers.ReleaseRequest(m_ServerListRequest);
			m_ServerListRequest = HServerListRequest.Invalid;
			print("SteamMatchmakingServers.ReleaseRequest(m_ServerListRequest)");
		}
	}
 internal void ReleaseRequest(HServerListRequest hServerListRequest)
 {
     _ReleaseRequest(Self, hServerListRequest);
 }
	private void OnServerFailedToRespond(HServerListRequest hRequest, int iServer) {
		Debug.Log("OnServerFailedToRespond: " + hRequest + " - " + iServer);
	}
Example #21
0
		public static extern bool ISteamMatchmakingServers_IsRefreshing(HServerListRequest hRequest);
	private void OnRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response) {
		Debug.Log("OnRefreshComplete: " + hRequest + " - " + response);
	}
Example #23
0
 private void OnServerFailedToRespond(HServerListRequest hRequest, int iServer)
 {
     Debug.Log("OnServerFailedToRespond: " + hRequest + " - " + iServer);
     ServerRefreshFailed.Invoke();
 }
	public void RenderOnGUI() {
		GUILayout.BeginArea(new Rect(Screen.width - 120, 0, 120, Screen.height));
		GUILayout.Label("Variables:");
		GUILayout.Label("m_ServerListRequest: " + m_ServerListRequest);
		GUILayout.Label("m_ServerQuery: " + m_ServerQuery);
		GUILayout.EndArea();

		if (GUILayout.Button("RequestInternetServerList(new AppId_t(440), filters, (uint)filters.Length, m_ServerListResponse)")) {
			ReleaseRequest();

			MatchMakingKeyValuePair_t[] filters = new MatchMakingKeyValuePair_t[1];
			filters[0].m_szKey = "map";
			filters[0].m_szValue = "cp_granary";

			m_ServerListRequest = SteamMatchmakingServers.RequestInternetServerList(new AppId_t(440), filters, (uint)filters.Length, m_ServerListResponse);
			print("SteamMatchmakingServers.RequestInternetServerList(" + new AppId_t(440) + ", filters, (uint)filters.Length, m_ServerListResponse) : " + m_ServerListRequest);
		}

		if (GUILayout.Button("RequestLANServerList(new AppId_t(440), m_ServerListResponse)")) {
			ReleaseRequest();
			m_ServerListRequest = SteamMatchmakingServers.RequestLANServerList(new AppId_t(440), m_ServerListResponse); ;
			print("SteamMatchmakingServers.RequestLANServerList(" + new AppId_t(440) + ", m_ServerListResponse) : " + m_ServerListRequest);
		}

		if (GUILayout.Button("RequestFriendsServerList(new AppId_t(440), null, 0, m_ServerListResponse)")) {
			ReleaseRequest();
			m_ServerListRequest = SteamMatchmakingServers.RequestFriendsServerList(new AppId_t(440), null, 0, m_ServerListResponse);
			print("SteamMatchmakingServers.RequestFriendsServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
		}

		if (GUILayout.Button("RequestFavoritesServerList(new AppId_t(440), null, 0, m_ServerListResponse)")) {
			ReleaseRequest();
			m_ServerListRequest = SteamMatchmakingServers.RequestFavoritesServerList(new AppId_t(440), null, 0, m_ServerListResponse);
			print("SteamMatchmakingServers.RequestFavoritesServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
		}

		if (GUILayout.Button("RequestHistoryServerList(new AppId_t(440), null, 0, m_ServerListResponse)")) {
			ReleaseRequest();
			m_ServerListRequest = SteamMatchmakingServers.RequestHistoryServerList(new AppId_t(440), null, 0, m_ServerListResponse);
			print("SteamMatchmakingServers.RequestHistoryServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
		}

		if (GUILayout.Button("RequestSpectatorServerList(new AppId_t(440), null, 0, m_ServerListResponse)")) {
			ReleaseRequest();
			m_ServerListRequest = SteamMatchmakingServers.RequestSpectatorServerList(new AppId_t(440), null, 0, m_ServerListResponse);
			print("SteamMatchmakingServers.RequestSpectatorServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
		}

		if (GUILayout.Button("ReleaseRequest(m_ServerListRequest)")) {
			ReleaseRequest(); // We do this instead, because we want to make sure that m_ServerListRequested gets set to Invalid after releasing.
		}

		if (GUILayout.Button("GetServerDetails(m_ServerListRequest, 0)")) {
			gameserveritem_t gsi = SteamMatchmakingServers.GetServerDetails(m_ServerListRequest, 0);
			print("SteamMatchmakingServers.GetServerDetails(" + m_ServerListRequest + ", 0) : " + gsi + "\n" + GameServerItemFormattedString(gsi));
		}

		if (GUILayout.Button("CancelQuery(m_ServerListRequest)")) {
			SteamMatchmakingServers.CancelQuery(m_ServerListRequest);
			print("SteamMatchmakingServers.CancelQuery(" + m_ServerListRequest + ")");
		}

		if (GUILayout.Button("RefreshQuery(m_ServerListRequest)")) {
			SteamMatchmakingServers.RefreshQuery(m_ServerListRequest);
			print("SteamMatchmakingServers.RefreshQuery(" + m_ServerListRequest + ")");
		}

		GUILayout.Label("SteamMatchmakingServers.IsRefreshing(m_ServerListRequest) : " + SteamMatchmakingServers.IsRefreshing(m_ServerListRequest));

		GUILayout.Label("SteamMatchmakingServers.GetServerCount(m_ServerListRequest) : " + SteamMatchmakingServers.GetServerCount(m_ServerListRequest));


		if (GUILayout.Button("RefreshServer(m_ServerListRequest, 0)")) {
			SteamMatchmakingServers.RefreshServer(m_ServerListRequest, 0);
			print("SteamMatchmakingServers.RefreshServer(" + m_ServerListRequest + ", 0)");
		}

		// 3494815209 = 208.78.165.233 = Valve Payload Server (Virginia srcds150 #1)
		if (GUILayout.Button("PingServer(3494815209, 27015, m_PingResponse)")) {
			CancelServerQuery();
			m_ServerQuery = SteamMatchmakingServers.PingServer(3494815209, 27015, m_PingResponse);
			print("SteamMatchmakingServers.PingServer(3494815209, 27015, m_PingResponse) : " + m_ServerQuery);
		}

		if (GUILayout.Button("PlayerDetails(3494815209, 27015, m_PlayersResponse)")) {
			CancelServerQuery();
			m_ServerQuery = SteamMatchmakingServers.PlayerDetails(3494815209, 27015, m_PlayersResponse);
			print("SteamMatchmakingServers.PlayerDetails(3494815209, 27015, m_PlayersResponse) : " + m_ServerQuery);
		}

		if (GUILayout.Button("ServerRules(3494815209, 27015, m_RulesResponse)")) {
			CancelServerQuery();
			m_ServerQuery = SteamMatchmakingServers.ServerRules(3494815209, 27015, m_RulesResponse);
			print("SteamMatchmakingServers.ServerRules(3494815209, 27015, m_RulesResponse) : " + m_ServerQuery);
		}

		if (GUILayout.Button("CancelServerQuery(m_ServerQuery)")) {
			CancelServerQuery(); // We do this instead, because we want to make sure that m_ServerListRequested gets set to Invalid after releasing, and we call it from a number of places.
		}
	}
		/// <summary>
		/// <para> Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress.</para>
		/// <para> RefreshComplete callback is not posted when request is released.</para>
		/// </summary>
		public static void ReleaseRequest(HServerListRequest hServerListRequest) {
			InteropHelp.TestIfAvailableClient();
			NativeMethods.ISteamMatchmakingServers_ReleaseRequest(hServerListRequest);
		}
Example #26
0
 private void OnRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response)
 {
     Debug.Log("OnRefreshComplete: " + hRequest + " - " + response);
 }
		/// <summary>
		/// <para> How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1</para>
		/// </summary>
		public static int GetServerCount(HServerListRequest hRequest) {
			InteropHelp.TestIfAvailableClient();
			return NativeMethods.ISteamMatchmakingServers_GetServerCount(hRequest);
		}
Example #28
0
    public void RenderOnGUI()
    {
        GUILayout.BeginArea(new Rect(Screen.width - 120, 0, 120, Screen.height));
        GUILayout.Label("Variables:");
        GUILayout.Label("m_ServerListRequest: " + m_ServerListRequest);
        GUILayout.Label("m_ServerQuery: " + m_ServerQuery);
        GUILayout.EndArea();

        if (GUILayout.Button("RequestInternetServerList(new AppId_t(440), filters, (uint)filters.Length, m_ServerListResponse)"))
        {
            ReleaseRequest();

            MatchMakingKeyValuePair_t[] filters = new MatchMakingKeyValuePair_t[1];
            filters[0].m_szKey   = "map";
            filters[0].m_szValue = "cp_granary";

            m_ServerListRequest = SteamMatchmakingServers.RequestInternetServerList(new AppId_t(440), filters, (uint)filters.Length, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestInternetServerList(" + new AppId_t(440) + ", filters, (uint)filters.Length, m_ServerListResponse) : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestLANServerList(new AppId_t(440), m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestLANServerList(new AppId_t(440), m_ServerListResponse);;
            print("SteamMatchmakingServers.RequestLANServerList(" + new AppId_t(440) + ", m_ServerListResponse) : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestFriendsServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestFriendsServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestFriendsServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestFavoritesServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestFavoritesServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestFavoritesServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestHistoryServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestHistoryServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestHistoryServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
        }

        if (GUILayout.Button("RequestSpectatorServerList(new AppId_t(440), null, 0, m_ServerListResponse)"))
        {
            ReleaseRequest();
            m_ServerListRequest = SteamMatchmakingServers.RequestSpectatorServerList(new AppId_t(440), null, 0, m_ServerListResponse);
            print("SteamMatchmakingServers.RequestSpectatorServerList(" + new AppId_t(440) + ", null, 0, m_ServerListResponse) : " + m_ServerListRequest);
        }

        if (GUILayout.Button("ReleaseRequest(m_ServerListRequest)"))
        {
            ReleaseRequest();             // We do this instead, because we want to make sure that m_ServerListRequested gets set to Invalid after releasing.
        }

        if (GUILayout.Button("GetServerDetails(m_ServerListRequest, 0)"))
        {
            gameserveritem_t gsi = SteamMatchmakingServers.GetServerDetails(m_ServerListRequest, 0);
            print("SteamMatchmakingServers.GetServerDetails(" + m_ServerListRequest + ", 0) : " + gsi + "\n" + GameServerItemFormattedString(gsi));
        }

        if (GUILayout.Button("CancelQuery(m_ServerListRequest)"))
        {
            SteamMatchmakingServers.CancelQuery(m_ServerListRequest);
            print("SteamMatchmakingServers.CancelQuery(" + m_ServerListRequest + ")");
        }

        if (GUILayout.Button("RefreshQuery(m_ServerListRequest)"))
        {
            SteamMatchmakingServers.RefreshQuery(m_ServerListRequest);
            print("SteamMatchmakingServers.RefreshQuery(" + m_ServerListRequest + ")");
        }

        GUILayout.Label("SteamMatchmakingServers.IsRefreshing(m_ServerListRequest) : " + SteamMatchmakingServers.IsRefreshing(m_ServerListRequest));

        GUILayout.Label("SteamMatchmakingServers.GetServerCount(m_ServerListRequest) : " + SteamMatchmakingServers.GetServerCount(m_ServerListRequest));


        if (GUILayout.Button("RefreshServer(m_ServerListRequest, 0)"))
        {
            SteamMatchmakingServers.RefreshServer(m_ServerListRequest, 0);
            print("SteamMatchmakingServers.RefreshServer(" + m_ServerListRequest + ", 0)");
        }

        // 3494815209 = 208.78.165.233 = Valve Payload Server (Virginia srcds150 #1)
        if (GUILayout.Button("PingServer(3494815209, 27015, m_PingResponse)"))
        {
            CancelServerQuery();
            m_ServerQuery = SteamMatchmakingServers.PingServer(3494815209, 27015, m_PingResponse);
            print("SteamMatchmakingServers.PingServer(3494815209, 27015, m_PingResponse) : " + m_ServerQuery);
        }

        if (GUILayout.Button("PlayerDetails(3494815209, 27015, m_PlayersResponse)"))
        {
            CancelServerQuery();
            m_ServerQuery = SteamMatchmakingServers.PlayerDetails(3494815209, 27015, m_PlayersResponse);
            print("SteamMatchmakingServers.PlayerDetails(3494815209, 27015, m_PlayersResponse) : " + m_ServerQuery);
        }

        if (GUILayout.Button("ServerRules(3494815209, 27015, m_RulesResponse)"))
        {
            CancelServerQuery();
            m_ServerQuery = SteamMatchmakingServers.ServerRules(3494815209, 27015, m_RulesResponse);
            print("SteamMatchmakingServers.ServerRules(3494815209, 27015, m_RulesResponse) : " + m_ServerQuery);
        }

        if (GUILayout.Button("CancelServerQuery(m_ServerQuery)"))
        {
            CancelServerQuery();             // We do this instead, because we want to make sure that m_ServerListRequested gets set to Invalid after releasing, and we call it from a number of places.
        }
    }
 private void InternalOnRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response)
 {
     this.m_RefreshComplete(hRequest, response);
 }
        public void CancelRequest()
        {
            if (!SteamService.IsInitialized) return;

            if (_handle != HServerListRequest.Invalid)
            {
                SteamMatchmakingServers.ReleaseRequest(_handle);
                _handle = HServerListRequest.Invalid;
            }
        }
 private static extern bool _IsRefreshing(IntPtr self, HServerListRequest hRequest);
        public void Request(RequestType type, ResponseDelegate onResponse)
        {
            if (!SteamService.IsInitialized) return;

            if (_responder == null)
            {
                _responder = new ISteamMatchmakingServerListResponse(OnResponded, OnFailedToRespond, OnRefreshComplete);
            }

            CancelRequest();

            _onResponse = onResponse;

            var filters = _filters.ToArray();
            uint filterCount = (uint)_filters.Count;

            var appid = SteamService.SteamAppid;

            switch (type)
            {
                case RequestType.Favourites:
                    _handle = SteamMatchmakingServers.RequestFavoritesServerList(appid, filters, filterCount, _responder);
                    break;
                case RequestType.Friends:
                    _handle = SteamMatchmakingServers.RequestFriendsServerList(appid, filters, filterCount, _responder);
                    break;
                case RequestType.History:
                    _handle = SteamMatchmakingServers.RequestHistoryServerList(appid, filters, filterCount, _responder);
                    break;
                case RequestType.Internet:
                    _handle = SteamMatchmakingServers.RequestInternetServerList(appid, filters, filterCount, _responder);
                    break;
                case RequestType.LAN:
                    _handle = SteamMatchmakingServers.RequestLANServerList(appid, _responder);
                    break;
            }
        }
 private static extern int _GetServerCount(IntPtr self, HServerListRequest hRequest);
 private void OnFailedToRespond(HServerListRequest request, int server)
 {
 }
 private static extern void _RefreshServer(IntPtr self, HServerListRequest hRequest, int iServer);
 private void OnRefreshComplete(HServerListRequest request, EMatchMakingServerResponse response)
 {
     CancelRequest();
 }
 private static extern void _ReleaseRequest(IntPtr self, HServerListRequest hServerListRequest);
        private void OnResponded(HServerListRequest request, int server)
        {
            var serverDetails = SteamMatchmakingServers.GetServerDetails(request, server);

            var response = new Response
            {
                id = server,
                name = serverDetails.GetServerName(),
                players = serverDetails.m_nPlayers,
                maxplayers = serverDetails.m_nMaxPlayers,
                map = serverDetails.GetMap(),
                ping = serverDetails.m_nPing,
                ip = serverDetails.m_NetAdr.GetIP(),
                address = serverDetails.m_NetAdr.GetConnectionAddressString(),
                port = serverDetails.m_NetAdr.GetConnectionPort(),
                queryPort = serverDetails.m_NetAdr.GetQueryPort(),
                gamedir = serverDetails.GetGameDir(),
                description = serverDetails.GetGameDescription(),
                steamid = serverDetails.m_steamID.m_SteamID,
            };

            _onResponse(response);
        }
Example #39
0
		public static extern void ISteamMatchmakingServers_ReleaseRequest(HServerListRequest hServerListRequest);
Example #40
0
        void SteamMatchmakingServerListResponse_OnRefreshComplete(HServerListRequest request, EMatchMakingServerResponse response, EServerList type)
        {
            Debug.Log("Test2");
            _ServerListRequest = request;
            Debug.LogFormat("Request: {0} Response: {1}", request, response);

            if (MatchmakingListRefresh != null)
            {
                gameserveritem_t[] servers = new gameserveritem_t[0];
                if (response != EMatchMakingServerResponse.eServerResponded)
                     servers = new gameserveritem_t[SteamMatchmakingServers.GetServerCount(request)];

                MatchmakingListRefresh(request, response, servers, type);
            }
        }
Example #41
0
		public static extern void ISteamMatchmakingServers_RefreshQuery(HServerListRequest hRequest);
Example #42
0
 void SteamMatchmakingServerListResponse_ServerFailedToResponded(HServerListRequest request, int serverId)
 {
     try
     {
         gameserveritem_t server = SteamMatchmakingServers.GetServerDetails(request, serverId);
         Debug.LogFormat("Found Server. Server Name: {0} Server Passworded: {1} Server Ping: {2}", server.GetServerName(), server.m_bPassword, server.m_nPing);
     }
     catch(System.Exception ex)
     {
         Debug.LogException(ex);
     }
 }
Example #43
0
		public static extern int ISteamMatchmakingServers_GetServerCount(HServerListRequest hRequest);
Example #44
0
 void SteamMatchmakingServerListResponse_ServerResponded(HServerListRequest request, int serverId)
 {
     gameserveritem_t server = SteamMatchmakingServers.GetServerDetails(request, serverId);
     //ConnectTo(server.m_steamID);
     Debug.LogFormat("Found Server. Server Name: {0} Server Passworded: {1} Server Ping: {2}", server.GetServerName(), server.m_bPassword, server.m_nPing);
     if (MatchmakingListFoundServer != null)
         MatchmakingListFoundServer(request, server);
 }
Example #45
0
        private void OnRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response)
        {
            Debug.Log("OnRefreshComplete: " + hRequest + " - " + response);
            List <HeathenGameServerBrowserEntery> serverResults = new List <HeathenGameServerBrowserEntery>();
            var count = SteamMatchmakingServers.GetServerCount(hRequest);

            for (int i = 0; i < count; i++)
            {
                var serverItem = SteamMatchmakingServers.GetServerDetails(hRequest, i);

                if (serverItem.m_steamID.m_SteamID != 0 && serverItem.m_nAppID == steamSettings.applicationId.m_AppId)
                {
                    var entry = new HeathenGameServerBrowserEntery();
                    entry.FromGameServerItem(serverItem);
                    serverResults.Add(entry);
                }
            }
            ReleaseRequest();
            Debug.Log(serverResults.Count.ToString() + " Servers Found");

            switch (searchType)
            {
            case SearchType.Internet:
                InternetServers.Clear();
                InternetServers = serverResults;
                InternetServerListUpdated.Invoke();
                break;

            case SearchType.Favorites:
                FavoritesServers.Clear();
                FavoritesServers = serverResults;
                FavoriteServerListUpdated.Invoke();
                break;

            case SearchType.Friends:
                FriendsServers.Clear();
                FriendsServers = serverResults;
                FriendsServerListUpdated.Invoke();
                break;

            case SearchType.LAN:
                LANServers.Clear();
                LANServers = serverResults;
                LANServerListUpdated.Invoke();
                break;

            case SearchType.Spectator:
                SpectatorServers.Clear();
                SpectatorServers = serverResults;
                SpectatorServerListUpdated.Invoke();
                break;

            case SearchType.History:
                HistoryServers.Clear();
                HistoryServers = serverResults;
                HistoryServerListUpdated.Invoke();
                break;

            default:
                break;
            }

            ServerRefreshCompleted.Invoke();
        }
Example #46
0
		private void InternalOnServerFailedToRespond(IntPtr thisptr, HServerListRequest hRequest, int iServer) {
			m_ServerFailedToRespond(hRequest, iServer);
		}
Example #47
0
 private void OnServerResponded(HServerListRequest hRequest, int iServer)
 {
     Debug.Log("OnServerResponded: " + hRequest + " - " + iServer);
 }
 private static extern IntPtr _GetServerDetails(IntPtr self, HServerListRequest hRequest, int iServer);
Example #49
0
 private void onServerListFailedToRespond(HServerListRequest request, int index)
 {
 }
        internal gameserveritem_t GetServerDetails(HServerListRequest hRequest, int iServer)
        {
            var returnValue = _GetServerDetails(Self, hRequest, iServer);

            return(returnValue.ToType <gameserveritem_t>());
        }
		/// <summary>
		/// <para> the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these:</para>
		/// <para>		"map"</para>
		/// <para>			- Server passes the filter if the server is playing the specified map.</para>
		/// <para>		"gamedataand"</para>
		/// <para>			- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the</para>
		/// <para>			specified strings.  The value field is a comma-delimited list of strings to match.</para>
		/// <para>		"gamedataor"</para>
		/// <para>			- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the</para>
		/// <para>			specified strings.  The value field is a comma-delimited list of strings to match.</para>
		/// <para>		"gamedatanor"</para>
		/// <para>			- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any</para>
		/// <para>			of the specified strings.  The value field is a comma-delimited list of strings to check.</para>
		/// <para>		"gametagsand"</para>
		/// <para>			- Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all</para>
		/// <para>			of the specified strings.  The value field is a comma-delimited list of strings to check.</para>
		/// <para>		"gametagsnor"</para>
		/// <para>			- Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any</para>
		/// <para>			of the specified strings.  The value field is a comma-delimited list of strings to check.</para>
		/// <para>		"and" (x1 &amp;&amp; x2 &amp;&amp; ... &amp;&amp; xn)</para>
		/// <para>		"or" (x1 || x2 || ... || xn)</para>
		/// <para>		"nand" !(x1 &amp;&amp; x2 &amp;&amp; ... &amp;&amp; xn)</para>
		/// <para>		"nor" !(x1 || x2 || ... || xn)</para>
		/// <para>			- Performs Boolean operation on the following filters.  The operand to this filter specifies</para>
		/// <para>			the "size" of the Boolean inputs to the operation, in Key/value pairs.  (The keyvalue</para>
		/// <para>			pairs must immediately follow, i.e. this is a prefix logical operator notation.)</para>
		/// <para>			In the simplest case where Boolean expressions are not nested, this is simply</para>
		/// <para>			the number of operands.</para>
		/// <para>			For example, to match servers on a particular map or with a particular tag, would would</para>
		/// <para>			use these filters.</para>
		/// <para>				( server.map == "cp_dustbowl" || server.gametags.contains("payload") )</para>
		/// <para>				"or", "2"</para>
		/// <para>				"map", "cp_dustbowl"</para>
		/// <para>				"gametagsand", "payload"</para>
		/// <para>			If logical inputs are nested, then the operand specifies the size of the entire</para>
		/// <para>			"length" of its operands, not the number of immediate children.</para>
		/// <para>				( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") &amp;&amp; !server.gametags.contains("payloadrace") ) )</para>
		/// <para>				"or", "4"</para>
		/// <para>				"map", "cp_dustbowl"</para>
		/// <para>				"and", "2"</para>
		/// <para>				"gametagsand", "payload"</para>
		/// <para>				"gametagsnor", "payloadrace"</para>
		/// <para>			Unary NOT can be achieved using either "nand" or "nor" with a single operand.</para>
		/// <para>		"addr"</para>
		/// <para>			- Server passes the filter if the server's query address matches the specified IP or IP:port.</para>
		/// <para>		"gameaddr"</para>
		/// <para>			- Server passes the filter if the server's game address matches the specified IP or IP:port.</para>
		/// <para>		The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t</para>
		/// <para>		"dedicated"</para>
		/// <para>			- Server passes the filter if it passed true to SetDedicatedServer.</para>
		/// <para>		"secure"</para>
		/// <para>			- Server passes the filter if the server is VAC-enabled.</para>
		/// <para>		"notfull"</para>
		/// <para>			- Server passes the filter if the player count is less than the reported max player count.</para>
		/// <para>		"hasplayers"</para>
		/// <para>			- Server passes the filter if the player count is greater than zero.</para>
		/// <para>		"noplayers"</para>
		/// <para>			- Server passes the filter if it doesn't have any players.</para>
		/// <para>		"linux"</para>
		/// <para>			- Server passes the filter if it's a linux server</para>
		/// <para> Get details on a given server in the list, you can get the valid range of index</para>
		/// <para> values by calling GetServerCount().  You will also receive index values in</para>
		/// <para> ISteamMatchmakingServerListResponse::ServerResponded() callbacks</para>
		/// </summary>
		public static gameserveritem_t GetServerDetails(HServerListRequest hRequest, int iServer) {
			InteropHelp.TestIfAvailableClient();
			return (gameserveritem_t)Marshal.PtrToStructure(NativeMethods.ISteamMatchmakingServers_GetServerDetails(hRequest, iServer), typeof(gameserveritem_t));
		}
 private static extern void _CancelQuery(IntPtr self, HServerListRequest hRequest);
		/// <summary>
		/// <para> Returns true if the list is currently refreshing its server list</para>
		/// </summary>
		public static bool IsRefreshing(HServerListRequest hRequest) {
			InteropHelp.TestIfAvailableClient();
			return NativeMethods.ISteamMatchmakingServers_IsRefreshing(hRequest);
		}
 internal void CancelQuery(HServerListRequest hRequest)
 {
     _CancelQuery(Self, hRequest);
 }
		/// <summary>
		/// <para> Refresh a single server inside of a query (rather than all the servers )</para>
		/// </summary>
		public static void RefreshServer(HServerListRequest hRequest, int iServer) {
			InteropHelp.TestIfAvailableClient();
			NativeMethods.ISteamMatchmakingServers_RefreshServer(hRequest, iServer);
		}
 private static extern void _RefreshQuery(IntPtr self, HServerListRequest hRequest);
Example #57
0
 private void OnServerFailedToRespond(HServerListRequest hrequest, int iserver)
 {
 }
 internal void RefreshQuery(HServerListRequest hRequest)
 {
     _RefreshQuery(Self, hRequest);
 }
 private void InternalOnServerResponded(HServerListRequest hRequest, int iServer)
 {
     this.m_ServerResponded(hRequest, iServer);
 }
Example #60
0
 private void GameClient_MatchmakingListFoundServer(HServerListRequest request, gameserveritem_t server)
 {
     servers.Add(server);
 }