예제 #1
0
        public void HandleCommand(Client client, string alias, string[] arguments)
        {
            var command = FindByName(alias) ?? FindByAlias(alias);
            if (command == null)
            {
                client.SendServerMessage($@"Invalid command ""{alias}"".");
                return;
            }

            if(command.LogCommand && !client.Permissions.HasFlag(PermissionFlags.UnVerified))
                Logger.LogCommandMessage(client.Name, $"/{alias} {string.Join(" ", arguments)}");

            if (command.Permissions == PermissionFlags.None)
            {
                client.SendServerMessage($@"Command is disabled!");
                return;
            }

            if ((client.Permissions & command.Permissions) == PermissionFlags.None)
            {
                client.SendServerMessage($@"You have not the permission to use this command!");
                return;
            }

            command.Handle(client, alias, arguments);
        }
예제 #2
0
        public override void Handle(Client client, string alias, string[] arguments)
        {
            if (arguments.Length >= 2)
            {
                var clientName = arguments[0];
                var permissions = arguments.Skip(1).Where(arg => arg != "," || arg != "|").ToArray();

                var cClient = GetClient(clientName);
                if (cClient == null)
                {
                    client.SendServerMessage($"Player {clientName} not found.");
                    return;
                }

                var flags = new List<PermissionFlags>();
                foreach (var permission in permissions)
                {
                    PermissionFlags flag;
                    if (Enum.TryParse(permission, out flag))
                        flags.Add(flag);
                    else
                        client.SendServerMessage($"Permission {permission} not found.");
                }

                client.Permissions = PermissionFlags.None;
                foreach (var flag in flags)
                    client.Permissions |= flag;

                client.SendServerMessage($"Changed {clientName} permissions!");
            }
            else
                client.SendServerMessage($"Invalid arguments given.");
        }
예제 #3
0
 public override void Handle(Client client, string alias, string[] arguments)
 {
     if (arguments.Length == 1)
         client.SendServerMessage(client.RegisterOrLogIn(arguments[0]) ? $"Succesfully logged in!" : $"Wrong password!");
     else
         client.SendServerMessage($"Invalid arguments given.");
 }
예제 #4
0
 public override void Handle(Client client, string alias, string[] arguments)
 {
     if (arguments.Length == 2)
         client.SendServerMessage(client.ChangePassword(arguments[0], arguments[1]) ? $"Succesfully changed password!" : $"Wrong old password!");
     else
         client.SendServerMessage($"Invalid arguments given.");
 }
예제 #5
0
 public override void Handle(Client client, string alias, string[] arguments)
 {
     if (arguments.Length == 1)
     {
         var channelName = arguments[0].ToLower();
         var channel = ChatChannelManager.FindByAlias(channelName);
         client.SendServerMessage(channel != null ? $"{channel.Name}: {channel.Description}" : $"Channel '{channelName}' not found!");
     }
     else
         client.SendServerMessage($"Invalid arguments given.");
 }
예제 #6
0
 public override void Handle(Client client, string alias, string[] arguments)
 {
     if (arguments.Length == 1)
     {
         World.Location = arguments[0];
         World.UseLocation = true;
         client.SendServerMessage($"Set Location to {World.Location}!");
         client.SendServerMessage("Enabled Location!");
     }
     else
         client.SendServerMessage($"Invalid arguments given.");
 }
 public override void Handle(Client client, string alias, string[] arguments)
 {
     if (arguments.Length == 1)
     {
         var channelName = arguments[0].ToLower();
         var channel = ChatChannelManager.FindByAlias(channelName);
         if(channel != null)
             client.SendServerMessage(channel.Subscribe(client) ? $"Changed chat channel to {channel.Name}!" : $"Failed to change chat channel to {channel.Name}!");
         else
             client.SendServerMessage($"Channel '{channelName}' not found!");
     }
     else
         client.SendServerMessage($"Invalid arguments given.");
 }
예제 #8
0
 public override void Handle(Client client, string alias, string[] arguments)
 {
     if (arguments.Length == 1)
     {
         Weather weather;
         if (Enum.TryParse(arguments[0], true, out weather))
         {
             World.Weather = weather;
             client.SendServerMessage($"Set Weather to {weather}!");
         }
         else
             client.SendServerMessage($"Weather '{weather}' not found!");
     }
     else
         client.SendServerMessage($"Invalid arguments given.");
 }
예제 #9
0
 public override void Handle(Client client, string alias, string[] arguments)
 {
     if (arguments.Length == 1)
     {
         Season season;
         if (Enum.TryParse(arguments[0], true, out season))
         {
             World.Season = season;
             client.SendServerMessage($"Set Season to {season}!");
         }
         else
             client.SendServerMessage($"Season '{season}' not found!");
     }
     else
         client.SendServerMessage($"Invalid arguments given.");
 }
