コード例 #1
0
        private void hidePlugins(ManiaPlanetPlayerChat playerChatCall)
        {
            var pluginIds = playerChatCall.Text.ToLower().Split(' ').Skip(1).ToArray();

            if (pluginIds.Length < 1)
            {
                controller.CallMethod(new ChatSendServerMessageToId("Usage: /hide pluginId1 [pluginId2 ...]", playerChatCall.ClientId), 0);
            }

            var hidePlugins = pluginIds.Where(pluginId => controller.Plugins.ContainsKey(pluginId)).ToArray();

            if (hidePlugins.Length > 0)
            {
                if (!clientsDisabledPluginDisplays.ContainsKey(playerChatCall.ClientLogin))
                {
                    clientsDisabledPluginDisplays.Add(playerChatCall.ClientLogin, new List <string>());
                }

                var response = new StringBuilder("Hiding display of plugins: ");
                foreach (var hidePlugin in hidePlugins)
                {
                    if (!clientsDisabledPluginDisplays[playerChatCall.ClientLogin].Contains(hidePlugin))
                    {
                        clientsDisabledPluginDisplays[playerChatCall.ClientLogin].Add(hidePlugin);
                    }

                    response.Append(GetName(controller.Plugins[hidePlugin].GetType()));
                    response.Append(" (");
                    response.Append(hidePlugin);
                    response.Append("), ");
                }

                clientManialinksNeedRefresh = true;

                response.Remove(response.Length - 2, 2);
                controller.CallMethod(new ChatSendServerMessageToId(response.ToString(), playerChatCall.ClientId), 0);
            }

            var unknownPlugins = pluginIds.Where(pluginId => !controller.Plugins.ContainsKey(pluginId)).ToArray();

            if (unknownPlugins.Length > 0)
            {
                var response = new StringBuilder("Plugins not loaded: ");
                foreach (var unknownPlugin in unknownPlugins)
                {
                    response.Append(unknownPlugin);
                    response.Append(", ");
                }

                response.Remove(response.Length - 2, 2);
                controller.CallMethod(new ChatSendServerMessageToId(response.ToString(), playerChatCall.ClientId), 0);
            }
        }
コード例 #2
0
 private void chatCommand(ManiaPlanetPlayerChat obj)
 {
     string[] cmds = obj.Text.Split(' ');
     if (cmds.Length < 2 || cmds[1].ToLower() == "help")
     {
         writeHelp(obj.ClientLogin);
     }
     else if (cmds.Length >= 2)
     {
         switch (cmds[1])
         {
         }
     }
     throw new NotImplementedException();
 }
コード例 #3
0
        private void listPlugins(ManiaPlanetPlayerChat playerChatCall)
        {
            var response = new StringBuilder("Plugins: ");

            foreach (var plugin in plugins)
            {
                response.Append(PluginBase.GetName(plugin.Value.GetType()));
                response.Append(" (");
                response.Append(plugin.Key);
                response.Append("), ");
            }

            response.Remove(response.Length - 2, 2);

            CallMethod(new ChatSendServerMessageToId(response.ToString(), playerChatCall.ClientId), 0);
        }
コード例 #4
0
 private void ServerController_PlayerChat(ServerController sender, ManiaPlanetPlayerChat methodCall)
 {
     ChatInterfaceManager.Get(Configuration.DefaultChat).SendToAll(methodCall.Text, this.ClientsManager.GetClientInfo(methodCall.ClientLogin));
 }
