Exemplo n.º 1
0
        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());
 }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 6
0
 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;
     }
 }
Exemplo n.º 7
0
 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());
 }
Exemplo n.º 8
0
 /////////////////////////////////////////
 // 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;
 }
Exemplo n.º 9
0
        // 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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
 /////////////////////////////////////////
 // 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;
 }
Exemplo n.º 12
0
 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;
     }
 }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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);
            }
        }
Exemplo n.º 15
0
        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);
            }
        }
Exemplo n.º 16
0
        // 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));
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 17
0
        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);
            }
        }
Exemplo n.º 18
0
        /// <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));
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 19
0
 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);
 }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        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));
        }
Exemplo n.º 22
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());
        }
Exemplo n.º 24
0
        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.");
     }
 }
Exemplo n.º 26
0
        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.");
 }
Exemplo n.º 28
0
        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);
            }
        }
Exemplo n.º 29
0
        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());
        }
Exemplo n.º 30
0
        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());
        }