2004-09-12 21:49:38 +00:00
|
|
|
/* -------------------- dont cross this line --------------------- */
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "ttd.h"
|
|
|
|
#include "console.h"
|
|
|
|
#include "engine.h"
|
|
|
|
#include "functions.h"
|
|
|
|
#include "variables.h"
|
2004-12-04 17:54:56 +00:00
|
|
|
#include "network_data.h"
|
|
|
|
#include "network_client.h"
|
|
|
|
#include "network_server.h"
|
|
|
|
#include "command.h"
|
2004-12-13 15:07:33 +00:00
|
|
|
#include "settings.h"
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-14 16:10:20 +00:00
|
|
|
|
|
|
|
// ** scriptfile handling ** //
|
|
|
|
static FILE * _script_file;
|
|
|
|
static bool _script_running;
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
// ** console command / variable defines ** //
|
2004-09-14 16:10:20 +00:00
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
#define DEF_CONSOLE_CMD(yyyy) static _iconsole_var * yyyy(byte argc, char* argv[], byte argt[])
|
2004-09-12 21:49:38 +00:00
|
|
|
#define DEF_CONSOLE_CMD_HOOK(yyyy) static bool yyyy(_iconsole_cmd * hookcmd)
|
|
|
|
#define DEF_CONSOLE_VAR_HOOK(yyyy) static bool yyyy(_iconsole_var * hookvar)
|
|
|
|
|
2004-09-14 16:10:20 +00:00
|
|
|
|
|
|
|
// ** supporting functions ** //
|
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
static uint32 GetArgumentInteger(const char* arg)
|
2004-09-12 21:49:38 +00:00
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
uint32 result;
|
|
|
|
sscanf(arg, "%u", &result);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
if (result == 0 && arg[0] == '0' && arg[1] == 'x')
|
2004-09-19 15:24:45 +00:00
|
|
|
sscanf(arg, "%x", &result);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* **************************** */
|
|
|
|
/* variable and command hooks */
|
|
|
|
/* **************************** */
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
DEF_CONSOLE_CMD_HOOK(ConCmdHookNoNetwork)
|
|
|
|
{
|
|
|
|
if (_networking) {
|
2004-09-21 21:40:59 +00:00
|
|
|
IConsoleError("This command is forbidden in multiplayer.");
|
2004-09-12 21:49:38 +00:00
|
|
|
return false;
|
2004-09-19 15:24:45 +00:00
|
|
|
}
|
2004-09-12 21:49:38 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
DEF_CONSOLE_VAR_HOOK(ConVarHookNoNetClient)
|
2004-09-12 21:49:38 +00:00
|
|
|
{
|
2004-12-05 12:25:25 +00:00
|
|
|
if (!_network_available) {
|
|
|
|
IConsoleError("You can not use this command because there is no network available.");
|
|
|
|
return false;
|
|
|
|
}
|
2004-12-04 17:54:56 +00:00
|
|
|
if (!_network_server) {
|
|
|
|
IConsoleError("This variable only makes sense for a network server.");
|
2004-09-12 21:49:38 +00:00
|
|
|
return false;
|
2004-09-19 15:24:45 +00:00
|
|
|
}
|
2004-09-12 21:49:38 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
DEF_CONSOLE_CMD_HOOK(ConCmdHookNoNetClient)
|
2004-09-12 21:49:38 +00:00
|
|
|
{
|
2004-12-05 12:25:25 +00:00
|
|
|
if (!_network_available) {
|
|
|
|
IConsoleError("You can not use this command because there is no network available.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (!_network_server) {
|
2004-12-04 17:54:56 +00:00
|
|
|
IConsoleError("This command is only available for a network server.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD_HOOK(ConCmdHookNoNetServer)
|
|
|
|
{
|
2004-12-05 12:25:25 +00:00
|
|
|
if (!_network_available) {
|
|
|
|
IConsoleError("You can not use this command because there is no network available.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (_network_server) {
|
|
|
|
IConsoleError("You can not use this command because you are a network-server.");
|
2004-09-12 21:49:38 +00:00
|
|
|
return false;
|
2004-09-19 15:24:45 +00:00
|
|
|
}
|
2004-09-12 21:49:38 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
DEF_CONSOLE_CMD_HOOK(ConCmdHookNeedNetwork)
|
|
|
|
{
|
2004-12-05 12:25:25 +00:00
|
|
|
if (!_network_available) {
|
|
|
|
IConsoleError("You can not use this command because there is no network available.");
|
|
|
|
return false;
|
|
|
|
}
|
2004-12-04 17:54:56 +00:00
|
|
|
if (!_networking) {
|
|
|
|
IConsoleError("Not connected. Multiplayer only command.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* ENABLE_NETWORK */
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
/* **************************** */
|
|
|
|
/* reset commands */
|
|
|
|
/* **************************** */
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConResetEngines)
|
|
|
|
{
|
|
|
|
StartupEngines();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
#ifdef _DEBUG
|
2004-09-12 21:49:38 +00:00
|
|
|
DEF_CONSOLE_CMD(ConResetTile)
|
|
|
|
{
|
|
|
|
if (argc == 2) {
|
|
|
|
TileIndex tile = (TileIndex)GetArgumentInteger(argv[1]);
|
|
|
|
DoClearSquare(tile);
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
2004-09-19 15:24:45 +00:00
|
|
|
#endif
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConScrollToTile)
|
|
|
|
{
|
|
|
|
if (argc == 2) {
|
|
|
|
TileIndex tile = (TileIndex)GetArgumentInteger(argv[1]);
|
|
|
|
ScrollMainWindowToTile(tile);
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
// ********************************* //
|
|
|
|
// * Network Core Console Commands * //
|
|
|
|
// ********************************* //
|
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
DEF_CONSOLE_CMD(ConStatus)
|
|
|
|
{
|
|
|
|
const char *status;
|
|
|
|
int lag;
|
|
|
|
const ClientState *cs;
|
|
|
|
const NetworkClientInfo *ci;
|
|
|
|
FOR_ALL_CLIENTS(cs) {
|
|
|
|
lag = NetworkCalculateLag(cs);
|
|
|
|
ci = DEREF_CLIENT_INFO(cs);
|
|
|
|
|
|
|
|
switch (cs->status) {
|
|
|
|
case STATUS_INACTIVE:
|
|
|
|
status = "inactive";
|
|
|
|
break;
|
|
|
|
case STATUS_AUTH:
|
|
|
|
status = "authorized";
|
|
|
|
break;
|
|
|
|
case STATUS_MAP:
|
|
|
|
status = "loading map";
|
|
|
|
break;
|
|
|
|
case STATUS_DONE_MAP:
|
|
|
|
status = "done map";
|
|
|
|
break;
|
|
|
|
case STATUS_PRE_ACTIVE:
|
|
|
|
status = "ready";
|
|
|
|
break;
|
|
|
|
case STATUS_ACTIVE:
|
|
|
|
status = "active";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
status = "unknown";
|
|
|
|
break;
|
|
|
|
}
|
2004-12-12 16:04:32 +00:00
|
|
|
IConsolePrintF(8, "Client #%d/%s status: %s frame-lag: %d play-as: %d unique-id: %s",
|
|
|
|
cs->index, ci->client_name, status, lag, ci->client_playas, ci->unique_id);
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConKick)
|
|
|
|
{
|
|
|
|
NetworkClientInfo *ci;
|
|
|
|
|
|
|
|
if (argc == 2) {
|
|
|
|
uint32 index = atoi(argv[1]);
|
|
|
|
if (index == NETWORK_SERVER_INDEX) {
|
|
|
|
IConsolePrint(_iconsole_color_default, "Silly boy, you can not kick yourself!");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (index == 0) {
|
|
|
|
IConsoleError("Invalid Client-ID");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
ci = NetworkFindClientInfoFromIndex(index);
|
|
|
|
|
|
|
|
if (ci != NULL) {
|
|
|
|
SEND_COMMAND(PACKET_SERVER_ERROR)(NetworkFindClientStateFromIndex(index), NETWORK_ERROR_KICKED);
|
|
|
|
return NULL;
|
|
|
|
} else {
|
|
|
|
IConsoleError("Client-ID not found");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: kick <client-id>. For client-ids, see 'clients'.");
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConNetworkClients)
|
|
|
|
{
|
|
|
|
NetworkClientInfo *ci;
|
|
|
|
for (ci = _network_client_info; ci != &_network_client_info[MAX_CLIENT_INFO]; ci++) {
|
|
|
|
if (ci->client_index != NETWORK_EMPTY_INDEX) {
|
|
|
|
IConsolePrintF(8,"Client #%d name: %s play-as: %d", ci->client_index, ci->client_name, ci->client_playas);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
DEF_CONSOLE_CMD(ConNetworkConnect)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
char* ip;
|
2004-12-04 17:54:56 +00:00
|
|
|
const byte *port = NULL;
|
|
|
|
const byte *player = NULL;
|
2004-09-12 21:49:38 +00:00
|
|
|
uint16 rport;
|
|
|
|
|
|
|
|
if (argc<2) return NULL;
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
if (_networking) {
|
|
|
|
// We are in network-mode, first close it!
|
|
|
|
NetworkDisconnect();
|
|
|
|
}
|
|
|
|
|
2004-09-12 23:35:01 +00:00
|
|
|
ip = argv[1];
|
2004-12-04 17:54:56 +00:00
|
|
|
rport = NETWORK_DEFAULT_PORT;
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-12 23:35:01 +00:00
|
|
|
ParseConnectionString(&player, &port, ip);
|
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrintF(_iconsole_color_default, "Connecting to %s...", ip);
|
2004-12-04 17:54:56 +00:00
|
|
|
if (player != NULL) {
|
2004-09-12 21:49:38 +00:00
|
|
|
_network_playas = atoi(player);
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrintF(_iconsole_color_default, " player-no: %s", player);
|
2004-09-12 21:49:38 +00:00
|
|
|
}
|
2004-12-04 17:54:56 +00:00
|
|
|
if (port != NULL) {
|
2004-09-12 21:49:38 +00:00
|
|
|
rport = atoi(port);
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrintF(_iconsole_color_default, " port: %s", port);
|
2004-09-12 21:49:38 +00:00
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
NetworkClientConnectGame(ip, rport);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
#endif /* ENABLE_NETWORK */
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-14 16:10:20 +00:00
|
|
|
/* ******************************** */
|
|
|
|
/* script file console commands */
|
|
|
|
/* ******************************** */
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConExec)
|
|
|
|
{
|
|
|
|
char cmd[1024];
|
|
|
|
bool doerror;
|
|
|
|
|
|
|
|
if (argc<2) return NULL;
|
|
|
|
|
|
|
|
doerror = true;
|
2004-12-04 17:54:56 +00:00
|
|
|
_script_file = fopen(argv[1], "r");
|
2004-09-14 16:10:20 +00:00
|
|
|
|
|
|
|
if (_script_file == NULL) {
|
|
|
|
if (argc>2) if (atoi(argv[2])==0) doerror=false;
|
|
|
|
if (doerror) IConsoleError("script file not found");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
_script_running = true;
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
fgets(cmd, sizeof(cmd), _script_file);
|
2004-09-14 16:10:20 +00:00
|
|
|
while (!feof(_script_file) && _script_running) {
|
2004-12-13 19:07:54 +00:00
|
|
|
strtok(cmd, "\r\n#");
|
|
|
|
if (strlen(cmd) > 0 && cmd[0] != '#')
|
|
|
|
IConsoleCmdExec(cmd);
|
2004-12-04 17:54:56 +00:00
|
|
|
fgets(cmd, sizeof(cmd), _script_file);
|
2004-09-14 16:10:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
_script_running = false;
|
|
|
|
fclose(_script_file);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConReturn)
|
|
|
|
{
|
|
|
|
_script_running = false;
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
/* **************************** */
|
|
|
|
/* default console commands */
|
|
|
|
/* **************************** */
|
|
|
|
|
2004-09-14 16:10:20 +00:00
|
|
|
DEF_CONSOLE_CMD(ConScript)
|
|
|
|
{
|
|
|
|
extern FILE* _iconsole_output_file;
|
2004-09-19 15:24:45 +00:00
|
|
|
if (_iconsole_output_file != NULL) {
|
|
|
|
IConsolePrintF(_iconsole_color_default, "file output complete");
|
2004-09-14 16:10:20 +00:00
|
|
|
fclose(_iconsole_output_file);
|
|
|
|
} else {
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 2) return NULL;
|
|
|
|
IConsolePrintF(_iconsole_color_default, "file output started to: %s",
|
|
|
|
argv[1]);
|
|
|
|
_iconsole_output_file = fopen(argv[1], "ab");
|
2004-09-14 16:10:20 +00:00
|
|
|
if (_iconsole_output_file == NULL) IConsoleError("could not open file");
|
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
DEF_CONSOLE_CMD(ConEcho)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 2) return NULL;
|
2004-09-12 21:49:38 +00:00
|
|
|
IConsolePrint(_iconsole_color_default, argv[1]);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConEchoC)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 3) return NULL;
|
2004-09-12 21:49:38 +00:00
|
|
|
IConsolePrint(atoi(argv[1]), argv[2]);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
extern void SwitchMode(int new_mode);
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConNewGame)
|
|
|
|
{
|
|
|
|
_docommand_recursive = 0;
|
|
|
|
|
|
|
|
_random_seeds[0][0] = Random();
|
|
|
|
_random_seeds[0][1] = InteractiveRandom();
|
|
|
|
|
|
|
|
SwitchMode(SM_NEWGAME);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
DEF_CONSOLE_CMD(ConPrintF)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 3) return NULL;
|
|
|
|
IConsolePrintF(_iconsole_color_default, argv[1] , argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14], argv[15], argv[16], argv[17], argv[18], argv[19]); /* XXX ugh... */
|
2004-09-12 21:49:38 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConPrintFC)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 3) return NULL;
|
|
|
|
IConsolePrintF(atoi(argv[1]), argv[2] , argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14], argv[15], argv[16], argv[17], argv[18], argv[19]); /* XXX ugh... */
|
2004-09-12 21:49:38 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-12-13 18:51:08 +00:00
|
|
|
DEF_CONSOLE_CMD(ConAlias)
|
|
|
|
{
|
2004-12-13 22:13:02 +00:00
|
|
|
_iconsole_alias* alias;
|
|
|
|
|
2004-12-13 18:51:08 +00:00
|
|
|
if (argc < 3) return NULL;
|
2004-12-13 22:13:02 +00:00
|
|
|
|
|
|
|
alias = IConsoleAliasGet(argv[1]);
|
|
|
|
if (alias == NULL) {
|
|
|
|
IConsoleAliasRegister(argv[1],argv[2]);
|
|
|
|
} else {
|
|
|
|
free(alias->cmdline);
|
|
|
|
alias->cmdline = strdup(argv[2]);
|
|
|
|
}
|
2004-12-13 18:51:08 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
DEF_CONSOLE_CMD(ConScreenShot)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 2) {
|
|
|
|
_make_screenshot = 1;
|
2004-09-12 21:49:38 +00:00
|
|
|
} else {
|
2004-09-19 15:24:45 +00:00
|
|
|
if (strcmp(argv[1], "big") == 0)
|
2004-09-12 21:49:38 +00:00
|
|
|
_make_screenshot=2;
|
2004-09-19 15:24:45 +00:00
|
|
|
if (strcmp(argv[1], "no_con") == 0) {
|
2004-09-12 21:49:38 +00:00
|
|
|
IConsoleClose();
|
2004-09-19 15:24:45 +00:00
|
|
|
_make_screenshot = 1;
|
2004-09-12 21:49:38 +00:00
|
|
|
}
|
2004-09-19 15:24:45 +00:00
|
|
|
}
|
2004-09-12 21:49:38 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-09-13 06:56:30 +00:00
|
|
|
DEF_CONSOLE_CMD(ConInfoVar)
|
2004-09-12 21:49:38 +00:00
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 2) return NULL;
|
|
|
|
if (argt[1] != ICONSOLE_VAR_REFERENCE) {
|
2004-09-13 09:21:42 +00:00
|
|
|
IConsoleError("first argument has to be a variable reference");
|
2004-09-19 15:24:45 +00:00
|
|
|
} else {
|
|
|
|
_iconsole_var* item;
|
|
|
|
item = (_iconsole_var*)argv[1];
|
|
|
|
IConsolePrintF(_iconsole_color_default, "var_name: %s", item->name);
|
|
|
|
IConsolePrintF(_iconsole_color_default, "var_type: %i", item->type);
|
|
|
|
IConsolePrintF(_iconsole_color_default, "var_addr: %i", item->data.addr);
|
|
|
|
if (item->_malloc)
|
|
|
|
IConsolePrintF(_iconsole_color_default, "var_malloc: internal");
|
|
|
|
else
|
|
|
|
IConsolePrintF(_iconsole_color_default, "var_malloc: external");
|
2004-09-14 16:10:20 +00:00
|
|
|
if (item->hook_access) IConsoleWarning("var_access hooked");
|
|
|
|
if (item->hook_before_change) IConsoleWarning("var_before_change hooked");
|
2004-09-13 06:56:30 +00:00
|
|
|
if (item->hook_after_change) IConsoleWarning("var_after_change hooked");
|
2004-09-19 15:24:45 +00:00
|
|
|
}
|
2004-09-12 21:49:38 +00:00
|
|
|
return NULL;
|
2004-09-14 16:10:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConInfoCmd)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 2) return NULL;
|
|
|
|
if (argt[1] != ICONSOLE_VAR_UNKNOWN) {
|
2004-09-14 16:10:20 +00:00
|
|
|
IConsoleError("first argument has to be a command name");
|
2004-09-19 15:24:45 +00:00
|
|
|
} else {
|
|
|
|
_iconsole_cmd* item;
|
2004-09-14 16:10:20 +00:00
|
|
|
item = IConsoleCmdGet(argv[1]);
|
2004-09-19 15:24:45 +00:00
|
|
|
if (item == NULL) {
|
2004-09-14 16:10:20 +00:00
|
|
|
IConsoleError("the given command was not found");
|
|
|
|
return NULL;
|
|
|
|
}
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrintF(_iconsole_color_default, "cmd_name: %s", item->name);
|
|
|
|
IConsolePrintF(_iconsole_color_default, "cmd_addr: %i", item->addr);
|
2004-09-14 16:10:20 +00:00
|
|
|
if (item->hook_access) IConsoleWarning("cmd_access hooked");
|
|
|
|
if (item->hook_before_exec) IConsoleWarning("cmd_before_exec hooked");
|
|
|
|
if (item->hook_after_exec) IConsoleWarning("cmd_after_exec hooked");
|
2004-09-19 15:24:45 +00:00
|
|
|
}
|
2004-09-14 16:10:20 +00:00
|
|
|
return NULL;
|
2004-09-12 21:49:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConDebugLevel)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argc < 2) return NULL;
|
2004-09-12 21:49:38 +00:00
|
|
|
SetDebugString(argv[1]);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConExit)
|
|
|
|
{
|
|
|
|
_exit_game = true;
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConHelp)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrint(13, " -- console help -- ");
|
|
|
|
IConsolePrint( 1, " variables: [command to list them: list_vars]");
|
2004-12-04 17:54:56 +00:00
|
|
|
IConsolePrint( 1, " temp_string = \"my little \"");
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrint( 1, "");
|
|
|
|
IConsolePrint( 1, " commands: [command to list them: list_cmds]");
|
|
|
|
IConsolePrint( 1, " [command] [\"string argument with spaces\"] [argument 2] ...");
|
2004-12-04 17:54:56 +00:00
|
|
|
IConsolePrint( 1, " printf \"%s world\" temp_string");
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrint( 1, "");
|
|
|
|
IConsolePrint( 1, " command/variable returning a value into an variable:");
|
2004-12-04 17:54:56 +00:00
|
|
|
IConsolePrint( 1, " temp_uint16 << random");
|
|
|
|
IConsolePrint( 1, " temp_uint16 << temp_uint16_2");
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsolePrint( 1, "");
|
2004-09-12 21:49:38 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConRandom)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
_iconsole_var* result;
|
2004-09-12 21:49:38 +00:00
|
|
|
result = IConsoleVarAlloc(ICONSOLE_VAR_UINT16);
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsoleVarSetValue(result, rand());
|
2004-09-12 21:49:38 +00:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConListCommands)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
const _iconsole_cmd* item;
|
|
|
|
size_t l = 0;
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argv[1] != NULL) l = strlen(argv[1]);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
for (item = _iconsole_cmds; item != NULL; item = item->_next)
|
|
|
|
if (argv[1] == NULL || strncmp(item->name, argv[1], l) == 0)
|
|
|
|
IConsolePrintF(_iconsole_color_default, "%s", item->name);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConListVariables)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
const _iconsole_var* item;
|
|
|
|
size_t l = 0;
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argv[1] != NULL) l = strlen(argv[1]);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
for (item = _iconsole_vars; item != NULL; item = item->_next)
|
|
|
|
if (argv[1] == NULL || strncmp(item->name, argv[1], l) == 0)
|
|
|
|
IConsolePrintF(_iconsole_color_default, "%s", item->name);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-12-13 18:51:08 +00:00
|
|
|
DEF_CONSOLE_CMD(ConListAliases)
|
|
|
|
{
|
|
|
|
const _iconsole_alias* item;
|
|
|
|
size_t l = 0;
|
|
|
|
|
|
|
|
if (argv[1] != NULL) l = strlen(argv[1]);
|
|
|
|
|
|
|
|
for (item = _iconsole_aliases; item != NULL; item = item->_next)
|
|
|
|
if (argv[1] == NULL || strncmp(item->name, argv[1], l) == 0)
|
|
|
|
IConsolePrintF(_iconsole_color_default, "%s => %s", item->name, item->cmdline);
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
DEF_CONSOLE_CMD(ConListDumpVariables)
|
|
|
|
{
|
2004-09-19 15:24:45 +00:00
|
|
|
const _iconsole_var* item;
|
|
|
|
size_t l = 0;
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
if (argv[1] != NULL) l = strlen(argv[1]);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-09-19 15:24:45 +00:00
|
|
|
for (item = _iconsole_vars; item != NULL; item = item->_next)
|
|
|
|
if (argv[1] == NULL || strncmp(item->name, argv[1], l) == 0)
|
|
|
|
IConsoleVarDump(item, NULL);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConSay)
|
|
|
|
{
|
|
|
|
if (argc == 2) {
|
|
|
|
if (!_network_server)
|
|
|
|
SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_CHAT, DESTTYPE_BROADCAST, 0 /* param does not matter */, argv[1]);
|
|
|
|
else
|
|
|
|
NetworkServer_HandleChat(NETWORK_ACTION_CHAT, DESTTYPE_BROADCAST, 0, argv[1], NETWORK_SERVER_INDEX);
|
|
|
|
} else
|
|
|
|
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: say \"<msg>\"");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConSayPlayer)
|
|
|
|
{
|
|
|
|
if (argc == 3) {
|
|
|
|
if (atoi(argv[1]) < 1 || atoi(argv[1]) > MAX_PLAYERS) {
|
|
|
|
IConsolePrintF(_iconsole_color_default, "Unknown player. Player range is between 1 and %d.", MAX_PLAYERS);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!_network_server)
|
|
|
|
SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_CHAT_PLAYER, DESTTYPE_PLAYER, atoi(argv[1]), argv[2]);
|
|
|
|
else
|
|
|
|
NetworkServer_HandleChat(NETWORK_ACTION_CHAT_PLAYER, DESTTYPE_PLAYER, atoi(argv[1]), argv[2], NETWORK_SERVER_INDEX);
|
|
|
|
} else
|
|
|
|
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: say_player <playerno> \"<msg>\"");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
DEF_CONSOLE_CMD(ConSayClient)
|
|
|
|
{
|
|
|
|
if (argc == 3) {
|
|
|
|
if (!_network_server)
|
|
|
|
SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_CHAT_CLIENT, DESTTYPE_CLIENT, atoi(argv[1]), argv[2]);
|
|
|
|
else
|
|
|
|
NetworkServer_HandleChat(NETWORK_ACTION_CHAT_CLIENT, DESTTYPE_CLIENT, atoi(argv[1]), argv[2], NETWORK_SERVER_INDEX);
|
|
|
|
} else
|
|
|
|
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: say_client <clientno> \"<msg>\"");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-12-13 15:07:33 +00:00
|
|
|
#endif /* ENABLE_NETWORK */
|
|
|
|
|
|
|
|
/* **************************** */
|
|
|
|
/* the "set" command */
|
|
|
|
/* **************************** */
|
|
|
|
|
2004-12-13 17:04:41 +00:00
|
|
|
extern void ConsoleSetPatchSetting(char *name, char *value);
|
|
|
|
extern void ConsoleGetPatchSetting(char *name);
|
|
|
|
|
2004-12-13 15:07:33 +00:00
|
|
|
DEF_CONSOLE_CMD(ConSet) {
|
|
|
|
if (argc < 2) {
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Unknonw usage. Usage: set [setting] [value].");
|
|
|
|
return NULL;
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
|
|
|
|
2004-12-13 15:07:33 +00:00
|
|
|
#ifdef ENABLE_NETWORK
|
2004-12-04 17:54:56 +00:00
|
|
|
|
2004-12-13 15:07:33 +00:00
|
|
|
// setting the server password
|
|
|
|
if ((strcmp(argv[1],"server_pw") == 0) || (strcmp(argv[1],"server_password") == 0)) {
|
2004-12-13 17:04:41 +00:00
|
|
|
if (!_network_server) {
|
|
|
|
IConsolePrintF(_iconsole_color_error, "You are not the server");
|
2004-12-13 15:07:33 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (argc == 3) {
|
|
|
|
// Change server password
|
|
|
|
if (strncmp(argv[2], "*", 20) == 0) {
|
|
|
|
_network_game_info.server_password[0] = '\0';
|
|
|
|
_network_game_info.use_password = 0;
|
|
|
|
} else {
|
|
|
|
strncpy(_network_game_info.server_password, argv[2], 20);
|
|
|
|
_network_game_info.use_password = 1;
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
2004-12-13 15:07:33 +00:00
|
|
|
IConsolePrintF(_iconsole_color_warning, "Game-password changed to '%s'", _network_game_info.server_password);
|
|
|
|
} else {
|
|
|
|
IConsolePrintF(_iconsole_color_default, "Current game-password is set to '%s'", _network_game_info.server_password);
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Usage: set server_pw \"<password>\". Use * as <password> to set no password.");
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
2004-12-13 15:07:33 +00:00
|
|
|
return NULL;
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
|
|
|
|
2004-12-13 15:07:33 +00:00
|
|
|
// setting the company password
|
|
|
|
if ((strcmp(argv[1],"company_pw") == 0) || (strcmp(argv[1],"company_password") == 0)) {
|
|
|
|
if (!_networking) {
|
|
|
|
IConsolePrintF(_iconsole_color_error,"No network game running");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (_local_player >= MAX_PLAYERS) {
|
|
|
|
IConsolePrintF(_iconsole_color_default, "You have to own a company to make use of this command.");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (argc == 3) {
|
|
|
|
if (strncmp(argv[2], "*", 20) == 0) {
|
|
|
|
_network_player_info[_local_player].password[0] = '\0';
|
|
|
|
} else {
|
|
|
|
strncpy(_network_player_info[_local_player].password, argv[1], 20);
|
|
|
|
}
|
|
|
|
if (!_network_server)
|
|
|
|
SEND_COMMAND(PACKET_CLIENT_SET_PASSWORD)(_network_player_info[_local_player].password);
|
|
|
|
IConsolePrintF(_iconsole_color_warning, "Company protected with '%s'", _network_player_info[_local_player].password);
|
|
|
|
} else {
|
|
|
|
IConsolePrint(_iconsole_color_default, "'set company_pw' sets a password on your company, so no-one without the correct password can join.");
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Usage: set company_pw \"<password>\". Use * as <password> to set no password.");
|
|
|
|
}
|
2004-12-04 17:54:56 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
2004-12-13 15:07:33 +00:00
|
|
|
|
|
|
|
// setting the player name
|
|
|
|
if (strcmp(argv[1],"name") == 0) {
|
|
|
|
NetworkClientInfo *ci;
|
|
|
|
|
|
|
|
if (!_networking) {
|
|
|
|
IConsolePrintF(_iconsole_color_error,"No network game running");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
ci = NetworkFindClientInfoFromIndex(_network_own_client_index);
|
|
|
|
|
|
|
|
if (argc == 3 && ci != NULL) {
|
|
|
|
if (!_network_server)
|
|
|
|
SEND_COMMAND(PACKET_CLIENT_SET_NAME)(argv[2]);
|
|
|
|
else {
|
|
|
|
if (NetworkFindName(argv[2])) {
|
|
|
|
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, 1, ci->client_name, argv[2]);
|
|
|
|
ttd_strlcpy(ci->client_name, argv[2], 40);
|
|
|
|
NetworkUpdateClientInfo(NETWORK_SERVER_INDEX);
|
|
|
|
}
|
|
|
|
}
|
2004-12-13 19:54:44 +00:00
|
|
|
/* Also keep track of the new name on the client itself */
|
|
|
|
ttd_strlcpy(_network_player_name, argv[2], 40);
|
2004-12-04 17:54:56 +00:00
|
|
|
} else {
|
2004-12-13 15:07:33 +00:00
|
|
|
IConsolePrint(_iconsole_color_default, "With 'set name' you can change your network-player name.");
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Usage: set name \"<name>\".");
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
2004-12-13 15:07:33 +00:00
|
|
|
return NULL;
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
|
|
|
|
2004-12-13 15:07:33 +00:00
|
|
|
// setting the server name
|
|
|
|
if (strcmp(argv[1],"server_name") == 0) {
|
2004-12-13 17:04:41 +00:00
|
|
|
if (!_network_server) {
|
|
|
|
IConsolePrintF(_iconsole_color_error, "You are not the server");
|
2004-12-13 15:07:33 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (argc == 3) {
|
|
|
|
strncpy(_network_server_name, argv[2], 40);
|
|
|
|
IConsolePrintF(_iconsole_color_warning, "Server-name changed to '%s'", _network_server_name);
|
|
|
|
ttd_strlcpy(_network_game_info.server_name, _network_server_name, 40);
|
2004-12-04 17:54:56 +00:00
|
|
|
} else {
|
2004-12-13 15:07:33 +00:00
|
|
|
IConsolePrintF(_iconsole_color_default, "Current server-name is '%s'", _network_server_name);
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Usage: set server_name \"<GameName>\".");
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
2004-12-13 15:07:33 +00:00
|
|
|
return NULL;
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
|
|
|
|
2004-12-13 17:47:21 +00:00
|
|
|
// setting the server port
|
|
|
|
if (strcmp(argv[1],"server_port") == 0) {
|
2004-12-13 17:04:41 +00:00
|
|
|
if (argc == 3 && atoi(argv[2]) != 0) {
|
|
|
|
_network_server_port = atoi(argv[2]);
|
|
|
|
IConsolePrintF(_iconsole_color_warning, "Server-port changed to '%d'", _network_server_port);
|
|
|
|
IConsolePrintF(_iconsole_color_warning, "Changes will take effect the next time you start a server.");
|
|
|
|
} else {
|
|
|
|
IConsolePrintF(_iconsole_color_default, "Current server-port is '%d'", _network_server_port);
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Usage: set server_port <port>.");
|
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2004-12-13 17:47:21 +00:00
|
|
|
// setting the server ip
|
|
|
|
if (strcmp(argv[1],"server_bind_ip") == 0 || strcmp(argv[1],"server_ip_bind") == 0 ||
|
|
|
|
strcmp(argv[1],"server_ip") == 0 || strcmp(argv[1],"server_bind") == 0) {
|
|
|
|
if (argc == 3) {
|
|
|
|
_network_server_bind_ip = inet_addr(argv[2]);
|
|
|
|
snprintf(_network_server_bind_ip_host, sizeof(_network_server_bind_ip_host), "%s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
|
|
|
|
IConsolePrintF(_iconsole_color_warning, "Server-bind-ip changed to '%s'", _network_server_bind_ip_host);
|
|
|
|
IConsolePrintF(_iconsole_color_warning, "Changes will take effect the next time you start a server.");
|
|
|
|
} else {
|
|
|
|
IConsolePrintF(_iconsole_color_default, "Current server-bind-ip is '%s'", _network_server_bind_ip_host);
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Usage: set server_bind_ip <ip>.");
|
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* ENABLE_NETWORK */
|
2004-12-13 15:07:33 +00:00
|
|
|
|
2004-12-13 16:16:28 +00:00
|
|
|
// Patch-options
|
|
|
|
if (strcmp(argv[1],"patch") == 0) {
|
|
|
|
if (_networking && !_network_server) {
|
|
|
|
IConsolePrintF(_iconsole_color_error, "You are not the server");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (argc == 3)
|
|
|
|
ConsoleGetPatchSetting(argv[2]);
|
|
|
|
else if (argc == 4)
|
|
|
|
ConsoleSetPatchSetting(argv[2], argv[3]);
|
|
|
|
else
|
|
|
|
IConsolePrint(_iconsole_color_warning, "Usage: set patch <patch_name> [<value>].");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-12-13 17:47:21 +00:00
|
|
|
IConsolePrint(_iconsole_color_error, "Unknown setting");
|
|
|
|
IConsolePrint(_iconsole_color_error, "Known settings are:");
|
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
|
IConsolePrint(_iconsole_color_error, " - server_pw \"<password>\"");
|
|
|
|
IConsolePrint(_iconsole_color_error, " - company_pw \"<password>\"");
|
|
|
|
IConsolePrint(_iconsole_color_error, " - name \"<playername>\"");
|
|
|
|
IConsolePrint(_iconsole_color_error, " - servername \"<name>\"");
|
|
|
|
IConsolePrint(_iconsole_color_error, " - server_port <port>");
|
|
|
|
IConsolePrint(_iconsole_color_error, " - server_bind_ip <ip>");
|
|
|
|
#endif /* ENABLE_NETWORK */
|
|
|
|
IConsolePrint(_iconsole_color_error, " - patch <patch_name> [<value>]");
|
2004-12-13 15:07:33 +00:00
|
|
|
|
|
|
|
return NULL;
|
2004-12-04 17:54:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-09-12 21:49:38 +00:00
|
|
|
#ifdef _DEBUG
|
|
|
|
/* ****************************************** */
|
|
|
|
/* debug commands and variables */
|
|
|
|
/* ****************************************** */
|
|
|
|
|
|
|
|
void IConsoleDebugLibRegister()
|
|
|
|
{
|
2004-12-05 12:25:25 +00:00
|
|
|
// debugging variables and functions
|
2004-09-19 15:24:45 +00:00
|
|
|
extern bool _stdlib_con_developer; /* XXX extern in .c */
|
|
|
|
|
|
|
|
IConsoleVarRegister("con_developer", &_stdlib_con_developer, ICONSOLE_VAR_BOOLEAN);
|
2004-12-05 12:25:25 +00:00
|
|
|
IConsoleVarMemRegister("temp_string", ICONSOLE_VAR_STRING);
|
|
|
|
IConsoleVarMemRegister("temp_string2", ICONSOLE_VAR_STRING);
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsoleVarMemRegister("temp_bool", ICONSOLE_VAR_BOOLEAN);
|
|
|
|
IConsoleVarMemRegister("temp_int16", ICONSOLE_VAR_INT16);
|
|
|
|
IConsoleVarMemRegister("temp_int32", ICONSOLE_VAR_INT32);
|
|
|
|
IConsoleVarMemRegister("temp_pointer", ICONSOLE_VAR_POINTER);
|
|
|
|
IConsoleVarMemRegister("temp_uint16", ICONSOLE_VAR_UINT16);
|
|
|
|
IConsoleVarMemRegister("temp_uint16_2", ICONSOLE_VAR_UINT16);
|
|
|
|
IConsoleVarMemRegister("temp_uint32", ICONSOLE_VAR_UINT32);
|
|
|
|
IConsoleCmdRegister("resettile", ConResetTile);
|
2004-12-13 18:51:08 +00:00
|
|
|
IConsoleAliasRegister("dbg_echo","echo %A; echo %B");
|
|
|
|
IConsoleAliasRegister("dbg_echo2","echo %+");
|
2004-09-12 21:49:38 +00:00
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* ****************************************** */
|
|
|
|
/* console command and variable registration */
|
|
|
|
/* ****************************************** */
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
void IConsoleStdLibRegister(void)
|
2004-09-12 21:49:38 +00:00
|
|
|
{
|
|
|
|
// stdlib
|
2004-09-19 15:24:45 +00:00
|
|
|
extern byte _stdlib_developer; /* XXX extern in .c */
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-12-05 12:25:25 +00:00
|
|
|
// default variables and functions
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsoleCmdRegister("debug_level", ConDebugLevel);
|
|
|
|
IConsoleCmdRegister("dump_vars", ConListDumpVariables);
|
|
|
|
IConsoleCmdRegister("echo", ConEcho);
|
|
|
|
IConsoleCmdRegister("echoc", ConEchoC);
|
|
|
|
IConsoleCmdRegister("exec", ConExec);
|
|
|
|
IConsoleCmdRegister("exit", ConExit);
|
|
|
|
IConsoleCmdRegister("help", ConHelp);
|
|
|
|
IConsoleCmdRegister("info_cmd", ConInfoCmd);
|
|
|
|
IConsoleCmdRegister("info_var", ConInfoVar);
|
|
|
|
IConsoleCmdRegister("list_cmds", ConListCommands);
|
|
|
|
IConsoleCmdRegister("list_vars", ConListVariables);
|
2004-12-13 18:51:08 +00:00
|
|
|
IConsoleCmdRegister("list_aliases", ConListAliases);
|
2004-12-04 17:54:56 +00:00
|
|
|
IConsoleCmdRegister("newgame", ConNewGame);
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsoleCmdRegister("printf", ConPrintF);
|
|
|
|
IConsoleCmdRegister("printfc", ConPrintFC);
|
|
|
|
IConsoleCmdRegister("quit", ConExit);
|
|
|
|
IConsoleCmdRegister("random", ConRandom);
|
|
|
|
IConsoleCmdRegister("resetengines", ConResetEngines);
|
|
|
|
IConsoleCmdRegister("return", ConReturn);
|
2004-12-05 12:25:25 +00:00
|
|
|
IConsoleCmdRegister("screenshot", ConScreenShot);
|
|
|
|
IConsoleCmdRegister("script", ConScript);
|
|
|
|
IConsoleCmdRegister("scrollto", ConScrollToTile);
|
2004-12-13 15:07:33 +00:00
|
|
|
IConsoleCmdRegister("set", ConSet);
|
2004-12-13 18:51:08 +00:00
|
|
|
IConsoleCmdRegister("alias", ConAlias);
|
|
|
|
IConsoleAliasRegister("new_game", "newgame");
|
|
|
|
IConsoleAliasRegister("newmap", "newgame");
|
|
|
|
IConsoleAliasRegister("new_map", "newgame");
|
2004-12-05 12:25:25 +00:00
|
|
|
|
|
|
|
IConsoleVarRegister("developer", &_stdlib_developer, ICONSOLE_VAR_BYTE);
|
|
|
|
|
|
|
|
// networking variables and functions
|
2004-12-04 17:54:56 +00:00
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
|
IConsoleCmdRegister("say", ConSay);
|
|
|
|
IConsoleCmdHook("say", ICONSOLE_HOOK_ACCESS, ConCmdHookNeedNetwork);
|
|
|
|
IConsoleCmdRegister("say_player", ConSayPlayer);
|
|
|
|
IConsoleCmdHook("say_player", ICONSOLE_HOOK_ACCESS, ConCmdHookNeedNetwork);
|
|
|
|
IConsoleCmdRegister("say_client", ConSayClient);
|
|
|
|
IConsoleCmdHook("say_client", ICONSOLE_HOOK_ACCESS, ConCmdHookNeedNetwork);
|
2004-12-05 12:25:25 +00:00
|
|
|
IConsoleCmdRegister("kick", ConKick);
|
|
|
|
IConsoleCmdHook("kick", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
|
|
|
IConsoleCmdRegister("connect", ConNetworkConnect);
|
|
|
|
IConsoleCmdHook("connect", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetServer);
|
|
|
|
IConsoleCmdRegister("clients", ConNetworkClients);
|
2004-12-04 17:54:56 +00:00
|
|
|
IConsoleCmdRegister("status", ConStatus);
|
|
|
|
IConsoleCmdHook("status", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
2004-12-05 12:25:25 +00:00
|
|
|
IConsoleCmdHook("resetengines", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetwork);
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
IConsoleVarRegister("net_frame_freq", &_network_frame_freq, ICONSOLE_VAR_UINT8);
|
2004-12-05 12:25:25 +00:00
|
|
|
IConsoleVarHook("net_frame_freq", ICONSOLE_HOOK_ACCESS, ConVarHookNoNetClient);
|
2004-09-19 15:24:45 +00:00
|
|
|
IConsoleVarRegister("net_sync_freq", &_network_sync_freq, ICONSOLE_VAR_UINT16);
|
2004-12-05 12:25:25 +00:00
|
|
|
IConsoleVarHook("net_sync_freq", ICONSOLE_HOOK_ACCESS, ConVarHookNoNetClient);
|
2004-12-04 17:54:56 +00:00
|
|
|
#endif /* ENABLE_NETWORK */
|
2004-09-12 21:49:38 +00:00
|
|
|
|
2004-12-05 12:25:25 +00:00
|
|
|
// debugging stuff
|
|
|
|
#ifdef _DEBUG
|
|
|
|
IConsoleDebugLibRegister();
|
|
|
|
#endif
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
|
|
}
|
2004-09-19 15:24:45 +00:00
|
|
|
/* -------------------- don't cross this line --------------------- */
|