From: Samual Date: Fri, 16 Dec 2011 20:55:56 +0000 (-0500) Subject: Fix some bugs with settemp and scoreboard_columns_set X-Git-Tag: xonotic-v0.6.0~188^2~28^2~127 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=59f6701af1d03659b4cc91976ff731178e0afade;p=xonotic%2Fxonotic-data.pk3dir.git Fix some bugs with settemp and scoreboard_columns_set --- diff --git a/qcsrc/client/command/cl_cmd.qc b/qcsrc/client/command/cl_cmd.qc index 519372efa..800724a77 100644 --- a/qcsrc/client/command/cl_cmd.qc +++ b/qcsrc/client/command/cl_cmd.qc @@ -5,23 +5,33 @@ float cvar_clientsettemp(string tmp_cvar, string value) { + float created_saved_value; entity e; + if not(tmp_cvar || value) + { + dprint("Error: Invalid usage of cvar_clientsettemp(string, string); !\n"); + return FALSE; + } + for(e = world; (e = find(e, classname, "saved_cvar_value")); ) if(e.netname == tmp_cvar) - goto saved; + goto saved; // skip creation // creating a new entity to keep track of this cvar e = spawn(); e.classname = "saved_cvar_value"; e.netname = strzone(tmp_cvar); e.message = strzone(cvar_string(tmp_cvar)); - return TRUE; + created_saved_value = TRUE; - // an entity for this cvar already exists, update the value + // an entity for this cvar already exists :saved + + // update the cvar to the value given cvar_set(tmp_cvar, value); - return FALSE; + + return created_saved_value; } float cvar_clientsettemp_restore() @@ -288,7 +298,7 @@ void GameCommand_settemp(float request, float argc) { case CMD_REQUEST_COMMAND: { - if((argv(1) == "restore") && (argc == 3)) + if((argv(1) == "restore") && (argc == 2)) { float i = cvar_clientsettemp_restore(); @@ -296,19 +306,22 @@ void GameCommand_settemp(float request, float argc) dprint("Restored ", ftos(i), " temporary cvar settings to their original values.\n"); else dprint("Nothing to restore.\n"); + + return; } - else + else if(argc >= 3) { if(cvar_clientsettemp(argv(1), argv(2))) dprint("Creating new settemp tracker for ", argv(1), " and setting it to \"", argv(2), "\" temporarily.\n"); else dprint("Already had a tracker for ", argv(1), ", updating it to \"", argv(2), "\".\n"); + + return; } - - return; } default: + print("Incorrect parameters for ^2settemp^7\n"); case CMD_REQUEST_USAGE: { print("\nUsage:^3 cl_cmd settemp | [restore]\n"); diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 3124b4b9b..7d452713b 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -308,17 +308,17 @@ void Cmd_HUD_SetFields(float argc) float missing; // TODO: re enable with gametype dependant cvars? - if(argc < 2) // no arguments provided + if(argc < 3) // no arguments provided argc = tokenizebyseparator(strcat("x ", autocvar_scoreboard_columns), " "); - if(argc < 2) + if(argc < 3) argc = tokenizebyseparator(strcat("x ", HUD_DefaultColumnLayout()), " "); - if(argc == 2) + if(argc == 3) { - if(argv(1) == "default") + if(argv(2) == "default") argc = tokenizebyseparator(strcat("x ", HUD_DefaultColumnLayout()), " "); - else if(argv(1) == "all") + else if(argv(2) == "all") { string s; s = "ping pl color name |"; @@ -341,10 +341,10 @@ void Cmd_HUD_SetFields(float argc) hud_fontsize = HUD_GetFontsize("hud_fontsize"); - for(i = 0; i < argc - 1; ++i) + for(i = 0; i < argc - 2; ++i) { float nocomplain; - str = argv(i+1); + str = argv(i+2); nocomplain = FALSE; if(substring(str, 0, 1) == "?") diff --git a/qcsrc/server/command/cmd.qc b/qcsrc/server/command/cmd.qc index c40f0bf71..c5f10826b 100644 --- a/qcsrc/server/command/cmd.qc +++ b/qcsrc/server/command/cmd.qc @@ -610,6 +610,11 @@ void SV_ParseClientCommand(string command) { float argc = tokenize_console(command); + // Guide for working with argc arguments by example: + // argc: 1 - 2 - 3 - 4 + // argv: 0 - 1 - 2 - 3 + // cmd vote - master - login - password + // for floodcheck switch(strtolower(argv(0))) { diff --git a/qcsrc/server/command/sv_cmd.qc b/qcsrc/server/command/sv_cmd.qc index 3e18ff1d6..52de05f40 100644 --- a/qcsrc/server/command/sv_cmd.qc +++ b/qcsrc/server/command/sv_cmd.qc @@ -1832,6 +1832,11 @@ float GameCommand_macro_usage(float argc) void GameCommand(string command) { float argc = tokenize_console(command); + + // Guide for working with argc arguments by example: + // argc: 1 - 2 - 3 - 4 + // argv: 0 - 1 - 2 - 3 + // cmd vote - master - login - password if(strtolower(argv(0)) == "help") {