/// <inheritdoc /> public override void ExecuteCommand(ICommonSession?session, string command) { if (string.IsNullOrWhiteSpace(command)) { return; } // echo the command locally WriteLine(null, "> " + command); //Commands are processed locally and then sent to the server to be processed there again. var args = new List <string>(); CommandParsing.ParseArguments(command, args); var commandName = args[0]; if (AvailableCommands.ContainsKey(commandName)) { var command1 = AvailableCommands[commandName]; args.RemoveAt(0); var shell = new ConsoleShell(this, null); var cmdArgs = args.ToArray(); AnyCommandExecuted?.Invoke(shell, commandName, command, cmdArgs); command1.Execute(shell, command, cmdArgs); } else { WriteError(null, "Unknown command: " + commandName); } }
public void ProcessCommand(string text, NetConnection sender) { var args = new List <string>(); CommandParsing.ParseArguments(text, args); if (args.Count == 0) { return; } string cmd = args[0]; try { IClientCommand command = AvailableCommands[cmd]; args.RemoveAt(0); var client = IoCManager.Resolve <ISS14Server>().GetClient(sender); command.Execute(this, client, args.ToArray()); } catch (KeyNotFoundException) { SendConsoleReply(string.Format("Unknown command: '{0}'", cmd), sender); } catch (Exception e) { SendConsoleReply(string.Format("There was an error while executing the command: {0}", e.Message), sender); } }
public void ProcessCommand(MsgConCmd message) { string text = message.Text; INetChannel sender = message.MsgChannel; var args = new List <string>(); CommandParsing.ParseArguments(text, args); if (args.Count == 0) { return; } string cmd = args[0]; try { IClientCommand command = AvailableCommands[cmd]; args.RemoveAt(0); command.Execute(this, sender, args.ToArray()); } catch (KeyNotFoundException) { SendConsoleReply(string.Format("Unknown command: '{0}'", cmd), sender); } catch (Exception e) { SendConsoleReply(string.Format("There was an error while executing the command: {0}", e.Message), sender); } }
/// <summary> /// Processes commands (chat messages starting with /) /// </summary> /// <param name="text">input text</param> private void ProcessCommand(string text) { //Commands are processed locally and then sent to the server to be processed there again. var args = new List <string>(); CommandParsing.ParseArguments(text, args); string commandname = args[0]; //Entity player; //var entMgr = IoCManager.Resolve<IEntityManager>(); //var plrMgr = IoCManager.Resolve<IPlayerManager>(); //player = plrMgr.ControlledEntity; //IoCManager.Resolve<INetworkManager>(). bool forward = true; if (commands.ContainsKey(commandname)) { IConsoleCommand command = commands[commandname]; args.RemoveAt(0); forward = command.Execute(this, args.ToArray()); } else if (!IoCManager.Resolve <INetworkManager>().IsConnected) { AddLine("Unknown command: " + commandname, Color.Red); return; } if (forward) { SendServerConsoleCommand(text); } }
public void ProcessCommand(MsgConCmd message) { var text = message.Text; var sender = message.MsgChannel; var session = _players.GetSessionByChannel(sender); var args = new List <string>(); Logger.Info($"[{(int)session.Index}]{session.Name}:{text}"); CommandParsing.ParseArguments(text, args); if (args.Count == 0) { return; } var cmd = args[0]; try { if (availableCommands.TryGetValue(cmd, out var command)) { args.RemoveAt(0); command.Execute(this, session, args.ToArray()); } else { SendConsoleReply(sender, $"Unknown command: '{cmd}'"); } } catch (Exception e) { SendConsoleReply(sender, $"There was an error while executing the command: {e.Message}"); } }
public void Test(string command, string[] expected) { var list = new List <string>(); CommandParsing.ParseArguments(command, list); Assert.That(list, Is.EquivalentTo(expected)); }
private void ExecuteInShell(IConsoleShell shell, string command) { try { var args = new List <string>(); CommandParsing.ParseArguments(command, args); // missing cmdName if (args.Count == 0) { return; } string?cmdName = args[0]; if (AvailableCommands.TryGetValue(cmdName, out var conCmd)) // command registered { args.RemoveAt(0); var cmdArgs = args.ToArray(); if (shell.Player != null) // remote client { if (_groupController.CanCommand((IPlayerSession)shell.Player, cmdName)) // client has permission { AnyCommandExecuted?.Invoke(shell, cmdName, command, cmdArgs); conCmd.Execute(shell, command, cmdArgs); } else { shell.WriteError($"Unknown command: '{cmdName}'"); } } else // system console { AnyCommandExecuted?.Invoke(shell, cmdName, command, cmdArgs); conCmd.Execute(shell, command, cmdArgs); } } else { shell.WriteError($"Unknown command: '{cmdName}'"); } } catch (Exception e) { LogManager.GetSawmill(SawmillName).Error($"{FormatPlayerString(shell.Player)}: ExecuteError - {command}:\n{e}"); shell.WriteError($"There was an error while executing the command: {e}"); } }
/// <inheritdoc /> public void ExecuteCommand(IPlayerSession?session, string command) { try { var args = new List <string>(); CommandParsing.ParseArguments(command, args); // missing cmdName if (args.Count == 0) { return; } var cmdName = args[0]; if (_availableCommands.TryGetValue(cmdName, out var conCmd)) // command registered { if (session != null) // remote client { if (_groupController.CanCommand(session, cmdName)) // client has permission { args.RemoveAt(0); conCmd.Execute(this, session, args.ToArray()); } else { SendText(session, $"Unknown command: '{cmdName}'"); } } else // system console { args.RemoveAt(0); conCmd.Execute(this, null, args.ToArray()); } } else { SendText(session, $"Unknown command: '{cmdName}'"); } } catch (Exception e) { _logMan.GetSawmill(SawmillName).Warning($"{FormatPlayerString(session)}: ExecuteError - {command}:\n{e}"); SendText(session, $"There was an error while executing the command: {e}"); } }
/// <summary> /// Processes commands (chat messages starting with /) /// </summary> /// <param name="text">Text content.</param> /// <param name="name">Player name that sent the chat text.</param> /// <param name="channel">Channel message was recieved on.</param> /// <param name="client">Client that sent the command.</param> private void ProcessCommand(string text, string name, ChatChannel channel, int?entityId, IClient client) { List <string> args = new List <string>(); CommandParsing.ParseArguments(text.Substring(1), args); // Parse, but cut out the first character (/). if (args.Count <= 0) { return; } string command = args[0]; if (!_commands.ContainsKey(command)) { return; // TODO: Bitch at user when the rest of this file isn't cancer and you can actually send things to individual people. } _commands[command].Execute(client, args.ToArray()); }
private void ProcessEmote(string text, string name, ChatChannel channel, int?entityId, INetChannel client) { if (entityId == null) { return; //No emotes from non-entities! } var args = new List <string>(); CommandParsing.ParseArguments(text, args); if (_emotes.ContainsKey(args[0])) { // todo make a user-only channel that only the sender can see i.e. for emotes and game feedback ('you put the coins in the jar' or whatever) var otherText = String.Format(_emotes[args[0]].OtherText, name, "his"); //todo pronouns, gender SendChatMessage(ChatChannel.Emote, otherText, name, entityId); } else { //todo Bitch at the user } }
private void ProcessEmote(string text, string name, ChatChannel channel, int?entityId, NetConnection client) { if (entityId == null) { return; //No emotes from non-entities! } var args = new List <string>(); CommandParsing.ParseArguments(text, args); if (_emotes.ContainsKey(args[0])) { var userText = String.Format(_emotes[args[0]].SelfText, name); //todo user-only channel var otherText = String.Format(_emotes[args[0]].OtherText, name, "his"); //todo pronouns, gender SendChatMessage(ChatChannel.Emote, otherText, name, entityId); } else { //todo Bitch at the user } }
/// <inheritdoc /> public override void ExecuteCommand(ICommonSession?session, string command) { if (string.IsNullOrWhiteSpace(command)) { return; } // echo the command locally WriteLine(null, "> " + command); //Commands are processed locally and then sent to the server to be processed there again. var args = new List <string>(); CommandParsing.ParseArguments(command, args); var commandName = args[0]; if (AvailableCommands.ContainsKey(commandName)) { var playerManager = IoCManager.Resolve <IPlayerManager>(); #if !DEBUG if (!_conGroup.CanCommand(commandName) && playerManager.LocalPlayer?.Session.Status > SessionStatus.Connecting) { WriteError(null, $"Insufficient perms for command: {commandName}"); return; } #endif var command1 = AvailableCommands[commandName]; args.RemoveAt(0); var shell = new ConsoleShell(this, null); var cmdArgs = args.ToArray(); AnyCommandExecuted?.Invoke(shell, commandName, command, cmdArgs); command1.Execute(shell, command, cmdArgs); } else { WriteError(null, "Unknown command: " + commandName); } }
/// <summary> /// Processes commands (chat messages starting with /) /// </summary> /// <param name="text">Text content.</param> /// <param name="name">Player name that sent the chat text.</param> /// <param name="channel">Channel message was received on.</param> /// <param name="client">Client that sent the command.</param> private void ProcessCommand(string text, string name, ChatChannel channel, int?entityId, INetChannel client) { List <string> args = new List <string>(); CommandParsing.ParseArguments(text.Substring(1), args); // Parse, but cut out the first character (/). if (args.Count <= 0) { return; } string command = args[0]; if (!_commands.ContainsKey(command)) { string message = string.Format("Command '{0}' not found.", command); SendPrivateMessage(client, ChatChannel.Default, message, "Server", null); return; } _commands[command].Execute(this, client, args.ToArray()); }
/// <summary> /// Processes commands (chat messages starting with /) /// </summary> /// <param name="text">input text</param> public void ProcessCommand(string text) { if (string.IsNullOrWhiteSpace(text)) { return; } // echo the command locally AddLine("> " + text, Color.Lime); //Commands are processed locally and then sent to the server to be processed there again. var args = new List <string>(); CommandParsing.ParseArguments(text, args); var commandname = args[0]; var forward = true; if (_commands.ContainsKey(commandname)) { var command = _commands[commandname]; args.RemoveAt(0); forward = command.Execute(this, args.ToArray()); } else if (!_network.IsConnected) { AddLine("Unknown command: " + commandname, Color.Red); return; } if (forward) { SendServerConsoleCommand(text); } }
/// <summary> /// Processes commands (chat messages starting with /) /// </summary> /// <param name="text">input text</param> private void ProcessCommand(string text) { //Commands are processed locally and then sent to the server to be processed there again. var args = new List <string>(); CommandParsing.ParseArguments(text, args); string command = args[0]; //Entity player; //var entMgr = IoCManager.Resolve<IEntityManager>(); //var plrMgr = IoCManager.Resolve<IPlayerManager>(); //player = plrMgr.ControlledEntity; //IoCManager.Resolve<INetworkManager>(). switch (command) { case "cls": components.Clear(); last_y = 0; //this.scrollbarH.Value = 0; this.scrollbarV.Value = 0; break; case "quit": Environment.Exit(0); break; case "addparticles": //This is only clientside. if (args.Count >= 3) { Entity target = null; if (args[1].ToLowerInvariant() == "player") { var plrMgr = IoCManager.Resolve <IPlayerManager>(); if (plrMgr != null) { if (plrMgr.ControlledEntity != null) { target = plrMgr.ControlledEntity; } } } else { var entMgr = IoCManager.Resolve <IEntityManagerContainer>(); if (entMgr != null) { int entUid = int.Parse(args[1]); target = entMgr.EntityManager.GetEntity(entUid); } } if (target != null) { if (!target.HasComponent(ComponentFamily.Particles)) { var entMgr = IoCManager.Resolve <IEntityManagerContainer>(); var compo = (IParticleSystemComponent)entMgr.EntityManager.ComponentFactory.GetComponent("ParticleSystemComponent"); target.AddComponent(ComponentFamily.Particles, compo); } else { var entMgr = IoCManager.Resolve <IEntityManagerContainer>(); var compo = (IParticleSystemComponent)entMgr.EntityManager.ComponentFactory.GetComponent("ParticleSystemComponent"); target.AddComponent(ComponentFamily.Particles, compo); } } } SendServerConsoleCommand(text); //Forward to server. break; case "removeparticles": if (args.Count >= 3) { Entity target = null; if (args[1].ToLowerInvariant() == "player") { var plrMgr = IoCManager.Resolve <IPlayerManager>(); if (plrMgr != null) { if (plrMgr.ControlledEntity != null) { target = plrMgr.ControlledEntity; } } } else { var entMgr = IoCManager.Resolve <IEntityManagerContainer>(); if (entMgr != null) { int entUid = int.Parse(args[1]); target = entMgr.EntityManager.GetEntity(entUid); } } if (target != null) { if (target.HasComponent(ComponentFamily.Particles)) { IParticleSystemComponent compo = (IParticleSystemComponent)target.GetComponent(ComponentFamily.Particles); compo.RemoveParticleSystem(args[2]); } } } SendServerConsoleCommand(text); //Forward to server. break; case "sendchat": if (args.Count < 2) { return; } INetworkManager NetworkManager = IoCManager.Resolve <INetworkManager>(); NetOutgoingMessage message = NetworkManager.CreateMessage(); message.Write((byte)NetMessage.ChatMessage); message.Write((byte)ChatChannel.Player); message.Write(args[1]); NetworkManager.SendMessage(message, NetDeliveryMethod.ReliableUnordered); break; // To debug console scrolling and stuff. case "fill": SFML.Graphics.Color[] colors = { SFML.Graphics.Color.Green, SFML.Graphics.Color.Blue, SFML.Graphics.Color.Red }; Random random = new Random(); for (int x = 0; x < 50; x++) { AddLine("filling...", colors[random.Next(0, colors.Length)]); } break; default: SendServerConsoleCommand(text); //Forward to server. break; } }
/// <summary> /// Processes commands (chat messages starting with /) /// </summary> /// <param name="text">input text</param> private void ProcessCommand(string text) { //Commands are processed locally and then sent to the server to be processed there again. var args = new List<string>(); CommandParsing.ParseArguments(text, args); string command = args[0]; //Entity player; //var entMgr = IoCManager.Resolve<IEntityManager>(); //var plrMgr = IoCManager.Resolve<IPlayerManager>(); //player = plrMgr.ControlledEntity; //IoCManager.Resolve<INetworkManager>(). switch (command) { case "cls": lines.Clear(); components.Clear(); last_y = 0; //this.scrollbarH.Value = 0; this.scrollbarV.Value = 0; break; case "quit": Environment.Exit(0); break; case "addparticles": //This is only clientside. if (args.Count >= 3) { Entity target = null; if (args[1].ToLowerInvariant() == "player") { var plrMgr = IoCManager.Resolve<IPlayerManager>(); if (plrMgr != null) if (plrMgr.ControlledEntity != null) target = plrMgr.ControlledEntity; } else { var entMgr = IoCManager.Resolve<IEntityManagerContainer>(); if (entMgr != null) { int entUid = int.Parse(args[1]); target = entMgr.EntityManager.GetEntity(entUid); } } if (target != null) { if (!target.HasComponent(ComponentFamily.Particles)) { var entMgr = IoCManager.Resolve<IEntityManagerContainer>(); var compo = (IParticleSystemComponent)entMgr.EntityManager.ComponentFactory.GetComponent("ParticleSystemComponent"); target.AddComponent(ComponentFamily.Particles, compo); } else { var entMgr = IoCManager.Resolve<IEntityManagerContainer>(); var compo = (IParticleSystemComponent)entMgr.EntityManager.ComponentFactory.GetComponent("ParticleSystemComponent"); target.AddComponent(ComponentFamily.Particles, compo); } } } SendServerConsoleCommand(text); //Forward to server. break; case "removeparticles": if (args.Count >= 3) { Entity target = null; if (args[1].ToLowerInvariant() == "player") { var plrMgr = IoCManager.Resolve<IPlayerManager>(); if (plrMgr != null) if (plrMgr.ControlledEntity != null) target = plrMgr.ControlledEntity; } else { var entMgr = IoCManager.Resolve<IEntityManagerContainer>(); if (entMgr != null) { int entUid = int.Parse(args[1]); target = entMgr.EntityManager.GetEntity(entUid); } } if (target != null) { if (target.HasComponent(ComponentFamily.Particles)) { IParticleSystemComponent compo = (IParticleSystemComponent)target.GetComponent(ComponentFamily.Particles); compo.RemoveParticleSystem(args[2]); } } } SendServerConsoleCommand(text); //Forward to server. break; default: SendServerConsoleCommand(text); //Forward to server. break; } }
public void ProcessCommand(string text, NetConnection sender) { var args = new List <string>(); CommandParsing.ParseArguments(text, args); string command = args[0]; Vector2 position; Entity player; var playerMgr = IoCManager.Resolve <IPlayerManager>(); player = playerMgr.GetSessionByConnection(sender).attachedEntity; var map = IoCManager.Resolve <IMapManager>(); switch (command) { case "addparticles": if (args.Count >= 3) { var _serverMain = IoCManager.Resolve <ISS14Server>(); Entity target = null; if (args[1].ToLowerInvariant() == "player") { target = player; } else { int entUid = int.Parse(args[1]); target = _serverMain.EntityManager.GetEntity(entUid); } if (target != null) { if (target.HasComponent(ComponentFamily.Particles)) { IParticleSystemComponent compo = (IParticleSystemComponent)target.GetComponent(ComponentFamily.Particles); compo.AddParticleSystem(args[2], true); } else { var compo = (IParticleSystemComponent)_serverMain.EntityManager.ComponentFactory.GetComponent("ParticleSystemComponent"); target.AddComponent(ComponentFamily.Particles, compo); compo.AddParticleSystem(args[2], true); //Can't find a way to add clientside compo from here. } } } break; case "removeparticles": if (args.Count >= 3) { var _serverMain = IoCManager.Resolve <ISS14Server>(); Entity target = null; if (args[1].ToLowerInvariant() == "player") { target = player; } else { int entUid = int.Parse(args[1]); target = _serverMain.EntityManager.GetEntity(entUid); } if (target != null) { if (target.HasComponent(ComponentFamily.Particles)) { IParticleSystemComponent compo = (IParticleSystemComponent)target.GetComponent(ComponentFamily.Particles); compo.RemoveParticleSystem(args[2]); } } } break; //case "addgas": // if (args.Count > 1 && Convert.ToDouble(args[1]) > 0) // { // if (player != null) // { // double amount = Convert.ToDouble(args[1]); // var t = // map.GetFloorAt( // player.GetComponent<ITransformComponent>(ComponentFamily.Transform).Position) as // Tile; // if (t != null) // t.GasCell.AddGas((float) amount, GasType.Toxin); // SendConsoleReply(amount.ToString() + " Gas added.", sender); // } // } // break; //case "heatgas": // if (args.Count > 1 && Convert.ToDouble(args[1]) > 0) // { // if (player != null) // { // double amount = Convert.ToDouble(args[1]); // var t = // map.GetFloorAt( // player.GetComponent<ITransformComponent>(ComponentFamily.Transform).Position) as // Tile; // if (t != null) // t.GasCell.AddGas((float) amount, GasType.Toxin); // SendConsoleReply(amount.ToString() + " Gas added.", sender); // } // } // break; //case "atmosreport": // IoCManager.Resolve<IAtmosManager>().TotalAtmosReport(); // break; //case "tpvreport": // Reports on temp / pressure // if (player != null) // { // var ti = // (Tile) // map.GetFloorAt(player.GetComponent<ITransformComponent>(ComponentFamily.Transform).Position); // if (ti == null) // break; // GasCell ce = ti.gasCell; // SendConsoleReply("T/P/V: " + ce.GasMixture.Temperature.ToString() + " / " + ce.GasMixture.Pressure.ToString() + " / " + ce.GasVelocity.ToString(), sender); // //var chatMgr = IoCManager.Resolve<IChatManager>(); // //chatMgr.SendChatMessage(ChatChannel.Default, // // "T/P/V: " + ce.GasMixture.Temperature.ToString() + " / " + // // ce.GasMixture.Pressure.ToString() + " / " + ce.GasVelocity.ToString(), // // "TempCheck", // // 0); // } // break; //case "gasreport": // if (player != null) // { // var tile = map.GetFloorAt(player.GetComponent<ITransformComponent>(ComponentFamily.Transform).Position) as Tile; // if (tile == null) // break; // GasCell c = tile.gasCell; // for (int i = 0; i < c.GasMixture.gasses.Length; i++) // { // SendConsoleReply(((GasType) i).ToString() + ": " +c.GasMixture.gasses[i].ToString(CultureInfo.InvariantCulture) + " m", sender); // //var chatMgr = IoCManager.Resolve<IChatManager>(); // //chatMgr.SendChatMessage(ChatChannel.Default, // // ((GasType) i).ToString() + ": " + // // c.GasMixture.gasses[i].ToString(CultureInfo.InvariantCulture) + " m", // // "GasReport", 0); // } // } // break; case "everyonesondrugs": foreach (IPlayerSession playerfordrugs in IoCManager.Resolve <IPlayerManager>().GetAllPlayers()) { playerfordrugs.AddPostProcessingEffect(PostProcessingEffectType.Acid, 60); SendConsoleReply("Okay then.", sender); } break; default: string message = "Command '" + command + "' not recognized."; SendConsoleReply(message, sender); break; } }