private static bool JoinGameTest(Lobby lobby) { if (!lobby.IsValid) return false; if (lobby.GetLobbyType() == LobbyTypeEnum.FriendsOnly && !MySteam.API.Friends.HasFriend(lobby.GetOwner())) { MyGuiSandbox.Show(MyCommonTexts.OnlyFriendsCanJoinThisGame); return false; } if (!MyMultiplayerLobby.IsLobbyCorrectVersion(lobby)) { var formatString = MyTexts.GetString(MyCommonTexts.MultiplayerError_IncorrectVersion); var myVersion = MyBuildNumbers.ConvertBuildNumberFromIntToString(MyFinalBuildConstants.APP_VERSION); var serverVersion = MyBuildNumbers.ConvertBuildNumberFromIntToString(MyMultiplayerLobby.GetLobbyAppVersion(lobby)); MyGuiSandbox.Show(new StringBuilder(String.Format(formatString, myVersion, serverVersion))); return false; } if (MyFakes.ENABLE_MP_DATA_HASHES && !MyMultiplayerLobby.HasSameData(lobby)) { MyGuiSandbox.Show(MyCommonTexts.MultiplayerError_DifferentData); MySandboxGame.Log.WriteLine("Different game data when connecting to server. Local hash: " + MyDataIntegrityChecker.GetHashBase64() + ", server hash: " + MyMultiplayerLobby.GetDataHash(lobby)); return false; } return true; }
protected void Matchmaking_LobbyDataUpdate(bool success, Lobby lobby, ulong memberOrLobby) { if (!success) return; var newOwnerId = lobby.GetOwner(); var oldOwnerRow = m_playersTable.Find((row) => (row.GetCell(GameAdminColumn).Text.Length == GAME_OWNER_MARKER.Length)); var newOwnerRow = m_playersTable.Find((row) => ((ulong)row.UserData) == newOwnerId); Debug.Assert(oldOwnerRow != null); Debug.Assert(newOwnerRow != null); if (oldOwnerRow != null) oldOwnerRow.GetCell(GameAdminColumn).Text.Clear(); if (newOwnerRow != null) newOwnerRow.GetCell(GameAdminColumn).Text.Clear().Append(GAME_OWNER_MARKER); var lobbyType = lobby.GetLobbyType(); m_lobbyTypeCombo.SelectItemByKey((int)lobbyType, sendEvent: false); MySession.Static.Settings.OnlineMode = GetOnlineMode(lobbyType); UpdateButtonsEnabledState(); if (!Sync.IsServer) { m_maxPlayersSlider.ValueChanged = null; MySession.Static.Settings.MaxPlayers = (short)MyMultiplayer.Static.MemberLimit; m_maxPlayersSlider.Value = MySession.Static.MaxPlayers; m_maxPlayersSlider.ValueChanged = MaxPlayersSlider_Changed; } }