这篇教程C++ Cmd_ArgsFrom函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中Cmd_ArgsFrom函数的典型用法代码示例。如果您正苦于以下问题:C++ Cmd_ArgsFrom函数的具体用法?C++ Cmd_ArgsFrom怎么用?C++ Cmd_ArgsFrom使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了Cmd_ArgsFrom函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: SVC_RemoteCommand/*===============SVC_RemoteCommandAn rcon packet arrived from the network.Shift down the remaining argsRedirect all printfs===============*/static void SVC_RemoteCommand( netadr_t from, msg_t *msg ) { qboolean valid; unsigned int time; char remaining[1024]; // TTimo - scaled down to accumulate, but not overflow anything network wise, print wise etc. // (OOB messages are the bottleneck here)#define SV_OUTPUTBUF_LENGTH (1024 - 16) char sv_outputbuf[SV_OUTPUTBUF_LENGTH]; static unsigned int lasttime = 0; char *cmd_aux; // TTimo - https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=534 time = Com_Milliseconds(); if ( (unsigned)( time - lasttime ) < 500u ) { return; } lasttime = time; if ( !strlen( sv_rconPassword->string ) || strcmp (Cmd_Argv(1), sv_rconPassword->string) ) { valid = qfalse; Com_Printf ("Bad rcon from %s: %s/n", NET_AdrToString (from), Cmd_ArgsFrom(2) ); } else { valid = qtrue; Com_Printf ("Rcon from %s: %s/n", NET_AdrToString (from), Cmd_ArgsFrom(2) ); } // start redirecting all print outputs to the packet svs.redirectAddress = from; Com_BeginRedirect (sv_outputbuf, SV_OUTPUTBUF_LENGTH, SV_FlushRedirect); if ( !strlen( sv_rconPassword->string ) ) { Com_Printf ("No rconpassword set on the server./n"); } else if ( !valid ) { Com_Printf ("Bad rconpassword./n"); } else { remaining[0] = 0; // https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=543 // get the command directly, "rcon <pass> <command>" to avoid quoting issues // extract the command by walking // since the cmd formatting can fuckup (amount of spaces), using a dumb step by step parsing cmd_aux = Cmd_Cmd(); cmd_aux+=4; while(cmd_aux[0]==' ') cmd_aux++; while(cmd_aux[0] && cmd_aux[0]!=' ') // password cmd_aux++; while(cmd_aux[0]==' ') cmd_aux++; Q_strcat( remaining, sizeof(remaining), cmd_aux); Cmd_ExecuteString (remaining); } Com_EndRedirect ();}
开发者ID:BrendanCoughran,项目名称:ioquake3,代码行数:68,
示例2: Key_Bind_f/*===================Key_Bind_f===================*/static void Key_Bind_f(void){ int c, b; c = Cmd_Argc(); if (c < 2) { Com_Printf("bind <key> [command] : attach a command to a key/n"); return; } b = Key_StringToKeynum(Cmd_Argv(1)); if (b == -1) { Com_Printf("/"%s/" isn't a valid key/n", Cmd_Argv(1)); return; } if (c == 2) { if (keybindings[b]) Com_Printf("/"%s/" = /"%s/"/n", Cmd_Argv(1), keybindings[b]); else Com_Printf("/"%s/" is not bound/n", Cmd_Argv(1)); return; }// copy the rest of the command line Key_SetBinding(b, Cmd_ArgsFrom(2));}
开发者ID:jayschwa,项目名称:q2pro,代码行数:32,
示例3: SV_ConTell_f/*==================SV_ConTell_f==================*/static void SV_ConTell_f(void) { char *p; char text[1024]; client_t *cl; // make sure server is running if ( !com_sv_running->integer ) { Com_Printf( "Server is not running./n" ); return; } if ( Cmd_Argc() < 3 ) { Com_Printf ("Usage: tell <client number> <text>/n"); return; } cl = SV_GetPlayerByNum(); if ( !cl ) { return; } strcpy (text, "console_tell: "); p = Cmd_ArgsFrom(2); if ( *p == '"' ) { p++; p[strlen(p)-1] = 0; } strcat(text, p); SV_SendServerCommand(cl, "chat /"%s/"", text);}
开发者ID:Lrns123,项目名称:jkaq3,代码行数:38,
示例4: reason/*==================SV_StartServerDemo_fRecord a server-side demo for given player/slot. The demowill be called "YYYY-MM-DD_hh-mm-ss_playername_id.urtdemo",in the "demos" directory under your game directory. Notethat "startserverdemo all" will start demos for all playerscurrently in the server. Players who join later require anew "startserverdemo" command. If you are already recordingdemos for some players, another "startserverdemo all" willstart new demos only for players not already recording. Notethat bots will never be recorded, not even if "all" is given.The server-side demos will stop when "stopserverdemo" is issuedor when the server restarts for any reason (such as a new maploading).==================*/static void SV_StartServerDemo_f(void){ client_t *client; Com_DPrintf("SV_StartServerDemo_f/n"); if (!com_sv_running->integer) { Com_Printf("startserverdemo: Server not running/n"); return; } if (Cmd_Argc() < 2) { Com_Printf("Usage: startserverdemo <player-or-all> <optional demo name>/n"); return; } client = SV_BetterGetPlayerByHandle(Cmd_Argv(1)); if (!Q_stricmp(Cmd_Argv(1), "all")) { if (client) { Com_Printf("startserverdemo: Player 'all' ignored, starting all demos instead/n"); } SV_StartRecordAll(); } else if (client) { if (Cmd_Argc() > 2) { SV_StartRecordOne(client, Cmd_ArgsFrom(2)); } else { SV_StartRecordOne(client, NULL); } } else { Com_Printf("startserverdemo: No player with that handle/in that slot/n"); }}
开发者ID:slackin,项目名称:ioq3-for-UrbanTerror-4,代码行数:52,
示例5: SV_ForceName_f/*==================SV_ForceName_fSets a user's name==================*/static void SV_ForceName_f( void ) { client_t *cl; const char *name; // make sure server is running if ( !com_sv_running->integer ) { Com_Printf( "Server is not running./n" ); return; } if ( Cmd_Argc() >= 2 ) { cl = SV_GetPlayerByNum(); if ( !cl ) { return; } if ( Cmd_Argc() == 2 ) { Com_Printf ("forcename: %s: %s/n",Cmd_Argv(1),cl->name); return; } else { name = Cmd_ArgsFrom(2); cl->forcename = 2; Q_strncpyz( cl->name, name, sizeof(cl->name) ); SV_UserinfoChanged( cl ); VM_Call( gvm, GAME_CLIENT_USERINFO_CHANGED, cl - svs.clients ); Com_Printf ("forcename: %s: %s/n",Cmd_Argv(1),cl->name); return; } } Com_Printf ("Usage: forcename <client number> [<name>]/n"); return;}
开发者ID:OADoctor,项目名称:SmokinGuns,代码行数:38,
示例6: reason/*==================SV_StartServerDemo_fRecord a server-side demo for given player/slot. The demowill be called "YYYY-MM-DD_hh-mm-ss_playername_id.urtdemo",in the "demos" directory under your game directory. Notethat "startserverdemo all" will start demos for all playerscurrently in the server. Players who join later require anew "startserverdemo" command. If you are already recordingdemos for some players, another "startserverdemo all" willstart new demos only for players not already recording. Notethat bots will never be recorded, not even if "all" is given.The server-side demos will stop when "stopserverdemo" is issuedor when the server restarts for any reason (such as a new maploading).==================*/static void SV_StartServerDemo_f(void) { client_t *client; Com_DPrintf("SV_StartServerDemo_f/n"); if (!com_sv_running->integer) { Com_Printf("startserverdemo: Server not running/n"); return; } if (Cmd_Argc() < 2) { Com_Printf("Usage: startserverdemo <client-or-all> [<optional-demo-name>]/n"); return; } if (!Q_stricmp(Cmd_Argv(1), "all")) { SV_StartRecordAll(); } else { client = SV_GetPlayerByHandle(); if (!client) { return; } if (Cmd_Argc() > 2) { SV_StartRecordOne(client, Cmd_ArgsFrom(2)); } else { SV_StartRecordOne(client, NULL); } }}
开发者ID:CoolOppo,项目名称:ioq3-for-UrbanTerror-4,代码行数:53,
示例7: SV_ConTell_f/*==================SV_ConTell_fBased on Urban Terror implementation==================*/static void SV_ConTell_f(void) { char *p; char text[MAX_STRING_CHARS-18];// OK? client_t *cl; // make sure server is running if ( !com_sv_running->integer ) { Com_Printf( "Server is not running./n" ); return; } if ( Cmd_Argc() < 3 ) { Com_Printf ("Usage: tell <client number> <text>/n"); return; } cl = SV_GetPlayerByNum(); if ( !cl ) { return; } strcpy (text, "^3private:^7 "); p = Cmd_ArgsFrom(2); if ( *p == '"' ) { p++; p[strlen(p)-1] = 0; } strcat(text, p); SV_SendServerCommand(cl, "print /"%s/n/"", SV_ConvertNewlines((char *)text));}
开发者ID:OADoctor,项目名称:SmokinGuns,代码行数:40,
示例8: CL_ConfigstringModified/*=====================CL_ConfigstringModified=====================*/void CL_ConfigstringModified( void ) { char *old, *s; int i, index; char *dup; gameState_t oldGs; int len; index = atoi( Cmd_Argv( 1 ) ); if ( index < 0 || index >= MAX_CONFIGSTRINGS ) { Com_Error( ERR_DROP, "CL_ConfigstringModified: bad index %i", index ); }// s = Cmd_Argv(2); // get everything after "cs <num>" s = Cmd_ArgsFrom( 2 ); old = cl.gameState.stringData + cl.gameState.stringOffsets[ index ]; if ( !strcmp( old, s ) ) { return; // unchanged } // build the new gameState_t oldGs = cl.gameState; memset( &cl.gameState, 0, sizeof( cl.gameState ) ); // leave the first 0 for uninitialized strings cl.gameState.dataCount = 1; for ( i = 0 ; i < MAX_CONFIGSTRINGS ; i++ ) { if ( i == index ) { dup = s; } else { dup = oldGs.stringData + oldGs.stringOffsets[ i ]; } if ( !dup[0] ) { continue; // leave with the default empty string } len = strlen( dup ); if ( len + 1 + cl.gameState.dataCount > MAX_GAMESTATE_CHARS ) { Com_Error( ERR_DROP, "MAX_GAMESTATE_CHARS exceeded" ); } // append it to the gameState string buffer cl.gameState.stringOffsets[ i ] = cl.gameState.dataCount; memcpy( cl.gameState.stringData + cl.gameState.dataCount, dup, len + 1 ); cl.gameState.dataCount += len + 1; } if ( index == CS_SYSTEMINFO ) { // parse serverId and other cvars CL_SystemInfoChanged(); }}
开发者ID:MAN-AT-ARMS,项目名称:iortcw-archive,代码行数:61,
示例9: Cmd_ExecFile/*===============Cmd_ExecFile===============*/static void Cmd_ExecFile( char *f ){ int i; COM_Compress (f); Cvar_Get( "arg_all", Cmd_ArgsFrom(2), CVAR_TEMP | CVAR_ROM | CVAR_USER_CREATED, "" ); Cvar_Set( "arg_all", Cmd_ArgsFrom(2) ); Cvar_Get( "arg_count", va( "%i", Cmd_Argc() - 2 ), CVAR_TEMP | CVAR_ROM | CVAR_USER_CREATED, "" ); Cvar_Set( "arg_count", va( "%i", Cmd_Argc() - 2 ) ); for (i = Cmd_Argc() - 2; i; i--) { Cvar_Get( va("arg_%i", i), Cmd_Argv( i + 1 ), CVAR_TEMP | CVAR_ROM | CVAR_USER_CREATED, "" ); Cvar_Set( va("arg_%i", i), Cmd_Argv( i + 1 ) ); } Cbuf_InsertText (f);}
开发者ID:TheDushan,项目名称:OpenWolf,代码行数:24,
示例10: Cmd_Delay_f/*===============Cmd_Delay_fDelays a comand===============*/void Cmd_Delay_f (void){ int i, delay, type; char *raw_delay; qboolean availiable_cmd = qfalse; // Check if the call is valid if(Cmd_Argc () < 2) { Com_Printf ("delay <delay in milliseconds> <command>/ndelay <delay in frames>f <command>/nexecutes <command> after the delay/n"); return; } raw_delay = Cmd_Argv(1); delay = atoi(raw_delay); if(delay < 1) { Com_Printf ("delay: the delay must be a positive integer"); return; } //search for an unused slot for(i=0; (i<MAX_DELAYED_COMMANDS); i++) { if(delayed_cmd[i].delay == CMD_DELAY_UNUSED) { availiable_cmd = qtrue; break; } } if(!availiable_cmd) { Com_Printf ("WARNING: Maximum amount of delayed commands reached."); return; } int lastchar = strlen( raw_delay ) - 1; if(raw_delay[ lastchar ] == 'f' ) { delay += CMD_DELAY_FRAME_FIRE; type = CMD_DELAY_FRAME; }else{ type = CMD_DELAY_MSEC; delay += Sys_Milliseconds(); } delayed_cmd[i].delay = delay; delayed_cmd[i].type = type; Q_strncpyz(delayed_cmd[i].text, Cmd_ArgsFrom(2), MAX_CMD_LINE);}
开发者ID:b1naryth1ef,项目名称:B1nUrT,代码行数:60,
示例11: SV_Map_f/*==================SV_Map_fRestart the server on a different map==================*/static void SV_Map_f( void ){ char *cmd; char *map; const char *layouts; char mapname[ MAX_QPATH ]; qboolean cheat; char expanded[ MAX_QPATH ]; char layout[ MAX_CVAR_VALUE_STRING ]; map = Cmd_Argv( 1 ); if ( !map ) { return; } // make sure the level exists before trying to change, so that // a typo at the server console won't end the game Com_sprintf( expanded, sizeof( expanded ), "maps/%s.bsp", map ); if ( FS_ReadFile( expanded, NULL ) == -1 ) { Com_Printf(_( "Can't find map %s/n"), expanded ); return; } // layout(s) - note that ArgsFrom adds quoting which we don't want here // Also, if empty, don't override layouts = Cmd_UnquoteString( Cmd_ArgsFrom( 2 ) ); if ( *layouts ) { Cvar_Set( "g_layouts", layouts ); } cheat = !Q_stricmp( Cmd_Argv( 0 ), "devmap" ); // save the map name here cause on a map restart we reload the q3config.cfg // and thus nuke the arguments of the map command Q_strncpyz( mapname, map, sizeof( mapname ) ); // start up the map SV_SpawnServer( mapname ); // set the cheat value // if the level was started with "map <levelname>", then // cheats will not be allowed. If started with "devmap <levelname>" // then cheats will be allowed Cvar_Set( "sv_cheats", cheat ? "1" : "0" );}
开发者ID:Gallaecio,项目名称:Unvanquished,代码行数:58,
示例12: Cvar_Set_f/*=======================================================================================================================================Cvar_Set_fAllows setting and defining of arbitrary cvars from console, even if they weren't declared in C code.=======================================================================================================================================*/void Cvar_Set_f(void) { int c; char *cmd; cvar_t *v; c = Cmd_Argc(); cmd = Cmd_Argv(0); if (c < 2) { Com_Printf("usage: %s <variable> <value>/n", cmd); return; } if (c == 2) { Cvar_Print_f(); return; } v = Cvar_Set2(Cmd_Argv(1), Cmd_ArgsFrom(2), qfalse); if (!v) { return; } switch (cmd[3]) { case 'a': if (!(v->flags & CVAR_ARCHIVE)) { v->flags |= CVAR_ARCHIVE; cvar_modifiedFlags |= CVAR_ARCHIVE; } break; case 'u': if (!(v->flags & CVAR_USERINFO)) { v->flags |= CVAR_USERINFO; cvar_modifiedFlags |= CVAR_USERINFO; } break; case 's': if (!(v->flags & CVAR_SERVERINFO)) { v->flags |= CVAR_SERVERINFO; cvar_modifiedFlags |= CVAR_SERVERINFO; } break; }}
开发者ID:KuehnhammerTobias,项目名称:ioqw,代码行数:55,
示例13: SV_ConBig_fstatic void SV_ConBig_f(void) { char *p; char text[1024]; client_t *cl; // make sure server is running if ( !com_sv_running->integer ) { Com_Printf( "Server is not running./n" ); return; } if ( Cmd_Argc() < 3 ) { Com_Printf ("Usage: big <clientid> <text>/n"); return; } cl = SV_GetPlayerByNum(); if (atoi(Cmd_Argv(1)) < 0) { cl = NULL; }// if (atoi(Cmd_Argv(1))) {// Com_Printf ("Hi1 -1/n");//// Com_Printf ("Hi2 -1/n");// if ( !cl ) {// return;// }//// Com_Printf ("Hi3 -1/n");// } strcpy (text, "^3"); p = Cmd_ArgsFrom(2); if ( *p == '"' ) { p++; p[strlen(p)-1] = 0; } strcat(text, p); SV_SendServerCommand(cl, "cp /"" S_COLOR_WHITE "%s/n/"", text);}
开发者ID:OADoctor,项目名称:SmokinGuns,代码行数:45,
示例14: Cmd_RunAlias_f/*============Cmd_RunAlias_f============*/void Cmd_RunAlias_f(void){ cmd_alias_t *alias; char *name = Cmd_Argv(0); char *args = Cmd_ArgsFrom(1); // Find existing alias for (alias = cmd_aliases; alias; alias=alias->next) { if (!Q_stricmp( name, alias->name )) break; } if (!alias) Com_Error(ERR_FATAL, "Alias: Alias %s doesn't exist", name); Cbuf_InsertText(va("%s %s", alias->exec, args));}
开发者ID:TheDushan,项目名称:OpenWolf,代码行数:23,
示例15: Com_Setenv_fstatic void Com_Setenv_f(void){ int argc = Cmd_Argc(); if (argc > 2) { Q_setenv(Cmd_Argv(1), Cmd_ArgsFrom(2)); } else if (argc == 2) { char *env = getenv(Cmd_Argv(1)); if (env) { Com_Printf("%s=%s/n", Cmd_Argv(1), env); } else { Com_Printf("%s undefined/n", Cmd_Argv(1)); } } else { Com_Printf("Usage: %s <name> [value]/n", Cmd_Argv(0)); }}
开发者ID:jayschwa,项目名称:q2pro,代码行数:18,
示例16: Cvar_Set_f/*============Cvar_Set_fAllows setting and defining of arbitrary cvars from console, even if theyweren't declared in C code.============*/void Cvar_Set_f( void ) { int c, flag; char *cmd; cvar_t *v; c = Cmd_Argc(); cmd = Cmd_Argv(0); if ( c < 2 ) { Com_Printf ("usage: %s <variable> <value>/n", cmd); return; } if ( c == 2 ) { Cvar_Print_f(); return; } v = Cvar_Set2 (Cmd_Argv(1), Cmd_ArgsFrom(2), qfalse); if( !v ) { return; } // don't make these old vars archive even if the client's old autogen told us to if( !Q_stricmp( Cmd_Argv(1), "r_mode" ) || !Q_stricmp( Cmd_Argv(1), "r_customheight" ) || !Q_stricmp( Cmd_Argv(1), "r_customwidth" ) || !Q_stricmp( Cmd_Argv(1), "r_custompixelAspect" ) ) return; switch( cmd[3] ) { default: return; case 'u': flag = CVAR_USERINFO; break; case 's': flag = CVAR_SERVERINFO; break; case 'a': case '/0': flag = CVAR_ARCHIVE; break; } v->flags |= flag; cvar_modifiedFlags |= flag;}
开发者ID:redrumrobot,项目名称:korx,代码行数:52,
示例17: Parse_Bitmapstatic void Parse_Bitmap(menuFrameWork_t *menu){ static const cmd_option_t o_bitmap[] = { { "s:", "status" }, { "N:", "altname" }, { NULL } }; menuBitmap_t *b; char *status = NULL, *altname = NULL; int c; while ((c = Cmd_ParseOptions(o_bitmap)) != -1) { switch (c) { case 's': status = cmd_optarg; break; case 'N': altname = cmd_optarg; break; default: return; } } if (Cmd_Argc() - cmd_optind < 2) { Com_Printf("Usage: %s <name> <command>/n", Cmd_Argv(0)); return; } if (!altname) altname = va("%s_sel", Cmd_Argv(cmd_optind)); b = UI_Mallocz(sizeof(*b)); b->generic.type = MTYPE_BITMAP; b->generic.activate = Activate; b->generic.status = UI_CopyString(status); b->cmd = UI_CopyString(Cmd_ArgsFrom(cmd_optind + 1)); b->pics[0] = R_RegisterPic(Cmd_Argv(cmd_optind)); b->pics[1] = R_RegisterPic(altname); R_GetPicSize(&b->generic.width, &b->generic.height, b->pics[0]); Menu_AddItem(menu, b);}
开发者ID:m4son,项目名称:q2pro,代码行数:43,
示例18: demoCutConfigstringModifiedqboolean demoCutConfigstringModified(clientActive_t *clCut) { char *old, *s; int i, index; char *dup; gameState_t oldGs; int len; index = atoi(Cmd_Argv(1)); if (index < 0 || index >= MAX_CONFIGSTRINGS) { Com_Printf("demoCutConfigstringModified: bad index %i", index); return qtrue; } // get everything after "cs <num>" s = Cmd_ArgsFrom(2); old = clCut->gameState.stringData + clCut->gameState.stringOffsets[index]; if (!strcmp(old, s)) { return qtrue; // unchanged } // build the new gameState_t oldGs = clCut->gameState; Com_Memset(&clCut->gameState, 0, sizeof(clCut->gameState)); // leave the first 0 for uninitialized strings clCut->gameState.dataCount = 1; for (i = 0; i < MAX_CONFIGSTRINGS; i++) { if (i == index) { dup = s; } else { dup = oldGs.stringData + oldGs.stringOffsets[i]; } if (!dup[0]) { continue; // leave with the default empty string } len = strlen(dup); if (len + 1 + clCut->gameState.dataCount > MAX_GAMESTATE_CHARS) { Com_Printf("MAX_GAMESTATE_CHARS exceeded"); return qfalse; } // append it to the gameState string buffer clCut->gameState.stringOffsets[i] = clCut->gameState.dataCount; Com_Memcpy(clCut->gameState.stringData + clCut->gameState.dataCount, dup, len + 1); clCut->gameState.dataCount += len + 1; } return qtrue;}
开发者ID:deathsythe47,项目名称:jaMME,代码行数:43,
示例19: Parse_Spinstatic void Parse_Spin(menuFrameWork_t *menu, menuType_t type){ menuSpinControl_t *s; int c, i, numItems; char *status = NULL; while ((c = Cmd_ParseOptions(o_common)) != -1) { switch (c) { case 's': status = cmd_optarg; break; default: return; } } numItems = Cmd_Argc() - (cmd_optind + 2); if (numItems < 1) { Com_Printf("Usage: %s <name> <cvar> <desc1> [...]/n", Cmd_Argv(0)); return; } s = UI_Mallocz(sizeof(*s)); s->generic.type = type; s->generic.name = UI_CopyString(Cmd_Argv(cmd_optind)); s->generic.status = UI_CopyString(status); s->cvar = Cvar_WeakGet(Cmd_Argv(cmd_optind + 1)); cmd_optind += 2; if (strchr(Cmd_ArgsFrom(cmd_optind), '$')) { long_args_hack(s, numItems); } else { s->itemnames = UI_Mallocz(sizeof(char *) * (numItems + 1)); for (i = 0; i < numItems; i++) { s->itemnames[i] = UI_CopyString(Cmd_Argv(cmd_optind + i)); } s->numItems = numItems; } Menu_AddItem(menu, s);}
开发者ID:m4son,项目名称:q2pro,代码行数:41,
示例20: Parse_Bindstatic void Parse_Bind(menuFrameWork_t *menu){ static const cmd_option_t o_bind[] = { { "s:", "status" }, { "S:", "altstatus" }, { NULL } }; menuKeybind_t *k; char *status = "Press Enter to change, Backspace to clear"; char *altstatus = "Press the desired key, Escape to cancel"; int c; while ((c = Cmd_ParseOptions(o_bind)) != -1) { switch (c) { case 's': status = cmd_optarg; break; case 'S': altstatus = cmd_optarg; break; default: return; } } if (Cmd_Argc() - cmd_optind < 2) { Com_Printf("Usage: %s <name> <command>/n", Cmd_Argv(0)); return; } k = UI_Mallocz(sizeof(*k)); k->generic.type = MTYPE_KEYBIND; k->generic.name = UI_CopyString(Cmd_Argv(cmd_optind)); k->generic.uiFlags = UI_CENTER; k->generic.status = UI_CopyString(status); k->cmd = UI_CopyString(Cmd_ArgsFrom(cmd_optind + 1)); k->altstatus = UI_CopyString(altstatus); Menu_AddItem(menu, k);}
开发者ID:m4son,项目名称:q2pro,代码行数:40,
示例21: Parse_Actionstatic void Parse_Action(menuFrameWork_t *menu){ static const cmd_option_t o_action[] = { { "a", "align" }, { "s:", "status" }, { NULL } }; menuAction_t *a; int uiFlags = UI_CENTER; char *status = NULL; int c; while ((c = Cmd_ParseOptions(o_action)) != -1) { switch (c) { case 'a': uiFlags = UI_LEFT | UI_ALTCOLOR; break; case 's': status = cmd_optarg; break; default: return; } } if (Cmd_Argc() - cmd_optind < 2) { Com_Printf("Usage: %s <name> <command>/n", Cmd_Argv(0)); return; } a = UI_Mallocz(sizeof(*a)); a->generic.type = MTYPE_ACTION; a->generic.name = UI_CopyString(Cmd_Argv(cmd_optind)); a->generic.activate = Activate; a->generic.uiFlags = uiFlags; a->generic.status = UI_CopyString(status); a->cmd = UI_CopyString(Cmd_ArgsFrom(cmd_optind + 1)); Menu_AddItem(menu, a);}
开发者ID:m4son,项目名称:q2pro,代码行数:40,
示例22: CLT3_ConfigstringModifiedstatic void CLT3_ConfigstringModified() { int index = String::Atoi( Cmd_Argv( 1 ) ); // get everything after "cs <num>" const char* s = Cmd_ArgsFrom( 2 ); if ( GGameType & GAME_Quake3 ) { if ( index < 0 || index >= MAX_CONFIGSTRINGS_Q3 ) { common->Error( "configstring > MAX_CONFIGSTRINGS_Q3" ); } const char* old = cl.q3_gameState.stringData + cl.q3_gameState.stringOffsets[ index ]; if ( !String::Cmp( old, s ) ) { return; // unchanged } // build the new q3gameState_t q3gameState_t oldGs = cl.q3_gameState; Com_Memset( &cl.q3_gameState, 0, sizeof ( cl.q3_gameState ) ); // leave the first 0 for uninitialized strings cl.q3_gameState.dataCount = 1; for ( int i = 0; i < MAX_CONFIGSTRINGS_Q3; i++ ) { const char* dup; if ( i == index ) { dup = s; } else { dup = oldGs.stringData + oldGs.stringOffsets[ i ]; } if ( !dup[ 0 ] ) { continue; // leave with the default empty string } int len = String::Length( dup ); if ( len + 1 + cl.q3_gameState.dataCount > MAX_GAMESTATE_CHARS_Q3 ) { common->Error( "MAX_GAMESTATE_CHARS_Q3 exceeded" ); } // append it to the gameState string buffer cl.q3_gameState.stringOffsets[ i ] = cl.q3_gameState.dataCount; Com_Memcpy( cl.q3_gameState.stringData + cl.q3_gameState.dataCount, dup, len + 1 ); cl.q3_gameState.dataCount += len + 1; } if ( index == Q3CS_SYSTEMINFO ) { // parse serverId and other cvars CLT3_SystemInfoChanged(); } } else if ( GGameType & GAME_WolfSP ) { if ( index < 0 || index >= MAX_CONFIGSTRINGS_WS ) { common->Error( "configstring > MAX_CONFIGSTRINGS_WS" ); } const char* old = cl.ws_gameState.stringData + cl.ws_gameState.stringOffsets[ index ]; if ( !String::Cmp( old, s ) ) { return; // unchanged } // build the new wsgameState_t wsgameState_t oldGs = cl.ws_gameState; memset( &cl.ws_gameState, 0, sizeof ( cl.ws_gameState ) ); // leave the first 0 for uninitialized strings cl.ws_gameState.dataCount = 1; for ( int i = 0; i < MAX_CONFIGSTRINGS_WS; i++ ) { const char* dup; if ( i == index ) { dup = s; } else { dup = oldGs.stringData + oldGs.stringOffsets[ i ]; } if ( !dup[ 0 ] ) { continue; // leave with the default empty string } int len = String::Length( dup ); if ( len + 1 + cl.ws_gameState.dataCount > MAX_GAMESTATE_CHARS_Q3 ) { common->Error( "MAX_GAMESTATE_CHARS_Q3 exceeded" ); } // append it to the gameState string buffer cl.ws_gameState.stringOffsets[ i ] = cl.ws_gameState.dataCount; memcpy( cl.ws_gameState.stringData + cl.ws_gameState.dataCount, dup, len + 1 ); cl.ws_gameState.dataCount += len + 1; } if ( index == Q3CS_SYSTEMINFO ) { // parse serverId and other cvars CLT3_SystemInfoChanged(); } } else if ( GGameType & GAME_WolfMP ) { if ( index < 0 || index >= MAX_CONFIGSTRINGS_WM ) { common->Error( "configstring > MAX_CONFIGSTRINGS_WM" ); }//.........这里部分代码省略.........
开发者ID:janisl,项目名称:jlquake,代码行数:101,
示例23: demoConvert//.........这里部分代码省略......... workFrame = &convert->frames[ convert->frameIndex % DEMOCONVERTFRAMES ]; // other commands switch ( cmd ) { default: Com_Error (ERR_DROP,"CL_ParseServerMessage: Illegible server message/n"); break; case svc_nop: break; case svc_serverCommand: temp = MSG_ReadLong( &oldMsg ); s = MSG_ReadString( &oldMsg ); if (temp<=msgSequence) break;// Com_Printf( " server command %s/n", s ); msgSequence = temp; Cmd_TokenizeString( s ); if ( !Q_stricmp( Cmd_Argv(0), "bcs0" ) ) { bigConfigNumber = atoi( Cmd_Argv(1) ); Q_strncpyz( bigConfigString, Cmd_Argv(2), sizeof( bigConfigString )); break; } if ( !Q_stricmp( Cmd_Argv(0), "bcs1" ) ) { Q_strcat( bigConfigString, sizeof( bigConfigString ), Cmd_Argv(2)); break; } if ( !Q_stricmp( Cmd_Argv(0), "bcs2" ) ) { Q_strcat( bigConfigString, sizeof( bigConfigString ), Cmd_Argv(2)); demoFrameAddString( &workFrame->string, bigConfigNumber, bigConfigString ); break; } if ( !Q_stricmp( Cmd_Argv(0), "cs" ) ) { int num = atoi( Cmd_Argv(1) ); s = Cmd_ArgsFrom( 2 ); demoFrameAddString( &workFrame->string, num, Cmd_ArgsFrom( 2 ) ); break; } if ( clientNum >= 0 && clientNum < MAX_CLIENTS ) { int len = strlen( s ) + 1; char *dst; if (workFrame->commandUsed + len + 1 > sizeof( workFrame->commandData)) { Com_Printf("Overflowed state command data./n"); goto conversionerror; } dst = workFrame->commandData + workFrame->commandUsed; *dst = clientNum; Com_Memcpy( dst+1, s, len ); workFrame->commandUsed += len + 1; } break; case svc_gamestate: if (newHandle) { FS_FCloseFile( newHandle ); newHandle = 0; } if (levelCount) { Com_sprintf( newName, sizeof( newName ), "%s.%d.mme", newBaseName, levelCount ); } else { Com_sprintf( newName, sizeof( newName ), "%s.mme", newBaseName ); } fullTime = -1; clientNum = -1; oldTime = -1; Com_Memset( convert, 0, sizeof( *convert )); convert->frames[0].string.used = 1; levelCount++;
开发者ID:mightycow,项目名称:q3mme,代码行数:67,
示例24: Cmd_Alias_f/*============Cmd_Alias_f============*/void Cmd_Alias_f(void){ cmd_alias_t *alias; const char *name; // Get args if (Cmd_Argc() < 2) { Com_Printf("alias <name> : show an alias/n"); Com_Printf("alias <name> <exec> : create an alias/n"); return; } name = Cmd_Argv(1); // Find existing alias for (alias = cmd_aliases; alias; alias = alias->next) { if (!Q_stricmp(name, alias->name)) break; } // Modify/create an alias if (Cmd_Argc() > 2) { cmd_function_t *cmd; // Crude protection from infinite loops if (!Q_stricmp(Cmd_Argv(2), name)) { Com_Printf("Can't make an alias to itself/n"); return; } // Don't allow overriding builtin commands cmd = Cmd_FindCommand( name ); if (cmd && cmd->function != Cmd_RunAlias_f) { Com_Printf("Can't override a builtin function with an alias/n"); return; } // Create/update an alias if (!alias) { alias = (cmd_alias_t*)S_Malloc(sizeof(cmd_alias_t)); alias->name = CopyString(name); alias->exec = CopyString(Cmd_ArgsFrom(2)); alias->next = cmd_aliases; cmd_aliases = alias; Cmd_AddCommand(name, Cmd_RunAlias_f, NULL); } else { // Reallocate the exec string Z_Free(alias->exec); alias->exec = CopyString(Cmd_ArgsFrom(2)); Cmd_AddCommand(name, Cmd_RunAlias_f, NULL); } } // Show the alias if (!alias) Com_Printf("Alias %s does not exist/n", name); else if (Cmd_Argc() == 2) Com_Printf("%s ==> %s/n", alias->name, alias->exec); // update autogen.cfg cvar_modifiedFlags |= CVAR_ARCHIVE;}
开发者ID:TheDushan,项目名称:OpenWolf,代码行数:74,
示例25: Cmd_ArgsFromBuffer/*============Cmd_ArgsFromBufferThe interpreted versions use this becausethey can't have pointers returned to them============*/void Cmd_ArgsFromBuffer( int arg, char *buffer, int bufferLength ) { Q_strncpyz( buffer, Cmd_ArgsFrom( arg ), bufferLength );}
开发者ID:Wookiee-,项目名称:jaPRO,代码行数:11,
示例26: Prompt_CompleteCommand//.........这里部分代码省略......... size--; } if (ctx.count == 1) { // we have finished completion! s = Cmd_RawArgsFrom(currentArg + 1); if (needs_quotes(matches[0])) { pos += Q_concat(text, size, "/"", matches[0], "/" ", s, NULL); } else { pos += Q_concat(text, size, matches[0], " ", s, NULL); } pos++; prompt->tooMany = qfalse; goto finish1; } if (ctx.count > com_completion_treshold->integer && !prompt->tooMany) { prompt->printf("Press TAB again to display all %d possibilities./n", ctx.count); pos = strlen(inputLine->text); prompt->tooMany = qtrue; goto finish1; } prompt->tooMany = qfalse; // sort matches alphabethically for (i = 0; i < ctx.count; i++) { sortedMatches[i] = matches[i]; } qsort(sortedMatches, ctx.count, sizeof(sortedMatches[0]), ctx.ignorecase ? SortStricmp : SortStrcmp); // copy matching part first = sortedMatches[0]; last = sortedMatches[ctx.count - 1]; len = 0; do { if (*first != *last) { if (!ctx.ignorecase || Q_tolower(*first) != Q_tolower(*last)) { break; } } text[len++] = *first; if (len == size - 1) { break; } first++; last++; } while (*first); text[len] = 0; pos += len; size -= len; // copy trailing arguments if (currentArg + 1 < argc) { s = Cmd_RawArgsFrom(currentArg + 1); pos += Q_concat(text + len, size, " ", s, NULL); } pos++; prompt->printf("]//%s/n", Cmd_ArgsFrom(0)); if (argnum) { goto multi; } switch (com_completion_mode->integer) { case 0: // print in solid list for (i = 0; i < ctx.count; i++) { prompt->printf("%s/n", sortedMatches[i]); } break; case 1:multi: // print in multiple columns Prompt_ShowMatches(prompt, sortedMatches, 0, ctx.count); break; case 2: default: // resort matches by type and print in multiple columns Prompt_ShowIndividualMatches(prompt, matches, numCommands, numAliases, numCvars); break; }finish1: // free matches for (i = 0; i < ctx.count; i++) { Z_Free(matches[i]); }finish2: // move cursor if (pos >= inputLine->maxChars) { pos = inputLine->maxChars - 1; } inputLine->cursorPos = pos;}
开发者ID:Jenco420,项目名称:q2pro,代码行数:101,
示例27: Cmd_ArgsBuffer/*============Cmd_ArgsBufferThe interpreted versions use this becausethey can't have pointers returned to them============*/void Cmd_ArgsBuffer( char *buffer, int bufferLength ) { Q_strncpyz( buffer, Cmd_ArgsFrom( 1 ), bufferLength );}
开发者ID:Aura15,项目名称:OpenJK,代码行数:11,
示例28: argv/*============Cmd_ArgsReturns a single string containing argv(1) to argv(argc()-1)============*/char *Cmd_Args( void ) { return Cmd_ArgsFrom( 1 );}
开发者ID:Aura15,项目名称:OpenJK,代码行数:10,
示例29: Cmd_Argsconst char* Cmd_Args(){ return Cmd_ArgsFrom(1);}
开发者ID:ShaneIsley,项目名称:challengeq3,代码行数:4,
注:本文中的Cmd_ArgsFrom函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ Cmd_Argv函数代码示例 C++ Cmd_Argc函数代码示例 |