#endif
}
+
+// =======================
+// Command Sub-Functions
+// =======================
+
void GenericCommand_addtolist(float request, float argc)
{
switch(request)
if(argc >= 2)
{
- if(cvar_string(argv(1)) == "") // cvar was empty
+ string original_cvar = argv(1);
+ string tmp_string = argv(2);
+
+ if(cvar_string(original_cvar) == "") // cvar was empty
{
- cvar_set(argv(1), argv(2));
+ cvar_set(original_cvar, tmp_string);
}
else // add it to the end of the list if the list doesn't already have it
{
- argc = tokenizebyseparator(cvar_string(argv(1)), " ");
+ argc = tokenizebyseparator(cvar_string(original_cvar), " ");
+
for(i = 0; i < argc; ++i)
- if(argv(i) == argv(2))
+ if(argv(i) == tmp_string)
return; // already in list
- cvar_set(argv(1), strcat(argv(2), " ", cvar_string(argv(1))));
+ cvar_set(original_cvar, strcat(tmp_string, " ", cvar_string(original_cvar)));
}
return;
}
}
default:
- // todo
+ print("Incorrect parameters for ^2addtolist^7\n");
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " addtolist variable [value]"));
- print(" Where 'variable' is what to add to the list,\n");
- print(" and 'value' is any extra optional paramaters to add with quotes.");
+ print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " addtolist variable value"));
+ print(" Where 'variable' is what to add 'value' to.\n");
+ print("See also: ^2removefromlist^7\n");
return;
}
}
if(fh >= 0)
{
-#ifdef SVQC
-
- // write sv_cmd aliases
- CMD_Write("dump of server console commands:\n");
- GameCommand_macro_write_aliases(fh);
-
- // write client only aliases
- CMD_Write("\ndump of networked client only commands:\n");
- ClientCommand_macro_write_aliases(fh);
-
- // write common aliases
- CMD_Write("\ndump of common commands:\n");
- CommonCommand_macro_write_aliases(fh);
+ #ifdef SVQC
+ CMD_Write("dump of server console commands:\n");
+ GameCommand_macro_write_aliases(fh);
+
+ CMD_Write("\ndump of networked client only commands:\n");
+ ClientCommand_macro_write_aliases(fh);
+
+ CMD_Write("\ndump of common commands:\n");
+ CommonCommand_macro_write_aliases(fh);
- // write ban aliases
- CMD_Write("\ndump of ban commands:\n");
-
-#endif
-
-#ifdef CSQC
-
- // write cl_cmd aliases
- CMD_Write("dump of client commands:\n");
- LocalCommand_macro_write_aliases(fh);
-
-#endif
+ CMD_Write("\ndump of ban commands:\n");
+ BanCommand_macro_write_aliases(fh);
+ #endif
+
+ #ifdef CSQC
+ CMD_Write("dump of client commands:\n");
+ LocalCommand_macro_write_aliases(fh);
+ #endif
- // write generic commands
CMD_Write("\ndump of generic commands:\n");
GenericCommand_macro_write_aliases(fh);
- print("Completed dump of aliases in ^2", GetProgramCommandPrefix(), "_dump.txt^7.\n");
+ print("Completed dump of aliases in ^2data/data/", GetProgramCommandPrefix(), "_dump.txt^7.\n");
fclose(fh);
}
break; // go to usage
}
+ case "cleanup": // scans maplist and only adds back the ones which are really usable
+ {
+ MapInfo_Enumerate();
+ MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 0);
+ argc = tokenizebyseparator(cvar_string("g_maplist"), " ");
+
+ for(i = 0; i < argc; ++i)
+ if(MapInfo_CheckMap(argv(i)))
+ tmp_string = strcat(tmp_string, " ", argv(i));
+
+ tmp_string = substring(tmp_string, 1, strlen(tmp_string) - 1);
+ cvar_set("g_maplist", tmp_string);
+
+ return;
+ }
+
case "remove": // scans maplist and only adds back whatever maps were not provided in argv(2)
{
if(argc == 3)
cvar_set("g_maplist", shufflewords(cvar_string("g_maplist")));
return;
}
-
- case "cleanup": // scans maplist and only adds back the ones which are really usable
- {
- MapInfo_Enumerate();
- MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 0);
- argc = tokenizebyseparator(cvar_string("g_maplist"), " ");
-
- for(i = 0; i < argc; ++i)
- if(MapInfo_CheckMap(argv(i)))
- tmp_string = strcat(tmp_string, " ", argv(i));
-
- tmp_string = substring(tmp_string, 1, strlen(tmp_string) - 1);
- cvar_set("g_maplist", tmp_string);
-
- return;
- }
default: break;
}
print("Incorrect parameters for ^2maplist^7\n");
case CMD_REQUEST_USAGE:
{
- print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " maplist command [map]")); // todo
- print(" No arguments required.\n");
+ print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " maplist action [map]"));
+ 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");
+ return;
+ }
+ }
+}
+
+void GenericCommand_nextframe(float request, float arguments, string command)
+{
+ switch(request)
+ {
+ case CMD_REQUEST_COMMAND:
+ {
+ queue_to_execute_next_frame(substring(command, argv_start_index(1), argv_end_index(-1) - argv_start_index(1)));
+ return;
+ }
+
+ default:
+ case CMD_REQUEST_USAGE:
+ {
+ print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " nextframe command..."));
+ print(" Where command will be executed next frame of this VM\n");
+ return;
+ }
+ }
+}
+
+void GenericCommand_removefromlist(float request, float argc)
+{
+ switch(request)
+ {
+ case CMD_REQUEST_COMMAND:
+ {
+ if(argc == 3)
+ {
+ float i;
+ string original_cvar = argv(1);
+ string removal = argv(2);
+ string tmp_string;
+
+ argc = tokenizebyseparator(cvar_string(original_cvar), " ");
+
+ for(i = 0; i < argc; ++i)
+ if(argv(i) != removal)
+ tmp_string = strcat(tmp_string, " ", argv(i));
+
+ tmp_string = substring(tmp_string, 1, strlen(tmp_string) - 1);
+ cvar_set(original_cvar, tmp_string);
+
+ return;
+ }
+ }
+
+ default:
+ print("Incorrect parameters for ^2removefromlist^7\n");
+ case CMD_REQUEST_USAGE:
+ {
+ print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " removefromlist variable value"));
+ print(" Where 'variable' is what cvar to remove 'value' from.\n");
+ print("See also: ^2addtolist^7\n");
return;
}
}
{
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");
return;
}
}
{
print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " settemp_restore\n"));
print(" No arguments required.\n");
+ print("See also: ^2settemp^7\n");
return;
}
}
// Do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;)
#define GENERIC_COMMANDS(request,arguments,command) \
- GENERIC_COMMAND("addtolist", GenericCommand_addtolist(request, arguments), "Add a string to a cvar at the end of a list") \
+ 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("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") \
+ GENERIC_COMMAND("removefromlist", GenericCommand_removefromlist(request, arguments), "Remove a string from a cvar") \
GENERIC_COMMAND("rpn", GenericCommand_rpn(request, arguments, command), "RPN calculator") \
GENERIC_COMMAND("settemp", GenericCommand_settemp(request, arguments), "Temporarily set a value to a cvar which is restored later") \
GENERIC_COMMAND("settemp_restore", GenericCommand_settemp_restore(request, arguments), "Restore all cvars set by settemp command") \
void GenericCommand_macro_help()
{
#define GENERIC_COMMAND(name,function,description) \
- { if(strtolower(description) != string_null) { print(" ^2", name, "^7: ", description, "\n"); } }
+ { print(" ^2", name, "^7: ", description, "\n"); }
GENERIC_COMMANDS(0, 0, "")
#undef GENERIC_COMMAND