private void MyMultiplayerClient_ClientLeft(ulong user, MyChatMemberStateChangeEnum stateChange) { if (user == base.ServerId) { base.RaiseHostLeft(); } else { if (this.m_members.Contains(user)) { this.m_members.Remove(user); string personaName = MyGameService.GetPersonaName(user); object[] objArray1 = new object[] { "Player disconnected: ", personaName, " (", user, ")" }; MySandboxGame.Log.WriteLineAndConsole(string.Concat(objArray1)); if (MySandboxGame.IsGameReady && (Sync.MyId != user)) { MyHudNotification notification = new MyHudNotification(MyCommonTexts.NotificationClientDisconnected, 0x1388, "Blue", MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, 0, MyNotificationLevel.Important); object[] arguments = new object[] { personaName }; notification.SetTextFormatArguments(arguments); MyHud.Notifications.Add(notification); } } this.m_memberData.Remove(user); } }
private void MyDedicatedServer_ClientLeft(ulong user, MyChatMemberStateChangeEnum arg2) { MyGameService.Peer2Peer.CloseSession(user); MyLog.Default.WriteLineAndConsole("User left " + this.GetMemberName(user)); if (this.m_members.Contains(user)) { this.m_members.Remove(user); } if (this.m_pendingMembers.ContainsKey(user)) { this.m_pendingMembers.Remove(user); } if (this.m_waitingForGroup.Contains(user)) { this.m_waitingForGroup.Remove(user); } if ((arg2 != MyChatMemberStateChangeEnum.Kicked) && (arg2 != MyChatMemberStateChangeEnum.Banned)) { foreach (ulong num in this.m_members) { if (num != base.ServerId) { MyControlDisconnectedMsg message = new MyControlDisconnectedMsg { Client = user }; base.SendControlMessage <MyControlDisconnectedMsg>(num, ref message, true); } } } MyGameService.GameServer.SendUserDisconnect(user); this.MemberDataRemove(user); }
protected void RaiseClientLeft(ulong changedUser, MyChatMemberStateChangeEnum stateChange) { Action <ulong, MyChatMemberStateChangeEnum> clientLeft = this.ClientLeft; if (clientLeft != null) { clientLeft(changedUser, stateChange); } }
private void MyMultiplayerLobby_ClientLeft(ulong userId, MyChatMemberStateChangeEnum stateChange) { if (userId == base.ServerId) { MyGameService.Peer2Peer.CloseSession(userId); } object[] objArray1 = new object[] { "Player left: ", this.GetMemberName(userId), " (", userId, ")" }; MySandboxGame.Log.WriteLineAndConsole(string.Concat(objArray1)); }
private void OnClientLeft(ulong steamId, MyChatMemberStateChangeEnum stateChange) { Players.TryGetValue(steamId, out PlayerViewModel vm); if (vm == null) { vm = new PlayerViewModel(steamId); } Log.Info($"{vm.Name} ({vm.SteamId}) {(ConnectionState)stateChange}."); PlayerLeft?.Invoke(vm); Players.Remove(steamId); }
public static void PlayerDisconnected(ulong user, MyChatMemberStateChangeEnum arg2) { try { string playerName = Utilities.GetPlayerName(user); if (!(playerName.StartsWith("[") && playerName.EndsWith("]") && playerName.Contains("..."))) { Task.Run(async() => Plugin.ProcessStatusMessage(playerName, user, Plugin.m_configuration.DisconnectedMessage)); } } catch (Exception e) { Log.WriteLineAndConsole(e.ToString()); } }
private void MyMultiplayerLobby_ClientLeft(ulong userId, MyChatMemberStateChangeEnum stateChange) { if (userId == base.ServerId) { MyGameService.Peer2Peer.CloseSession(userId); } if ((stateChange == MyChatMemberStateChangeEnum.Kicked) || (stateChange == MyChatMemberStateChangeEnum.Banned)) { MyControlKickClientMsg message = new MyControlKickClientMsg { KickedClient = userId, Kicked = true, Add = false }; MyLog.Default.WriteLineAndConsole("Player " + this.GetMemberName(userId) + " kicked"); base.SendControlMessageToAll <MyControlKickClientMsg>(ref message, 0UL); } object[] objArray1 = new object[] { "Player left: ", this.GetMemberName(userId), " (", userId, ")" }; MySandboxGame.Log.WriteLineAndConsole(string.Concat(objArray1)); }
private void Matchmaking_LobbyChatUpdate(IMyLobby lobby, ulong changedUser, ulong makingChangeUser, MyChatMemberStateChangeEnum stateChange) { if (lobby.LobbyId == this.m_lobby.LobbyId) { if (stateChange == MyChatMemberStateChangeEnum.Entered) { object[] objArray1 = new object[] { "Player entered: ", MyGameService.GetPersonaName(changedUser), " (", changedUser, ")" }; MySandboxGame.Log.WriteLineAndConsole(string.Concat(objArray1)); MyGameService.Peer2Peer.AcceptSession(changedUser); if ((Sync.Clients == null) || !Sync.Clients.HasClient(changedUser)) { base.RaiseClientJoined(changedUser); if (this.Scenario && (changedUser != Sync.MyId)) { base.SendAllMembersDataToClient(changedUser); } } if (MySandboxGame.IsGameReady && (changedUser != base.ServerId)) { MyHudNotification notification = new MyHudNotification(MyCommonTexts.NotificationClientConnected, 0x1388, "Blue", MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, 0, MyNotificationLevel.Important); object[] arguments = new object[] { MyGameService.GetPersonaName(changedUser) }; notification.SetTextFormatArguments(arguments); MyHud.Notifications.Add(notification); } } else { if ((Sync.Clients == null) || Sync.Clients.HasClient(changedUser)) { base.RaiseClientLeft(changedUser, stateChange); } if (changedUser == base.ServerId) { base.RaiseHostLeft(); MySessionLoader.UnloadAndExitToMenu(); StringBuilder messageCaption = MyTexts.Get(MyCommonTexts.MessageBoxCaptionError); MyStringId? okButtonText = null; okButtonText = null; okButtonText = null; okButtonText = null; Vector2?size = null; MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox(MyMessageBoxStyleEnum.Error, MyMessageBoxButtonsType.OK, MyTexts.Get(MyCommonTexts.MultiplayerErrorServerHasLeft), messageCaption, okButtonText, okButtonText, okButtonText, okButtonText, null, 0, MyGuiScreenMessageBox.ResultEnum.YES, true, size)); } else if (MySandboxGame.IsGameReady) { MyHudNotification notification = new MyHudNotification(MyCommonTexts.NotificationClientDisconnected, 0x1388, "Blue", MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, 0, MyNotificationLevel.Important); object[] arguments = new object[] { MyGameService.GetPersonaName(changedUser) }; notification.SetTextFormatArguments(arguments); MyHud.Notifications.Add(notification); } } } }
private void Matchmaking_LobbyChatUpdate(IMyLobby lobby, ulong changedUser, ulong makingChangeUser, MyChatMemberStateChangeEnum stateChange) { if (lobby.LobbyId == this.Lobby.LobbyId) { if (stateChange != MyChatMemberStateChangeEnum.Entered) { if ((Sync.Clients == null) || Sync.Clients.HasClient(changedUser)) { base.RaiseClientLeft(changedUser, stateChange); } if (changedUser == base.ServerId) { base.RaiseHostLeft(); MySessionLoader.UnloadAndExitToMenu(); MyGuiScreenServerReconnector.ReconnectToLastSession(); } else if (MySandboxGame.IsGameReady) { MyHudNotification notification = new MyHudNotification(MyCommonTexts.NotificationClientDisconnected, 0x1388, "Blue", MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, 0, MyNotificationLevel.Important); object[] arguments = new object[] { MyGameService.GetPersonaName(changedUser) }; notification.SetTextFormatArguments(arguments); MyHud.Notifications.Add(notification); } } else { object[] objArray1 = new object[] { "Player entered: ", MyGameService.GetPersonaName(changedUser), " (", changedUser, ")" }; MySandboxGame.Log.WriteLineAndConsole(string.Concat(objArray1)); MyGameService.Peer2Peer.AcceptSession(changedUser); if ((Sync.Clients == null) || !Sync.Clients.HasClient(changedUser)) { base.RaiseClientJoined(changedUser); } if (MySandboxGame.IsGameReady && (changedUser != base.ServerId)) { MyHudNotification notification = new MyHudNotification(MyCommonTexts.NotificationClientConnected, 0x1388, "Blue", MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, 0, MyNotificationLevel.Important); object[] arguments = new object[] { MyGameService.GetPersonaName(changedUser) }; notification.SetTextFormatArguments(arguments); MyHud.Notifications.Add(notification); } } } }