// 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++; } }
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); }
// 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); } } }
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); }
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(); } }
public static extern void ISteamMatchmakingServers_RefreshServer(HServerListRequest hRequest, int iServer);
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(); }
private void OnRefreshComplete(HServerListRequest request, EMatchMakingServerResponse response) { CancelRequest(); }
private void OnFailedToRespond(HServerListRequest request, int server) { }
internal static void ServerFailedToRespond(HServerListRequest hRequest, int iServer) { }
void RefreshServers() { servers.Clear(); request = gameClient.RefreshList(EServerList.LAN); }
internal bool IsRefreshing(HServerListRequest hRequest) { var returnValue = _IsRefreshing(Self, hRequest); return(returnValue); }
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); }
public static extern bool ISteamMatchmakingServers_IsRefreshing(HServerListRequest hRequest);
private void OnRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response) { Debug.Log("OnRefreshComplete: " + hRequest + " - " + response); }
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); }
/// <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); }
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 static extern void _RefreshServer(IntPtr self, HServerListRequest hRequest, int iServer);
private static extern void _ReleaseRequest(IntPtr self, HServerListRequest hServerListRequest);
public static extern void ISteamMatchmakingServers_ReleaseRequest(HServerListRequest hServerListRequest);
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); } }
public static extern void ISteamMatchmakingServers_RefreshQuery(HServerListRequest hRequest);
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); } }
public static extern int ISteamMatchmakingServers_GetServerCount(HServerListRequest hRequest);
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); }
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(); }
private void InternalOnServerFailedToRespond(IntPtr thisptr, HServerListRequest hRequest, int iServer) { m_ServerFailedToRespond(hRequest, iServer); }
private void OnServerResponded(HServerListRequest hRequest, int iServer) { Debug.Log("OnServerResponded: " + hRequest + " - " + iServer); }
private static extern IntPtr _GetServerDetails(IntPtr self, HServerListRequest hRequest, int iServer);
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 && x2 && ... && xn)</para> /// <para> "or" (x1 || x2 || ... || xn)</para> /// <para> "nand" !(x1 && x2 && ... && 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") && !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);
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); }
private void GameClient_MatchmakingListFoundServer(HServerListRequest request, gameserveritem_t server) { servers.Add(server); }