Exemplo n.º 1
0
 static void Main(string[] args)
 {
     if (Mud.Start("database/"))
     {
         var telnetListener = new TelnetClientSource();
         telnetListener.Listen();
     }
 }
Exemplo n.º 2
0
        void IOpenable.HandleClose(Actor Actor)
        {
            if (Open)
            {
                if (Actor.ConnectedClient != null)
                {
                    Mud.SendEventMessage(Actor, EventMessageScope.Single, "You close the door.\r\n");
                }
                Mud.SendEventMessage(Actor, EventMessageScope.External, Actor.Short + " closes the door.\r\n");
            }

            Open = false;
        }
Exemplo n.º 3
0
        void IOpenable.HandleOpen(Actor Actor)
        {
            if (!Open)
            {
                if (Actor.ConnectedClient != null)
                {
                    Mud.SendEventMessage(Actor, EventMessageScope.Single, "You open the door.\r\n");
                }
                Mud.SendEventMessage(Actor, EventMessageScope.External, Actor.Short + " opens the door.\r\n");
            }

            Open = true;
        }
Exemplo n.º 4
0
        void OnNewClient(IAsyncResult _asyncResult)
        {
            System.Net.Sockets.Socket ClientSocket = ListenSocket.EndAccept(_asyncResult);
            ListenSocket.BeginAccept(OnNewClient, null);

            var NewClient = new TelnetClient {
                Socket = ClientSocket
            };

            ClientSocket.BeginReceive(NewClient.Storage, 0, 1024, System.Net.Sockets.SocketFlags.Partial, OnData, NewClient);
            Console.WriteLine("New standard client: " + ClientSocket.RemoteEndPoint.ToString());
            Mud.ClientConnected(NewClient);
        }
        public LoginCommandHandler()
        {
            Parser = new CommandParser();

            Parser.AddCommand(
                new Sequence(new KeyWord("LOGIN", false), new SingleWord("NAME")),
                new CommandProcessorWrapper((m, a) =>
            {
                a.Short = m.Arguments["NAME"].ToString();
                a.ConnectedClient.CommandHandler = Mud.ParserCommandHandler;
                a.Rank = 500;                         //Everyone is a wizard!
                Thing.Move(a, Mud.GetObject("dummy"));
                Mud.EnqueuClientCommand(a.ConnectedClient, "look");
            }),
                "Login to an existing account.");
        }
Exemplo n.º 6
0
        void OnData(IAsyncResult _asyncResult)
        {
            var Client = _asyncResult.AsyncState as TelnetClient;

            try
            {
                System.Net.Sockets.SocketError Error;
                int DataSize = Client.Socket.EndReceive(_asyncResult, out Error);

                if (DataSize == 0 || Error != System.Net.Sockets.SocketError.Success)
                {
                    Mud.ClientDisconnected(Client);
                }
                else
                {
                    for (int i = 0; i < DataSize; ++i)
                    {
                        if (Client.Storage[i] == '\n' || Client.Storage[i] == '\r')
                        {
                            if (!String.IsNullOrEmpty(Client.CommandQueue))
                            {
                                String Command = Client.CommandQueue;
                                Client.CommandQueue = "";
                                Mud.EnqueuClientCommand(Client, Command);
                            }
                        }
                        else if (Client.Storage[i] == '\b')
                        {
                            if (Client.CommandQueue.Length > 0)
                            {
                                Client.CommandQueue = Client.CommandQueue.Remove(Client.CommandQueue.Length - 1);
                            }
                        }
                        else if (ValidCharacters.Contains((char)Client.Storage[i]))
                        {
                            Client.CommandQueue += (char)Client.Storage[i];
                        }
                    }

                    Client.Socket.BeginReceive(Client.Storage, 0, 1024, System.Net.Sockets.SocketFlags.Partial, OnData, Client);
                }
            }
            catch (Exception e)
            {
                Mud.ClientDisconnected(Client);
            }
        }
Exemplo n.º 7
0
 public void HandleCommand(Client Client, String Command)
 {
     try
     {
         var matchedCommand = Parser.ParseCommand(Command, Client.Player);
         if (matchedCommand != null)
         {
             matchedCommand.Command.Processor.Perform(matchedCommand.Match, Client.Player);
         }
         else
         {
             Client.Send("huh?");
         }
     }
     catch (Exception e)
     {
         Mud.ClearPendingMessages();
         Client.Send(e.Message);
     }
 }