X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcommand%2Fbanning.qc;h=1694bb661d0254dcd84e5d2e895de51244ea10b7;hb=8ced0314dc438d84e9d7e5e542027456fb8db759;hp=2fbdd27a050ffbbb6eeec2287ae19cf11b89d3fe;hpb=9f31b2438f27e46e900e4a9afe47fec5fcace088;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/command/banning.qc b/qcsrc/server/command/banning.qc index 2fbdd27a0..1694bb661 100644 --- a/qcsrc/server/command/banning.qc +++ b/qcsrc/server/command/banning.qc @@ -107,16 +107,80 @@ void BanCommand_kickban(float request, float argc, string command) } } -void BanCommand_unban(float request, float argc) +void BanCommand_mute(float request, float argc, string command) // TODO: Add a sort of mute-"ban" which allows players to be muted based on IP/cryptokey { switch(request) { case CMD_REQUEST_COMMAND: { + if(argc >= 2) + { + entity client = GetFilteredEntity(argv(1)); + float accepted = VerifyClientEntity(client, TRUE, FALSE); + + if(accepted > 0) + { + client.muted = TRUE; + return; + } + else + { + print("mute: ", GetClientErrorString(accepted, argv(1)), ".\n"); + } + } + } + + default: + print("Incorrect parameters for ^2mute^7\n"); + case CMD_REQUEST_USAGE: + { + print("\nUsage:^3 sv_cmd mute client\n"); + print(" 'client' is the entity number or name of the player to mute.\n"); + print("See also: ^2unmute^7\n"); + return; + } + } +} + +void BanCommand_unban(float request, float argc) +{ + switch(request) + { + case CMD_REQUEST_COMMAND: + { if(argv(1)) { - Ban_Delete(stof(argv(1))); - 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; + } } } @@ -131,6 +195,41 @@ void BanCommand_unban(float request, float argc) } } +void BanCommand_unmute(float request, float argc) +{ + switch(request) + { + case CMD_REQUEST_COMMAND: + { + if(argc >= 2) + { + entity client = GetFilteredEntity(argv(1)); + float accepted = VerifyClientEntity(client, TRUE, FALSE); + + if(accepted > 0) + { + client.muted = FALSE; + return; + } + else + { + print("unmute: ", GetClientErrorString(accepted, argv(1)), ".\n"); + } + } + } + + default: + print("Incorrect parameters for ^2mute^7\n"); + case CMD_REQUEST_USAGE: + { + print("\nUsage:^3 sv_cmd unmute client\n"); + print(" 'client' is the entity number or name of the player to unmute.\n"); + print("See also: ^2mute^7\n"); + return; + } + } +} + /* use this when creating a new command, making sure to place it in alphabetical order... also, ** ADD ALL NEW COMMANDS TO commands.cfg WITH PROPER ALIASES IN THE SAME FASHION! void BanCommand_(float request) @@ -164,13 +263,15 @@ void BanCommand_(float request) 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("kickban", BanCommand_kickban(request, arguments, command), "Disconnect a client and ban it at the same time") \ + BAN_COMMAND("mute", BanCommand_mute(request, arguments, command), "Disallow a client from talking by muting them") \ BAN_COMMAND("unban", BanCommand_unban(request, arguments), "Remove an existing ban") \ + BAN_COMMAND("unmute", BanCommand_unmute(request, arguments), "Unmute a client") \ /* nothing */ 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 @@ -203,7 +304,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 @@ -226,4 +327,4 @@ float BanCommand(string command) } return FALSE; -} \ No newline at end of file +}