예제 #1
0
        public static string MPHostKickPlayer(List <string> strings)
        {
            if (MultiplayerAdminComponent._multiplayerAdminComponent == null)
            {
                return("Failed: MultiplayerAdminComponent has not been created.");
            }
            if (!GameNetwork.IsServerOrRecorder)
            {
                return("Failed: Only the host can use mp_host commands.");
            }
            if (strings.Count != 1)
            {
                return("Failed: Input is incorrect.");
            }
            string str = strings[0];

            foreach (NetworkCommunicator networkPeer in GameNetwork.NetworkPeers)
            {
                if (networkPeer.UserName == str)
                {
                    DisconnectInfo disconnectInfo = networkPeer.PlayerConnectionInfo.GetParameter <DisconnectInfo>("DisconnectInfo") ?? new DisconnectInfo();
                    disconnectInfo.Type = DisconnectType.KickedByHost;
                    networkPeer.PlayerConnectionInfo.AddParameter("DisconnectInfo", (object)disconnectInfo);
                    GameNetwork.AddNetworkPeerToDisconnectAsServer(networkPeer);
                    return("Player " + str + " has been kicked from the server.");
                }
            }
            return(str + " could not be found.");
        }
예제 #2
0
 public void EndPoll()
 {
     if (this._runningPollAcceptedCount >= (this._runningPoll is MultiplayerPollComponent.KickPlayer || this._runningPoll is MultiplayerPollComponent.BanPlayer ? (int)Math.Ceiling(((double)GameNetwork.NetworkPeerCount - 1.0) / 2.0) : (int)Math.Ceiling((double)GameNetwork.NetworkPeerCount / 2.0)))
     {
         if (this._runningPoll is MultiplayerPollComponent.KickPlayer)
         {
             MissionPeer component = ((MultiplayerPollComponent.KickPlayer) this._runningPoll).playerPeer.GetComponent <MissionPeer>();
             if (component != null)
             {
                 NetworkCommunicator networkPeer    = component.GetNetworkPeer();
                 DisconnectInfo      disconnectInfo = networkPeer.PlayerConnectionInfo.GetParameter <DisconnectInfo>("DisconnectInfo") ?? new DisconnectInfo();
                 disconnectInfo.Type = DisconnectType.KickedByPoll;
                 networkPeer.PlayerConnectionInfo.AddParameter("DisconnectInfo", (object)disconnectInfo);
                 GameNetwork.AddNetworkPeerToDisconnectAsServer(networkPeer);
                 if (GameNetwork.IsDedicatedServer)
                 {
                     throw new NotImplementedException();
                 }
                 NetworkMain.GameClient.KickPlayer(component.Peer.Id, false);
             }
         }
         else if (this._runningPoll is MultiplayerPollComponent.BanPlayer)
         {
             MissionPeer component = ((MultiplayerPollComponent.BanPlayer) this._runningPoll).playerPeer.GetComponent <MissionPeer>();
             if (component != null)
             {
                 NetworkCommunicator networkPeer    = component.GetNetworkPeer();
                 DisconnectInfo      disconnectInfo = networkPeer.PlayerConnectionInfo.GetParameter <DisconnectInfo>("DisconnectInfo") ?? new DisconnectInfo();
                 disconnectInfo.Type = DisconnectType.BannedByPoll;
                 networkPeer.PlayerConnectionInfo.AddParameter("DisconnectInfo", (object)disconnectInfo);
                 GameNetwork.AddNetworkPeerToDisconnectAsServer(networkPeer);
                 if (GameNetwork.IsClient)
                 {
                     BannedPlayerManagerCustomGameClient.AddBannedPlayer(component.Peer.Id, GameNetwork.IsDedicatedServer ? -1 : Environment.TickCount + 600000);
                 }
                 else if (GameNetwork.IsDedicatedServer)
                 {
                     BannedPlayerManagerCustomGameServer.AddBannedPlayer(component.Peer.Id, component.GetPeer().UserName, GameNetwork.IsDedicatedServer ? -1 : Environment.TickCount + 600000);
                 }
                 if (GameNetwork.IsDedicatedServer)
                 {
                     throw new NotImplementedException();
                 }
                 NetworkMain.GameClient.KickPlayer(component.Peer.Id, true);
             }
         }
         else if (this._runningPoll is MultiplayerPollComponent.ChangeGame)
         {
             MultiplayerPollComponent.ChangeGame             runningPoll = (MultiplayerPollComponent.ChangeGame) this._runningPoll;
             MultiplayerOptions.MultiplayerOptionsAccessMode mode        = MultiplayerOptions.MultiplayerOptionsAccessMode.NextMapOptions;
             MultiplayerOptions.OptionType.GameType.SetValue(runningPoll.GameType, mode);
             MultiplayerOptions.Instance.OnGameTypeChanged(mode);
             MultiplayerOptions.OptionType.Map.SetValue(runningPoll.MapName, mode);
             this._missionLobbyComponent.SetStateEndingAsServer();
         }
     }
     this._runningPoll              = (object)null;
     this._runningPollStartTime     = new int?();
     this._runningPollAcceptedCount = 0;
     this._runningPollRejectedCount = 0;
     this._runningPollVoted.Clear();
 }