void OnLobbyUpdate(LobbyChatUpdate_t cb) { if ((EChatMemberStateChange)cb.m_rgfChatMemberStateChange != EChatMemberStateChange.k_EChatMemberStateChangeEntered && cb.m_ulSteamIDUserChanged == handler.Identity.NetworkId) { Destroy(this.gameObject); } }
public void LobbyChatUpdated(LobbyChatUpdate_t update) { try { EChatMemberStateChange change = (EChatMemberStateChange)update.m_rgfChatMemberStateChange; if (change == EChatMemberStateChange.k_EChatMemberStateChangeEntered) { MultiplayerChat.AddChat(string.Format("User {0} joined the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged)))); if (!connectedPlayers.Contains(update.m_ulSteamIDUserChanged)) { PlayerJoinedManagers(update.m_ulSteamIDUserChanged); connectedPlayers.Add(update.m_ulSteamIDUserChanged); } if (update.m_ulSteamIDUserChanged != SteamUser.GetSteamID().m_SteamID) { otherPlayers.Add(update.m_ulSteamIDUserChanged); } } else if (change == EChatMemberStateChange.k_EChatMemberStateChangeLeft || change == EChatMemberStateChange.k_EChatMemberStateChangeKicked || change == EChatMemberStateChange.k_EChatMemberStateChangeDisconnected) { MultiplayerChat.AddChat(string.Format("User {0} left the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged)))); PlayerLeftManagers(update.m_ulSteamIDUserChanged); connectedPlayers.Remove(update.m_ulSteamIDUserChanged); MultiplayerPlayerList.RemovePlayerLabel(update.m_ulSteamIDUserChanged); if (update.m_ulSteamIDUserChanged != SteamUser.GetSteamID().m_SteamID) { otherPlayers.Remove(update.m_ulSteamIDUserChanged); } } } catch (System.Exception e) { Debug.LogError(e); } }
void UpdateUsers(LobbyChatUpdate_t cb) { if ((EChatMemberStateChange)cb.m_rgfChatMemberStateChange == EChatMemberStateChange.k_EChatMemberStateChangeEntered) { if (lobby.GetUserFromID((CSteamID)cb.m_ulSteamIDUserChanged) == null) { Users.Add(new User((CSteamID)cb.m_ulSteamIDUserChanged)); if (OnUserEnter) { OnUserEnter.Raise((CSteamID)cb.m_ulSteamIDUserChanged); } } } else if ((EChatMemberStateChange)cb.m_rgfChatMemberStateChange == EChatMemberStateChange.k_EChatMemberStateChangeLeft || (EChatMemberStateChange)cb.m_rgfChatMemberStateChange == EChatMemberStateChange.k_EChatMemberStateChangeDisconnected) { for (int i = 0; i < Users.Count; i++) { if (Users[i].SteamID == (CSteamID)cb.m_ulSteamIDUserChanged) { Users.Remove(Users[i]); if (OnUserLeave) { OnUserLeave.Raise((CSteamID)cb.m_ulSteamIDUserChanged); } return; } } } }
public void OnChatUpdate(LobbyChatUpdate_t pCallback) { if (SteamMatches.s_OnChatUpdate != null) { int ChatMemberStateChange = 0; var state = pCallback.m_rgfChatMemberStateChange; if ((state & (uint)EChatMemberStateChange.k_EChatMemberStateChangeBanned) != 0) { ChatMemberStateChange = SteamMatches.ChatMember_Banned; } else if ((state & (uint)EChatMemberStateChange.k_EChatMemberStateChangeDisconnected) != 0) { ChatMemberStateChange = SteamMatches.ChatMember_Disconnected; } else if ((state & (uint)EChatMemberStateChange.k_EChatMemberStateChangeEntered) != 0) { ChatMemberStateChange = SteamMatches.ChatMember_Entered; } else if ((state & (uint)EChatMemberStateChange.k_EChatMemberStateChangeKicked) != 0) { ChatMemberStateChange = SteamMatches.ChatMember_Kicked; } else if ((state & (uint)EChatMemberStateChange.k_EChatMemberStateChangeLeft) != 0) { ChatMemberStateChange = SteamMatches.ChatMember_Left; } SteamMatches.s_OnChatUpdate.Invoke(ChatMemberStateChange, pCallback.m_ulSteamIDUserChanged); } }
private void OnLobbyChatUpdate(LobbyChatUpdate_t pCallback) { if (DebugTextOn) { Debug.Log("[" + LobbyChatUpdate_t.k_iCallback + " - LobbyChatUpdate] - " + pCallback.m_ulSteamIDLobby + " -- " + pCallback.m_ulSteamIDUserChanged + " -- " + pCallback.m_ulSteamIDMakingChange + " -- " + pCallback.m_rgfChatMemberStateChange); } }
/// <summary> /// Called when a player joins or leaves the lobby. /// </summary> /// <param name="pCallback"></param> private void OnLobbyUpdated(LobbyChatUpdate_t pCallback) { var state = (EChatMemberStateChange)pCallback.m_rgfChatMemberStateChange; if (NetLogFilter.logInfo) { Debug.Log($"Lobby updated by {pCallback.m_ulSteamIDUserChanged}. ({Time.time})"); } switch (state) { case EChatMemberStateChange.k_EChatMemberStateChangeEntered: OnPeerConnected(new CSteamID(pCallback.m_ulSteamIDUserChanged), new CSteamID(pCallback.m_ulSteamIDLobby)); break; case EChatMemberStateChange.k_EChatMemberStateChangeLeft: OnPeerDisconnected(new CSteamID(pCallback.m_ulSteamIDUserChanged), new CSteamID(pCallback.m_ulSteamIDLobby)); break; case EChatMemberStateChange.k_EChatMemberStateChangeDisconnected: OnPeerDisconnected(new CSteamID(pCallback.m_ulSteamIDUserChanged), new CSteamID(pCallback.m_ulSteamIDLobby)); break; case EChatMemberStateChange.k_EChatMemberStateChangeKicked: break; case EChatMemberStateChange.k_EChatMemberStateChangeBanned: break; } }
// NOTIFY PLAYERS OF LOBBY ACTIVITY private void OnLobbyChatUpdate(LobbyChatUpdate_t update) { chatBox.AddText("\n" + SteamFriends.GetFriendPersonaName((CSteamID)update.m_ulSteamIDUserChanged) + " made a change in the lobby. Change: " + update.m_rgfChatMemberStateChange); // Set global value global.player2 = (CSteamID)update.m_ulSteamIDMakingChange; }
public static void OnLobbyChatUpdate(LobbyChatUpdate_t pCallback) { switch ((uint)pCallback.m_rgfChatMemberStateChange) { case (uint)EChatMemberStateChange.k_EChatMemberStateChangeEntered: Logger.Debug($"{pCallback.m_ulSteamIDMakingChange} has joined the lobby"); SteamAPI.PlayerConnected(); break; case (uint)EChatMemberStateChange.k_EChatMemberStateChangeDisconnected: case (uint)EChatMemberStateChange.k_EChatMemberStateChangeLeft: Logger.Debug($"{pCallback.m_ulSteamIDMakingChange} has left the lobby"); SteamAPI.DisconnectPlayer(pCallback.m_ulSteamIDMakingChange); break; case (uint)EChatMemberStateChange.k_EChatMemberStateChangeBanned: Logger.Debug($"{pCallback.m_ulSteamIDMakingChange} banned {pCallback.m_ulSteamIDUserChanged} from the lobby"); SteamAPI.DisconnectPlayer(pCallback.m_ulSteamIDUserChanged); break; case (uint)EChatMemberStateChange.k_EChatMemberStateChangeKicked: Logger.Debug($"{pCallback.m_ulSteamIDMakingChange} kicked {pCallback.m_ulSteamIDUserChanged} from the lobby"); SteamAPI.DisconnectPlayer(pCallback.m_ulSteamIDUserChanged); break; } }
void OnLobbyChatUpdate(LobbyChatUpdate_t pCallback) { CSteamID changed = new CSteamID(pCallback.m_ulSteamIDUserChanged); if (pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeEntered && pCallback.m_ulSteamIDLobby == steamLobbyId.m_SteamID) { if (OnPlayerJoin != null) { OnPlayerJoin(changed); } } else if (pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeLeft && pCallback.m_ulSteamIDLobby == steamLobbyId.m_SteamID) { if (OnPlayerLeave != null) { OnPlayerLeave(changed); } // user left lobby if (UNETServerController.IsHostingServer()) { UNETServerController.RemoveConnection(changed); } SteamNetworking.CloseP2PSessionWithUser(changed); } }
public void LobbyChatUpdated(LobbyChatUpdate_t update) { try { EChatMemberStateChange change = (EChatMemberStateChange)update.m_rgfChatMemberStateChange; if (change == EChatMemberStateChange.k_EChatMemberStateChangeEntered) { MultiplayerChat.AddChat(string.Format("User {0} joined the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged)))); Log(string.Format("User {0} joined the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged)))); if (!connectedPlayers.Contains(update.m_ulSteamIDUserChanged)) { PlayerJoinedManagers(update.m_ulSteamIDUserChanged); connectedPlayers.Add(update.m_ulSteamIDUserChanged); } if (update.m_ulSteamIDUserChanged != SteamUser.GetSteamID().m_SteamID) { otherPlayers.Add(update.m_ulSteamIDUserChanged); } } else if (change == EChatMemberStateChange.k_EChatMemberStateChangeLeft || change == EChatMemberStateChange.k_EChatMemberStateChangeKicked || change == EChatMemberStateChange.k_EChatMemberStateChangeDisconnected) { MultiplayerChat.AddChat(string.Format("User {0} left the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged)))); Log(string.Format("User {0} left the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged)))); PlayerLeftManagers(update.m_ulSteamIDUserChanged); connectedPlayers.Remove(update.m_ulSteamIDUserChanged); MultiplayerPlayerList.RemovePlayerLabel(update.m_ulSteamIDUserChanged); if (update.m_ulSteamIDUserChanged != SteamUser.GetSteamID().m_SteamID) { otherPlayers.Remove(update.m_ulSteamIDUserChanged); } if (update.m_ulSteamIDUserChanged == NetworkGameManager.managerID) { patch_ProcessManager patchPM = ((patch_ProcessManager)Patches.patch_Rainworld.mainRW.processManager); //if ((patchPM.currentMainLoop is MultiplayerSleepAndDeathScreen) || (patchPM.currentMainLoop is SteamMultiplayerMenu) if (patchPM.musicPlayer != null) { patchPM.musicPlayer.FadeOutAllSongs(5f); patchPM.musicPlayer.MenuRequestsSong("RW_8 - Sundown", 1.4f, 2f); } if (patchPM.currentMainLoop is RainWorldGame) { (patchPM.currentMainLoop as RainWorldGame).ExitToMenu(); } else { patchPM.RequestMainProcessSwitch(ProcessManager.ProcessID.MainMenu); } if (monklandUI != null) { monklandUI.ClearSprites(); monklandUI = null; } this.OnGameExit(); } } } catch (System.Exception e) { Debug.LogError(e); } }
private void OnPlayerLeftLobby(LobbyChatUpdate_t callback) { var cSteamId = new CSteamID(callback.m_ulSteamIDUserChanged); if (cSteamId == SteamMatchmaking.GetLobbyOwner(LobbyId)) { SteamMatchmaking.LeaveLobby(LobbyId); } }
void UserLeftControl(LobbyChatUpdate_t cb) { if ((EChatMemberStateChange)cb.m_rgfChatMemberStateChange == EChatMemberStateChange.k_EChatMemberStateChangeLeft || (EChatMemberStateChange)cb.m_rgfChatMemberStateChange == EChatMemberStateChange.k_EChatMemberStateChangeDisconnected) { if (readyUsers.Contains((CSteamID)cb.m_ulSteamIDUserChanged)) { readyUsers.Remove((CSteamID)cb.m_ulSteamIDUserChanged); } } }
private void AddSpeaker(LobbyChatUpdate_t cb) { if ((EChatMemberStateChange)cb.m_rgfChatMemberStateChange == EChatMemberStateChange.k_EChatMemberStateChangeEntered) { GameObject speaker = Instantiate(SpeakerPrefab); TestNetworkIdentity speakerIdentity = speaker.GetComponent <TestNetworkIdentity>(); speakerIdentity.NetworkId = (ulong)cb.m_ulSteamIDUserChanged; speakerIdentity.IsLocalPlayer = false; speakers.Add(speaker); } }
public void OnLobbyUpdate(LobbyChatUpdate_t pCallback) { if (pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeDisconnected || pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeLeft) { if (database != null) { RemovePlayerFromGame(pCallback.m_ulSteamIDUserChanged); } } }
private unsafe static void OnLobbyMemberStatus(LobbyChatUpdate_t result) { if (lobby == null) { return; } lobby.OnUserStatusChange( User.GetUser(result.m_ulSteamIDUserChanged), (SteamLobbyUserStatusFlags)result.m_rgfChatMemberStateChange, User.GetUser(result.m_ulSteamIDMakingChange) ); }
private void OnLobbyChatUpdate(LobbyChatUpdate_t callback) { if (callback.m_rgfChatMemberStateChange == 2u && callback.m_ulSteamIDLobby == this.m_LobbyId.m_SteamID) { CSteamID csteamID = new CSteamID(callback.m_ulSteamIDUserChanged); if (P2PLogFilter.logInfo) { Debug.Log("[TransportLayerSteam] Peer has disconnected " + csteamID); } this.m_LeaveRequests.Push(csteamID); } }
void OnLobbyUpdate(LobbyChatUpdate_t cb) { if (!Handler) { return; } if ((EChatMemberStateChange)cb.m_rgfChatMemberStateChange != EChatMemberStateChange.k_EChatMemberStateChangeEntered && cb.m_ulSteamIDUserChanged == Handler.NetID) { Destroy(Handler.gameObject); } }
internal void OnLobbyStateUpdatedAPI(LobbyChatUpdate_t callback) { if (callback.SteamIDLobby != CurrentLobby) { return; } MemberStateChange change = (MemberStateChange)callback.GfChatMemberStateChange; ulong initiator = callback.SteamIDMakingChange; ulong affected = callback.SteamIDUserChanged; OnLobbyStateChanged?.Invoke(change, initiator, affected); }
void OnLobbyChatUpdate(LobbyChatUpdate_t pCallback) { if (pCallback.m_ulSteamIDLobby == LobbyID) { if (pCallback.m_ulSteamIDUserChanged == LobbyOwner.m_SteamID) { if (pCallback.m_rgfChatMemberStateChange != (uint)EChatMemberStateChange.k_EChatMemberStateChangeEntered) { Disconnect(); } } } }
private static void OnLobbyChatUpdate(LobbyChatUpdate_t result) { Console.WriteLine("Lobby chat update"); int lobbyMemberCount = SteamMatchmaking.GetNumLobbyMembers(new CSteamID(LobbyId)); PlayerList.Clear(); _playerNames.Clear(); for (int i = 0; i < lobbyMemberCount; i++) { PlayerList.Add(SteamMatchmaking.GetLobbyMemberByIndex(new CSteamID(LobbyId), i)); _playerNames.Add(SteamFriends.GetFriendPersonaName(PlayerList[i])); } }
void InitCoroutine(LobbyChatUpdate_t cb) { if (coroutineStart || !ControlUsersStatus()) { return; } Server.Init(); Client.LeaveCurrentLobby(); Client.SendPacketToInGameUsers(emptyArray, 0, 0, PacketType.LeaveLobby, EP2PSend.k_EP2PSendReliable); StartCoroutine(SpawnEnemiesAtStart()); coroutineStart = true; }
public void OnLobbyChatUpdate(LobbyChatUpdate_t pCallback) { if (C.LOG_INVITE) { Debug.Log("Premade lobby: OnLobbyChatUpdate"); } UpdateTeammatesPresence(); CheckLock(); /// If someone left if (pCallback.m_ulSteamIDLobby == teambuilderLobbyId.m_SteamID && (pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeLeft || pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeDisconnected)) { if (C.LOG_INVITE) { Debug.LogWarning(SteamFriends.GetFriendPersonaName(new CSteamID(pCallback.m_ulSteamIDUserChanged)) + " left lobby"); } /// Leave lobby if left only this player if (SteamMatchmaking.GetNumLobbyMembers(teambuilderLobbyId) <= 1) { LeaveTeambuilderLobby(); } /// Update 'premade' message var snm = SteamNetworkManager.Instance; if (snm.steamLobbyId != CSteamID.Nil) { SteamMatchmaking.SetLobbyMemberData(snm.steamLobbyId, "premade", GeneratePremadeMessage()); } /// If became new lobby owner - start pinging chat if (IsLobbyOwner() && _pingCoroutine == null) { _pingCoroutine = StartCoroutine(PingChat()); } } /// If user enters lobby else if (pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeEntered && pCallback.m_ulSteamIDLobby == teambuilderLobbyId.m_SteamID) { if (C.LOG_INVITE) { Debug.LogWarning(SteamFriends.GetFriendPersonaName(new CSteamID(pCallback.m_ulSteamIDUserChanged)) + " joined lobby"); } } }
internal void OnLobbyStateUpdatedAPI(LobbyChatUpdate_t callback, bool error) { if (error || callback.SteamIDLobby != CurrentLobby) { return; } MemberStateChange change = (MemberStateChange)callback.GfChatMemberStateChange; ulong initiator = callback.SteamIDMakingChange; ulong affected = callback.SteamIDUserChanged; if (OnLobbyStateChanged != null) { OnLobbyStateChanged(change, initiator, affected); } }
// Token: 0x06002ED9 RID: 11993 RVA: 0x00132178 File Offset: 0x00130578 private static void onLobbyChatUpdate(LobbyChatUpdate_t callback) { Terminal.print(string.Concat(new object[] { "Lobby chat update: ", callback.m_ulSteamIDLobby, " ", callback.m_ulSteamIDMakingChange, " ", callback.m_ulSteamIDUserChanged, " ", callback.m_rgfChatMemberStateChange }), null, Provider.STEAM_IC, Provider.STEAM_DC, true); Lobbies.triggerLobbiesRefreshed(); }
void OnLobbyChatUpdate(LobbyChatUpdate_t pCallback) { if (pCallback.m_rgfChatMemberStateChange == (uint)EChatMemberStateChange.k_EChatMemberStateChangeLeft && pCallback.m_ulSteamIDLobby == steamLobbyId.m_SteamID) { Debug.Log("A client has disconnected from the UNET server"); // user left lobby var userId = new CSteamID(pCallback.m_ulSteamIDUserChanged); if (UNETServerController.IsHostingServer()) { UNETServerController.RemoveConnection(userId); } SteamNetworking.CloseP2PSessionWithUser(userId); } }
void OnLobbyChatUpdate(LobbyChatUpdate_t upd) { CSteamID changed = new CSteamID(upd.m_ulSteamIDUserChanged); if ((EChatMemberStateChange)upd.m_rgfChatMemberStateChange == EChatMemberStateChange.k_EChatMemberStateChangeEntered) { others.Add(changed.m_SteamID, changed); INetworkIdentity id = GameObject.Instantiate(voiceUserPrefab.gameObject).GetComponent <INetworkIdentity>(); id.IsLocalPlayer = false; id.NetworkId = changed.m_SteamID; } else { others.Remove(changed.m_SteamID); SteamNetworking.CloseP2PSessionWithUser(changed); } }
private void OnLobbyChatUpdate(LobbyChatUpdate_t update) { var state = (EChatMemberStateChange)update.m_rgfChatMemberStateChange; if (state == EChatMemberStateChange.k_EChatMemberStateChangeLeft || state == EChatMemberStateChange.k_EChatMemberStateChangeDisconnected) { var changedUserId = (CSteamID)update.m_ulSteamIDUserChanged; if (NetworkServer.active) { HandleSteamServerDisconnect(changedUserId); } else if (remoteSteamId == changedUserId) { HandleSteamClientDisconnect(); } } }
void OnLobbyChatUpdate(LobbyChatUpdate_t evt) { currentLobbyId = new CSteamID(evt.m_ulSteamIDLobby); var stateChange = (EChatMemberStateChange)evt.m_rgfChatMemberStateChange; if (stateChange == 0) { return; } else if ((stateChange | EChatMemberStateChange.k_EChatMemberStateChangeEntered) != 0) { Debug.Log($"[Steam] Lobby User Join: {evt.m_ulSteamIDUserChanged}"); } else { Debug.Log($"[Steam] Lobby User Leave: {evt.m_ulSteamIDUserChanged}"); OnDisconnect(new CSteamID(evt.m_ulSteamIDUserChanged)); } }
void UpdateUserStatus(LobbyChatUpdate_t cb) { string name = SteamFriends.GetFriendPersonaName((CSteamID)cb.m_ulSteamIDUserChanged); EChatMemberStateChange chatType = (EChatMemberStateChange)cb.m_rgfChatMemberStateChange; switch (chatType) { case EChatMemberStateChange.k_EChatMemberStateChangeEntered: Text.text += "\n" + name + " joined the lobby"; break; case EChatMemberStateChange.k_EChatMemberStateChangeLeft: Text.text += Text.text += "\n" + name + " left the lobby"; break; case EChatMemberStateChange.k_EChatMemberStateChangeDisconnected: Text.text += Text.text += "\n" + name + " left the lobby"; break; } }
// Why Steam does lobby joins and leaves via a chat update is beyond me. void OnLobbyChatUpdate(LobbyChatUpdate_t evt) { var id = new CSteamID(evt.m_ulSteamIDLobby); if (_connectedLobbies.TryGetValue(id, out SteamLobby lobby)) { uint leaveMask = ~(uint)EChatMemberStateChange.k_EChatMemberStateChangeEntered; uint stateChange = evt.m_rgfChatMemberStateChange; AccountHandle user = evt.m_ulSteamIDUserChanged; var present = lobby.Members.Contains(user); if ((stateChange & leaveMask) != 0) { // Member disconnected if (!present) { lobby.Members.Remove(user); } else { Debug.LogWarning($"[Steam] Unexpected member disconnect for lobby: {id}, member: {user}"); } } else if ((stateChange & ~leaveMask) != 0) { // Member joined if (present) { lobby.Members.Add(user); } else { Debug.LogWarning($"[Steam] Members somehow has joined multiple times: {id}, member: {user}"); } } } else { Debug.LogWarning($"[Steam] Unexpected lobby chat update for lobby: {id}"); } }