Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        protected void RaiseClientLeft(ulong changedUser, MyChatMemberStateChangeEnum stateChange)
        {
            Action <ulong, MyChatMemberStateChangeEnum> clientLeft = this.ClientLeft;

            if (clientLeft != null)
            {
                clientLeft(changedUser, stateChange);
            }
        }
Esempio n. 4
0
 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));
 }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
 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());
     }
 }
Esempio n. 7
0
 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));
 }
Esempio n. 8
0
 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);
             }
         }
     }
 }
Esempio n. 9
0
 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);
             }
         }
     }
 }