+#include "command.qh"
+#include "generic.qh"
+
+#include "markup.qh"
+#include "rpn.qh"
+
+#include "../mapinfo.qh"
+
+#ifndef MENUQC
+ #include "../notifications.qh"
+#endif
+
+#ifdef CSQC
+ #include "../../client/command/cl_cmd.qh"
+#endif
+
+#ifdef SVQC
+ #include "../../server/command/banning.qh"
+ #include "../../server/command/cmd.qh"
+ #include "../../server/command/common.qh"
+ #include "../../server/command/sv_cmd.qh"
+ #include "../../common/turrets/config.qh"
+ #include "../../common/weapons/config.qh"
+#endif
+
// =========================================================
// Generic program common command code, written by Samual
// Last updated: February 19th, 2012
}
// used by curl command
-void Curl_URI_Get_Callback(float id, float status, string data)
+void Curl_URI_Get_Callback(int id, float status, string data)
{
- float i;
- float do_exec;
- string do_cvar;
- i = id - URI_GET_CURL;
- do_exec = curl_uri_get_exec[i];
- do_cvar = curl_uri_get_cvar[i];
+ int i = id - URI_GET_CURL;
+ float do_exec = curl_uri_get_exec[i];
+ string do_cvar = curl_uri_get_cvar[i];
if(status != 0)
{
- dprintf("error: status is %d\n", status);
+ LOG_TRACEF("error: status is %d\n", status);
if(do_cvar)
strunzone(do_cvar);
return;
}
if(!do_exec)
if (!do_cvar)
- print(data);
+ LOG_INFO(data);
}
{
case CMD_REQUEST_COMMAND:
{
- float i;
-
if(argc >= 2)
{
string original_cvar = argv(1);
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
}
default:
- print("Incorrect parameters for ^2addtolist^7\n");
+ LOG_INFO("Incorrect parameters for ^2addtolist^7\n");
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " addtolist variable value\n"));
- print(" Where 'variable' is what to add 'value' to.\n");
- print("See also: ^2removefromlist^7\n");
+ 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");
return;
}
}
{
case CMD_REQUEST_COMMAND:
{
- float do_exec;
- string do_cvar;
- float key;
- float i, j;
- string url;
- float buf;
- float r;
-
- do_exec = FALSE;
- do_cvar = string_null;
- key = -1;
-
+ bool do_exec = false;
+ string do_cvar = string_null;
+ float key = -1;
+ int i;
for(i = 1; i+1 < argc; ++i)
{
if(argv(i) == "--cvar" && i+2 < argc)
}
if(argv(i) == "--exec")
{
- do_exec = TRUE;
+ do_exec = true;
continue;
}
if(argv(i) == "--key" && i+2 < argc)
// now, argv(i) is the URL
// following args may be POST parameters
- url = argv(i);
+ string url = argv(i);
++i;
- buf = buf_create();
- j = 0;
- for(; i+1 < argc; i += 2)
+ float buf = buf_create();
+ int j;
+ for(j = 0; i+1 < argc; i += 2)
bufstr_set(buf, ++j, sprintf("%s=%s", uri_escape(argv(i)), uri_escape(argv(i+1))));
if(i < argc)
bufstr_set(buf, ++j, sprintf("submit=%s", uri_escape(argv(i))));
+ float r;
if(j == 0) // no args: GET
r = crypto_uri_postbuf(url, URI_GET_CURL + curl_uri_get_pos, string_null, string_null, -1, key);
else // with args: POST
curl_uri_get_pos = (curl_uri_get_pos + 1) % (URI_GET_CURL_END - URI_GET_CURL + 1);
}
else
- print(_("error creating curl handle\n"));
+ LOG_INFO(_("error creating curl handle\n"));
buf_del(buf);
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " qc_curl [--key N] [--cvar] [--exec] URL [postargs...]"));
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " qc_curl [--key N] [--cvar] [--exec] URL [postargs...]"));
return;
}
}
CMD_Write("\ndump of generic commands:\n");
GenericCommand_macro_write_aliases(fh);
- print("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.\n");
fclose(fh);
}
else
{
- print("^1Error: ^7Could not dump to file!\n");
+ LOG_INFO("^1Error: ^7Could not dump to file!\n");
}
return;
}
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpcommands"));
- print(" No arguments required.\n");
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpcommands"));
+ LOG_INFO(" No arguments required.\n");
+ return;
+ }
+ }
+}
+
+void GenericCommand_dumpitems(float request)
+{
+ switch(request)
+ {
+ case CMD_REQUEST_COMMAND:
+ {
+ Dump_Items();
+ return;
+ }
+
+ default:
+ case CMD_REQUEST_USAGE:
+ {
+ LOG_INFOF("\nUsage:^3 %s dumpitems", GetProgramCommandPrefix());
return;
}
}
case CMD_REQUEST_COMMAND:
{
#ifndef MENUQC
- float fh, alsoprint = FALSE;
+ float fh, alsoprint = false;
string filename = argv(1);
if(filename == "")
{
filename = "notifications_dump.cfg";
- alsoprint = FALSE;
+ alsoprint = false;
}
else if(filename == "-")
{
filename = "notifications_dump.cfg";
- alsoprint = TRUE;
+ alsoprint = true;
}
fh = fopen(filename, FILE_WRITE);
if(fh >= 0)
{
Dump_Notifications(fh, alsoprint);
- printf("Dumping notifications... File located in ^2data/data/%s^7.\n", filename);
+ LOG_INFOF("Dumping notifications... File located in ^2data/data/%s^7.\n", filename);
fclose(fh);
}
else
{
- printf("^1Error: ^7Could not open file '%s'!\n", filename);
+ LOG_INFOF("^1Error: ^7Could not open file '%s'!\n", filename);
}
#else
- print(_("Notification dump command only works with cl_cmd and sv_cmd.\n"));
+ LOG_INFO(_("Notification dump command only works with cl_cmd and sv_cmd.\n"));
#endif
return;
}
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpnotifs [filename]"));
- print(" Where 'filename' is the file to write (default is notifications_dump.cfg),\n");
- print(" if supplied with '-' output to console as well as default,\n");
- print(" if left blank, it will only write to default.\n");
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpnotifs [filename]"));
+ LOG_INFO(" Where 'filename' is the file to write (default is notifications_dump.cfg),\n");
+ LOG_INFO(" if supplied with '-' output to console as well as default,\n");
+ LOG_INFO(" if left blank, it will only write to default.\n");
return;
}
}
wep_config_file = -1;
wep_config_alsoprint = -1;
string filename = argv(1);
-
+
if(filename == "")
{
filename = "weapons_dump.cfg";
- wep_config_alsoprint = FALSE;
+ wep_config_alsoprint = false;
}
else if(filename == "-")
{
filename = "weapons_dump.cfg";
- wep_config_alsoprint = TRUE;
+ wep_config_alsoprint = true;
}
wep_config_file = fopen(filename, FILE_WRITE);
-
+
if(wep_config_file >= 0)
{
Dump_Weapon_Settings();
- print(sprintf("Dumping weapons... File located in ^2data/data/%s^7.\n", filename));
+ LOG_INFO(sprintf("Dumping weapons... File located in ^2data/data/%s^7.\n", filename));
fclose(wep_config_file);
wep_config_file = -1;
wep_config_alsoprint = -1;
}
else
{
- print(sprintf("^1Error: ^7Could not open file '%s'!\n", filename));
+ LOG_INFO(sprintf("^1Error: ^7Could not open file '%s'!\n", filename));
+ }
+ #else
+ LOG_INFO(_("Weapons dump command only works with sv_cmd.\n"));
+ #endif
+ return;
+ }
+
+ default:
+ case CMD_REQUEST_USAGE:
+ {
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpweapons [filename]"));
+ LOG_INFO(" Where 'filename' is the file to write (default is weapons_dump.cfg),\n");
+ LOG_INFO(" if supplied with '-' output to console as well as default,\n");
+ LOG_INFO(" if left blank, it will only write to default.\n");
+ return;
+ }
+ }
+}
+
+void GenericCommand_dumpturrets(float request)
+{
+ switch(request)
+ {
+ case CMD_REQUEST_COMMAND:
+ {
+ #ifdef SVQC
+ tur_config_file = -1;
+ tur_config_alsoprint = -1;
+ string filename = argv(1);
+
+ if(filename == "")
+ {
+ filename = "turrets_dump.cfg";
+ tur_config_alsoprint = FALSE;
+ }
+ else if(filename == "-")
+ {
+ filename = "turrets_dump.cfg";
+ tur_config_alsoprint = TRUE;
+ }
+ tur_config_file = fopen(filename, FILE_WRITE);
+
+ if(tur_config_file >= 0)
+ {
+ Dump_Turret_Settings();
+ LOG_INFO(sprintf("Dumping turrets... File located in ^2data/data/%s^7.\n", filename));
+ fclose(tur_config_file);
+ tur_config_file = -1;
+ tur_config_alsoprint = -1;
+ }
+ else
+ {
+ LOG_INFO(sprintf("^1Error: ^7Could not open file '%s'!\n", filename));
}
#else
- print(_("Weapons dump command only works with sv_cmd.\n"));
+ LOG_INFO(_("Turrets dump command only works with sv_cmd.\n"));
#endif
return;
}
-
+
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpweapons [filename]"));
- print(" Where 'filename' is the file to write (default is weapons_dump.cfg),\n");
- print(" if supplied with '-' output to console as well as default,\n");
- print(" if left blank, it will only write to default.\n");
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpturrets [filename]"));
+ LOG_INFO(" Where 'filename' is the file to write (default is turrets_dump.cfg),\n");
+ LOG_INFO(" if supplied with '-' output to console as well as default,\n");
+ LOG_INFO(" if left blank, it will only write to default.\n");
return;
}
}
{
if (!fexists(strcat("maps/", argv(2), ".bsp")))
{
- print("maplist: ERROR: ", argv(2), " does not exist!\n");
+ LOG_INFO("maplist: ERROR: ", argv(2), " does not exist!\n");
break;
}
}
default:
- print("Incorrect parameters for ^2maplist^7\n");
+ LOG_INFO("Incorrect parameters for ^2maplist^7\n");
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " maplist action [map]\n"));
- print(" Where 'action' is the command to complete,\n");
- print(" and 'map' is what it acts upon (if required).\n");
- print(" Full list of commands here: \"add, cleanup, remove, shuffle.\"\n");
+ 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");
return;
}
}
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " nextframe command...\n"));
- print(" Where command will be executed next frame of this VM\n");
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " nextframe command...\n"));
+ LOG_INFO(" Where command will be executed next frame of this VM\n");
return;
}
}
}
default:
- print("Incorrect parameters for ^2removefromlist^7\n");
+ LOG_INFO("Incorrect parameters for ^2removefromlist^7\n");
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " removefromlist variable value\n"));
- print(" Where 'variable' is what cvar to remove 'value' from.\n");
- print("See also: ^2addtolist^7\n");
+ 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");
return;
}
}
case CMD_REQUEST_COMMAND:
{
#ifndef MENUQC
- printf(
+ 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"
Destroy_All_Notifications();
CALL_ACCUMULATED_FUNCTION(RegisterNotifications);
#else
- print(_("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.\n"));
#endif
return;
}
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " restartnotifs"));
- print(" No arguments required.\n");
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " restartnotifs"));
+ LOG_INFO(" No arguments required.\n");
return;
}
}
{
float f = cvar_settemp(argv(1), argv(2));
if(f == 1)
- dprint("Creating new settemp tracker for ", argv(1), " and setting it to \"", argv(2), "\" temporarily.\n");
+ LOG_TRACE("Creating new settemp tracker for ", argv(1), " and setting it to \"", argv(2), "\" temporarily.\n");
else if(f == -1)
- dprint("Already had a tracker for ", argv(1), ", updating it to \"", argv(2), "\".\n");
+ LOG_TRACE("Already had a tracker for ", argv(1), ", updating it to \"", argv(2), "\".\n");
// else cvar_settemp itself errors out
return;
}
default:
- print("Incorrect parameters for ^2settemp^7\n");
+ LOG_INFO("Incorrect parameters for ^2settemp^7\n");
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " settemp \"cvar\" \"arguments\"\n"));
- print(" Where 'cvar' is the cvar you want to temporarily set with 'arguments'.\n");
- print("See also: ^2settemp_restore^7\n");
+ 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");
return;
}
}
float i = cvar_settemp_restore();
if(i)
- dprint("Restored ", ftos(i), " temporary cvar settings to their original values.\n");
+ LOG_TRACE("Restored ", ftos(i), " temporary cvar settings to their original values.\n");
else
- dprint("Nothing to restore.\n");
+ LOG_TRACE("Nothing to restore.\n");
return;
}
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " settemp_restore\n"));
- print(" No arguments required.\n");
- print("See also: ^2settemp^7\n");
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " settemp_restore\n"));
+ LOG_INFO(" No arguments required.\n");
+ LOG_INFO("See also: ^2settemp^7\n");
return;
}
}
default:
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " [function to run]"));
+ LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " [function to run]"));
return;
}
}
#define GENERIC_COMMANDS(request,arguments,command) \
GENERIC_COMMAND("addtolist", GenericCommand_addtolist(request, arguments), "Add a string to a cvar") \
GENERIC_COMMAND("dumpcommands", GenericCommand_dumpcommands(request), "Dump all commands on the program to *_cmd_dump.txt") \
+ GENERIC_COMMAND("dumpitems", GenericCommand_dumpitems(request), "Dump all items to the console") \
GENERIC_COMMAND("dumpnotifs", GenericCommand_dumpnotifs(request), "Dump all notifications into notifications_dump.txt") \
+ GENERIC_COMMAND("dumpturrets", GenericCommand_dumpturrets(request), "Dump all turrets into turrets_dump.txt") \
GENERIC_COMMAND("dumpweapons", GenericCommand_dumpweapons(request), "Dump all weapons into weapons_dump.txt") \
GENERIC_COMMAND("maplist", GenericCommand_maplist(request, arguments), "Automatic control of maplist") \
GENERIC_COMMAND("nextframe", GenericCommand_nextframe(request, arguments, command), "Execute the given command next frame of this VM") \
void GenericCommand_macro_help()
{
#define GENERIC_COMMAND(name,function,description) \
- { print(" ^2", name, "^7: ", description, "\n"); }
+ { LOG_INFO(" ^2", name, "^7: ", description, "\n"); }
- GENERIC_COMMANDS(0, 0, "")
+ GENERIC_COMMANDS(0, 0, "");
#undef GENERIC_COMMAND
return;
float GenericCommand_macro_command(float argc, string command)
{
#define GENERIC_COMMAND(name,function,description) \
- { if(name == strtolower(argv(0))) { function; return TRUE; } }
+ { if(name == strtolower(argv(0))) { function; return true; } }
- GENERIC_COMMANDS(CMD_REQUEST_COMMAND, argc, command)
+ GENERIC_COMMANDS(CMD_REQUEST_COMMAND, argc, command);
#undef GENERIC_COMMAND
- return FALSE;
+ return false;
}
float GenericCommand_macro_usage(float argc)
{
#define GENERIC_COMMAND(name,function,description) \
- { if(name == strtolower(argv(1))) { function; return TRUE; } }
+ { if(name == strtolower(argv(1))) { function; return true; } }
- GENERIC_COMMANDS(CMD_REQUEST_USAGE, argc, "")
+ GENERIC_COMMANDS(CMD_REQUEST_USAGE, argc, "");
#undef GENERIC_COMMAND
- return FALSE;
+ return false;
}
void GenericCommand_macro_write_aliases(float fh)
#define GENERIC_COMMAND(name,function,description) \
{ CMD_Write_Alias("qc_cmd_svmenu", name, description); }
- GENERIC_COMMANDS(0, 0, "")
+ GENERIC_COMMANDS(0, 0, "");
#undef GENERIC_COMMAND
return;
if(GenericCommand_macro_command(argc, command)) // continue as usual and scan for normal commands
{
- return TRUE; // handled by one of the above GenericCommand_* functions
+ return true; // handled by one of the above GenericCommand_* functions
}
else if(argc >= 3 && argv(0) == "red")
{
s = substring(command, argv_start_index(2), argv_end_index(-1) - argv_start_index(2));
localcmd(strcat(argv(1), " ", GenericCommand_markup(s)));
- return TRUE;
+ return true;
}
else if(argc >= 3 && crc16(0, argv(0)) == 38566 && crc16(0, strcat(argv(0), argv(0), argv(0))) == 59830)
{
localcmd(strcat(argv(1), " ", s));
- return TRUE;
+ return true;
}
else if(argc >= 3 && crc16(0, argv(0)) == 3826 && crc16(0, strcat(argv(0), argv(0), argv(0))) == 55790)
{
localcmd(strcat(argv(1), " ", s2));
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
}