示例#1
0
        private void PlayerDisconnected(long l)
        {
            try
            {
                PlayerEventId++;
                IMyPlayer removedPlayer;
                if (Players.TryRemove(l, out removedPlayer))
                {
                    long playerId;

                    SteamToPlayer.TryRemove(removedPlayer.SteamUserId, out playerId);
                    PlayerEntityIdInRange.Remove(removedPlayer.SteamUserId);
                    PlayerMouseStates.Remove(playerId);
                    PlayerDummyTargets.Remove(playerId);
                    PlayerMIds.Remove(removedPlayer.SteamUserId);
                    if (PlayerControllerMonitor.Remove(removedPlayer))
                    {
                        removedPlayer.Controller.ControlledEntityChanged -= OnPlayerController;
                    }

                    if (IsServer && MpActive)
                    {
                        SendPlayerConnectionUpdate(l, false);
                    }

                    if (AuthorIds.Contains(removedPlayer.SteamUserId))
                    {
                        ConnectedAuthors.Remove(playerId);
                    }
                }
            }
            catch (Exception ex) { Log.Line($"Exception in PlayerDisconnected: {ex}"); }
        }