]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/command/cl_cmd.qc
Fix application crash executing cl_cmd debugmodel without model name parameter
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / command / cl_cmd.qc
index 127f404e7f6b8e2dc591fb7879a0ed8b7fba0855..45f15d3a191a373b11cda9fa34ac0cf6a2d4ad2a 100644 (file)
@@ -1,28 +1,22 @@
 #include "cl_cmd.qh"
+
 // ==============================================
 //  CSQC client commands code, written by Samual
 //  Last updated: December 28th, 2011
 // ==============================================
 
-#include <common/command/_mod.qh>
-#include "cl_cmd.qh"
-
-#include "../autocvars.qh"
+#include <client/draw.qh>
 #include <client/hud/_mod.qh>
 #include <client/hud/panel/quickmenu.qh>
 #include <client/hud/panel/radar.qh>
 #include <client/hud/panel/scoreboard.qh>
 #include <client/hud/panel/vote.qh>
-#include "../main.qh"
-#include "../mapvoting.qh"
-#include "../miscfunctions.qh"
-#include <client/view.qh>
-
+#include <client/mapvoting.qh>
 #include <client/mutators/_mod.qh>
-
-#include <common/minigames/cl_minigames_hud.qh>
-
+#include <client/view.qh>
+#include <common/command/_mod.qh>
 #include <common/mapinfo.qh>
+#include <common/minigames/cl_minigames_hud.qh>
 
 void DrawDebugModel(entity this)
 {
@@ -114,15 +108,15 @@ void LocalCommand_boxparticles(int request, int argc)
                case CMD_REQUEST_USAGE:
                {
                        LOG_HELP(
-                               "Usage:^3 cl_cmd boxparticles effectname own org_from org_to, dir_from, dir_to, countmultiplier, flags\n"
-                               "  'effectname' is the name of a particle effect in effectinfo.txt\n"
-                               "  'own' is the entity number of the owner (negative for csqc ent, positive for svqc ent)\n"
-                               "  'org_from' is the starting origin of the box\n"
-                               "  'org_to' is the ending origin of the box\n"
-                               "  'dir_from' is the minimum velocity\n"
-                               "  'dir_to' is the maximum velocity\n"
-                               "  'countmultiplier' defines a multiplier for the particle count (affects count only, not countabsolute or trailspacing)\n"
-                               "  'flags' can contain:\n"
+                               "Usage:^3 cl_cmd boxparticles <effectname> <owner> <org_from> <org_to> <dir_from> <dir_to> <countmultiplier> <flags>\n"
+                               "  <effectname> is the name of a particle effect in effectinfo.txt\n"
+                               "  <owner> is the entity number of the owner (negative for csqc ent, positive for svqc ent)\n"
+                               "  <org_from> is the starting origin of the box\n"
+                               "  <org_to> is the ending origin of the box\n"
+                               "  <dir_from> is the minimum velocity\n"
+                               "  <dir_to> is the maximum velocity\n"
+                               "  <countmultiplier> defines a multiplier for the particle count (affects count only, not countabsolute or trailspacing)\n"
+                               "  <flags> can contain:\n"
                                "    1 to respect globals particles_alphamin, particles_alphamax (set right before via prvm_globalset client)\n"
                                "    2 to respect globals particles_colormin, particles_colormax (set right before via prvm_globalset client)\n"
                                "    4 to respect globals particles_fade (set right before via prvm_globalset client)\n"
@@ -166,8 +160,8 @@ void LocalCommand_create_scrshot_ent(int request)
                default:
                case CMD_REQUEST_USAGE:
                {
-                       LOG_HELP("Usage:^3 cl_cmd create_scrshot_ent [path]");
-                       LOG_HELP("  Where 'path' can be the subdirectory of data/data in which the file is saved.");
+                       LOG_HELP("Usage:^3 cl_cmd create_scrshot_ent [<path>]");
+                       LOG_HELP("  Where <path> can be the subdirectory of data/data in which the file is saved.");
                        return;
                }
        }
@@ -182,22 +176,25 @@ void LocalCommand_debugmodel(int request, int argc)
                {
                        string modelname = argv(1);
 
-                       entity debugmodel_entity = new(debugmodel);
-                       precache_model(modelname);
-                       _setmodel(debugmodel_entity, modelname);
-                       setorigin(debugmodel_entity, view_origin);
-                       debugmodel_entity.angles = view_angles;
-                       debugmodel_entity.draw = DrawDebugModel;
-                       IL_PUSH(g_drawables, debugmodel_entity);
-
-                       return;
+                       if (modelname != "")
+                       {
+                               entity debugmodel_entity = new(debugmodel);
+                               precache_model(modelname);
+                               _setmodel(debugmodel_entity, modelname);
+                               setorigin(debugmodel_entity, view_origin);
+                               debugmodel_entity.angles = view_angles;
+                               debugmodel_entity.draw = DrawDebugModel;
+                               IL_PUSH(g_drawables, debugmodel_entity);
+                               return;
+                       }
+                       // fall through
                }
 
                default:
                case CMD_REQUEST_USAGE:
                {
-                       LOG_HELP("Usage:^3 cl_cmd debugmodel model");
-                       LOG_HELP("  Where 'model' is a string of the model name to use for the debug model.");
+                       LOG_HELP("Usage:^3 cl_cmd debugmodel <model>");
+                       LOG_HELP("  Where <model> is a string of the model name to use for the debug model.");
                        return;
                }
        }
@@ -244,8 +241,8 @@ void LocalCommand_handlevote(int request, int argc)
                        LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
                case CMD_REQUEST_USAGE:
                {
-                       LOG_HELP("Usage:^3 cl_cmd handlevote vote");
-                       LOG_HELP("  Where 'vote' is the selection for either the current poll or uid2name.");
+                       LOG_HELP("Usage:^3 cl_cmd handlevote <vote>");
+                       LOG_HELP("  Where <vote> is the selection for either the current poll or uid2name.");
                        return;
                }
        }
