]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/command/banning.qc
Merge remote-tracking branch 'origin/Mario/touchexplode_mutator'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / command / banning.qc
index d575cc7f4b405b11884b15ba1803f2f9f791cd11..eebadfa73b2d48ed5f3ad6573ae0390d72a228b6 100644 (file)
@@ -29,8 +29,11 @@ void BanCommand_ban(float request, float argc, string command)
                        print("Incorrect parameters for ^2ban^7\n");
                case CMD_REQUEST_USAGE:
                {
-                       print("\nUsage:^3 sv_cmd ban address [time] [reason]\n");
-                       print("  No arguments required. todo\n");
+                       print("\nUsage:^3 sv_cmd ban address [bantime] [reason]\n");
+                       print("  'address' is the IP address or range of the player to ban,\n");
+                       print("  'bantime' is the amount of time that the ban is active (default if not provided),\n");
+                       print("  and 'reason' is the string to label the ban with as reason for banning.\n");
+                       print("See also: ^2banlist, kickban, unban^7\n");
                        return;
                }
        }
@@ -51,6 +54,7 @@ void BanCommand_banlist(float request)
                {
                        print("\nUsage:^3 sv_cmd banlist\n");
                        print("  No arguments required.\n");
+                       print("See also: ^2ban, kickban, unban^7\n");
                        return;
                }
        }
@@ -93,7 +97,11 @@ void BanCommand_kickban(float request, float argc, string command)
                case CMD_REQUEST_USAGE:
                {
                        print("\nUsage:^3 sv_cmd kickban client [bantime] [masksize] [reason]\n");
-                       print("  No arguments required. todo\n");
+                       print("  'client' is the entity number or name of the player to ban,\n");
+                       print("  'bantime' is the amount of time that the ban is active (default if not provided),\n");
+                       print("  'masksize' is the range of the IP address (1-thru-4, default if not provided),\n");
+                       print("  and 'reason' is the string to label the ban with as reason for banning.\n");
+                       print("See also: ^2ban, banlist, unban^7\n");
                        return;
                }
        }
@@ -104,13 +112,40 @@ void BanCommand_unban(float request, float argc)
        switch(request)
        {
                case CMD_REQUEST_COMMAND:
-               {
-                       if(argc >= 2)
+               {       
+                       if(argv(1))
                        {
-                               float who;
-                               who = stof(argv(1));
-                               Ban_Delete(who);
-                               return;
+                               float tmp_number = -1;
+                               string tmp_string;
+                               
+                               if(substring(argv(1), 0, 1) == "#")
+                               {
+                                       tmp_string = substring(argv(1), 1, -1);
+                                       
+                                       if(tmp_string != "") // is it all one token? like #1
+                                       {
+                                               tmp_number = stof(tmp_string);
+                                       }
+                                       else if(argc > 2) // no, it's two tokens? # 1
+                                       {
+                                               tmp_number = stof(argv(2));
+                                       }
+                                       else
+                                               tmp_number = -1;
+                               }
+                               else // maybe it's ONLY a number?
+                               {
+                                       tmp_number = stof(argv(1));
+                                       
+                                       if((tmp_number == 0) && (argv(1) != "0"))
+                                               { tmp_number = -1; }
+                               }
+
+                               if(tmp_number >= 0)
+                               {
+                                       Ban_Delete(tmp_number);
+                                       return;
+                               }
                        }
                }
                        
@@ -119,6 +154,7 @@ void BanCommand_unban(float request, float argc)
                {
                        print("\nUsage:^3 sv_cmd unban banid\n");
                        print("  Where 'banid' is the ID of the ban of which to remove.\n");
+                       print("See also: ^2ban, banlist, kickban^7\n");
                        return;
                }
        }
@@ -153,9 +189,11 @@ void BanCommand_(float request)
 // ==================================
 
 // Do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;)
+// but for 0.5 compat, we need "bans" here as it was replaced... REMOVE IT AFTER 0.6 RELEASE!!!!
 #define BAN_COMMANDS(request,arguments,command) \
        BAN_COMMAND("ban", BanCommand_ban(request, arguments, command), "Ban an IP address or a range of addresses (like 1.2.3)") \
        BAN_COMMAND("banlist", BanCommand_banlist(request), "List all existing bans") \
+       BAN_COMMAND("bans", BanCommand_banlist(request), "") \
        BAN_COMMAND("kickban", BanCommand_kickban(request, arguments, command), "Disconnect a client and ban it at the same time") \
        BAN_COMMAND("unban", BanCommand_unban(request, arguments), "Remove an existing ban") \
        /* nothing */
@@ -163,7 +201,7 @@ void BanCommand_(float request)
 void BanCommand_macro_help()
 {
        #define BAN_COMMAND(name,function,description) \
-               { print("  ^2", name, "^7: ", description, "\n"); }
+               { if(strtolower(description) != "") { print("  ^2", name, "^7: ", description, "\n"); } }
                
        BAN_COMMANDS(0, 0, "")
        #undef BAN_COMMAND
@@ -196,7 +234,7 @@ float BanCommand_macro_usage(float argc)
 void BanCommand_macro_write_aliases(float fh)
 {
        #define BAN_COMMAND(name,function,description) \
-               { CMD_Write_Alias("qc_cmd_sv", name, description); }
+               { if(strtolower(description) != "") { CMD_Write_Alias("qc_cmd_sv", name, description); } }
        
        BAN_COMMANDS(0, 0, "")
        #undef BAN_COMMAND
@@ -219,4 +257,4 @@ float BanCommand(string command)
        }
        
        return FALSE;
-}
\ No newline at end of file
+}