X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fcommand%2Fcl_cmd.qc;h=9aae77dde687ef5417a61b71ae29b4524365e963;hb=a035d049951445f892a37bfdef3e738f8a18e8b9;hp=7926544d4b785d06c06aadf75377b0686c03c0a3;hpb=756a2e093820dc91621b95d955ca48a3462af3cb;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/command/cl_cmd.qc b/qcsrc/client/command/cl_cmd.qc index 7926544d4..9aae77dde 100644 --- a/qcsrc/client/command/cl_cmd.qc +++ b/qcsrc/client/command/cl_cmd.qc @@ -26,7 +26,7 @@ void LocalCommand_blurtest(float request) { // Simple command to work with postprocessing temporarily... possibly completely pointless, the glsl shader is used for a real feature now... // Anyway, to enable it, just compile the client with -DBLURTEST and then you can use the command. - + #ifdef BLURTEST switch(request) { @@ -37,9 +37,9 @@ void LocalCommand_blurtest(float request) blurtest_radius = stof(argv(2)); blurtest_power = stof(argv(3)); print("Enabled blurtest\n"); - return; + return; } - + default: case CMD_REQUEST_USAGE: { @@ -57,6 +57,57 @@ void LocalCommand_blurtest(float request) #endif } +void LocalCommand_boxparticles(float request, float argc) +{ + switch(request) + { + case CMD_REQUEST_COMMAND: + { + if (argc == 9) + { + float effect = particleeffectnum(argv(1)); + if (effect >= 0) + { + float index = stof(argv(2)); + entity own; + if(index <= 0) + own = entitybyindex(-index); + else + own = findfloat(world, entnum, index); + vector org_from = stov(argv(3)); + vector org_to = stov(argv(4)); + vector dir_from = stov(argv(5)); + vector dir_to = stov(argv(6)); + float countmultiplier = stof(argv(7)); + float flags = stof(argv(8)); + boxparticles(effect, own, org_from, org_to, dir_from, dir_to, countmultiplier, flags); + return; + } + } + } + + default: + print("Incorrect parameters for ^2boxparticles^7\n"); + case CMD_REQUEST_USAGE: + { + print("\nUsage:^3 lv_cmd boxparticles effectname own org_from org_to, dir_from, dir_to, countmultiplier, flags\n"); + print(" 'effectname' is the name of a particle effect in effectinfo.txt\n"); + print(" 'own' is the entity number of the owner (negative for csqc ent, positive for svqc ent)\n"); + print(" 'org_from' is the starting origin of the box\n"); + print(" 'org_to' is the ending origin of the box\n"); + print(" 'dir_from' is the minimum velocity\n"); + print(" 'dir_to' is the maximum velocity\n"); + print(" 'countmultiplier' defines a multiplier for the particle count (affects count only, not countabsolute or trailspacing)\n"); + print(" 'flags' can contain:\n"); + print(" 1 to respect globals particles_alphamin, particles_alphamax (set right before via prvm_globalset client)\n"); + print(" 2 to respect globals particles_colormin, particles_colormax (set right before via prvm_globalset client)\n"); + print(" 4 to respect globals particles_fade (set right before via prvm_globalset client)\n"); + print(" 128 to draw a trail, not a box\n"); + return; + } + } +} + void LocalCommand_create_scrshot_ent(float request) { switch(request) @@ -66,7 +117,7 @@ void LocalCommand_create_scrshot_ent(float request) float fh; string filename = strcat(MapInfo_Map_bspname, "_scrshot_ent.txt"); fh = fopen(filename, FILE_WRITE); - + if(fh >= 0) { fputs(fh, "{\n"); @@ -74,9 +125,9 @@ void LocalCommand_create_scrshot_ent(float request) fputs(fh, strcat("\"origin\" \"", strcat(ftos(view_origin_x), " ", ftos(view_origin_y), " ", ftos(view_origin_z)), "\"\n")); fputs(fh, strcat("\"angles\" \"", strcat(ftos(view_angles_x), " ", ftos(view_angles_y), " ", ftos(view_angles_z)), "\"\n")); fputs(fh, "}\n"); - + print("Completed screenshot entity dump in ^2data/data/", MapInfo_Map_bspname, "_scrshot_ent.txt^7.\n"); - + fclose(fh); } else @@ -85,7 +136,7 @@ void LocalCommand_create_scrshot_ent(float request) } return; } - + default: case CMD_REQUEST_USAGE: { @@ -104,7 +155,7 @@ void LocalCommand_debugmodel(float request, float argc) { string modelname = argv(1); entity debugmodel_entity; - + debugmodel_entity = spawn(); precache_model(modelname); setmodel(debugmodel_entity, modelname); @@ -112,10 +163,10 @@ void LocalCommand_debugmodel(float request, float argc) debugmodel_entity.angles = view_angles; debugmodel_entity.draw = DrawDebugModel; debugmodel_entity.classname = "debugmodel"; - - return; + + return; } - + default: case CMD_REQUEST_USAGE: { @@ -134,18 +185,18 @@ void LocalCommand_handlevote(float request, float argc) { float vote_selection; string vote_string; - + if(InterpretBoolean(argv(1))) { - vote_selection = 2; + vote_selection = 2; vote_string = "yes"; } else { - vote_selection = 1; - vote_string = "no"; + vote_selection = 1; + vote_string = "no"; } - + if(vote_selection) { if(uid2name_dialog) // handled by "uid2name" option @@ -157,11 +208,11 @@ void LocalCommand_handlevote(float request, float argc) uid2name_dialog = 0; } else { localcmd(strcat("cmd vote ", vote_string, "\n")); } - + return; } } - + default: print("Incorrect parameters for ^2handlevote^7\n"); case CMD_REQUEST_USAGE: @@ -186,7 +237,7 @@ void LocalCommand_hud(float request, float argc) cvar_set("_hud_configure", ftos(!autocvar__hud_configure)); return; } - + case "save": { if(argv(2)) @@ -199,10 +250,10 @@ void LocalCommand_hud(float request, float argc) break; // go to usage, we're missing the paramater needed here. } } - + case "scoreboard_columns_set": { - Cmd_HUD_SetFields(argc); + Cmd_HUD_SetFields(argc); return; } @@ -211,7 +262,7 @@ void LocalCommand_hud(float request, float argc) Cmd_HUD_Help(); return; } - + case "radar": { if(argv(2)) @@ -222,7 +273,7 @@ void LocalCommand_hud(float request, float argc) } } } - + default: print("Incorrect parameters for ^2hud^7\n"); case CMD_REQUEST_USAGE: @@ -247,10 +298,10 @@ void LocalCommand_localprint(float request, float argc) if(argv(1)) { centerprint_hud(argv(1)); - return; + return; } } - + default: print("Incorrect parameters for ^2localprint^7\n"); case CMD_REQUEST_USAGE: @@ -271,10 +322,10 @@ void LocalCommand_mv_download(float request, float argc) if(argv(1)) { Cmd_MapVote_MapDownload(argc); - return; + return; } } - + default: print("Incorrect parameters for ^2mv_download^7\n"); case CMD_REQUEST_USAGE: @@ -297,18 +348,18 @@ void LocalCommand_sendcvar(float request, float argc) // W_FixWeaponOrder will trash argv, so save what we need. string thiscvar = strzone(argv(1)); string s = cvar_string(thiscvar); - + if(thiscvar == "cl_weaponpriority") s = W_FixWeaponOrder(W_NumberWeaponOrder(s), 1); else if(substring(thiscvar, 0, 17) == "cl_weaponpriority" && strlen(thiscvar) == 18) s = W_FixWeaponOrder(W_NumberWeaponOrder(s), 0); - + localcmd("cmd sentcvar ", thiscvar, " \"", s, "\"\n"); strunzone(thiscvar); - return; + return; } } - + default: print("Incorrect parameters for ^2sendcvar^7\n"); case CMD_REQUEST_USAGE: @@ -328,10 +379,10 @@ void LocalCommand_(float request) { case CMD_REQUEST_COMMAND: { - - return; + + return; } - + default: case CMD_REQUEST_USAGE: { @@ -351,6 +402,7 @@ void LocalCommand_(float request) // Normally do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;) #define CLIENT_COMMANDS(request,arguments) \ CLIENT_COMMAND("blurtest", LocalCommand_blurtest(request), "Feature for testing blur postprocessing") \ + CLIENT_COMMAND("boxparticles", LocalCommand_boxparticles(request, arguments), "Spawn particles manually") \ CLIENT_COMMAND("create_scrshot_ent", LocalCommand_create_scrshot_ent(request), "Create an entity at this location for automatic screenshots") \ CLIENT_COMMAND("debugmodel", LocalCommand_debugmodel(request, arguments), "Spawn a debug model manually") \ CLIENT_COMMAND("handlevote", LocalCommand_handlevote(request, arguments), "System to handle selecting a vote or option") \ @@ -359,15 +411,15 @@ void LocalCommand_(float request) CLIENT_COMMAND("mv_download", LocalCommand_mv_download(request, arguments), "Retrieve mapshot picture from the server") \ CLIENT_COMMAND("sendcvar", LocalCommand_sendcvar(request, arguments), "Send a cvar to the server (like weaponpriority)") \ /* nothing */ - + void LocalCommand_macro_help() { #define CLIENT_COMMAND(name,function,description) \ { if(strtolower(description) != "") { print(" ^2", name, "^7: ", description, "\n"); } } - + CLIENT_COMMANDS(0, 0) #undef CLIENT_COMMAND - + return; } @@ -375,10 +427,10 @@ float LocalCommand_macro_command(float argc) { #define CLIENT_COMMAND(name,function,description) \ { if(name == strtolower(argv(0))) { function; return TRUE; } } - + CLIENT_COMMANDS(CMD_REQUEST_COMMAND, argc) #undef CLIENT_COMMAND - + return FALSE; } @@ -386,10 +438,10 @@ float LocalCommand_macro_usage(float argc) { #define CLIENT_COMMAND(name,function,description) \ { if(name == strtolower(argv(1))) { function; return TRUE; } } - + CLIENT_COMMANDS(CMD_REQUEST_USAGE, argc) #undef CLIENT_COMMAND - + return FALSE; } @@ -397,10 +449,10 @@ void LocalCommand_macro_write_aliases(float fh) { #define CLIENT_COMMAND(name,function,description) \ { if(strtolower(description) != "") { CMD_Write_Alias("qc_cmd_cl", name, description); } } - + CLIENT_COMMANDS(0, 0) #undef CLIENT_COMMAND - + return; } @@ -416,24 +468,24 @@ void GameCommand(string command) // Guide for working with argc arguments by example: // argc: 1 - 2 - 3 - 4 - // argv: 0 - 1 - 2 - 3 + // argv: 0 - 1 - 2 - 3 // cmd vote - master - login - password - if(strtolower(argv(0)) == "help") + if(strtolower(argv(0)) == "help") { - if(argc == 1) + if(argc == 1) { print("\nClient console commands:\n"); LocalCommand_macro_help(); print("\nGeneric commands shared by all programs:\n"); GenericCommand_macro_help(); - + print("\nUsage:^3 cl_cmd COMMAND...^7, where possible commands are listed above.\n"); print("For help about a specific command, type cl_cmd help COMMAND\n"); - + return; - } + } else if(GenericCommand_macro_usage(argc)) // Instead of trying to call a command, we're going to see detailed information about it { return; @@ -442,8 +494,8 @@ void GameCommand(string command) { return; } - } - else if(GenericCommand(command)) + } + else if(GenericCommand(command)) { return; // handled by common/command/generic.qc } @@ -451,10 +503,10 @@ void GameCommand(string command) { return; // handled by one of the above LocalCommand_* functions } - + // nothing above caught the command, must be invalid print(((command != "") ? strcat("Unknown client command \"", command, "\"") : "No command provided"), ". For a list of supported commands, try cl_cmd help.\n"); - + return; } @@ -471,7 +523,7 @@ void GameCommand(string command) CONSOLE_COMMAND("+showaccuracy", { scoreboard_showaccuracy = TRUE; }) \ CONSOLE_COMMAND("-showaccuracy", { scoreboard_showaccuracy = FALSE; }) \ /* nothing */ - + #define CONSOLE_COMMANDS_MOVEMENT \ CONSOLE_COMMAND("+forward", { ++camera_direction_x; }) \ CONSOLE_COMMAND("-forward", { --camera_direction_x; }) \ @@ -499,7 +551,7 @@ void ConsoleCommand_macro_init() CONSOLE_COMMANDS_NORMAL #undef CONSOLE_COMMAND - + // then init movement commands #ifndef CAMERATEST if(isdemo()) @@ -513,7 +565,7 @@ void ConsoleCommand_macro_init() #ifndef CAMERATEST } #endif - + return; } @@ -521,10 +573,10 @@ float ConsoleCommand_macro_normal(float argc) { #define CONSOLE_COMMAND(name,execution) \ { if(name == strtolower(argv(0))) { { execution } return TRUE; } } - + CONSOLE_COMMANDS_NORMAL #undef CONSOLE_COMMAND - + return FALSE; } @@ -538,7 +590,7 @@ float ConsoleCommand_macro_movement(float argc) CONSOLE_COMMANDS_MOVEMENT #undef CONSOLE_COMMAND } - + return FALSE; } @@ -560,7 +612,7 @@ float CSQC_ConsoleCommand(string command) { return TRUE; } - + // Return value should be 1 if CSQC handled the command, otherwise return 0 to have the engine handle it. return FALSE;