@@ -273,7 +270,7 @@ void LocalCommand_hud(int request, int argc)
                                {
                                        if (argv(2) == "help")
                                        {
-                                               LOG_HELP(" quickmenu [[default | file | \"\"] submenu file]");
+                                               LOG_HELP(" quickmenu [[default | file | \"\"] <submenu> <filename>]");
                                                LOG_HELP("Called without options (or with \"\") loads either the default quickmenu or a quickmenu file if hud_panel_quickmenu_file is set to a valid filename.");
                                                LOG_HELP("A submenu name can be given to open the quickmenu directly in a submenu; it requires to specify 'default', 'file' or '\"\"' option.");
                                                LOG_HELP("A file name can also be given to open a different quickmenu");
@@ -334,12 +331,12 @@ void LocalCommand_hud(int request, int argc)
                        LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
                case CMD_REQUEST_USAGE:
                {
-                       LOG_HELP("Usage:^3 cl_cmd hud action [configname | radartoggle | layout]");
-                       LOG_HELP("  Where 'action' is the command to complete,");
-                       LOG_HELP("  'configname' is the name to save to for \"save\" action,");
-                       LOG_HELP("  'radartoggle' is to control hud_panel_radar_maximized for \"radar\" action,");
-                       LOG_HELP("  and 'layout' is how to organize the scoreboard columns for the set action.");
-                       LOG_HELP("  Full list of commands here: \"configure, quickmenu, minigame, save, scoreboard_columns_help, scoreboard_columns_set, radar.\"");
+                       LOG_HELP("Usage:^3 cl_cmd hud <action> [<configname> | <radartoggle> | <layout>]");
+                       LOG_HELP("  Where <action> is the command to complete,");
+                       LOG_HELP("  <configname> is the name to save to for 'save' action,");
+                       LOG_HELP("  <radartoggle> is to maximize/minimize radar for 'radar' action,");
+                       LOG_HELP("  and <layout> is how to organize the scoreboard columns for 'scoreboard_columns_set' action.");
+                       LOG_HELP("  Full list of commands here: configure, quickmenu, minigame, save, scoreboard_columns_help, scoreboard_columns_set, radar.");
                        return;
                }
        }
@@ -363,8 +360,8 @@ void LocalCommand_localprint(int request, int argc)
                        LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
                case CMD_REQUEST_USAGE:
                {
-                       LOG_HELP("Usage:^3 cl_cmd localprint \"message\"");
-                       LOG_HELP("  'message' is the centerprint message to send to yourself.");
+                       LOG_HELP("Usage:^3 cl_cmd localprint \"<message>\"");
+                       LOG_HELP("  <message> is the centerprint message to send to yourself.");
                        return;
                }
        }
@@ -388,8 +385,8 @@ void LocalCommand_mv_download(int request, int argc)
                        LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
                case CMD_REQUEST_USAGE:
                {
-                       LOG_HELP("Usage:^3 cl_cmd mv_download mapid");
-                       LOG_HELP("  Where 'mapid' is the id number of the map to request an image of on the map vote selection menu.");
+                       LOG_HELP("Usage:^3 cl_cmd mv_download <mapid>");
+                       LOG_HELP("  Where <mapid> is the id number of the map to request an image of on the map vote selection menu.");
                        return;
                }
        }
@@ -424,7 +421,7 @@ void LocalCommand_sendcvar(int request, int argc)
                case CMD_REQUEST_USAGE:
                {
                        LOG_HELP("Usage:^3 cl_cmd sendcvar <cvar>");
-                       LOG_HELP("  Where 'cvar' is the cvar to send to the server.");
+                       LOG_HELP("  Where <cvar> is the cvar to send to the server.");
                        return;
                }
        }
@@ -524,8 +521,8 @@ void GameCommand(string command)
                        LOG_HELP("\nGeneric commands shared by all programs:");
                        GenericCommand_macro_help();
 
-                       LOG_HELP("\nUsage:^3 cl_cmd COMMAND...^7, where possible commands are listed above.");
-                       LOG_HELP("For help about a specific command, type cl_cmd help COMMAND");
+                       LOG_HELP("\nUsage:^3 cl_cmd <command>^7, where possible commands are listed above.");
+                       LOG_HELP("For help about a specific command, type cl_cmd help <command>");
 
                        return;
                }
@@ -557,8 +554,6 @@ void GameCommand(string command)
 // Please add client commands to the function above this, as this is only for special reasons.
 // NOTE: showaccuracy is kept as legacy command
 #define CONSOLE_COMMANDS_NORMAL() \
-       CONSOLE_COMMAND("+showscores", { scoreboard_showscores = true; }) \
-       CONSOLE_COMMAND("-showscores", { scoreboard_showscores = false; }) \
        CONSOLE_COMMAND("+showaccuracy", { }) \
        CONSOLE_COMMAND("-showaccuracy", { }) \
        /* nothing */