コード例 #5
0
        private void callEvent(object serverCallback)
        {
            var methodCall = XDocument.Parse((string)serverCallback, LoadOptions.None).Root;

            if (methodCall == null)
            {
                return;
            }

            var methodNameElement = methodCall.Element("methodName");

            if (methodNameElement == null)
            {
                return;
            }

            //Swith to the right method name and call the event.
            switch (methodNameElement.Value)
            {
            case "ManiaPlanet.PlayerConnect":
                if (PlayerConnect != null)
                {
                    var playerConnectCall = new ManiaPlanetPlayerConnect();
                    if (playerConnectCall.ParseCallXml(methodCall))
                    {
                        PlayerConnect(this, playerConnectCall);
                    }
                }
                break;

            case "ManiaPlanet.PlayerDisconnect":
                if (PlayerDisconnect != null)
                {
                    var playerDisconnectCall = new ManiaPlanetPlayerDisconnect();
                    if (playerDisconnectCall.ParseCallXml(methodCall))
                    {
                        PlayerDisconnect(this, playerDisconnectCall);
                    }
                }
                break;

            case "ManiaPlanet.PlayerChat":
                var playerChatCall = new ManiaPlanetPlayerChat();
                if (playerChatCall.ParseCallXml(methodCall))
                {
                    if (!playerChatCall.Text.StartsWith("/"))
                    {
                        if (PlayerChat != null)
                        {
                            PlayerChat(this, playerChatCall);
                        }
                    }

                    var potentialCommand = (playerChatCall.Text.TrimStart('/') + " ").ToLowerInvariant();
                    var command          = registeredCommands.Where(cmd => potentialCommand.StartsWith(cmd.Key + " "));

                    if (command.Any())
                    {
                        try
                        {
                            command.Single().Value(playerChatCall);
                        }
                        catch     //TODO: Specify exception
                        {
                            ChatInterfaceManager.Get(Configuration.DefaultChat).SendToPlayer(
                                "The command [" + playerChatCall.Text.TrimStart('/') + "] was somehow not unique.",
                                ClientsManager.GetClientInfo(playerChatCall.ClientLogin));
                        }
                    }
                    else
                    {
                        ChatInterfaceManager.Get(Configuration.DefaultChat).SendToPlayer(
                            "The command [" + playerChatCall.Text.TrimStart('/') + "] couldn't be found.",
                            ClientsManager.GetClientInfo(playerChatCall.ClientLogin));
                    }
                }
                break;

            case "ManiaPlanet.PlayerManialinkPageAnswer":
                if (PlayerManialinkPageAnswer != null)
                {
                    var playerManialinkPageAnswerCall = new ManiaPlanetPlayerManialinkPageAnswer();
                    if (playerManialinkPageAnswerCall.ParseCallXml(methodCall))
                    {
                        PlayerManialinkPageAnswer(this, playerManialinkPageAnswerCall);
                    }
                }
                break;

            case "ManiaPlanet.Echo":
                if (Echo != null)
                {
                    var echoCall = new ManiaPlanetEcho();
                    if (echoCall.ParseCallXml(methodCall))
                    {
                        Echo(this, echoCall);
                    }
                }
                break;

            case "ManiaPlanet.ServerStart":
                if (ServerStart != null)
                {
                    var serverStartCall = new ManiaPlanetServerStart();
                    if (serverStartCall.ParseCallXml(methodCall))
                    {
                        ServerStart(this, serverStartCall);
                    }
                }
                break;

            case "ManiaPlanet.ServerStop":
                if (ServerStop != null)
                {
                    var serverStopCall = new ManiaPlanetServerStop();
                    if (serverStopCall.ParseCallXml(methodCall))
                    {
                        ServerStop(this, serverStopCall);
                    }
                }
                break;

            case "ManiaPlanet.BeginMatch":
                if (BeginMatch != null)
                {
                    var beginMatchCall = new ManiaPlanetBeginMatch();
                    if (beginMatchCall.ParseCallXml(methodCall))
                    {
                        BeginMatch(this, beginMatchCall);
                    }
                }
                break;

            case "ManiaPlanet.EndMatch":
                if (EndMatch != null)
                {
                    var endMatchCall = new ManiaPlanetEndMatch();
                    if (endMatchCall.ParseCallXml(methodCall))
                    {
                        EndMatch(this, endMatchCall);
                    }
                }
                break;

            case "ManiaPlanet.BeginMap":
                if (BeginMap != null)
                {
                    var beginMapCall = new ManiaPlanetBeginMap();
                    if (beginMapCall.ParseCallXml(methodCall))
                    {
                        BeginMap(this, beginMapCall);
                    }
                }
                break;

            case "ManiaPlanet.EndMap":
                if (EndMap != null)
                {
                    var endMapCall = new ManiaPlanetEndMap();
                    if (endMapCall.ParseCallXml(methodCall))
                    {
                        EndMap(this, endMapCall);
                    }
                }
                break;

            case "ManiaPlanet.StatusChanged":
                if (StatusChanged != null)
                {
                    var statusChangedCall = new ManiaPlanetStatusChanged();
                    if (statusChangedCall.ParseCallXml(methodCall))
                    {
                        StatusChanged(this, statusChangedCall);
                    }
                }
                break;

            case "TrackMania.PlayerCheckpoint":
                Console.WriteLine("Player drove through checkpoint.");
                if (PlayerCheckpoint != null)
                {
                    var playerCheckpointCall = new TrackManiaPlayerCheckpoint();
                    if (playerCheckpointCall.ParseCallXml(methodCall))
                    {
                        PlayerCheckpoint(this, playerCheckpointCall);
                    }
                }
                break;

            case "TrackMania.PlayerFinish":
                if (PlayerFinish != null)
                {
                    var playerFinishCall = new TrackManiaPlayerFinish();
                    if (playerFinishCall.ParseCallXml(methodCall))
                    {
                        PlayerFinish(this, playerFinishCall);
                    }
                }
                break;

            case "TrackMania.PlayerIncoherence":
                if (PlayerIncoherence != null)
                {
                    var playerIncoherenceCall = new TrackManiaPlayerIncoherence();
                    if (playerIncoherenceCall.ParseCallXml(methodCall))
                    {
                        PlayerIncoherence(this, playerIncoherenceCall);
                    }
                }
                break;

            case "ManiaPlanet.BillUpdated":
                if (BillUpdated != null)
                {
                    var billUpdatedCall = new ManiaPlanetBillUpdated();
                    if (billUpdatedCall.ParseCallXml(methodCall))
                    {
                        BillUpdated(this, billUpdatedCall);
                    }
                }
                break;

            case "ManiaPlanet.TunnelDataReceived":
                if (TunnelDataReceived != null)
                {
                    var tunnelDataReceivedCall = new ManiaPlanetTunnelDataReceived();
                    if (tunnelDataReceivedCall.ParseCallXml(methodCall))
                    {
                        TunnelDataReceived(this, tunnelDataReceivedCall);
                    }
                }
                break;

            case "ManiaPlanet.MapListModified":
                if (MapListModified != null)
                {
                    var mapListModifiedCall = new ManiaPlanetMapListModified();
                    if (mapListModifiedCall.ParseCallXml(methodCall))
                    {
                        MapListModified(this, mapListModifiedCall);
                    }
                }
                break;

            case "ManiaPlanet.PlayerInfoChanged":
                if (PlayerInfoChanged != null)
                {
                    var playerInfoChangedCall = new ManiaPlanetPlayerInfoChanged();
                    if (playerInfoChangedCall.ParseCallXml(methodCall))
                    {
                        PlayerInfoChanged(this, playerInfoChangedCall);
                    }
                }
                break;

            case "ManiaPlanet.VoteUpdated":
                if (VoteUpdated != null)
                {
                    var voteUpdatedCall = new ManiaPlanetVoteUpdated();
                    if (voteUpdatedCall.ParseCallXml(methodCall))
                    {
                        VoteUpdated(this, voteUpdatedCall);
                    }
                }
                break;

            case "ManiaPlanet.PlayerAlliesChanged":
                if (PlayerAlliesChanged != null)
                {
                    var playerAlliesChangedCall = new ManiaPlanetPlayerAlliesChanged();
                    if (playerAlliesChangedCall.ParseCallXml(methodCall))
                    {
                        PlayerAlliesChanged(this, playerAlliesChangedCall);
                    }
                }
                break;
            }
        }
コード例 #6
0
 private void listClients(ManiaPlanetPlayerChat chat)
 {
     controller.CallMethod(
         new ChatSendServerMessageToId("$s$fff" + string.Join(", $s$fff", CurrentClients.Select(client => client.Nickname + " $z$s(" + client.Login + ")")),
                                       chat.ClientId), 0);
 }