internal void OnPlayerCommand(PlayerCommandEvent eventdata) { Guard.Argument(eventdata, nameof(eventdata)).NotNull(); eventdata.Cancelled = true; this.ExecuteCommand(eventdata); }
public async Task OnCommand(PlayerCommandEvent e) { const string prefix = "set "; if (e.Raw.StartsWith(prefix)) { await e.Player.CallBrowserAsync("setTitle", e.Raw.Substring(prefix.Length)); } }
private object IOnPlayerCommand(PlayerCommandEvent e) { if (e?.Player == null || e.Command == null) { return(null); } var str = e.Command; if (str.Length == 0) { return(null); } if (str[0] != '/') { return(null); } // Is this a covalence command? var livePlayer = covalence.PlayerManager.GetOnlinePlayer(e.PlayerId.ToString()); if (covalence.CommandSystem.HandleChatMessage(livePlayer, str)) { return(true); } // Get the command string var command = str.Substring(1); // Parse it string cmd; string[] args; ParseChatCommand(command, out cmd, out args); if (cmd == null) { return(null); } // Handle it if (!cmdlib.HandleChatCommand(e.Player, cmd, args)) { return(null); } Interface.CallDeprecatedHook("OnPlayerCommand", "OnChatCommand", new DateTime(2016, 5, 19), e.Player, cmd, args); Interface.CallHook("OnChatCommand", e.Player, cmd, args); // Handled return(true); }
private object IOnChatCommand(PlayerCommandEvent e) { if (e?.Player == null || e.Command == null) { return(null); } var str = e.Command; if (str.Length == 0) { return(null); } if (str[0] != '/') { return(null); } // Is this a covalence command? var iplayer = Covalence.PlayerManager.GetConnectedPlayer(e.PlayerId.ToString()); if (Covalence.CommandSystem.HandleChatMessage(iplayer, str)) { return(true); } // Get the command string var command = str.Substring(1); // Parse it string cmd; string[] args; ParseChatCommand(command, out cmd, out args); if (cmd == null) { return(null); } Interface.Call("OnChatCommand", e.Player, cmd, args); // Handle it if (!cmdlib.HandleChatCommand(e.Player, cmd, args)) { return(null); } // Handled return(true); }
public override void onPlayerCommand(PlayerCommandEvent Event) { int player = ((Player)Event.Sender).whoAmi; string command = Event.Message; string[] split = command.Split(' '); split[0] = split[0].ToLower(); var sender = Event.Sender; if (split.Length > 1) { split[1] = split[1].ToLower(); } if (split[0] == "/region") { if (split[1] == "define") { Event.Cancelled = true; if (!PermissionManager.HasPermission(player, "terraguard.region.define")) { sender.sendMessage("You don't have enough permissions!"); return; } if (split.Length < 4) { sender.sendMessage("USAGE: /region define [name] [members]"); return; } if (RegionExists(split[2])) { sender.sendMessage("A region with this name already exists!"); return; } if (!SelectionMade(player)) { sender.sendMessage("You haven't made a selection!"); return; } var members = new string[split.Length - 3]; Array.Copy(split, 3, members, 0, split.Length - 3); var memb = String.Join(" ", members); Regions.Add(new Region(split[2], memb, GetPos1(player), GetPos2(player))); sender.sendMessage("Created region " + split[2]); sender.sendMessage("Members: " + memb); SaveRegions(); return; } } }
private object IOnChatCommand(PlayerCommandEvent evt) { if (evt?.Player == null || evt.Command == null) { return(null); } var message = evt.Command; if (message.Length == 0) { return(null); } if (message[0] != '/') { return(null); } // Is this a covalence command? var iplayer = Covalence.PlayerManager.FindPlayer(evt.PlayerId.ToString()); if (Covalence.CommandSystem.HandleChatMessage(iplayer, message)) { return(true); } // Get the command string var command = message.Substring(1); // Parse it string cmd; string[] args; ParseChatCommand(command, out cmd, out args); if (cmd == null) { return(null); } Interface.Call("OnChatCommand", evt.Player, cmd, args); // Handle it return(cmdlib.HandleChatCommand(evt.Player, cmd, args) ? true : (object)null); }
private object IOnPlayerCommand(PlayerCommandEvent e) { if (e?.Player == null || e.Command == null) { return(null); } var str = e.Command; if (str.Length == 0) { return(null); } if (str[0] != '/') { return(null); } // Get the command string var command = str.Substring(1); // Parse it string cmd; string[] args; ParseChatCommand(command, out cmd, out args); if (cmd == null) { return(null); } Interface.CallHook("OnPlayerCommand", e.Player, cmd, args); // Handle it if (!cmdlib.HandleChatCommand(e.Player, cmd, args)) { return(null); } // Handled return(true); }
private object IOnPlayerCommand(PlayerCommandEvent evt) { // Ignore the server player if (evt.Sender.Equals(CodeHatch.Engine.Networking.Server.ServerPlayer)) { return(null); } // Call game-specific and universal hooks object hookSpecific = Interface.Call("OnPlayerCommand", evt); object hookUniversal = Interface.Call("OnPlayerCommand", evt.Sender.IPlayer, evt.Label, evt.CommandArgs); if (hookSpecific != null || hookUniversal != null) { // Cancel chat command event evt.SetCancelled(); return(true); } return(null); }
public virtual void onPlayerCommand(PlayerCommandEvent Event) { }
private object IOnPlayerCommand(PlayerCommandEvent e) { if (e?.Player == null || e.Command == null) return null; var str = e.Command; if (str.Length == 0) return null; if (str[0] != '/') return null; // Get the message var message = str.Substring(1); // Parse it string cmd; string[] args; ParseChatCommand(message, out cmd, out args); if (cmd == null) return null; // handle it if (!cmdlib.HandleChatCommand(e.Player, cmd, args)) return null; // Handled return true; }
private object IOnChatCommand(PlayerCommandEvent e) { if (e?.Player == null || e.Command == null) return null; var str = e.Command; if (str.Length == 0) return null; if (str[0] != '/') return null; // Is this a covalence command? var livePlayer = covalence.PlayerManager.GetOnlinePlayer(e.PlayerId.ToString()); if (covalence.CommandSystem.HandleChatMessage(livePlayer, str)) return true; // Get the command string var command = str.Substring(1); // Parse it string cmd; string[] args; ParseChatCommand(command, out cmd, out args); if (cmd == null) return null; Interface.Call("OnChatCommand", e.Player, cmd, args); // Handle it if (!cmdlib.HandleChatCommand(e.Player, cmd, args)) return null; // Handled return true; }
public override void onPlayerCommand(PlayerCommandEvent Event) { int player = ((Player)Event.Sender).whoAmi; string command = Event.Message; string[] split = command.Split(' '); split[0] = split[0].ToLower(); var sender = Event.Sender; if (split[0] == "//pos1" || split[0] == "//p1") { Event.Cancelled = true; if (!PermissionManager.HasPermission(player, "terraedit.selection")) { sender.sendMessage("You don't have enough permissions!"); return; } if (!Waiting1.ContainsKey(player)) { Waiting1.Add(player, true); } if (!Waiting2.ContainsKey(player)) { Waiting2.Add(player, false); } Waiting1[player] = true; Waiting2[player] = false; sender.sendMessage("Waiting for block place/destroy."); return; } if (split[0] == "//pos2" || split[0] == "//p2") { Event.Cancelled = true; if (!PermissionManager.HasPermission(player, "terraedit.selection")) { sender.sendMessage("You don't have enough permissions!"); return; } if (!Waiting1.ContainsKey(player)) { Waiting1.Add(player, false); } if (!Waiting2.ContainsKey(player)) { Waiting2.Add(player, true); } Waiting2[player] = true; Waiting1[player] = false; sender.sendMessage("Waiting for block place/destroy."); return; } if (split[0] == "//set") { Event.Cancelled = true; if (!PermissionManager.HasPermission(player, "terraedit.set")) { sender.sendMessage("You don't have enough permissions!"); return; } if (split.Length < 2) { sender.sendMessage("USAGE: //set [block]"); return; } if (!SelectionMade(player)) { sender.sendMessage("You haven't made a selection!"); return; } int id; if (!Int32.TryParse(split[1], out id)) { id = TileNames.FindTileByName(split[1]); if (id == -2) { sender.sendMessage("Invalid block name!"); return; } } if (id < -1 || id > 79) { sender.sendMessage("Invalid block ID!"); return; } //var tile = new Tile {type = Byte.Parse(split[1])}; var action = new Action(); int highX = Pos1[player].X > Pos2[player].X ? (int)Pos1[player].X : (int)Pos2[player].X; int highY = Pos1[player].Y > Pos2[player].Y ? (int)Pos1[player].Y : (int)Pos2[player].Y; int lowX = Pos1[player].X < Pos2[player].X ? (int)Pos1[player].X : (int)Pos2[player].X; int lowY = Pos1[player].Y < Pos2[player].Y ? (int)Pos1[player].Y : (int)Pos2[player].Y; for (int i = lowX; i <= highX; i++) { for (int j = lowY; j <= highY; j++) { action.SetBlock(i, j, id); } } int c = action.Do(); if (!Actions.ContainsKey(player)) { Actions.Add(player, new List <Action>()); } if (Actions[player].Count > 0) { Actions[player].Insert(0, action); } else { Actions[player].Add(action); } sender.sendMessage(c + " blocks modified."); return; } if (split[0] == "//disc") { Event.Cancelled = true; if (!PermissionManager.HasPermission(player, "terraedit.disc")) { sender.sendMessage("You don't have enough permissions!"); return; } if (split.Length < 3) { sender.sendMessage("USAGE: //disc [radius] [block]"); return; } if (!Pos1.ContainsKey(player) || Pos1[player] == null) { sender.sendMessage("You must set position 1 as the circle center!"); return; } int radius; if (!Int32.TryParse(split[1], out radius)) { sender.sendMessage("Invalid radius!"); return; } if (radius < 1) { sender.sendMessage("Radius must be higher than 0!"); return; } int id; if (!Int32.TryParse(split[2], out id)) { id = TileNames.FindTileByName(split[2]); if (id == -2) { sender.sendMessage("Invalid block name!"); return; } } if (id < -1 || id > 79) { sender.sendMessage("Invalid block ID!"); return; } var action = new Action(); int px = Convert.ToInt32(Pos1[player].X); int py = Convert.ToInt32(Pos1[player].Y); for (int i = px - radius; i <= px + radius; i++) { for (int j = py - radius; j <= py + radius; j++) { if ((px - i) * (px - i) + (py - j) * (py - j) < radius * radius) { action.SetBlock(i, j, id); } } } int c = action.Do(); if (!Actions.ContainsKey(player)) { Actions.Add(player, new List <Action>()); } if (Actions[player].Count > 0) { Actions[player].Insert(0, action); } else { Actions[player].Add(action); } sender.sendMessage(c + " blocks modified."); return; } if (split[0] == "//replace") { Event.Cancelled = true; if (!PermissionManager.HasPermission(player, "terraedit.replace")) { sender.sendMessage("You don't have enough permissions!"); return; } if (split.Length < 3) { sender.sendMessage("USAGE: //replace [from] [to]"); return; } if (!SelectionMade(player)) { sender.sendMessage("You haven't made a selection!"); return; } int from; if (!Int32.TryParse(split[1], out from)) { from = TileNames.FindTileByName(split[1]); if (from == -2) { sender.sendMessage("Invalid block name!"); return; } } if (from < -1 || from > 79) { sender.sendMessage("Invalid block ID!"); return; } int to; if (!Int32.TryParse(split[2], out to)) { to = TileNames.FindTileByName(split[2]); if (to == -2) { sender.sendMessage("Invalid block name!"); return; } } if (to < -1 || to > 79) { sender.sendMessage("Invalid block ID!"); return; } var action = new Action(); int highX = Pos1[player].X > Pos2[player].X ? (int)Pos1[player].X : (int)Pos2[player].X; int highY = Pos1[player].Y > Pos2[player].Y ? (int)Pos1[player].Y : (int)Pos2[player].Y; int lowX = Pos1[player].X < Pos2[player].X ? (int)Pos1[player].X : (int)Pos2[player].X; int lowY = Pos1[player].Y < Pos2[player].Y ? (int)Pos1[player].Y : (int)Pos2[player].Y; for (int i = lowX; i <= highX; i++) { for (int j = lowY; j <= highY; j++) { if (Main.tile.At(i, j).Type == from) { action.SetBlock(i, j, to); } } } int c = action.Do(); if (!Actions.ContainsKey(player)) { Actions.Add(player, new List <Action>()); } if (Actions[player].Count > 0) { Actions[player].Insert(0, action); } else { Actions[player].Add(action); } sender.sendMessage(c + " blocks modified."); return; } if (split[0] == "//undo") { Event.Cancelled = true; if (!PermissionManager.HasPermission(player, "terraedit.undo")) { sender.sendMessage("You don't have enough permissions!"); return; } if (Actions[player].Count == 0) { sender.sendMessage("Nothing to undo!"); return; } foreach (KeyValuePair <Vector2, ActionBlock> kvp in Actions[player].First().changedBlocks) { int X = Convert.ToInt32(kvp.Key.X); int Y = Convert.ToInt32(kvp.Key.Y); //World world = Program.server.getWorld(); if (kvp.Value.StartType == -1) { Main.tile.At(X, Y).SetActive(false); NetMessage.SendTileSquare(-1, X, Y, 1); } else { /*WorldGen.KillTile(X, Y, world, false, false, true); * WorldGen.PlaceTile(X, Y, world, kvp.Value.StartType, false, true);*/ Main.tile.At(X, Y).SetActive(true); Main.tile.At(X, Y).SetType((byte)kvp.Value.StartType); NetMessage.SendTileSquare(-1, X, Y, 1); } } Actions[player].Remove(Actions[player].First()); sender.sendMessage("Last action undone"); return; } return; }
public void onCommand(PlayerCommandEvent eventargs) { string command = eventargs.getCommand(); if (Command.all.Find(command) != null || isEasterEgg(command)) { Player p = new Player(eventargs.getPlayer()); string message = ""; if (eventargs.getArgs().size() != 0) { message = eventargs.getOrginalMessage(); message = message.Substring(message.IndexOf(' ') + 1); } HandleCommand(command, message, p); eventargs.setCancel(true); return; } }
internal async void ExecuteCommand(PlayerCommandEvent eventdata) { var player = eventdata.Player; ICommand?command = null; try { // Unable to find specific command, return list of possible commands. if (this.TryGetCommandFromArgumentText( eventdata.CommandText.Substring(1), true, out var potentialCommands, out var groupName, out var remainingArgumentText) == false) { var accessibleCommands = await this.FilterCommandWithoutPermissionAsync(player, potentialCommands).ConfigureAwait(false); this.eventAggregator.Publish( new UnknownCommandEvent( player, eventdata.CommandText, accessibleCommands.ToImmutableDictionary(), groupName, remainingArgumentText)); return; } command = potentialCommands.Values.First(); // Do not try to map arguments if the player can not execute the command at all. if (await command.CanExecuteCommandAsync(player).ConfigureAwait(false) == false) { this.eventAggregator.Publish( new CommandExecutedEvent( player, CommandResult.Failed(CommandExecutionStatus.NoPermission), null, command)); return; } // Apply current player to context of mapping for certain type conversions. void ApplyContext(IMappingOperationOptions options) { options.Items[CommandConstants.CommandExecutorKey] = player; } string[] argumentParts = this.SplitArgumentStringToArgumentList(remainingArgumentText, command.Parameters.Count - 1); object[] argumentValues = this.MapArgumentListToTypes( argumentParts, command.Parameters.Skip(1).Select(x => x.Type) .ToList(), ApplyContext); var result = await command.TryExecuteAsync(player, argumentValues, true).ConfigureAwait(false); this.eventAggregator.Publish(new CommandExecutedEvent(player, result, null, command)); } catch (CommandArgumentMapException e) when(command != null) { var parameter = command.Parameters[e.ParameterIndex + 1]; string?mappingMessage = null; if (e.InnerException != null && e.InnerException.InnerException != null) { mappingMessage = e.InnerException.InnerException.Message; } this.eventAggregator.Publish( new CommandExecutedEvent( player, CommandResult.Failed(CommandExecutionStatus.ArgumentTypeMismatch, mappingMessage ?? string.Empty), parameter.Name, command)); } catch (Exception e) { this.logger.LogWarning(e, $"Command failed to execute. ({player}: \"{eventdata.CommandText}\"."); this.eventAggregator.Publish( new CommandExecutedEvent( player, CommandResult.Failed(CommandExecutionStatus.Exception, e.Message), null, command)); } }
public override void onPlayerCommand(PlayerCommandEvent Event) { string[] split = Event.Message.Split(' '); split[0] = split[0].ToLower().Replace("/", ""); string command = split[0]; ISender sender = Event.Sender; if (command == "kick") { Event.Cancelled = true; if (!PermissionManager.HasPermission(sender, "badmin.kick")) { sender.sendMessage("You don't have enough permissions!"); return; } if (split.Length < 2) { sender.sendMessage("USAGE: " + (sender is Player ? "/" : "") + "kick [player] (reason)"); return; } int to = FindPlayerByName(split[1]); if (to == -1) { sender.sendMessage("Couldn't find the player!"); } string name = Program.server.PlayerList[to].Name; string message = split.Length > 2 ? split[2] : "No reason provided"; sender.sendMessage("You kicked " + name + ". Reason: " + message); foreach (Player player in Program.server.PlayerList) { player.sendMessage(name + " has been kicked. Reason: " + message); } ((Player)sender).Kick("KICKED: " + message); Console.WriteLine("[bAdmin] " + sender.Name + " kicked " + name + " Reason: " + message); return; } /*if (command == "ban") * { * Event.Cancelled(true); * if (!PermissionManager.HasPermission(sender, "badmin.ban")) * { * sender.SendMessage("You don't have enough permissions!", cError); * return; * } * if (split.Length < 2) * { * sender.SendMessage("USAGE: " + (sender is Player ? "/" : "") + "ban [player] (reason)", cError); * return; * } * int to = FindPlayerByName(split[1]); * if (to == -1) * { * sender.SendMessage("Couldn't find the player!", cError); * } * string message = split.Length > 2 ? split[2] : "No reason provided"; * sender.SendMessage("You banned " + GetPlayerName(to) + ". Reason: " + message, cInfo); * SendAllMessage(GetPlayerName(to) + " has been banned. Reason: " + message, cInfo); * ((Player)sender).Kick("BANNED: " + message); * Console.WriteLine("[bAdmin] " + sender.GetName() + " banned " + GetPlayerName(to) + " Reason: " + message); * return; * }*/ }