static bool Cht_WarpTransLevel (cheatseq_t *cheat) { char cmd[11] = "hxvisit xx"; cmd[8] = cheat->Args[0]; cmd[9] = cheat->Args[1]; C_DoCommand (cmd); return true; }
static bool Cht_ChangeStartSpot (cheatseq_t *cheat) { char cmd[64]; mysnprintf (cmd, countof(cmd), "changemap %s %c", level.mapname, cheat->Args[0]); C_DoCommand (cmd); return true; }
static bool Cht_ChangeLevel (cheatseq_t *cheat) { char cmd[10] = "idclev xx"; cmd[7] = cheat->Args[0]; cmd[8] = cheat->Args[1]; C_DoCommand (cmd); return true; }
static bool Cht_Music (cheatseq_t *cheat) { char buf[9] = "idmus xx"; buf[6] = cheat->Args[0]; buf[7] = cheat->Args[1]; C_DoCommand (buf); return true; }
void AddCommandString (std::string cmd, bool onlycvars) { char *brkpt; int more; if (!cmd.length()) return; char *allocated = new char[cmd.length() + 1]; // denis - fixme - this ugly fix is required because in some places, the function is called with a string that must not be modified, eg AddCommandString("hello"); - please rewrite - should have a const parameter char *copy = allocated; memcpy(copy, cmd.c_str(), cmd.length() + 1); while (*copy) { brkpt = copy; while (*brkpt != ';' && *brkpt != '\0') { if (*brkpt == '\"') { brkpt++; while (*brkpt != '\"' && *brkpt != '\0') brkpt++; } brkpt++; } if (*brkpt == ';') { *brkpt = '\0'; more = 1; } else { more = 0; } safemode |= onlycvars; C_DoCommand (copy); if(onlycvars) safemode = false; if (more) { *brkpt = ';'; } copy = brkpt + more; } delete[] allocated; }
static bool Cht_MyPos (cheatseq_t *cheat) { C_DoCommand ("toggle idmypos"); return true; }
void D_DoomMain (void) { const char *iwad; M_ClearRandom(); gamestate = GS_STARTUP; M_FindResponseFile(); // [ML] 23/1/07 - Add Response file support back in if (lzo_init () != LZO_E_OK) // [RH] Initialize the minilzo package. I_FatalError ("Could not initialize LZO routines"); C_ExecCmdLineParams (false, true); // [Nes] test for +logfile command // Always log by default if (!LOG.is_open()) C_DoCommand("logfile"); Printf (PRINT_HIGH, "Heapsize: %u megabytes\n", got_heapsize); M_LoadDefaults (); // load before initing other systems C_ExecCmdLineParams (true, false); // [RH] do all +set commands on the command line iwad = Args.CheckValue("-iwad"); if(!iwad) iwad = ""; D_AddDefWads(iwad); D_AddCmdParameterFiles(); wadhashes = W_InitMultipleFiles (wadfiles); SV_InitMultipleFiles (wadfiles); // [RH] Initialize configurable strings. D_InitStrings (); D_DoDefDehackedPatch(); I_Init (); // Base systems have been inited; enable cvar callbacks cvar_t::EnableCallbacks (); // [RH] User-configurable startup strings. Because BOOM does. if (STARTUP1[0]) Printf (PRINT_HIGH, "%s\n", STARTUP1); if (STARTUP2[0]) Printf (PRINT_HIGH, "%s\n", STARTUP2); if (STARTUP3[0]) Printf (PRINT_HIGH, "%s\n", STARTUP3); if (STARTUP4[0]) Printf (PRINT_HIGH, "%s\n", STARTUP4); if (STARTUP5[0]) Printf (PRINT_HIGH, "%s\n", STARTUP5); devparm = Args.CheckParm ("-devparm"); // get skill / episode / map from parms strcpy (startmap, (gameinfo.flags & GI_MAPxx) ? "MAP01" : "E1M1"); const char *val = Args.CheckValue ("-skill"); if (val) { sv_skill.Set (val[0]-'0'); } if (devparm) Printf (PRINT_HIGH, "%s", Strings[0].builtin); // D_DEVSTR const char *v = Args.CheckValue ("-timer"); if (v) { double time = atof (v); Printf (PRINT_HIGH, "Levels will end after %g minute%s.\n", time, time > 1 ? "s" : ""); sv_timelimit.Set ((float)time); } const char *w = Args.CheckValue ("-avg"); if (w) { Printf (PRINT_HIGH, "Austin Virtual Gaming: Levels will end after 20 minutes\n"); sv_timelimit.Set (20); } // [RH] Now that all text strings are set up, // insert them into the level and cluster data. G_SetLevelStrings (); // [RH] Parse through all loaded mapinfo lumps G_ParseMapInfo (); // [RH] Parse any SNDINFO lumps S_ParseSndInfo(); // Check for -file in shareware if (modifiedgame && (gameinfo.flags & GI_SHAREWARE)) I_FatalError ("You cannot -file with the shareware version. Register!"); Printf (PRINT_HIGH, "R_Init: Init DOOM refresh daemon.\n"); R_Init (); Printf (PRINT_HIGH, "P_Init: Init Playloop state.\n"); P_Init (); Printf (PRINT_HIGH, "SV_InitNetwork: Checking network game status.\n"); SV_InitNetwork(); // [RH] Initialize items. Still only used for the give command. :-( InitItems (); // [RH] Lock any cvars that should be locked now that we're // about to begin the game. cvar_t::EnableNoSet (); // [RH] Now that all game subsystems have been initialized, // do all commands on the command line other than +set C_ExecCmdLineParams (false, false); Printf(PRINT_HIGH, "========== Odamex Server Initialized ==========\n"); #ifdef UNIX if (Args.CheckParm("-background")) daemon_init(); #endif // Use wads mentioned on the commandline to start with //std::vector<std::string> start_wads; //std::string custwad; //iwad = Args.CheckValue("-iwad"); //D_DoomWadReboot(start_wads); unsigned p = Args.CheckParm ("-warp"); if (p && p < Args.NumArgs() - (1+(gameinfo.flags & GI_MAPxx ? 0 : 1))) { int ep, map; if (gameinfo.flags & GI_MAPxx) { ep = 1; map = atoi (Args.GetArg(p+1)); } else { ep = Args.GetArg(p+1)[0]-'0'; map = Args.GetArg(p+2)[0]-'0'; } strncpy (startmap, CalcMapName (ep, map), 8); autostart = true; } // [RH] Hack to handle +map p = Args.CheckParm ("+map"); if (p && p < Args.NumArgs()-1) { strncpy (startmap, Args.GetArg (p+1), 8); ((char *)Args.GetArg (p))[0] = '-'; autostart = true; } strncpy(level.mapname, startmap, sizeof(level.mapname)); G_ChangeMap (); D_DoomLoop (); // never returns }
void AddCommandString(const std::string &str, bool onlycvars) { size_t totallen = str.length(); if (!totallen) return; // pointers to the start and end of the current substring in str.c_str() const char *cstart = str.c_str(); const char *cend; // stores a copy of the current substring char *command = new char[totallen + 1]; // scan for a command ending while (*cstart) { const char *cp = cstart; while (*cp != ';' && *cp != 0) { if (cp[0] == '\\' && cp[1] != 0) { // [AM] Skip two chars if escaped. cp += 2; } else if (*cp == '"') { // Ignore ';' if it is inside a pair of quotes. while (1) { cp++; if (*cp == 0) { // End of string. break; } if (cp[0] == '\\' && cp[1] == '"') { // [AM] Skip over escaped quote. cp++; } else if (*cp == '"') { // End of quote. Skip over ending quote. cp++; break; } } } else { // Advance to next char. cp++; } } safemode |= onlycvars; cend = cp - 1; // remove leading and trailing whitespace while (*cstart == ' ' && cstart < cend) cstart++; while (*cend == ' ' && cend > cstart) cend--; size_t clength = cend - cstart + 1; memcpy(command, cstart, clength); command[clength] = '\0'; C_DoCommand(command); if (onlycvars) safemode = false; // are there more commands following this one? if (*cp == ';') cstart = cp + 1; else cstart = cp; } delete[] command; }
// // D_DoomMain // // [NightFang] - Cause I cant call ArgsSet from g_level.cpp // [ML] 23/1/07 - Add Response file support back in // void D_DoomMain() { unsigned int p; gamestate = GS_STARTUP; // init console so it can capture all of the startup messages C_InitConsole(); atterm(C_ShutdownConsole); W_SetupFileIdentifiers(); // [RH] Initialize items. Still only used for the give command. :-( InitItems(); M_FindResponseFile(); // [ML] 23/1/07 - Add Response file support back in if (lzo_init () != LZO_E_OK) // [RH] Initialize the minilzo package. I_FatalError("Could not initialize LZO routines"); C_ExecCmdLineParams(false, true); // [Nes] test for +logfile command // Always log by default if (!LOG.is_open()) C_DoCommand("logfile"); M_LoadDefaults(); // load before initing other systems C_ExecCmdLineParams(true, false); // [RH] do all +set commands on the command line std::vector<std::string> newwadfiles, newpatchfiles; const char* iwad_filename_cstr = Args.CheckValue("-iwad"); if (iwad_filename_cstr) { std::string iwad_filename(iwad_filename_cstr); M_AppendExtension(iwad_filename, ".WAD"); newwadfiles.push_back(iwad_filename); } D_AddWadCommandLineFiles(newwadfiles); D_AddDehCommandLineFiles(newpatchfiles); D_LoadResourceFiles(newwadfiles, newpatchfiles); Printf(PRINT_HIGH, "I_Init: Init hardware.\n"); I_Init(); // [SL] Call init routines that need to be reinitialized every time WAD changes D_Init(); atterm(D_Shutdown); Printf(PRINT_HIGH, "SV_InitNetwork: Checking network game status.\n"); SV_InitNetwork(); // Base systems have been inited; enable cvar callbacks cvar_t::EnableCallbacks(); // [RH] User-configurable startup strings. Because BOOM does. if (GStrings(STARTUP1)[0]) Printf(PRINT_HIGH, "%s\n", GStrings(STARTUP1)); if (GStrings(STARTUP2)[0]) Printf(PRINT_HIGH, "%s\n", GStrings(STARTUP2)); if (GStrings(STARTUP3)[0]) Printf(PRINT_HIGH, "%s\n", GStrings(STARTUP3)); if (GStrings(STARTUP4)[0]) Printf(PRINT_HIGH, "%s\n", GStrings(STARTUP4)); if (GStrings(STARTUP5)[0]) Printf(PRINT_HIGH, "%s\n", GStrings(STARTUP5)); // developer mode devparm = Args.CheckParm("-devparm"); if (devparm) Printf (PRINT_HIGH, "%s", GStrings(D_DEVSTR)); // D_DEVSTR // Nomonsters if (Args.CheckParm("-nomonsters")) sv_nomonsters = 1; // Respawn if (Args.CheckParm("-respawn")) sv_monstersrespawn = 1; // Fast if (Args.CheckParm("-fast")) sv_fastmonsters = 1; // get skill / episode / map from parms strcpy(startmap, (gameinfo.flags & GI_MAPxx) ? "MAP01" : "E1M1"); const char* val = Args.CheckValue("-skill"); if (val) sv_skill.Set(val[0] - '0'); p = Args.CheckParm("-timer"); if (p && p < Args.NumArgs() - 1) { float time = atof(Args.GetArg(p + 1)); Printf(PRINT_HIGH, "Levels will end after %g minute%s.\n", time, time > 1 ? "s" : ""); sv_timelimit.Set(time); } if (Args.CheckValue("-avg")) { Printf(PRINT_HIGH, "Austin Virtual Gaming: Levels will end after 20 minutes\n"); sv_timelimit.Set(20); } // [RH] Lock any cvars that should be locked now that we're // about to begin the game. cvar_t::EnableNoSet(); // [RH] Now that all game subsystems have been initialized, // do all commands on the command line other than +set C_ExecCmdLineParams(false, false); // [AM] Initialize banlist SV_InitBanlist(); Printf(PRINT_HIGH, "========== Odamex Server Initialized ==========\n"); #ifdef UNIX if (Args.CheckParm("-fork")) daemon_init(); #endif p = Args.CheckParm("-warp"); if (p && p < Args.NumArgs() - (1+(gameinfo.flags & GI_MAPxx ? 0 : 1))) { int ep, map; if (gameinfo.flags & GI_MAPxx) { ep = 1; map = atoi(Args.GetArg(p+1)); } else { ep = Args.GetArg(p+1)[0]-'0'; map = Args.GetArg(p+2)[0]-'0'; } strncpy(startmap, CalcMapName(ep, map), 8); autostart = true; } // [RH] Hack to handle +map p = Args.CheckParm("+map"); if (p && p < Args.NumArgs() - 1) { strncpy(startmap, Args.GetArg(p + 1), 8); ((char*)Args.GetArg(p))[0] = '-'; autostart = true; } strncpy(level.mapname, startmap, sizeof(level.mapname)); G_ChangeMap(); D_DoomLoop(); // never returns }