#include "generic.qh"
-#include "_mod.qh"
-#include "reg.qh"
-#include "markup.qh"
-#include "rpn.qh"
-
-#include "../mapinfo.qh"
-
-#ifdef GAMEQC
- #include "../notifications/all.qh"
-#endif
-
-#ifdef CSQC
- #include <client/commands/cl_cmd.qh>
-#endif
-
-#ifdef SVQC
- #include <server/command/_mod.qh>
+#if defined(CSQC)
+ #include <client/command/cl_cmd.qh>
+ #include <common/command/_mod.qh>
+ #include <common/command/markup.qh>
+ #include <common/command/reg.qh>
+ #include <common/command/rpn.qh>
+ #include <common/mapinfo.qh>
+ #include <common/notifications/all.qh>
+#elif defined(MENUQC)
+#elif defined(SVQC)
+ #include <common/command/_mod.qh>
+ #include <common/command/markup.qh>
+ #include <common/command/reg.qh>
+ #include <common/command/rpn.qh>
+ #include <common/mapinfo.qh>
+ #include <common/notifications/all.qh>
#include <common/turrets/config.qh>
#include <common/weapons/config.qh>
+ #include <server/command/_mod.qh>
#endif
// =========================================================
// Command Sub-Functions
// =======================
-void GenericCommand_addtolist(float request, float argc)
+void GenericCommand_addtolist(int request, int argc)
{
switch(request)
{
}
else // add it to the end of the list if the list doesn't already have it
{
- argc = tokenizebyseparator(cvar_string(original_cvar), " ");
- int i;
- for(i = 0; i < argc; ++i)
- if(argv(i) == tmp_string)
- return; // already in list
+ FOREACH_WORD(cvar_string(original_cvar), it == tmp_string,
+ {
+ return; // already in the list
+ });
- cvar_set(original_cvar, strcat(tmp_string, " ", cvar_string(original_cvar)));
+ cvar_set(original_cvar, cons(cvar_string(original_cvar), tmp_string));
}
return;
}
}
default:
- LOG_INFO("Incorrect parameters for ^2addtolist^7\n");
+ LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " addtolist variable value\n"));
- LOG_INFO(" Where 'variable' is what to add 'value' to.\n");
- LOG_INFO("See also: ^2removefromlist^7\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " addtolist variable value");
+ LOG_HELP(" Where 'variable' is what to add 'value' to.");
+ LOG_HELP("See also: ^2removefromlist^7");
return;
}
}
}
-void GenericCommand_qc_curl(float request, float argc)
+void GenericCommand_qc_curl(int request, int argc)
{
switch(request)
{
curl_uri_get_pos = (curl_uri_get_pos + 1) % (URI_GET_CURL_END - URI_GET_CURL + 1);
}
else
- LOG_INFO(_("error creating curl handle\n"));
+ LOG_INFO(_("error creating curl handle"));
buf_del(buf);
default:
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " qc_curl [--key N] [--cvar] [--exec] URL [postargs...]"));
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " qc_curl [--key N] [--cvar] [--exec] URL [postargs...]");
return;
}
}
}
-GENERIC_COMMAND(dumpcommands, "Dump all commands on the program to *_cmd_dump.txt")
+GENERIC_COMMAND(dumpcommands, "Dump all commands on the program to <program>_cmd_dump.txt", false)
{
switch(request)
{
#ifdef SVQC
CMD_Write("dump of server console commands:\n");
GameCommand_macro_write_aliases(fh);
+ CMD_Write("\n");
- CMD_Write("\ndump of networked client only commands:\n");
+ CMD_Write("dump of networked client only commands:\n");
ClientCommand_macro_write_aliases(fh);
+ CMD_Write("\n");
- CMD_Write("\ndump of common commands:\n");
+ CMD_Write("dump of common commands:\n");
CommonCommand_macro_write_aliases(fh);
+ CMD_Write("\n");
- CMD_Write("\ndump of ban commands:\n");
+ CMD_Write("dump of ban commands:\n");
BanCommand_macro_write_aliases(fh);
+ CMD_Write("\n");
#endif
#ifdef CSQC
CMD_Write("dump of client commands:\n");
LocalCommand_macro_write_aliases(fh);
+ CMD_Write("\n");
#endif
- CMD_Write("\ndump of generic commands:\n");
+ CMD_Write("dump of generic commands:\n");
GenericCommand_macro_write_aliases(fh);
- LOG_INFO("Completed dump of aliases in ^2data/data/", GetProgramCommandPrefix(), "_dump.txt^7.\n");
+ LOG_INFO("Completed dump of aliases in ^2data/data/", GetProgramCommandPrefix(), "_dump.txt^7.");
fclose(fh);
}
else
{
- LOG_INFO("^1Error: ^7Could not dump to file!\n");
+ LOG_INFO("^1Error: ^7Could not dump to file!");
}
return;
}
default:
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpcommands"));
- LOG_INFO(" No arguments required.\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " dumpcommands");
+ LOG_HELP(" No arguments required.");
return;
}
}
}
-void GenericCommand_maplist(float request, float argc)
+void GenericCommand_maplist(int request, int argc)
{
switch(request)
{
{
if (!fexists(strcat("maps/", argv(2), ".bsp")))
{
- LOG_INFO("maplist: ERROR: ", argv(2), " does not exist!\n");
+ LOG_INFO("maplist: ERROR: ", argv(2), " does not exist!");
break;
}
}
default:
- LOG_INFO("Incorrect parameters for ^2maplist^7\n");
+ LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " maplist action [map]\n"));
- LOG_INFO(" Where 'action' is the command to complete,\n");
- LOG_INFO(" and 'map' is what it acts upon (if required).\n");
- LOG_INFO(" Full list of commands here: \"add, cleanup, remove, shuffle.\"\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " maplist action [map]");
+ LOG_HELP(" Where 'action' is the command to complete,");
+ LOG_HELP(" and 'map' is what it acts upon (if required).");
+ LOG_HELP(" Full list of commands here: \"add, cleanup, remove, shuffle.\"");
return;
}
}
}
-void GenericCommand_nextframe(float request, float arguments, string command)
+void GenericCommand_nextframe(int request, string command)
{
switch(request)
{
default:
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " nextframe command...\n"));
- LOG_INFO(" Where command will be executed next frame of this VM\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " nextframe command...");
+ LOG_HELP(" Where command will be executed next frame of this VM");
return;
}
}
}
-void GenericCommand_removefromlist(float request, float argc)
+void GenericCommand_removefromlist(int request, int argc)
{
switch(request)
{
{
if(argc == 3)
{
- float i;
string original_cvar = argv(1);
string removal = argv(2);
- string tmp_string;
- argc = tokenizebyseparator(cvar_string(original_cvar), " ");
-
- tmp_string = "";
- for(i = 0; i < argc; ++i)
- if(argv(i) != removal)
- tmp_string = strcat(tmp_string, " ", argv(i));
+ string tmp_string = "";
+ FOREACH_WORD(cvar_string(original_cvar), it != removal,
+ {
+ tmp_string = cons(tmp_string, it);
+ });
- tmp_string = substring(tmp_string, 1, strlen(tmp_string) - 1);
cvar_set(original_cvar, tmp_string);
return;
}
default:
- LOG_INFO("Incorrect parameters for ^2removefromlist^7\n");
+ LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " removefromlist variable value\n"));
- LOG_INFO(" Where 'variable' is what cvar to remove 'value' from.\n");
- LOG_INFO("See also: ^2addtolist^7\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " removefromlist variable value");
+ LOG_HELP(" Where 'variable' is what cvar to remove 'value' from.");
+ LOG_HELP("See also: ^2addtolist^7");
return;
}
}
}
-void GenericCommand_restartnotifs(float request)
+void GenericCommand_restartnotifs(int request)
{
switch(request)
{
case CMD_REQUEST_COMMAND:
{
#ifdef GAMEQC
- int NOTIF_ANNCE_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_ANNCE, { ++NOTIF_ANNCE_COUNT; });
- int NOTIF_INFO_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_INFO, { ++NOTIF_INFO_COUNT; });
- int NOTIF_CENTER_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_CENTER, { ++NOTIF_CENTER_COUNT; });
- int NOTIF_MULTI_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_MULTI, { ++NOTIF_MULTI_COUNT; });
- int NOTIF_CHOICE_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_CHOICE, { ++NOTIF_CHOICE_COUNT; });
+ int NOTIF_ANNCE_COUNT = 0;
+ int NOTIF_INFO_COUNT = 0;
+ int NOTIF_CENTER_COUNT = 0;
+ int NOTIF_MULTI_COUNT = 0;
+ int NOTIF_CHOICE_COUNT = 0;
+ FOREACH(Notifications, true, {
+ switch (it.nent_type)
+ {
+ case MSG_ANNCE: ++NOTIF_ANNCE_COUNT; break;
+ case MSG_INFO: ++NOTIF_INFO_COUNT; break;
+ case MSG_CENTER: ++NOTIF_CENTER_COUNT; break;
+ case MSG_MULTI: ++NOTIF_MULTI_COUNT; break;
+ case MSG_CHOICE: ++NOTIF_CHOICE_COUNT; break;
+ }
+ });
+
LOG_INFOF(
- strcat(
- "Restart_Notifications(): Restarting %d notifications... ",
- "Counts: MSG_ANNCE = %d, MSG_INFO = %d, MSG_CENTER = %d, MSG_MULTI = %d, MSG_CHOICE = %d\n"
- ),
+ "Restart_Notifications(): Restarting %d notifications... "
+ "Counts: MSG_ANNCE = %d, MSG_INFO = %d, MSG_CENTER = %d, MSG_MULTI = %d, MSG_CHOICE = %d",
(
NOTIF_ANNCE_COUNT +
NOTIF_INFO_COUNT +
Destroy_All_Notifications();
CALL_ACCUMULATED_FUNCTION(RegisterNotifications);
#else
- LOG_INFO(_("Notification restart command only works with cl_cmd and sv_cmd.\n"));
+ LOG_INFO(_("Notification restart command only works with cl_cmd and sv_cmd."));
#endif
return;
}
default:
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " restartnotifs"));
- LOG_INFO(" No arguments required.\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " restartnotifs");
+ LOG_HELP(" No arguments required.");
return;
}
}
}
-void GenericCommand_settemp(float request, float argc)
+void GenericCommand_settemp(int request, int argc)
{
switch(request)
{
}
default:
- LOG_INFO("Incorrect parameters for ^2settemp^7\n");
+ LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " settemp \"cvar\" \"arguments\"\n"));
- LOG_INFO(" Where 'cvar' is the cvar you want to temporarily set with 'arguments'.\n");
- LOG_INFO("See also: ^2settemp_restore^7\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " settemp \"cvar\" \"arguments\"");
+ LOG_HELP(" Where 'cvar' is the cvar you want to temporarily set with 'arguments'.");
+ LOG_HELP("See also: ^2settemp_restore^7");
return;
}
}
}
-void GenericCommand_settemp_restore(float request, float argc)
+void GenericCommand_settemp_restore(int request)
{
switch(request)
{
default:
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " settemp_restore\n"));
- LOG_INFO(" No arguments required.\n");
- LOG_INFO("See also: ^2settemp^7\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " settemp_restore");
+ LOG_HELP(" No arguments required.");
+ LOG_HELP("See also: ^2settemp^7");
return;
}
}
}
-void GenericCommand_runtest(float request, float argc)
+void GenericCommand_runtest(int request, int argc)
{
switch(request)
{
default:
case CMD_REQUEST_USAGE:
{
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " [function to run]"));
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " [function to run]");
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 GenericCommand_(float request)
+void GenericCommand_(int request)
{
switch(request)
{
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " "));
- print(" No arguments required.\n");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " ");
+ LOG_HELP(" No arguments required.");
return;
}
}
*/
// Do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;)
-GENERIC_COMMAND(addtolist, "Add a string to a cvar") { GenericCommand_addtolist(request, arguments); }
-GENERIC_COMMAND(maplist, "Automatic control of maplist") { GenericCommand_maplist(request, arguments); }
-GENERIC_COMMAND(nextframe, "Execute the given command next frame of this VM") { GenericCommand_nextframe(request, arguments, command); }
-GENERIC_COMMAND(qc_curl, "Queries a URL") { GenericCommand_qc_curl(request, arguments); }
-GENERIC_COMMAND(removefromlist, "Remove a string from a cvar") { GenericCommand_removefromlist(request, arguments); }
-GENERIC_COMMAND(restartnotifs, "Re-initialize all notifications") { GenericCommand_restartnotifs(request); }
-GENERIC_COMMAND(rpn, "RPN calculator") { GenericCommand_rpn(request, arguments, command); }
-GENERIC_COMMAND(settemp, "Temporarily set a value to a cvar which is restored later") { GenericCommand_settemp(request, arguments); }
-GENERIC_COMMAND(settemp_restore, "Restore all cvars set by settemp command") { GenericCommand_settemp_restore(request, arguments); }
-GENERIC_COMMAND(runtest, "Run unit tests") { GenericCommand_runtest(request, arguments); }
+GENERIC_COMMAND(addtolist, "Add a string to a cvar", true) { GenericCommand_addtolist(request, arguments); }
+GENERIC_COMMAND(maplist, "Automatic control of maplist", true) { GenericCommand_maplist(request, arguments); }
+GENERIC_COMMAND(nextframe, "Execute the given command next frame of this VM", true) { GenericCommand_nextframe(request, command); }
+GENERIC_COMMAND(qc_curl, "Queries a URL", true) { GenericCommand_qc_curl(request, arguments); }
+GENERIC_COMMAND(removefromlist, "Remove a string from a cvar", true) { GenericCommand_removefromlist(request, arguments); }
+GENERIC_COMMAND(restartnotifs, "Re-initialize all notifications", false) { GenericCommand_restartnotifs(request); }
+GENERIC_COMMAND(rpn, "RPN calculator", true) { GenericCommand_rpn(request, arguments, command); }
+GENERIC_COMMAND(settemp, "Temporarily set a value to a cvar which is restored later", false) { GenericCommand_settemp(request, arguments); }
+GENERIC_COMMAND(settemp_restore, "Restore all cvars set by settemp command", false) { GenericCommand_settemp_restore(request); }
+GENERIC_COMMAND(runtest, "Run unit tests", false) { GenericCommand_runtest(request, arguments); }
void GenericCommand_macro_help()
{
- FOREACH(GENERIC_COMMANDS, true, LOG_INFOF(" ^2%s^7: %s\n", it.m_name, it.m_description));
+ FOREACH(GENERIC_COMMANDS, true, LOG_HELPF(" ^2%s^7: %s", it.m_name, it.m_description));
}
-float GenericCommand_macro_command(float argc, string command)
+float GenericCommand_macro_command(int argc, string command)
{
string c = strtolower(argv(0));
FOREACH(GENERIC_COMMANDS, it.m_name == c, {
return false;
}
-float GenericCommand_macro_usage(float argc)
+float GenericCommand_macro_usage(int argc)
{
string c = strtolower(argv(1));
FOREACH(GENERIC_COMMANDS, it.m_name == c, {
float GenericCommand(string command)
{
- float argc = tokenize_console(command);
+ int argc = tokenize_console(command);
float n, j, f, i;
string s, s2, c;
vector rgb;