private void ConsoleGroup(ConsoleSystem.Arg arg) { if (!PermissionsLoaded(arg)) return; if (!IsAdmin(arg.Player())) return; if (!arg.HasArgs(2)) { Reply(arg.connection, "CommandUsageGroup"); return; } var mode = arg.GetString(0); var name = arg.GetString(1); if (mode.Equals("add")) { if (permission.GroupExists(name)) { Reply(arg.connection, "GroupAlreadyExists", name); return; } permission.CreateGroup(name, arg.GetString(2), arg.GetInt(3)); Reply(arg.connection, "GroupCreated", name); } else if (mode.Equals("remove")) { if (!permission.GroupExists(name)) { Reply(arg.connection, "GroupNotFound", name); return; } permission.RemoveGroup(name); Reply(arg.connection, "GroupDeleted", name); } else if (mode.Equals("set")) { if (!permission.GroupExists(name)) { Reply(arg.connection, "GroupNotFound", name); return; } permission.SetGroupTitle(name, arg.GetString(2)); permission.SetGroupRank(name, arg.GetInt(3)); Reply(arg.connection, "GroupChanged", name); } else if (mode.Equals("parent")) { if (!permission.GroupExists(name)) { Reply(arg.connection, "GroupNotFound", name); return; } var parent = arg.GetString(2); if (!string.IsNullOrEmpty(parent) && !permission.GroupExists(parent)) { Reply(arg.connection, "GroupParentNotFound", parent); return; } if (permission.SetGroupParent(name, parent)) Reply(arg.connection, "GroupParentChanged", name, parent); else Reply(arg.connection, "GroupParentNotChanged", name); } }
private void cmdList(ConsoleSystem.Arg arg) { var sb = new StringBuilder(); var queryTeamOne = from player in playerTeam where player.Value == Team.ONE select player; var queryTeamTwo = from player in playerTeam where player.Value == Team.TWO select player; sb.Append("Team ONE:\n"); sb.Append("KILLS\t\tDEATHS\t\tPLAYER\n"); foreach (var player in queryTeamOne) { var playerID = player.Key; int playerKills = -1; int playerDeaths = -1; if (playerStats.ContainsKey(playerID)) { var stats = playerStats[playerID]; playerKills = stats.kills; playerDeaths = stats.deaths; } var Bplayer = BasePlayer.FindByID(playerID); sb.Append(playerKills.ToString().PadLeft(5)); sb.Append("\t\t"); sb.Append(playerDeaths.ToString().PadLeft(6)); sb.Append("\t\t"); sb.Append(Bplayer.displayName); sb.Append("\n"); } sb.Append("\n"); sb.Append("Team TWO:\n"); sb.Append("KILLS\t\tDEATHS\t\tPLAYER\n"); foreach (var player in queryTeamTwo) { var playerID = player.Key; int playerKills = -1; int playerDeaths = -1; if (playerStats.ContainsKey(playerID)) { var stats = playerStats[playerID]; playerKills = stats.kills; playerDeaths = stats.deaths; } var Bplayer = BasePlayer.FindByID(playerID); sb.Append(playerKills.ToString().PadLeft(5)); sb.Append("\t\t"); sb.Append(playerDeaths.ToString().PadLeft(6)); sb.Append("\t\t"); sb.Append(Bplayer.displayName); sb.Append("\n"); } PrintToConsole(arg.Player(), sb.ToString()); }
private void cmdVersion(ConsoleSystem.Arg arg) { PrintToConsole(arg.Player(), Version.ToString()); }
private object OnRunCommand(ConsoleSystem.Arg arg) { if (arg?.cmd == null) return null; if (arg.cmd.namefull != "chat.say") return null; if (arg.connection != null) { if (arg.Player() == null) return true; var rustCovalence = Libraries.Covalence.RustCovalenceProvider.Instance; var livePlayer = rustCovalence.PlayerManager.GetOnlinePlayer(arg.connection.userid.ToString()); if (rustCovalence.CommandSystem.HandleChatMessage(livePlayer, arg.GetString(0))) return true; } // Get the args var str = arg.GetString(0, "text"); if (str.Length == 0) return null; // Is it a chat command? if (str[0] == '/' || str[0] == '!') { // 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 var player = arg.connection.player as BasePlayer; if (player == null) Interface.Oxide.LogDebug("Player is actually a {0}!", arg.connection.player.GetType()); else if (!cmdlib.HandleChatCommand(player, cmd, args)) ReplyWith(player.net.connection, "UnknownCommand", cmd); // Handled arg.ReplyWith(string.Empty); return true; } // Default behavior return null; }
private void cmdHelp(ConsoleSystem.Arg arg) { var sb = new StringBuilder(); sb.Append("TeamBattlefield Console Commands:\n\n"); sb.Append("tbf.list\t\t\tLists Teams and Disconnect Times of players.\n"); sb.Append("tbf.assign <PartialPlayerName> [one/two/spectator]\t\t\tAssigns player to team.\n"); sb.Append("tbf.purge\t\t\tRemoves players from all teams if they're been disconnected for more than 5 minutes.\n"); sb.Append("tbf.version\t\t\tPrints current version number of plugin.\n"); PrintToConsole(arg.Player(), sb.ToString()); }
void cmdConsoleCount(ConsoleSystem.Arg arg) { if (arg.Player() && !arg.Player().IsAdmin()) { SendReply(arg, "You need to be admin to use that command"); return; } if (arg.Args == null || arg.Args.Length < 2) { SendReply(arg, "cc.count \"Deployable Item Name\" all => all the deployable items"); SendReply(arg, "cc.count \"Deployable Item Name\" world optional:XX => all the items that are not connected to a construction in XX radius (default is 3 meters)"); return; } if (arg.Args[1] != "world" && arg.Args[1] != "all") { SendReply(arg, "cc.count \"Deployable Item Name\" all => all the deployable items"); SendReply(arg, "cc.count \"Deployable Item Name\" world optional:XX => all the items that are not connected to a construction in XX radius (default is 3 meters)"); return; } switch (arg.Args[0].ToLower()) { default: string shortname = arg.Args[0].ToLower(); if (displaynameToShortname.ContainsKey(shortname)) shortname = displaynameToShortname[shortname]; else if (!displaynameToShortname.ContainsValue(shortname)) { SendReply(arg, string.Format("{0} is not a valid item name", arg.Args[0])); return; } Item newItem = ItemManager.CreateByName(shortname, 1); if (newItem == null) { SendReply(arg, "Couldn't find this item, this shouldnt show ever ..."); return; } if (newItem.info.GetComponent<ItemModDeployable>() == null) { SendReply(arg, "This is not a item mod deployable item, this shouldnt show ever ..."); return; } Deployable deployable = newItem.info.GetComponent<ItemModDeployable>().entityPrefab.Get().GetComponent<Deployable>(); if (deployable == null) { SendReply(arg, "This is not a deployable item, this shouldnt show ever ..."); return; } string deployablename = deployable.gameObject.name + ".prefab"; bool shouldForce = (arg.Args[1] == "all") ? true : false; float eraseRadius = 0.5f; if (arg.Args.Length > 2) float.TryParse(arg.Args[2], out eraseRadius); int cleared = 0; foreach (Deployable deployed in UnityEngine.Resources.FindObjectsOfTypeAll<Deployable>()) { var realEntity = deployed.GetComponent<BaseNetworkable>().net; if (realEntity == null) continue; if (deployed.gameObject.name.EndsWith(deployablename)) { if (shouldRemove(deployed, shouldForce, eraseRadius)) { cleared++; } } } SendReply(arg, string.Format("{1}: Found {0} entities that matchs your search", cleared.ToString(), shortname)); break; } }
void cmdConsoleKitClose(ConsoleSystem.Arg arg) { if (arg.connection == null) { SendReply(arg, "You can't use this command from the server console"); return; } DestroyAllGUI(arg.Player()); }
///////////////////////////////////////// // OnRunCommand(ConsoleSystem.Arg arg) // Called when a user executes a command ///////////////////////////////////////// private object OnRunCommand(ConsoleSystem.Arg arg) { if (arg.Player() == null) return null; if (arg.cmd?.name == null) return null; if (arg.cmd.name == "kill" && HasPlayerFlag(arg.Player(), ZoneFlags.NoSuicide)) { SendMessage(arg.Player(), "You are not allowed to suicide here"); return false; } return null; }
// chat.say().Hooks.Chat() public static void Command(ConsoleSystem.Arg arg) { Player player = Server.GetPlayer(arg.Player()); string[] args = arg.ArgsStr.Substring(2, arg.ArgsStr.Length - 3).Replace("\\", "").Split(new string[]{ " " }, StringSplitOptions.None); CommandEvent cmd = new CommandEvent(player, args); if (cmd.cmd == "") return; foreach (KeyValuePair<string, BasePlugin> pl in PluginLoader.GetInstance().Plugins) { ChatCommand[] commands = pl.Value.chatCommands.getChatCommands(cmd.cmd); foreach (ChatCommand chatCmd in commands) { if (chatCmd.callback == null) continue; CommandPermissionEvent permission = new CommandPermissionEvent(player, args, chatCmd); OnCommandPermission.OnNext(permission); if (permission.blocked) { player.Message(permission.Reply); continue; } try { chatCmd.callback(cmd.args, player); } catch (Exception ex) { Logger.LogError(chatCmd.plugin.FormatException(ex)); } } } OnCommand.OnNext(cmd); if (cmd.Reply != "") arg.ReplyWith(cmd.Reply); }
private void ccmdZone(ConsoleSystem.Arg arg) { var player = arg.Player(); if (!hasPermission(player, PermZone)) { SendMessage(player, "You don't have access to this command"); return; } var zoneId = arg.GetString(0); ZoneDefinition zoneDefinition; if (!arg.HasArgs(3) || !ZoneDefinitions.TryGetValue(zoneId, out zoneDefinition)) { SendMessage(player, "Zone Id not found or Too few arguments: zone <zoneid> <arg> <value>"); return; } var args = new string[arg.Args.Length - 1]; Array.Copy(arg.Args, 1, args, 0, args.Length); UpdateZoneDefinition(zoneDefinition, args, player); RefreshZone(zoneId); //SaveData(); //ShowZone(player, zoneId); }
///////////////////////////////////////// // OnPlayerChat(ConsoleSystem.Arg arg) // Called when a user writes something in the chat, doesn't take in count the commands ///////////////////////////////////////// private object OnPlayerChat(ConsoleSystem.Arg arg) { if (arg.Player() == null) return null; if (HasPlayerFlag(arg.Player(), ZoneFlags.NoChat)) { SendMessage(arg.Player(), "You are not allowed to chat here"); return false; } return null; }
private void ChatConsoleCommand(ConsoleSystem.Arg arg) { if (arg.Player() == null) { StringBuilder builder = new StringBuilder(); foreach (string value in arg.Args) { builder.Append(value); builder.Append(" "); } string msg = string.Format("<size=16><color=lime>Server:</color><color=aqua> " + builder.ToString() + "</color></size>"); PrintToChat(msg); msg = ""; return; } else { arg.ReplyWith("<color=red>No permission!</color>"); return; } }
private void ConsoleRevoke(ConsoleSystem.Arg arg) { if (!PermissionsLoaded(arg)) return; if (!IsAdmin(arg.Player())) return; if (!arg.HasArgs(3)) { Reply(arg.connection, "CommandUsageRevoke"); return; } var mode = arg.GetString(0); var name = arg.GetString(1); var perm = arg.GetString(2); if (!permission.PermissionExists(perm)) { Reply(arg.connection, "PermissionNotFound", perm); return; } if (mode.Equals("group")) { if (!permission.GroupExists(name)) { Reply(arg.connection, "GroupNotFound", name); return; } permission.RevokeGroupPermission(name, perm); Reply(arg.connection, "GroupPermissionRevoked", name, perm); } else if (mode.Equals("user")) { var player = FindPlayer(name); if (player == null && !permission.UserIdValid(name)) { Reply(arg.connection, "UserNotFound", name); return; } var userId = name; if (player != null) { userId = player.UserIDString; name = player.displayName; permission.UpdateNickname(userId, name); } permission.RevokeUserPermission(userId, perm); Reply(arg.connection, "UserPermissionRevoked", $"{name} ({userId})", perm); } }
private void ConsoleUserGroup(ConsoleSystem.Arg arg) { if (!PermissionsLoaded(arg)) return; if (!IsAdmin(arg.Player())) return; if (!arg.HasArgs(3)) { Reply(arg.connection, "CommandUsageUserGroup"); return; } var mode = arg.GetString(0); var name = arg.GetString(1); var group = arg.GetString(2); var player = FindPlayer(name); if (player == null && !permission.UserIdValid(name)) { Reply(arg.connection, "UserNotFound", name); return; } var userId = name; if (player != null) { userId = player.UserIDString; name = player.displayName; permission.UpdateNickname(userId, name); name += $"({userId})"; } if (!permission.GroupExists(group)) { Reply(arg.connection, "GroupNotFound", name); return; } if (mode.Equals("add")) { permission.AddUserGroup(userId, group); Reply(arg.connection, "UserAddedToGroup", name, group); } else if (mode.Equals("remove")) { permission.RemoveUserGroup(userId, group); Reply(arg.connection, "UserRemovedFromGroup", name, group); } }
private void cmdUnload(ConsoleSystem.Arg arg) { if (arg.Player() != null && !arg.Player().IsAdmin()) return; // Check arg 1 exists if (!arg.HasArgs()) { arg.ReplyWith("Syntax: oxide.unload *|<pluginname>+"); return; } if (arg.GetString(0).Equals("*")) { Interface.Oxide.UnloadAllPlugins(); return; } foreach (var name in arg.Args) { if (string.IsNullOrEmpty(name)) continue; // Unload Interface.Oxide.UnloadPlugin(name); } }
// chat.say() public static void Chat(ConsoleSystem.Arg arg) { if (arg.ArgsStr.StartsWith("\"/") && !arg.ArgsStr.StartsWith("\"/ ")) { Command(arg); return; } if (!ConVar.Chat.enabled) { arg.ReplyWith("Chat is disabled."); } else { if (arg.ArgsStr == "\"\"") { return; } BasePlayer basePlayer = arg.Player(); if (!basePlayer) { return; } ChatEvent pChat = new ChatEvent(Server.GetPlayer(basePlayer), arg); string str = arg.GetString(0, "text"); if (str.Length > 128) str = str.Substring(0, 128); if (str.Length <= 0) return; if (ConVar.Chat.serverlog) { ServerConsole.PrintColoured(new object[] { ConsoleColor.DarkYellow, basePlayer.displayName + ": ", ConsoleColor.DarkGreen, str }); ConVar.Server.Log("Log.Chat.txt", string.Format("{0}/{1}: {2}\r\n", basePlayer.userID, basePlayer.displayName, str)); Debug.Log(string.Format("[CHAT] {0}: {1}", basePlayer.displayName, str)); } string arg2 = "#5af"; if (basePlayer.IsAdmin()) { arg2 = "#af5"; } if (DeveloperList.IsDeveloper(basePlayer)) { arg2 = "#fa5"; } OnChat.OnNext(pChat); string text2 = string.Format("<color={2}>{0}</color>: {1}", basePlayer.displayName.Replace('<', '[').Replace('>', ']'), pChat.FinalText, arg2); if (pChat.FinalText != "") { Logger.ChatLog(pChat.BroadcastName, pChat.OriginalText); arg.ReplyWith(pChat.Reply); if (ConVar.Server.globalchat) { ConsoleSystem.Broadcast("chat.add", basePlayer.userID, text2, 1); } else { float num = 2500; foreach (Connection current in Net.sv.connections) { if (current.player != null) { float sqrMagnitude = (current.player.transform.position - basePlayer.transform.position).sqrMagnitude; if (sqrMagnitude <= num) { ConsoleSystem.SendClientCommand(current, "chat.add", basePlayer.userID, text2, Mathf.Clamp01(num - sqrMagnitude + 0.2f)); } } } } } } }
private void cmdUserGroup(ConsoleSystem.Arg arg) { if (!PermissionsLoaded(arg)) return; if (arg.Player() != null && !arg.Player().IsAdmin()) return; // Check 3 args exists if (!arg.HasArgs(3)) { arg.ReplyWith("Syntax: oxide.usergroup <add|remove> <username> <groupname>"); return; } var mode = arg.GetString(0); var name = arg.GetString(1); var group = arg.GetString(2); var player = FindPlayer(name); if (player == null && !permission.UserExists(name)) { arg.ReplyWith("User '" + name + "' not found"); return; } var userId = name; if (player != null) { userId = player.userID.ToString(); name = player.displayName; permission.GetUserData(userId).LastSeenNickname = name; } if (!permission.GroupExists(group)) { arg.ReplyWith("Group '" + group + "' doesn't exist"); return; } if (mode.Equals("add")) { permission.AddUserGroup(userId, group); arg.ReplyWith("User '" + name + "' assigned group: " + group); } else if (mode.Equals("remove")) { permission.RemoveUserGroup(userId, group); arg.ReplyWith("User '" + name + "' removed from group: " + group); } }
/// <summary> /// Called from <c>ConVar.Chat.say(ConsoleSystem.Arg)</c> . /// </summary> public static void On_Chat(ConsoleSystem.Arg arg) { if (arg.ArgsStr.StartsWith("\"/") && !arg.ArgsStr.StartsWith("\"/ ")) { On_Command(arg); return; } if (!ConVar.Chat.enabled) { arg.ReplyWith("Chat is disabled."); } else { if (arg.ArgsStr == "\"\"") return; BasePlayer basePlayer = arg.Player(); if (!basePlayer || basePlayer.HasPlayerFlag(BasePlayer.PlayerFlags.ChatMute)) return; string str = arg.GetString(0, "text").Trim(); if (str.Length > 128) str = str.Substring(0, 128); if (str.Length <= 0) return; if (basePlayer.NextChatTime < Single.Epsilon) { basePlayer.NextChatTime = Time.realtimeSinceStartup - 30f; } if (basePlayer.NextChatTime > Time.realtimeSinceStartup) { basePlayer.NextChatTime += 2f; float num = basePlayer.NextChatTime - Time.realtimeSinceStartup; ConsoleNetwork.SendClientCommand(basePlayer.net.connection, "chat.add", new object[] { 0, "You're chatting too fast - try again in " + (num + 0.5f).ToString("0") + " seconds" }); if (num > 120f) { basePlayer.Kick("Chatting too fast"); } return; } var ce = new ChatEvent(Server.GetPlayer(basePlayer), arg); OnNext("On_Chat", ce); if (!ce.AllowFormatting && ce.FinalText.Contains("<")) { if (ce.FinalText.Contains("<size", CompareOptions.IgnoreCase)) return; if (ce.FinalText.Contains("<color", CompareOptions.IgnoreCase)) return; if (ce.FinalText.Contains("<material", CompareOptions.IgnoreCase)) return; if (ce.FinalText.Contains("<quad", CompareOptions.IgnoreCase)) return; if (ce.FinalText.Contains("<b>", CompareOptions.IgnoreCase)) return; if (ce.FinalText.Contains("<i>", CompareOptions.IgnoreCase)) return; } if (ConVar.Chat.serverlog) { ServerConsole.PrintColoured(new object[] { ConsoleColor.DarkYellow, basePlayer.displayName + ": ", ConsoleColor.DarkGreen, str }); ConVar.Server.Log("Log.Chat.txt", string.Format("{0}: {1}\n", basePlayer.userID, basePlayer.displayName, str)); Debug.Log(String.Format("[CHAT] {0}: {1}", basePlayer.displayName, str)); } string colour = "#5af"; if (basePlayer.IsAdmin()) { colour = "#af5"; } if (DeveloperList.IsDeveloper(basePlayer)) { colour = "#fa5"; } basePlayer.NextChatTime = Time.realtimeSinceStartup + 1.5f; var chatEntry = new ConVar.Chat.ChatEntry { Message = ce.FinalText, UserId = basePlayer.userID, Username = basePlayer.displayName, Color = colour, Time = Facepunch.Math.Epoch.Current }; (typeof(ConVar.Chat).GetStaticFieldValue("History") as List<ConVar.Chat.ChatEntry>).Add(chatEntry); Facepunch.RCon.Broadcast(Facepunch.RCon.LogType.Chat, chatEntry); if (ce.FinalText != "") { Logger.ChatLog(ce.BroadcastName, ce.OriginalText); arg.ReplyWith(ce.Reply); if (ConVar.Server.globalchat) { ConsoleNetwork.BroadcastToAllClients("chat.add2", basePlayer.userID, ce.FinalText, ce.BroadcastName, colour, 1); } else { float num = 2500; foreach (BasePlayer current in BasePlayer.activePlayerList) { float sqrMagnitude = (current.transform.position - basePlayer.transform.position).sqrMagnitude; if (sqrMagnitude <= num) { ConsoleNetwork.SendClientCommand(current.net.connection, "chat.add2", basePlayer.userID, ce.FinalText, ce.BroadcastName, colour, Mathf.Clamp01(num - sqrMagnitude + 0.2f)); } } } } } }
void cmdConsoleKitGui(ConsoleSystem.Arg arg) { if (arg.connection == null) { SendReply(arg, "You can't use this command from the server console"); return; } if (!arg.HasArgs()) { SendReply(arg, "You are not allowed to use manually this command"); return; } var player = arg.Player(); var kitname = arg.Args[0].Substring(1, arg.Args[0].Length - 2); TryGiveKit(player, kitname); RefreshKitPanel(player, PlayerGUI[player.userID].guiid, PlayerGUI[player.userID].page); }
public static void On_Command(ConsoleSystem.Arg arg) { Player player = Server.GetPlayer(arg.Player()); string[] args = arg.ArgsStr.Substring(2, arg.ArgsStr.Length - 3).Replace("\\", "").Split(new string[] { " " }, StringSplitOptions.None); var cmd = new CommandEvent(player, args); // TODO: do this part in a different function to be documented if (cmd.Cmd == "") return; foreach (KeyValuePair<string, BasePlugin> pl in PluginLoader.GetInstance().Plugins) { ChatCommand[] commands = ((ChatCommands)pl.Value.GetGlobalObject("Commands")).getChatCommands(cmd.Cmd); foreach (ChatCommand chatCmd in commands) { if (chatCmd.callback != null) { CommandPermissionEvent permission = new CommandPermissionEvent(player, args, chatCmd); OnNext("On_CommandPermission", permission); if (permission.Blocked) { player.Message(permission.Reply); continue; } try { chatCmd.callback(cmd.Args, player); } catch (Exception ex) { Logger.LogError(chatCmd.plugin.FormatException(ex)); } } } } OnNext("On_Command", cmd); if (cmd.Reply != "") arg.ReplyWith(cmd.Reply); }
void cmdConsoleKitShow(ConsoleSystem.Arg arg) { if (arg.connection == null) { SendReply(arg, "You can't use this command from the server console"); return; } if (!arg.HasArgs()) { SendReply(arg, "You are not allowed to use manually this command"); return; } var player = arg.Player(); PLayerGUI playerGUI; if (!PlayerGUI.TryGetValue(player.userID, out playerGUI)) return; RefreshKitPanel(player, playerGUI.guiid, arg.GetInt(0)); }
/// <summary> /// Check if player is admin /// </summary> /// <returns></returns> private static bool IsAdmin(ConsoleSystem.Arg arg) { if (arg.Player() == null || arg.Player().IsAdmin()) return true; arg.ReplyWith("You are not an admin."); return false; }
private void cmdAssign(ConsoleSystem.Arg arg) { var success = true; var sb = new StringBuilder(); var args = arg.Args; if(args.Length != 2) { sb.Append("Format: tbf.assign <PARTIAL_PLAYERNAME> <[\"one\",\"two\",\"spectator\"]>"); } else if(arg.connection.authLevel < 1) { sb.Append("You don't have permission to assign players."); } else { var partialPlayerName = args[0]; var player = FindPlayerByPartialName(partialPlayerName); var newTeamString = args[1].ToLower(); var newTeam = Team.SPECTATOR; switch(newTeamString) { case "one": newTeam = Team.ONE; break; case "two": newTeam = Team.TWO; break; case "spectator": newTeam = Team.SPECTATOR; break; default: sb.Append("Invalid team assignment."); success = false; break; } if (success) { AssignPlayerToTeam(player, newTeam); sb.Append(player.displayName + " has been successfully assigned to team " + newTeamString); } } PrintToConsole(arg.Player(), sb.ToString()); }
private void cmdGroup(ConsoleSystem.Arg arg) { if (!PermissionsLoaded(arg)) return; if (arg.Player() != null && !arg.Player().IsAdmin()) return; // Check 2 args exists if (!arg.HasArgs(2)) { var reply = "Syntax: oxide.group <add|set> <name> [title] [rank]\n"; reply += "Syntax: oxide.group <remove|show> <name>\n"; reply += "Syntax: oxide.group <parent> <name> <parentName>"; arg.ReplyWith(reply); return; } var mode = arg.GetString(0); var name = arg.GetString(1); if (mode.Equals("add")) { if (permission.GroupExists(name)) { arg.ReplyWith("Group '" + name + "' already exist"); return; } permission.CreateGroup(name, arg.GetString(2), arg.GetInt(3)); arg.ReplyWith("Group '" + name + "' created"); } else if (mode.Equals("remove")) { if (!permission.GroupExists(name)) { arg.ReplyWith("Group '" + name + "' doesn't exist"); return; } permission.RemoveGroup(name); arg.ReplyWith("Group '" + name + "' deleted"); } else if (mode.Equals("set")) { if (!permission.GroupExists(name)) { arg.ReplyWith("Group '" + name + "' doesn't exist"); return; } permission.SetGroupTitle(name, arg.GetString(2)); permission.SetGroupRank(name, arg.GetInt(3)); arg.ReplyWith("Group '" + name + "' changed"); } else if (mode.Equals("parent")) { if (!permission.GroupExists(name)) { arg.ReplyWith("Group '" + name + "' doesn't exist"); return; } var parent = arg.GetString(2); if (!string.IsNullOrEmpty(parent) && !permission.GroupExists(parent)) { arg.ReplyWith("Parent group '" + parent + "' doesn't exist"); return; } if (permission.SetGroupParent(name, parent)) arg.ReplyWith("Group '" + name + "' changed"); else arg.ReplyWith("Group '" + name + "' failed to change"); } else if (mode.Equals("show")) { if (!permission.GroupExists(name)) { arg.ReplyWith("Group '" + name + "' doesn't exist"); return; } var result = "Group '" + name + "' permissions:\n"; result += string.Join(",", permission.GetGroupPermissions(name)); arg.ReplyWith(result); } }
private void cmdJoin(ConsoleSystem.Arg arg) { var sb = new StringBuilder(); var args = arg.Args; if(args.Length != 1) { sb.Append("Invalid command syntax. Use \"tbf.join <one/two/spectator>\""); } else if (persistence_mode || arg.connection.authLevel >= 1) { var player = arg.Player(); var playerID = player.userID; var newTeamString = args[0].ToLower(); switch(newTeamString) { case "one": playerTeam[playerID] = Team.ONE; break; case "two": playerTeam[playerID] = Team.TWO; break; case "spectator": playerTeam[playerID] = Team.SPECTATOR; break; default: sb.Append("Invalid team identifier, use only: one, two, or spectator."); break; } } else { sb.Append("You don't have permission to switch teams."); } }
private void cmdPlugins(ConsoleSystem.Arg arg) { if (arg.Player() != null && !arg.Player().IsAdmin()) return; var loaded_plugins = pluginmanager.GetPlugins().Where(pl => !pl.IsCorePlugin).ToArray(); var loaded_plugin_names = new HashSet<string>(loaded_plugins.Select(pl => pl.Name)); var unloaded_plugin_errors = new Dictionary<string, string>(); foreach (var loader in Interface.Oxide.GetPluginLoaders()) { foreach (var name in loader.ScanDirectory(Interface.Oxide.PluginDirectory).Except(loaded_plugin_names)) { string msg; unloaded_plugin_errors[name] = (loader.PluginErrors.TryGetValue(name, out msg)) ? msg : "Unloaded"; } } var total_plugin_count = loaded_plugins.Length + unloaded_plugin_errors.Count; if (total_plugin_count < 1) { arg.ReplyWith("[Oxide] No plugins are currently available"); return; } var output = $"[Oxide] Listing {loaded_plugins.Length + unloaded_plugin_errors.Count} plugins:"; var number = 1; foreach (var plugin in loaded_plugins) output += $"\n {number++:00} \"{plugin.Title}\" ({plugin.Version}) by {plugin.Author}"; foreach (var plugin_name in unloaded_plugin_errors.Keys) output += $"\n {number++:00} {plugin_name} - {unloaded_plugin_errors[plugin_name]}"; arg.ReplyWith(output); }
private void cmdPurge(ConsoleSystem.Arg arg) { int count = KickSleepers(); PrintToConsole(arg.Player(), "Unassigned a total of " + count.ToString() + " players."); }
private void cmdRevoke(ConsoleSystem.Arg arg) { if (!PermissionsLoaded(arg)) return; if (arg.Player() != null && !arg.Player().IsAdmin()) return; // Check 3 args exists if (!arg.HasArgs(3)) { arg.ReplyWith("Syntax: oxide.revoke <group|user> <name|id> <permission>"); return; } var mode = arg.GetString(0); var name = arg.GetString(1); var perm = arg.GetString(2); if (mode.Equals("group")) { if (!permission.GroupExists(name)) { arg.ReplyWith("Group '" + name + "' doesn't exist"); return; } permission.RevokeGroupPermission(name, perm); arg.ReplyWith("Group '" + name + "' revoked permission: " + perm); } else if (mode.Equals("user")) { var player = FindPlayer(name); if (player == null && !permission.UserExists(name)) { arg.ReplyWith("User '" + name + "' not found"); return; } var userId = name; if (player != null) { userId = player.userID.ToString(); name = player.displayName; permission.GetUserData(name).LastSeenNickname = name; } permission.RevokeUserPermission(userId, perm); arg.ReplyWith("User '" + name + "' revoked permission: " + perm); } }
private void cmdConsoleDumpData(ConsoleSystem.Arg arg) { var sb = new StringBuilder(); SaveData(); LoadData(); // Dump Message Header sb.Append("**** Dumping Government Data & Settings ****\n\n"); // Rank List Dump sb.Append("Rank List = ["); foreach (var rank in RankList) { sb.Append(rank + ", "); } sb.Append("]\n\n"); // Permission List Dump sb.Append("Permission List:\n"); foreach(var perm in permissionList) { sb.Append(perm.Key + " = ["); foreach(var rank in perm.Value) { sb.Append(rank + ", "); } sb.Append("]\n"); } sb.Append("\n"); // Governments Data Dump sb.Append("Governments Data:\n\n"); foreach(var gov in govs) { sb.Append("[" + gov.Key + "] " + gov.Value.Name + "\n"); foreach(var member in gov.Value.Members) sb.Append(member.Key + "\t" + member.Value + "\t" + FindPlayerNameByID(member.Key) + "\n"); foreach (var guest in gov.Value.Guests) sb.Append(guest + "\tGUEST\t" + FindPlayerNameByID(guest) + "\n"); foreach (var invited in gov.Value.Inviteds) sb.Append(invited + "\tINVITED\t" + FindPlayerNameByID(invited) + "\n"); { } } sb.Append("\n"); // Lookup Data Dump sb.Append("Lookup Data:\n"); foreach(var pair in lookup) { sb.Append(pair.Key + "\t" + pair.Value.Tag + "\t" + pair.Value.Members[pair.Key] +"\t"+ FindPlayerNameByID(pair.Key) + "\n"); } PrintToConsole(arg.Player(), sb.ToString()); }
private void ConsoleLang(ConsoleSystem.Arg arg) { if (!IsAdmin(arg.Player())) return; if (arg.HasArgs()) lang.SetServerLanguage(arg.GetString(0)); Reply(arg.connection, "ServerLanguage", lang.GetServerLanguage()); }