예제 #10
0
        public override void Handle(Client client, string alias, string[] arguments)
        {
            if (arguments.Length >= 1)
            {
                var clientName = arguments[0];
                var cClient = GetClient(clientName);
                if (cClient == null)
                {
                    client.SendServerMessage($"Player {clientName} not found!");
                    return;
                }

                var reason = arguments.Length > 1 ? arguments[1] : "";
                cClient.Kick(reason);
            }
            else
                client.SendServerMessage($"Invalid arguments given.");
        }
예제 #11
0
        public override void Handle(Client client, string alias, string[] arguments)
        {
            if (arguments.Length == 1)
            {
                if (arguments[0].ToLower() == "real")
                {
                    World.UseRealTime = !World.UseRealTime;
                    client.SendServerMessage(World.UseRealTime ? "Enabled Real Time!" : "Disabled Real Time!");
                    return;
                }
                if (arguments[0].ToLower() == "daycycle")
                {
                    World.DoDayCycle = !World.DoDayCycle;
                    client.SendServerMessage(World.DoDayCycle ? "Enabled Day Cycle!" : "Disabled Day Cycle!");
                    return;
                }

                TimeSpan time;
                if (TimeSpan.TryParseExact(arguments[0], "HH\\:mm\\:ss", null, out time))
                {
                    World.CurrentTime = time;
                    World.UseRealTime = false;
                    client.SendServerMessage($"Set time to {time}!");
                    client.SendServerMessage("Disabled Real Time!");
                }
                else
                    client.SendServerMessage("Invalid time!");
            }
            else
                client.SendServerMessage($"Invalid arguments given.");
        }
예제 #12
0
        private void HelpPage(Client client, int page)
        {
            const int perPage = 5;
            var numPages = (int) Math.Floor((double) CommandManager.Commands.Count / perPage);
            if ((CommandManager.Commands.Count % perPage) > 0)
                numPages++;

            if (page < 1 || page > numPages)
                page = 1;

            var startingIndex = (page - 1) * perPage;
            client.SendServerMessage($"--Help page {page} of {numPages}--");
            for (var i = 0; i < perPage; i++)
            {
                var index = startingIndex + i;
                if (index > CommandManager.Commands.Count - 1)
                    break;
                
                var command = CommandManager.Commands[index];
                client.SendServerMessage($"/{command.Name} - {command.Description}");
            }
        }
예제 #13
0
        public override void Handle(Client client, string alias, string[] arguments)
        {
            client.SendServerMessage($"Command not implemented.");
            return;

            if (arguments.Length == 1)
            {
                var clientName = arguments[0];
                var cClient = GetClient(clientName);
                if (cClient == null)
                {
                    client.SendServerMessage($"Player {clientName} not found!");
                    return;
                }

            }
            else
                client.SendServerMessage($"Invalid arguments given.");



            /*
            if (!MutedPlayers.ContainsKey(id))
                MutedPlayers.Add(id, new List<int>());

            var muteId = Server.GetClientId(muteName);
            if (id == muteId)
                return MuteStatus.MutedYourself;

            if (muteId != -1)
            {
                MutedPlayers[id].Add(muteId);
                return MuteStatus.Completed;
            }

            return MuteStatus.ClientNotFound;
            */
        }
예제 #14
0
 public override void Help(Client client, string alias) { client.SendServerMessage($"Correct usage is /{alias} <permission permission permission>"); }
예제 #15
0
 public override void Help(Client client, string alias) { client.SendServerMessage($"Correct usage is /{alias} <Time[HH:mm:ss]/Real>"); }
예제 #16
0
 public override void Help(Client client, string alias){ client.SendServerMessage($"Correct usage is /{alias} <PlayerName> [Reason]"); }
예제 #17
0
 public virtual void Help(Client client, string alias) { client.SendServerMessage($@"Command ""{alias}"" is not functional!"); }
예제 #18
0
 public override void Help(Client client, string alias){ client.SendServerMessage($"Correct usage is /{alias} <global/local/'custom'>"); }
예제 #19
0
 public override void Help(Client client, string alias) { client.SendServerMessage($"Correct usage is /{alias} <page#/command> [command arguments]"); }
예제 #20
0
 public override void Help(Client client, string alias) { client.SendServerMessage($"Correct usage is /{alias} <Weather>"); }
예제 #21
0
 public override void Help(Client client, string alias){ client.SendServerMessage($"Correct usage is /{alias} <OldPassword> <NewPassword>"); }