您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ Cmd_Argc函数代码示例

51自学网 2021-06-01 20:11:55
  C++
这篇教程C++ Cmd_Argc函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中Cmd_Argc函数的典型用法代码示例。如果您正苦于以下问题:C++ Cmd_Argc函数的具体用法?C++ Cmd_Argc怎么用?C++ Cmd_Argc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了Cmd_Argc函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: PR_Profile_f

void PR_Profile_f (void){	int		i, j;	int		max;	dfunction_t	*f, *bestFunc;	int		total;	int		funcCount;	qboolean	byHC;	char	saveName[MAX_OSPATH];	FILE	*saveFile = NULL;	int		currentFile;	int		bestFile;	int		tally;	const char	*s;	byHC = false;	funcCount = 10;	*saveName = 0;	for (i = 1; i < Cmd_Argc(); i++)	{		s = Cmd_Argv(i);		if (tolower(*s) == 'h')		{ // Sort by HC source file			byHC = true;		}		else if (tolower(*s) == 's')		{ // Save to file			if (i + 1 < Cmd_Argc() && !isdigit(*Cmd_Argv(i + 1)))			{				i++;				sprintf(saveName, "%s/%s", fs_userdir, Cmd_Argv(i));			}			else			{				sprintf(saveName, "%s/profile.txt", fs_userdir);			}		}		else if (isdigit(*s))		{ // Specify function count			funcCount = atoi(Cmd_Argv(i));			if (funcCount < 1)			{				funcCount = 1;			}		}	}	total = 0;	for (i = 0; i < progs->numfunctions; i++)	{		total += pr_functions[i].profile;	}	if (*saveName)	{ // Create the output file		saveFile = fopen(saveName, "w");		if (saveFile == NULL)			Con_Printf("Could not open %s/n", saveName);	}#ifdef TIMESNAP_ACTIVE	if (saveFile)	{		fprintf(saveFile, "(Timesnap Profile)/n");	}	else	{		Con_Printf("(Timesnap Profile)/n");	}#endif	if (byHC == false)	{		j = 0;		do		{			max = 0;			bestFunc = NULL;			for (i = 0; i < progs->numfunctions; i++)			{				f = &pr_functions[i];				if (f->profile > max)				{					max = f->profile;					bestFunc = f;				}			}			if (bestFunc)			{				if (j < funcCount)				{					if (saveFile)					{						fprintf(saveFile, "%05.2f %s/n",								((float)bestFunc->profile / (float)total) * 100.0,								PR_GetString(bestFunc->s_name));					}					else					{						Con_Printf("%05.2f %s/n",//.........这里部分代码省略.........
开发者ID:crutchwalkfactory,项目名称:motocakerteam,代码行数:101,


示例2: SV_MapRestart_f

/*================SV_MapRestart_fCompletely restarts a level, but doesn't send a new gamestate to the clients.This allows fair starts with variable load times.================*/static void SV_MapRestart_f( void ) {	int			i;	client_t	*client;	char		*denied;	qboolean	isBot;	int			delay;	// make sure we aren't restarting twice in the same frame	if ( com_frameTime == sv.serverId ) {		return;	}	// make sure server is running	if ( !com_sv_running->integer ) {		Com_Printf( "Server is not running./n" );		return;	}	if ( sv.restartTime ) {		return;	}	if (Cmd_Argc() > 1 ) {		delay = atoi( Cmd_Argv(1) );	}	else {		delay = 5;	}	if( delay ) {		sv.restartTime = sv.time + delay * 1000;		SV_SetConfigstring( CS_WARMUP, va("%i", sv.restartTime) );		return;	}	// check for changes in variables that can't just be restarted	// check for maxclients change	if ( sv_maxclients->modified || sv_gametype->modified ) {		char	mapname[MAX_QPATH];		Com_Printf( "variable change -- restarting./n" );		// restart the map the slow way		Q_strncpyz( mapname, Cvar_VariableString( "mapname" ), sizeof( mapname ) );		SV_SpawnServer( mapname, qfalse, eForceReload_NOTHING );		return;	}	SV_StopAutoRecordDemos();	// toggle the server bit so clients can detect that a	// map_restart has happened	svs.snapFlagServerBit ^= SNAPFLAG_SERVERCOUNT;	// generate a new serverid	// TTimo - don't update restartedserverId there, otherwise we won't deal correctly with multiple map_restart	sv.serverId = com_frameTime;	Cvar_Set( "sv_serverid", va("%i", sv.serverId ) );	time( &sv.realMapTimeStarted );	sv.demosPruned = qfalse;	// if a map_restart occurs while a client is changing maps, we need	// to give them the correct time so that when they finish loading	// they don't violate the backwards time check in cl_cgame.c	for (i=0 ; i<sv_maxclients->integer ; i++) {		if (svs.clients[i].state == CS_PRIMED) {			svs.clients[i].oldServerTime = sv.restartTime;		}	}	// reset all the vm data in place without changing memory allocation	// note that we do NOT set sv.state = SS_LOADING, so configstrings that	// had been changed from their default values will generate broadcast updates	sv.state = SS_LOADING;	sv.restarting = qtrue;	SV_RestartGame();	// run a few frames to allow everything to settle	for ( i = 0 ;i < 3 ; i++ ) {		GVM_RunFrame( sv.time );		sv.time += 100;		svs.time += 100;	}	sv.state = SS_GAME;	sv.restarting = qfalse;	// connect and begin all the clients	for (i=0 ; i<sv_maxclients->integer ; i++) {		client = &svs.clients[i];//.........这里部分代码省略.........
开发者ID:ooxavenue,项目名称:JediKnightGalaxies,代码行数:101,


示例3: SV_DelBanFromList

static void SV_DelBanFromList( qboolean isexception ){	int index, count = 0, todel, mask;	netadr_t ip;	char *banstring;	// make sure server is running	if ( !com_sv_running->integer ) {		Com_Printf( "Server is not running./n" );		return;	}	if ( Cmd_Argc() != 2 )	{		Com_Printf( "Usage: %s (ip[/subnet] | num)/n", Cmd_Argv( 0 ) );		return;	}	banstring = Cmd_Argv( 1 );	if ( strchr( banstring, '.' ) || strchr( banstring, ':' ) )	{		serverBan_t *curban;		if ( SV_ParseCIDRNotation( &ip, &mask, banstring ) )		{			Com_Printf( "Error: Invalid address %s/n", banstring );			return;		}		index = 0;		while ( index < serverBansCount )		{			curban = &serverBans[index];			if ( curban->isexception == isexception		&&				curban->subnet >= mask 			&&				NET_CompareBaseAdrMask( curban->ip, ip, mask ) )			{				Com_Printf( "Deleting %s %s/%d/n",					isexception ? "exception" : "ban",					NET_AdrToString( curban->ip ), curban->subnet );				SV_DelBanEntryFromList( index );			}			else				index++;		}	}	else	{		todel = atoi( Cmd_Argv( 1 ) );		if ( todel < 1 || todel > serverBansCount )		{			Com_Printf( "Error: Invalid ban number given/n" );			return;		}		for ( index = 0; index < serverBansCount; index++ )		{			if ( serverBans[index].isexception == isexception )			{				count++;				if ( count == todel )				{					Com_Printf( "Deleting %s %s/%d/n",						isexception ? "exception" : "ban",						NET_AdrToString( serverBans[index].ip ), serverBans[index].subnet );					SV_DelBanEntryFromList( index );					break;				}			}		}	}	SV_WriteBans();}
开发者ID:ooxavenue,项目名称:JediKnightGalaxies,代码行数:82,


示例4: Cvar_List_f

/*=======================================================================================================================================Cvar_List_f=======================================================================================================================================*/void Cvar_List_f(void) {	cvar_t *var;	int i;	char *match;	if (Cmd_Argc() > 1) {		match = Cmd_Argv(1);	} else {		match = NULL;	}	i = 0;	for (var = cvar_vars; var; var = var->next, i++) {		if (!var->name || (match && !Com_Filter(match, var->name, qfalse))) {			continue;		}		if (var->flags & CVAR_SERVERINFO) {			Com_Printf("S");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_SYSTEMINFO) {			Com_Printf("s");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_USERINFO) {			Com_Printf("U");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_ROM) {			Com_Printf("R");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_INIT) {			Com_Printf("I");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_ARCHIVE) {			Com_Printf("A");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_LATCH) {			Com_Printf("L");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_CHEAT) {			Com_Printf("C");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_USER_CREATED) {			Com_Printf("?");		} else {			Com_Printf(" ");		}		Com_Printf(" %s /"%s/"/n", var->name, var->string);	}	Com_Printf("/n%i total cvars/n", i);	Com_Printf("%i cvar indexes/n", cvar_numIndexes);}
开发者ID:KuehnhammerTobias,项目名称:ioqw,代码行数:83,


示例5: SV_Status_f

/*================SV_Status_f================*/static void SV_Status_f( void ){	int				i, humans, bots;	client_t		*cl;	playerState_t	*ps;	const char		*s;	int				ping;	char			state[32];	qboolean		avoidTruncation = qfalse;	// make sure server is running	if ( !com_sv_running->integer )	{		Com_Printf( "Server is not running./n" );		return;	}	if ( Cmd_Argc() > 1 )	{		if (!Q_stricmp("notrunc", Cmd_Argv(1)))		{			avoidTruncation = qtrue;		}	}	humans = bots = 0;	for ( i = 0 ; i < sv_maxclients->integer ; i++ ) {		if ( svs.clients[i].state >= CS_CONNECTED ) {			if ( svs.clients[i].netchan.remoteAddress.type != NA_BOT ) {				humans++;			}			else {				bots++;			}		}	}#if defined(_WIN32)#define STATUS_OS "Windows"#elif defined(__linux__)#define STATUS_OS "Linux"#elif defined(MACOS_X)#define STATUS_OS "OSX"#else#define STATUS_OS "Unknown"#endif	const char *ded_table[] =	{		"listen",		"lan dedicated",		"public dedicated",	};	char hostname[MAX_HOSTNAMELENGTH] = { 0 };	Q_strncpyz( hostname, sv_hostname->string, sizeof(hostname) );	Q_StripColor( hostname );	Com_Printf( "hostname: %s^7/n", hostname );	Com_Printf( "version : %s %i/n", VERSION_STRING_DOTTED, PROTOCOL_VERSION );	Com_Printf( "game    : %s/n", FS_GetCurrentGameDir() );	Com_Printf( "udp/ip  : %s:%i os(%s) type(%s)/n", Cvar_VariableString( "net_ip" ), Cvar_VariableIntegerValue( "net_port" ), STATUS_OS, ded_table[com_dedicated->integer] );	Com_Printf( "map     : %s gametype(%i)/n", sv_mapname->string, sv_gametype->integer );	Com_Printf( "players : %i humans, %i bots (%i max)/n", humans, bots, sv_maxclients->integer - sv_privateClients->integer );	Com_Printf( "uptime  : %s/n", SV_CalcUptime() );	Com_Printf ("cl score ping name            address                                 rate /n");	Com_Printf ("-- ----- ---- --------------- --------------------------------------- -----/n");	for (i=0,cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++)	{		if ( !cl->state )			continue;		if ( cl->state == CS_CONNECTED )			Q_strncpyz( state, "CON ", sizeof( state ) );		else if ( cl->state == CS_ZOMBIE )			Q_strncpyz( state, "ZMB ", sizeof( state ) );		else {			ping = cl->ping < 9999 ? cl->ping : 9999;			Com_sprintf( state, sizeof(state), "%4i", ping );		}		ps = SV_GameClientNum( i );		s = NET_AdrToString( cl->netchan.remoteAddress );		if (!avoidTruncation)		{			Com_Printf ("%2i %5i %s %-15.15s ^7%39s %5i/n",				i,				ps->persistant[PERS_SCORE],				state,				cl->name,				s,				cl->rate//.........这里部分代码省略.........
开发者ID:ooxavenue,项目名称:JediKnightGalaxies,代码行数:101,


示例6: SV_WriteDownloadToClient

/*==================SV_WriteDownloadToClientCheck to see if the client wants a file, open it if needed and start pumping the clientFill up msg with data, return number of download blocks added==================*/int SV_WriteDownloadToClient(client_t *cl, msg_t *msg){	int curindex;	int unreferenced = 1;	char errorMessage[1024];	char pakbuf[MAX_QPATH], *pakptr;	int numRefPaks;	if (!*cl->downloadName)		return 0;	// Nothing being downloaded	if(!cl->download)	{ 		// Chop off filename extension.		Com_sprintf(pakbuf, sizeof(pakbuf), "%s", cl->downloadName);		pakptr = strrchr(pakbuf, '.');				if(pakptr)		{			*pakptr = '/0';			// Check for pk3 filename extension			if(!Q_stricmp(pakptr + 1, "pk3"))			{				const char *referencedPaks = FS_ReferencedPakNames();				// Check whether the file appears in the list of referenced				// paks to prevent downloading of arbitrary files.				Cmd_TokenizeStringIgnoreQuotes(referencedPaks);				numRefPaks = Cmd_Argc();				for(curindex = 0; curindex < numRefPaks; curindex++)				{					if(!FS_FilenameCompare(Cmd_Argv(curindex), pakbuf))					{						unreferenced = 0;						break;					}				}			}		}		cl->download = 0;		// We open the file here		if ( !(sv_allowDownload->integer & DLF_ENABLE) ||			(sv_allowDownload->integer & DLF_NO_UDP) ||			unreferenced ||			( cl->downloadSize = FS_SV_FOpenFileRead( cl->downloadName, &cl->download ) ) < 0 ) {			// cannot auto-download file			if(unreferenced)			{				Com_Printf("clientDownload: %d : /"%s/" is not referenced and cannot be downloaded./n", (int) (cl - svs.clients), cl->downloadName);				Com_sprintf(errorMessage, sizeof(errorMessage), "File /"%s/" is not referenced and cannot be downloaded.", cl->downloadName);			}			else if ( !(sv_allowDownload->integer & DLF_ENABLE) ||				(sv_allowDownload->integer & DLF_NO_UDP) ) {				Com_Printf("clientDownload: %d : /"%s/" download disabled/n", (int) (cl - svs.clients), cl->downloadName);				if (sv_pure->integer) {					Com_sprintf(errorMessage, sizeof(errorMessage), "Could not download /"%s/" because autodownloading is disabled on the server./n/n"										"You will need to get this file elsewhere before you "										"can connect to this pure server./n", cl->downloadName);				} else {					Com_sprintf(errorMessage, sizeof(errorMessage), "Could not download /"%s/" because autodownloading is disabled on the server./n/n"                    "The server you are connecting to is not a pure server, "                    "set autodownload to No in your settings and you might be "                    "able to join the game anyway./n", cl->downloadName);				}			} else {        // NOTE TTimo this is NOT supposed to happen unless bug in our filesystem scheme?        //   if the pk3 is referenced, it must have been found somewhere in the filesystem				Com_Printf("clientDownload: %d : /"%s/" file not found on server/n", (int) (cl - svs.clients), cl->downloadName);				Com_sprintf(errorMessage, sizeof(errorMessage), "File /"%s/" not found on server for autodownloading./n", cl->downloadName);			}			MSG_WriteByte( msg, svc_download );			MSG_WriteShort( msg, 0 ); // client is expecting block zero			MSG_WriteLong( msg, -1 ); // illegal file size			MSG_WriteString( msg, errorMessage );			*cl->downloadName = 0;						if(cl->download)				FS_FCloseFile(cl->download);						return 1;		} 		Com_Printf( "clientDownload: %d : beginning /"%s/"/n", (int) (cl - svs.clients), cl->downloadName );				// Init		cl->downloadCurrentBlock = cl->downloadClientBlock = cl->downloadXmitBlock = 0;//.........这里部分代码省略.........
开发者ID:jkent,项目名称:tremulous,代码行数:101,


示例7: CL_Record_f

/* * record <demoname> * Begins recording a demo from the current position */voidCL_Record_f(void){	char name[MAX_OSPATH];	byte buf_data[MAX_MSGLEN];	sizebuf_t buf;	int i;	int len;	entity_state_t *ent;	entity_state_t nullstate;	if (Cmd_Argc() != 2)	{		Com_Printf("record <demoname>/n");		return;	}	if (cls.demorecording)	{		Com_Printf("Already recording./n");		return;	}	if (cls.state != ca_active)	{		Com_Printf("You must be in a level to record./n");		return;	}	Com_sprintf(name, sizeof(name), "%s/demos/%s.dm2", FS_Gamedir(), Cmd_Argv(1));	Com_Printf("recording to %s./n", name);	FS_CreatePath(name);	cls.demofile = fopen(name, "wb");	if (!cls.demofile)	{		Com_Printf("ERROR: couldn't open./n");		return;	}	cls.demorecording = true;	/* don't start saving messages until a non-delta compressed message is received */	cls.demowaiting = true;	/* write out messages to hold the startup information */	SZ_Init(&buf, buf_data, sizeof(buf_data));	/* send the serverdata */	MSG_WriteByte(&buf, svc_serverdata);	MSG_WriteLong(&buf, PROTOCOL_VERSION);	MSG_WriteLong(&buf, 0x10000 + cl.servercount);	MSG_WriteByte(&buf, 1);  /* demos are always attract loops */	MSG_WriteString(&buf, cl.gamedir);	MSG_WriteShort(&buf, cl.playernum);	MSG_WriteString(&buf, cl.configstrings[CS_NAME]);	/* configstrings */	for (i = 0; i < MAX_CONFIGSTRINGS; i++)	{		if (cl.configstrings[i][0])		{			if (buf.cursize + strlen(cl.configstrings[i]) + 32 > buf.maxsize)			{				len = LittleLong(buf.cursize);				fwrite(&len, 4, 1, cls.demofile);				fwrite(buf.data, buf.cursize, 1, cls.demofile);				buf.cursize = 0;			}			MSG_WriteByte(&buf, svc_configstring);			MSG_WriteShort(&buf, i);			MSG_WriteString(&buf, cl.configstrings[i]);		}	}	/* baselines */	memset(&nullstate, 0, sizeof(nullstate));	for (i = 0; i < MAX_EDICTS; i++)	{		ent = &cl_entities[i].baseline;		if (!ent->modelindex)		{			continue;		}		if (buf.cursize + 64 > buf.maxsize)		{			len = LittleLong(buf.cursize);			fwrite(&len, 4, 1, cls.demofile);			fwrite(buf.data, buf.cursize, 1, cls.demofile);//.........这里部分代码省略.........
开发者ID:bradc6,项目名称:yquake2,代码行数:101,


示例8: CL_CgameSystemCalls

/*====================CL_CgameSystemCallsThe cgame module is making a system call====================*/intptr_t CL_CgameSystemCalls( intptr_t *args ) {	switch ( args[0] ) {	case CG_PRINT:		Com_Printf( "%s", VMA( 1 ) );		return 0;	case CG_ERROR:		Com_Error( ERR_DROP, "%s", VMA( 1 ) );		return 0;	case CG_MILLISECONDS:		return Sys_Milliseconds();	case CG_CVAR_REGISTER:		Cvar_Register( VMA( 1 ), VMA( 2 ), VMA( 3 ), args[4] );		return 0;	case CG_CVAR_UPDATE:		Cvar_Update( VMA( 1 ) );		return 0;	case CG_CVAR_SET:		Cvar_Set( VMA( 1 ), VMA( 2 ) );		return 0;	case CG_CVAR_VARIABLESTRINGBUFFER:		Cvar_VariableStringBuffer( VMA( 1 ), VMA( 2 ), args[3] );		return 0;	case CG_ARGC:		return Cmd_Argc();	case CG_ARGV:		Cmd_ArgvBuffer( args[1], VMA( 2 ), args[3] );		return 0;	case CG_ARGS:		Cmd_ArgsBuffer( VMA( 1 ), args[2] );		return 0;	case CG_FS_FOPENFILE:		return FS_FOpenFileByMode( VMA( 1 ), VMA( 2 ), args[3] );	case CG_FS_READ:		FS_Read( VMA( 1 ), args[2], args[3] );		return 0;	case CG_FS_WRITE:		return FS_Write( VMA( 1 ), args[2], args[3] );	case CG_FS_FCLOSEFILE:		FS_FCloseFile( args[1] );		return 0;	case CG_SENDCONSOLECOMMAND:		Cbuf_AddText( VMA( 1 ) );		return 0;	case CG_ADDCOMMAND:		CL_AddCgameCommand( VMA( 1 ) );		return 0;	case CG_REMOVECOMMAND:		Cmd_RemoveCommand( VMA( 1 ) );		return 0;	case CG_SENDCLIENTCOMMAND:		CL_AddReliableCommand( VMA( 1 ) );		return 0;	case CG_UPDATESCREEN:		// this is used during lengthy level loading, so pump message loop//		Com_EventLoop();	// FIXME: if a server restarts here, BAD THINGS HAPPEN!// We can't call Com_EventLoop here, a restart will crash and this _does_ happen// if there is a map change while we are downloading at pk3.// ZOID		SCR_UpdateScreen();		return 0;	case CG_CM_LOADMAP:		CL_CM_LoadMap( VMA( 1 ) );		return 0;	case CG_CM_NUMINLINEMODELS:		return CM_NumInlineModels();	case CG_CM_INLINEMODEL:		return CM_InlineModel( args[1] );	case CG_CM_TEMPBOXMODEL:		return CM_TempBoxModel( VMA( 1 ), VMA( 2 ), qfalse );	case CG_CM_TEMPCAPSULEMODEL:		return CM_TempBoxModel( VMA( 1 ), VMA( 2 ), qtrue );	case CG_CM_POINTCONTENTS:		return CM_PointContents( VMA( 1 ), args[2] );	case CG_CM_TRANSFORMEDPOINTCONTENTS:		return CM_TransformedPointContents( VMA( 1 ), args[2], VMA( 3 ), VMA( 4 ) );	case CG_CM_BOXTRACE:		CM_BoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], /*int capsule*/ qfalse );		return 0;	case CG_CM_TRANSFORMEDBOXTRACE:		CM_TransformedBoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], VMA( 8 ), VMA( 9 ), /*int capsule*/ qfalse );		return 0;	case CG_CM_CAPSULETRACE:		CM_BoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], /*int capsule*/ qtrue );		return 0;	case CG_CM_TRANSFORMEDCAPSULETRACE:		CM_TransformedBoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], VMA( 8 ), VMA( 9 ), /*int capsule*/ qtrue );		return 0;	case CG_CM_MARKFRAGMENTS:		return re.MarkFragments( args[1], VMA( 2 ), VMA( 3 ), args[4], VMA( 5 ), args[6], VMA( 7 ) );	case CG_S_STARTSOUND:		S_StartSound( VMA( 1 ), args[2], args[3], args[4] );		return 0;//----(SA)	added//.........这里部分代码省略.........
开发者ID:jonathangray,项目名称:rtcw-sp-openbsd,代码行数:101,


示例9: UI_GetParamNumber

/** * Get the number of param from an execution context * @param[in] context The execution context * @return The requested param */int UI_GetParamNumber (const uiCallContext_t* context){    if (context->useCmdParam)        return Cmd_Argc() - 1;    return context->paramNumber;}
开发者ID:rxadmin,项目名称:ufoai,代码行数:11,


示例10: CL_CgameSystemCalls

/*====================CL_CgameSystemCallsThe cgame module is making a system call====================*/intptr_t CL_CgameSystemCalls( intptr_t *args ){	switch ( args[ 0 ] )	{		case CG_PRINT:			Com_Printf( "%s", ( char * ) VMA( 1 ) );			return 0;		case CG_ERROR:			Com_Error( ERR_DROP, "%s", ( char * ) VMA( 1 ) );		case CG_MILLISECONDS:			return Sys_Milliseconds();		case CG_CVAR_REGISTER:			Cvar_Register( VMA( 1 ), VMA( 2 ), VMA( 3 ), args[ 4 ] );			return 0;		case CG_CVAR_UPDATE:			Cvar_Update( VMA( 1 ) );			return 0;		case CG_CVAR_SET:			Cvar_Set( VMA( 1 ), VMA( 2 ) );			return 0;		case CG_CVAR_VARIABLESTRINGBUFFER:			VM_CheckBlock( args[2], args[3], "CVARVSB" );			Cvar_VariableStringBuffer( VMA( 1 ), VMA( 2 ), args[ 3 ] );			return 0;		case CG_CVAR_LATCHEDVARIABLESTRINGBUFFER:			VM_CheckBlock( args[2], args[3], "CVARLVSB" );			Cvar_LatchedVariableStringBuffer( VMA( 1 ), VMA( 2 ), args[ 3 ] );			return 0;		case CG_CVAR_VARIABLEINTEGERVALUE:			return Cvar_VariableIntegerValue( VMA( 1 ) );		case CG_ARGC:			return Cmd_Argc();		case CG_ARGV:			VM_CheckBlock( args[2], args[3], "ARGV" );			Cmd_ArgvBuffer( args[ 1 ], VMA( 2 ), args[ 3 ] );			return 0;		case CG_ARGS:			VM_CheckBlock( args[1], args[2], "ARGS" );			Cmd_ArgsBuffer( VMA( 1 ), args[ 2 ] );			return 0;		case CG_LITERAL_ARGS:			// FIXME			VM_CheckBlock( args[1], args[2], "LARGS" );			Cmd_LiteralArgsBuffer( VMA( 1 ), args[ 2 ] );//                      Cmd_ArgsBuffer(VMA(1), args[2]);			return 0;		case CG_GETDEMOSTATE:			return CL_DemoState();		case CG_GETDEMOPOS:			return CL_DemoPos();		case CG_FS_FOPENFILE:			return FS_FOpenFileByMode( VMA( 1 ), VMA( 2 ), args[ 3 ] );		case CG_FS_READ:			VM_CheckBlock( args[1], args[2], "FSREAD" );			FS_Read2( VMA( 1 ), args[ 2 ], args[ 3 ] );			return 0;		case CG_FS_WRITE:			VM_CheckBlock( args[1], args[2], "FSWRITE" );			return FS_Write( VMA( 1 ), args[ 2 ], args[ 3 ] );		case CG_FS_FCLOSEFILE:			FS_FCloseFile( args[ 1 ] );			return 0;		case CG_FS_GETFILELIST:			VM_CheckBlock( args[3], args[4], "FSGFL" );			return FS_GetFileList( VMA( 1 ), VMA( 2 ), VMA( 3 ), args[ 4 ] );		case CG_FS_DELETEFILE:			return FS_Delete( VMA( 1 ) );		case CG_SENDCONSOLECOMMAND:			Cbuf_AddText( VMA( 1 ) );			return 0;		case CG_ADDCOMMAND://.........这里部分代码省略.........
开发者ID:justhacking,项目名称:Unvanquished,代码行数:101,


示例11: CL_GetServerCommand

/*===================CL_GetServerCommandSet up argc/argv for the given command===================*/qboolean CL_GetServerCommand( int serverCommandNumber ){	const char  *s;	char        *cmd;	static char bigConfigString[ BIG_INFO_STRING ];	int         argc;	// if we have irretrievably lost a reliable command, drop the connection	if ( serverCommandNumber <= clc.serverCommandSequence - MAX_RELIABLE_COMMANDS )	{		// when a demo record was started after the client got a whole bunch of		// reliable commands then the client never got those first reliable commands		if ( clc.demoplaying )		{			return qfalse;		}		Com_Error( ERR_DROP, "CL_GetServerCommand: a reliable command was cycled out" );	}	if ( serverCommandNumber > clc.serverCommandSequence )	{		Com_Error( ERR_DROP, "CL_GetServerCommand: requested a command not received" );	}	s = clc.serverCommands[ serverCommandNumber & ( MAX_RELIABLE_COMMANDS - 1 ) ];	clc.lastExecutedServerCommand = serverCommandNumber;	if ( cl_showServerCommands->integer )	{		// NERVE - SMF		Com_Printf( "serverCommand: %i : %s/n", serverCommandNumber, s );	}rescan:	Cmd_TokenizeString( s );	cmd = Cmd_Argv( 0 );	argc = Cmd_Argc();	if ( !strcmp( cmd, "disconnect" ) )	{		// NERVE - SMF - allow server to indicate why they were disconnected		if ( argc >= 2 )		{			Com_Error( ERR_SERVERDISCONNECT, "Server disconnected: %s", Cmd_Argv( 1 ) );		}		else		{			Com_Error( ERR_SERVERDISCONNECT, "Server disconnected" );		}	}	if ( !strcmp( cmd, "bcs0" ) )	{		Com_sprintf( bigConfigString, BIG_INFO_STRING, "cs %s %s", Cmd_Argv( 1 ), Cmd_QuoteString( Cmd_Argv( 2 ) ) );		return qfalse;	}	if ( !strcmp( cmd, "bcs1" ) )	{		s = Cmd_QuoteString( Cmd_Argv( 2 ) );		if ( strlen( bigConfigString ) + strlen( s ) >= BIG_INFO_STRING )		{			Com_Error( ERR_DROP, "bcs exceeded BIG_INFO_STRING" );		}		strcat( bigConfigString, s );		return qfalse;	}	if ( !strcmp( cmd, "bcs2" ) )	{		s = Cmd_QuoteString( Cmd_Argv( 2 ) );		if ( strlen( bigConfigString ) + strlen( s ) + 1 >= BIG_INFO_STRING )		{			Com_Error( ERR_DROP, "bcs exceeded BIG_INFO_STRING" );		}		strcat( bigConfigString, s );		strcat( bigConfigString, "/"" );		s = bigConfigString;		goto rescan;	}	if ( !strcmp( cmd, "cs" ) )	{		CL_ConfigstringModified();		// reparse the string, because CL_ConfigstringModified may have done another Cmd_TokenizeString()		Cmd_TokenizeString( s );		return qtrue;	}//.........这里部分代码省略.........
开发者ID:justhacking,项目名称:Unvanquished,代码行数:101,


示例12: SV_VerifyPaks_f

/*=================SV_VerifyPaks_fIf we are pure, disconnect the client if they do no meet the following conditions:1. the first two checksums match our view of cgame and ui2. there are no any additional checksums that we do not haveThis routine would be a bit simpler with a goto but i abstained=================*/static void SV_VerifyPaks_f( client_t *cl ) {	int nChkSum1, nChkSum2, nClientPaks, nServerPaks, i, j, nCurArg;	int nClientChkSum[1024];	int nServerChkSum[1024];	const char *pPaks, *pArg;	qboolean bGood = qtrue;	// if we are pure, we "expect" the client to load certain things from	// certain pk3 files, namely we want the client to have loaded the	// ui and cgame that we think should be loaded based on the pure setting	//	if ( sv_pure->integer != 0 ) {		bGood = qtrue;		nChkSum1 = nChkSum2 = 0;		// we run the game, so determine which cgame and ui the client "should" be running		//dlls are valid too now -rww		bGood = (qboolean)(FS_FileIsInPAK("cgamex86.dll", &nChkSum1) == 1);		if (bGood)			bGood = (qboolean)(FS_FileIsInPAK("uix86.dll", &nChkSum2) == 1);		nClientPaks = Cmd_Argc();		// start at arg 1 ( skip cl_paks )		nCurArg = 1;		// we basically use this while loop to avoid using 'goto' :)		while (bGood) {			// must be at least 6: "cl_paks cgame ui @ firstref ... numChecksums"			// numChecksums is encoded			if (nClientPaks < 6) {				bGood = qfalse;				break;			}			// verify first to be the cgame checksum			pArg = Cmd_Argv(nCurArg++);			if (!pArg || *pArg == '@' || atoi(pArg) != nChkSum1 ) {				bGood = qfalse;				break;			}			// verify the second to be the ui checksum			pArg = Cmd_Argv(nCurArg++);			if (!pArg || *pArg == '@' || atoi(pArg) != nChkSum2 ) {				bGood = qfalse;				break;			}			// should be sitting at the delimeter now			pArg = Cmd_Argv(nCurArg++);			if (*pArg != '@') {				bGood = qfalse;				break;			}			// store checksums since tokenization is not re-entrant			for (i = 0; nCurArg < nClientPaks; i++) {				nClientChkSum[i] = atoi(Cmd_Argv(nCurArg++));			}			// store number to compare against (minus one cause the last is the number of checksums)			nClientPaks = i - 1;			// make sure none of the client check sums are the same			// so the client can't send 5 the same checksums			for (i = 0; i < nClientPaks; i++) {				for (j = 0; j < nClientPaks; j++) {					if (i == j)						continue;					if (nClientChkSum[i] == nClientChkSum[j]) {						bGood = qfalse;						break;					}				}				if (bGood == qfalse)					break;			}			if (bGood == qfalse)				break;			// get the pure checksums of the pk3 files loaded by the server			pPaks = FS_LoadedPakPureChecksums();			Cmd_TokenizeString( pPaks );			nServerPaks = Cmd_Argc();			if (nServerPaks > 1024)				nServerPaks = 1024;			for (i = 0; i < nServerPaks; i++) {//.........这里部分代码省略.........
开发者ID:ooxavenue,项目名称:JediKnightGalaxies,代码行数:101,


示例13: CL_GetServerCommand

/*===================CL_GetServerCommandSet up argc/argv for the given command===================*/qboolean CL_GetServerCommand( int serverCommandNumber ) {    char	*s;    char	*cmd;    static char bigConfigString[BIG_INFO_STRING];    int argc;    // if we have irretrievably lost a reliable command, drop the connection    if ( serverCommandNumber <= clc.serverCommandSequence - MAX_RELIABLE_COMMANDS ) {        // when a demo record was started after the client got a whole bunch of        // reliable commands then the client never got those first reliable commands        if ( clc.demoplaying )            return qfalse;        Com_Error( ERR_DROP, "CL_GetServerCommand: a reliable command was cycled out" );        return qfalse;    }    if ( serverCommandNumber > clc.serverCommandSequence ) {        Com_Error( ERR_DROP, "CL_GetServerCommand: requested a command not received" );        return qfalse;    }    s = clc.serverCommands[ serverCommandNumber & ( MAX_RELIABLE_COMMANDS - 1 ) ];    clc.lastExecutedServerCommand = serverCommandNumber;    Com_DPrintf( "serverCommand: %i : %s/n", serverCommandNumber, s );rescan:    Cmd_TokenizeString( s );    cmd = Cmd_Argv(0);    argc = Cmd_Argc();    if ( !strcmp( cmd, "disconnect" ) ) {        // https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=552        // allow server to indicate why they were disconnected        if ( argc >= 2 )            Com_Error( ERR_SERVERDISCONNECT, "Server disconnected - %s", Cmd_Argv( 1 ) );        else            Com_Error( ERR_SERVERDISCONNECT, "Server disconnected" );    }    if ( !strcmp( cmd, "bcs0" ) ) {        Com_sprintf( bigConfigString, BIG_INFO_STRING, "cs %s /"%s", Cmd_Argv(1), Cmd_Argv(2) );        return qfalse;    }    if ( !strcmp( cmd, "bcs1" ) ) {        s = Cmd_Argv(2);        if( strlen(bigConfigString) + strlen(s) >= BIG_INFO_STRING ) {            Com_Error( ERR_DROP, "bcs exceeded BIG_INFO_STRING" );        }        strcat( bigConfigString, s );        return qfalse;    }    if ( !strcmp( cmd, "bcs2" ) ) {        s = Cmd_Argv(2);        if( strlen(bigConfigString) + strlen(s) + 1 >= BIG_INFO_STRING ) {            Com_Error( ERR_DROP, "bcs exceeded BIG_INFO_STRING" );        }        strcat( bigConfigString, s );        strcat( bigConfigString, "/"" );        s = bigConfigString;        goto rescan;    }    if ( !strcmp( cmd, "cs" ) ) {        CL_ConfigstringModified();        // reparse the string, because CL_ConfigstringModified may have done another Cmd_TokenizeString()        Cmd_TokenizeString( s );        return qtrue;    }    if ( !strcmp( cmd, "map_restart" ) ) {        // clear notify lines and outgoing commands before passing        // the restart to the cgame        Con_ClearNotify();        // reparse the string, because Con_ClearNotify() may have done another Cmd_TokenizeString()        Cmd_TokenizeString( s );        Com_Memset( cl.cmds, 0, sizeof( cl.cmds ) );        return qtrue;    }    // the clientLevelShot command is used during development    // to generate 128*128 screenshots from the intermission    // point of levels for the menu system to use    // we pass it along to the cgame to make apropriate adjustments,    // but we also clear the console and notify lines here    if ( !strcmp( cmd, "clientLevelShot" ) ) {        // don't do it if we aren't running the server locally,        // otherwise malicious remote servers could overwrite        // the existing thumbnails        if ( !com_sv_running->integer ) {            return qfalse;//.........这里部分代码省略.........
开发者ID:pvtmert,项目名称:ioq3_dhd,代码行数:101,


示例14: dissect_quakeworld_ConnectionlessPacket

//.........这里部分代码省略.........					tvb,					offset + Cmd_Argv_start(4),					Cmd_Argv_length(4), infostring);				info_tree = proto_item_add_subtree(					info_item, ett_quakeworld_connectionless_connect_infostring);				dissect_id_infostring(tvb, info_tree, offset + Cmd_Argv_start(4),					wmem_strdup(wmem_packet_scope(), infostring),					ett_quakeworld_connectionless_connect_infostring_key_value,					hf_quakeworld_connectionless_connect_infostring_key_value,					hf_quakeworld_connectionless_connect_infostring_key,					hf_quakeworld_connectionless_connect_infostring_value);			}		} else if (strcmp(c,"getchallenge") == 0) {			command = "Get Challenge";			command_len = Cmd_Argv_length(0);		} else if (strcmp(c,"rcon") == 0) {			const char* password;			int i;			char remaining[MAX_TEXT_SIZE+1];			proto_tree *argument_tree = NULL;			command = "Remote Command";			command_len = Cmd_Argv_length(0);			if (text_tree) {				proto_item *argument_item;				proto_tree_add_string(text_tree, hf_quakeworld_connectionless_command,					tvb, offset, command_len, command);				argument_item = proto_tree_add_string(text_tree,					hf_quakeworld_connectionless_arguments,					tvb, offset + Cmd_Argv_start(1), len - Cmd_Argv_start(1),					text + Cmd_Argv_start(1));				argument_tree =	proto_item_add_subtree(argument_item,								       ett_quakeworld_connectionless_arguments);				command_finished=TRUE;			}			password = Cmd_Argv(1);			if (argument_tree) {				proto_tree_add_string(argument_tree,					hf_quakeworld_connectionless_rcon_password,					tvb,					offset + Cmd_Argv_start(1),					Cmd_Argv_length(1), password);			}			remaining[0] = '/0';			for (i=2; i<Cmd_Argc() ; i++) {				g_strlcat (remaining, Cmd_Argv(i), MAX_TEXT_SIZE+1);				g_strlcat (remaining, " ", MAX_TEXT_SIZE+1);			}			if (text_tree) {				proto_tree_add_string(argument_tree,					hf_quakeworld_connectionless_rcon_command,					tvb, offset + Cmd_Argv_start(2),					Cmd_Argv_start(Cmd_Argc()-1) + Cmd_Argv_length(Cmd_Argc()-1) -					Cmd_Argv_start(2),					remaining);			}		} else if (c[0]==A2A_PING && ( c[1]=='/0' || c[1]=='/n')) {			command = "Ping";			command_len = 1;		} else if (c[0]==A2A_ACK && ( c[1]=='/0' || c[1]=='/n')) {			command = "Ack";			command_len = 1;		} else {			command = "Unknown";			command_len = len - 1;		}	}	else {		/* server to client commands */		if (text[0] == S2C_CONNECTION) {			command = "Connected";			command_len = 1;		} else if (text[0] == A2C_CLIENT_COMMAND) {			command = "Client Command";			command_len = 1;			/* stringz (command), stringz (localid) */		} else if (text[0] == A2C_PRINT) {			command = "Print";			command_len = 1;			/* string */		} else if (text[0] == A2A_PING) {			command = "Ping";			command_len = 1;		} else if (text[0] == S2C_CHALLENGE) {			command = "Challenge";			command_len = 1;			/* string, conversion */		} else {			command = "Unknown";			command_len = len - 1;		}	}	col_append_fstr(pinfo->cinfo, COL_INFO, " %s", command);	if (!command_finished) {		proto_tree_add_string(text_tree, hf_quakeworld_connectionless_command,			tvb, offset, command_len, command);	}	/*offset += len;*/}
开发者ID:acaceres2176,项目名称:wireshark,代码行数:101,


示例15: CL_CgameSystemCalls

/*====================CL_CgameSystemCallsThe cgame module is making a system call====================*/intptr_t CL_CgameSystemCalls( intptr_t *args ) {    switch( args[0] ) {    case CG_PRINT:        Com_Printf( "%s", (const char*)VMA(1) );        return 0;    case CG_ERROR:        Com_Error( ERR_DROP, "%s", (const char*)VMA(1) );        return 0;    case CG_MILLISECONDS:        return Sys_Milliseconds();    case CG_CVAR_REGISTER:        Cvar_Register( VMA(1), VMA(2), VMA(3), args[4] );        return 0;    case CG_CVAR_UPDATE:        Cvar_Update( VMA(1) );        return 0;    case CG_CVAR_SET:        Cvar_SetSafe( VMA(1), VMA(2) );        return 0;    case CG_CVAR_VARIABLESTRINGBUFFER:        Cvar_VariableStringBuffer( VMA(1), VMA(2), args[3] );        return 0;    case CG_ARGC:        return Cmd_Argc();    case CG_ARGV:        Cmd_ArgvBuffer( args[1], VMA(2), args[3] );        return 0;    case CG_ARGS:        Cmd_ArgsBuffer( VMA(1), args[2] );        return 0;    case CG_FS_FOPENFILE:        return FS_FOpenFileByMode( VMA(1), VMA(2), args[3] );    case CG_FS_READ:        FS_Read2( VMA(1), args[2], args[3] );        return 0;    case CG_FS_WRITE:        FS_Write( VMA(1), args[2], args[3] );        return 0;    case CG_FS_FCLOSEFILE:        FS_FCloseFile( args[1] );        return 0;    case CG_FS_SEEK:        return FS_Seek( args[1], args[2], args[3] );    case CG_SENDCONSOLECOMMAND:        Cbuf_AddText( VMA(1) );        return 0;    case CG_ADDCOMMAND:        CL_AddCgameCommand( VMA(1) );        return 0;    case CG_REMOVECOMMAND:        Cmd_RemoveCommandSafe( VMA(1) );        return 0;    case CG_SENDCLIENTCOMMAND:        CL_AddReliableCommand(VMA(1), qfalse);        return 0;    case CG_UPDATESCREEN:        // this is used during lengthy level loading, so pump message loop//		Com_EventLoop();	// FIXME: if a server restarts here, BAD THINGS HAPPEN!// We can't call Com_EventLoop here, a restart will crash and this _does_ happen// if there is a map change while we are downloading at pk3.// ZOID        SCR_UpdateScreen();        return 0;    case CG_CM_LOADMAP:        CL_CM_LoadMap( VMA(1) );        return 0;    case CG_CM_NUMINLINEMODELS:        return CM_NumInlineModels();    case CG_CM_INLINEMODEL:        return CM_InlineModel( args[1] );    case CG_CM_TEMPBOXMODEL:        return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qfalse );    case CG_CM_TEMPCAPSULEMODEL:        return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qtrue );    case CG_CM_POINTCONTENTS:        return CM_PointContents( VMA(1), args[2] );    case CG_CM_TRANSFORMEDPOINTCONTENTS:        return CM_TransformedPointContents( VMA(1), args[2], VMA(3), VMA(4) );    case CG_CM_BOXTRACE:        CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qfalse );        return 0;    case CG_CM_CAPSULETRACE:        CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qtrue );        return 0;    case CG_CM_TRANSFORMEDBOXTRACE:        CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qfalse );        return 0;    case CG_CM_TRANSFORMEDCAPSULETRACE:        CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qtrue );        return 0;    case CG_CM_MARKFRAGMENTS:        return re.MarkFragments( args[1], VMA(2), VMA(3), args[4], VMA(5), args[6], VMA(7) );    case CG_S_STARTSOUND://.........这里部分代码省略.........
开发者ID:pvtmert,项目名称:ioq3_dhd,代码行数:101,


示例16: SVC_InfoResponse

/** SVC_InfoResponse* * Responds with short info for broadcast scans* The second parameter should be the current protocol version number.*/static void SVC_InfoResponse( const socket_t *socket, const netadr_t *address ){	int i, count;	char *string;	bool allow_empty = false, allow_full = false;	if( sv_showInfoQueries->integer )		Com_Printf( "Info Packet %s/n", NET_AddressToString( address ) );	// KoFFiE: When not public and coming from a LAN address	//         assume broadcast and respond anyway, otherwise ignore	if( ( ( !sv_public->integer ) && ( !NET_IsLANAddress( address ) ) ) ||		( sv_maxclients->integer == 1 ) )	{		return;	}	// ignore when in invalid server state	if( sv.state < ss_loading || sv.state > ss_game )		return;	// don't reply when we are locked for mm	// if( SV_MM_IsLocked() )	//	return;	// different protocol version	if( atoi( Cmd_Argv( 1 ) ) != APP_PROTOCOL_VERSION )		return;	// check for full/empty filtered states	for( i = 0; i < Cmd_Argc(); i++ )	{		if( !Q_stricmp( Cmd_Argv( i ), "full" ) )			allow_full = true;		if( !Q_stricmp( Cmd_Argv( i ), "empty" ) )			allow_empty = true;	}	count = 0;	for( i = 0; i < sv_maxclients->integer; i++ )	{		if( svs.clients[i].state >= CS_CONNECTED )		{			count++;		}	}	if( ( count == sv_maxclients->integer ) && !allow_full )	{		return;	}	if( ( count == 0 ) && !allow_empty )	{		return;	}	string = SV_ShortInfoString();	if( string )		Netchan_OutOfBandPrint( socket, address, "info/n%s", string );}
开发者ID:MaryJaneInChain,项目名称:qfusion,代码行数:68,


示例17: SV_VerifyPaks_f

/*=================SV_VerifyPaks_fIf we are pure, disconnect the client if they do no meet the following conditions:1. the first two checksums match our view of cgame and ui2. there are no any additional checksums that we do not haveThis routine would be a bit simpler with a goto but i abstained=================*/static void SV_VerifyPaks_f( client_t *cl ) {	int nChkSum1, nChkSum2, nClientPaks, nServerPaks, i, j, nCurArg;	int nClientChkSum[1024];	int nServerChkSum[1024];	const char *pPaks, *pArg;	qboolean bGood = qtrue;	// if we are pure, we "expect" the client to load certain things from 	// certain pk3 files, namely we want the client to have loaded the	// ui and cgame that we think should be loaded based on the pure setting	//	if ( sv_pure->integer != 0 ) {		nChkSum1 = nChkSum2 = 0;		// we run the game, so determine which cgame and ui the client "should" be running		bGood = (FS_FileIsInPAK("vm/cgame.qvm", &nChkSum1) == 1);		if (bGood)			bGood = (FS_FileIsInPAK("vm/ui.qvm", &nChkSum2) == 1);		nClientPaks = Cmd_Argc();		// start at arg 2 ( skip serverId cl_paks )		nCurArg = 1;		pArg = Cmd_Argv(nCurArg++);		if(!pArg) {			bGood = qfalse;		}		else		{			// https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=475			// we may get incoming cp sequences from a previous checksumFeed, which we need to ignore			// since serverId is a frame count, it always goes up			if (atoi(pArg) < sv.checksumFeedServerId)			{				Com_DPrintf("ignoring outdated cp command from client %s/n", cl->name);				return;			}		}			// we basically use this while loop to avoid using 'goto' :)		while (bGood) {			// must be at least 6: "cl_paks cgame ui @ firstref ... numChecksums"			// numChecksums is encoded			if (nClientPaks < 6) {				bGood = qfalse;				break;			}			// verify first to be the cgame checksum			pArg = Cmd_Argv(nCurArg++);			if (!pArg || *pArg == '@' || atoi(pArg) != nChkSum1 ) {				bGood = qfalse;				break;			}			// verify the second to be the ui checksum			pArg = Cmd_Argv(nCurArg++);			if (!pArg || *pArg == '@' || atoi(pArg) != nChkSum2 ) {				bGood = qfalse;				break;			}			// should be sitting at the delimeter now			pArg = Cmd_Argv(nCurArg++);			if (*pArg != '@') {				bGood = qfalse;				break;			}			// store checksums since tokenization is not re-entrant			for (i = 0; nCurArg < nClientPaks; i++) {				nClientChkSum[i] = atoi(Cmd_Argv(nCurArg++));			}			// store number to compare against (minus one cause the last is the number of checksums)			nClientPaks = i - 1;			// make sure none of the client check sums are the same			// so the client can't send 5 the same checksums			for (i = 0; i < nClientPaks; i++) {				for (j = 0; j < nClientPaks; j++) {					if (i == j)						continue;					if (nClientChkSum[i] == nClientChkSum[j]) {						bGood = qfalse;						break;					}				}				if (bGood == qfalse)//.........这里部分代码省略.........
开发者ID:jkent,项目名称:tremulous,代码行数:101,


示例18: SVC_DirectConnect

/** SVC_DirectConnect* A connection request that did not come from the master*/static void SVC_DirectConnect( const socket_t *socket, const netadr_t *address ){#ifdef TCP_ALLOW_CONNECT	int incoming = 0;#endif	char userinfo[MAX_INFO_STRING];	client_t *cl, *newcl;	int i, version, game_port, challenge;	int previousclients;	int session_id;	char *session_id_str;	unsigned int ticket_id;	bool tv_client;	unsigned int time;	Com_DPrintf( "SVC_DirectConnect (%s)/n", Cmd_Args() );	version = atoi( Cmd_Argv( 1 ) );	if( version != APP_PROTOCOL_VERSION )	{		if( version <= 6 )		{            // before reject packet was added			Netchan_OutOfBandPrint( socket, address, "print/nServer is version %4.2f. Protocol %3i/n",				APP_VERSION, APP_PROTOCOL_VERSION );		}		else		{			Netchan_OutOfBandPrint( socket, address,				"reject/n%i/n%i/nServer and client don't have the same version/n", DROP_TYPE_GENERAL, 0 );		}		Com_DPrintf( "    rejected connect from protocol %i/n", version );		return;	}	game_port = atoi( Cmd_Argv( 2 ) );	challenge = atoi( Cmd_Argv( 3 ) );	tv_client = ( atoi( Cmd_Argv( 5 ) ) & 1 ? true : false );	if( !Info_Validate( Cmd_Argv( 4 ) ) )	{		Netchan_OutOfBandPrint( socket, address, "reject/n%i/n%i/nInvalid userinfo string/n", DROP_TYPE_GENERAL, 0 );		Com_DPrintf( "Connection from %s refused: invalid userinfo string/n", NET_AddressToString( address ) );		return;	}	Q_strncpyz( userinfo, Cmd_Argv( 4 ), sizeof( userinfo ) );	// force the IP key/value pair so the game can filter based on ip	if( !Info_SetValueForKey( userinfo, "socket", NET_SocketTypeToString( socket->type ) ) )	{		Netchan_OutOfBandPrint( socket, address, "reject/n%i/n%i/nError: Couldn't set userinfo (socket)/n",			DROP_TYPE_GENERAL, 0 );		Com_DPrintf( "Connection from %s refused: couldn't set userinfo (socket)/n", NET_AddressToString( address ) );		return;	}	if( !Info_SetValueForKey( userinfo, "ip", NET_AddressToString( address ) ) )	{		Netchan_OutOfBandPrint( socket, address, "reject/n%i/n%i/nError: Couldn't set userinfo (ip)/n",			DROP_TYPE_GENERAL, 0 );		Com_DPrintf( "Connection from %s refused: couldn't set userinfo (ip)/n", NET_AddressToString( address ) );		return;	}	if( Cmd_Argc() >= 7 )	{		// we have extended information, ticket-id and session-id		Com_Printf("Extended information %s/n", Cmd_Argv(6) );		ticket_id = (unsigned int)atoi( Cmd_Argv(6) );		session_id_str = Info_ValueForKey( userinfo, "cl_mm_session" );		if( session_id_str != NULL )			session_id = atoi( session_id_str );		else			session_id = 0;	}	else	{		ticket_id = 0;		session_id = 0;	}#ifdef TCP_ALLOW_CONNECT	if( socket->type == SOCKET_TCP )	{		// find the connection		for( i = 0; i < MAX_INCOMING_CONNECTIONS; i++ )		{			if( !svs.incoming[i].active )				continue;			if( NET_CompareAddress( &svs.incoming[i].address, address ) && socket == &svs.incoming[i].socket )				break;		}		if( i == MAX_INCOMING_CONNECTIONS )		{			Com_Error( ERR_FATAL, "Incoming connection not found./n" );			return;//.........这里部分代码省略.........
开发者ID:MaryJaneInChain,项目名称:qfusion,代码行数:101,


示例19: Cvar_ListModified_f

/*=======================================================================================================================================Cvar_ListModified_f=======================================================================================================================================*/void Cvar_ListModified_f(void) {	cvar_t *var;	int totalModified;	char *value;	char *match;	if (Cmd_Argc() > 1) {		match = Cmd_Argv(1);	} else {		match = NULL;	}	totalModified = 0;	for (var = cvar_vars; var; var = var->next) {		if (!var->name || !var->modificationCount) {			continue;		}		value = var->latchedString ? var->latchedString : var->string;		if (!strcmp(value, var->resetString)) {			continue;		}		totalModified++;		if (match && !Com_Filter(match, var->name, qfalse)) {			continue;		}		if (var->flags & CVAR_SERVERINFO) {			Com_Printf("S");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_SYSTEMINFO) {			Com_Printf("s");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_USERINFO) {			Com_Printf("U");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_ROM) {			Com_Printf("R");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_INIT) {			Com_Printf("I");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_ARCHIVE) {			Com_Printf("A");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_LATCH) {			Com_Printf("L");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_CHEAT) {			Com_Printf("C");		} else {			Com_Printf(" ");		}		if (var->flags & CVAR_USER_CREATED) {			Com_Printf("?");		} else {			Com_Printf(" ");		}		Com_Printf(" %s /"%s/", default /"%s/"/n", var->name, value, var->resetString);	}	Com_Printf("/n%i total modified cvars/n", totalModified);}
开发者ID:KuehnhammerTobias,项目名称:ioqw,代码行数:95,


示例20: CD_f

static voidCD_f(void){   const char *command;   int n;   if (Cmd_Argc() < 2)      return;   command = Cmd_Argv(1);   if (strcasecmp(command, "on") == 0) {      enabled = true;      return;   }   if (strcasecmp(command, "off") == 0) {      if (playing)         CDAudio_Stop();      enabled = false;      return;   }   if (strcasecmp(command, "reset") == 0) {      enabled = true;      if (playing)         CDAudio_Stop();      for (n = 0; n < 100; n++)         remap[n] = n;      CDAudio_GetAudioDiskInfo();      return;   }   if (strcasecmp(command, "remap") == 0)   {      int ret = Cmd_Argc() - 2;      if (ret <= 0) {         for (n = 1; n < 100; n++)            if (remap[n] != n)               Con_Printf("  %u -> %u/n", n, remap[n]);         return;      }      for (n = 1; n <= ret; n++)         remap[n] = Q_atoi(Cmd_Argv(n + 1));      return;   }   if (strcasecmp(command, "close") == 0) {      CDAudio_CloseDoor();      return;   }   if (!cdValid) {      CDAudio_GetAudioDiskInfo();      if (!cdValid) {         Con_Printf("No CD in player./n");         return;      }   }   if (strcasecmp(command, "play") == 0) {      CDAudio_Play((byte)Q_atoi(Cmd_Argv(2)), false);      return;   }   if (strcasecmp(command, "loop") == 0) {      CDAudio_Play((byte)Q_atoi(Cmd_Argv(2)), true);      return;   }   if (strcasecmp(command, "stop") == 0) {      CDAudio_Stop();      return;   }   if (strcasecmp(command, "pause") == 0) {      CDAudio_Pause();      return;   }   if (strcasecmp(command, "resume") == 0) {      CDAudio_Resume();      return;   }   if (strcasecmp(command, "eject") == 0) {      if (playing)         CDAudio_Stop();      CDAudio_Eject();      cdValid = false;      return;   }   if (strcasecmp(command, "info") == 0) {      Con_Printf("%u tracks/n", maxTrack);      if (playing)         Con_Printf("Currently %s track %u/n",               playLooping ? "looping" : "playing", playTrack);      else if (wasPlaying)         Con_Printf("Paused %s track %u/n",               playLooping ? "looping" : "playing", playTrack);      Con_Printf("Volume is %f/n", bgmvolume.value);      return;   }}
开发者ID:leilei-,项目名称:tyrquake,代码行数:93,


示例21: Con_Grep_f

/*================Con_Grep_fFind all console lines containing a string================*/void Con_Grep_f( void ){	int    l;	char  *search;	char  *printbuf = NULL;	size_t pbAlloc = 0, pbLength = 0;	if ( Cmd_Argc() != 2 )	{		Com_Printf("%s", _( "usage: grep <string>/n" ));		return;	}	// skip empty lines	for ( l = consoleState.currentLine - consoleState.maxScrollbackLengthInLines + 1; l <= consoleState.currentLine; l++ )	{		if ( consoleState.text[ CON_LINE( l ) ].ch )		{			break;		}	}	// check the remaining lines	search = Cmd_Argv( 1 );	for ( ; l <= consoleState.currentLine; l++ )	{		const char *buffer = Con_LineToString( l, qfalse );		if ( Q_stristr( buffer, search ) )		{			size_t i;			buffer = Con_LineToColouredString( l, qtrue );			i = strlen( buffer );			if ( pbLength + i >= pbAlloc )			{				char *nb;				// allocate in 16K chunks - more than adequate				pbAlloc = ( pbLength + i + 1 + 16383) & ~16383;				nb = Z_Malloc( pbAlloc );				if( printbuf )				{					strcpy( nb, printbuf );					Z_Free( printbuf );				}				printbuf = nb;			}			Q_strcat( printbuf, pbAlloc, buffer );			pbLength += i;		}	}	if( printbuf )	{		char tmpbuf[ MAXPRINTMSG ];		int i;		// print out in chunks so we don't go over the MAXPRINTMSG limit		for ( i = 0; i < pbLength; i += MAXPRINTMSG - 1 )		{			Q_strncpyz( tmpbuf, printbuf + i, sizeof( tmpbuf ) );			Com_Printf( "%s", tmpbuf );		}		Z_Free( printbuf );	}}
开发者ID:ZdrytchX,项目名称:Unvanquished-KoRx,代码行数:76,


示例22: CL_UISystemCalls

//.........这里部分代码省略.........	case UI_CVAR_UPDATE:		Cvar_Update( (vmCvar_t *)VMA(1) );		return 0;	case UI_CVAR_SET:		Cvar_VM_Set( (const char *)VMA(1), (const char *)VMA(2), VM_UI );		return 0;	case UI_CVAR_VARIABLEVALUE:		return FloatAsInt( Cvar_VariableValue( (const char *)VMA(1) ) );	case UI_CVAR_VARIABLESTRINGBUFFER:		Cvar_VariableStringBuffer( (const char *)VMA(1), (char *)VMA(2), args[3] );		return 0;	case UI_CVAR_SETVALUE:		Cvar_VM_SetValue( (const char *)VMA(1), VMF(2), VM_UI );		return 0;	case UI_CVAR_RESET:		Cvar_Reset( (const char *)VMA(1) );		return 0;	case UI_CVAR_CREATE:		Cvar_Get( (const char *)VMA(1), (const char *)VMA(2), args[3] );		return 0;	case UI_CVAR_INFOSTRINGBUFFER:		Cvar_InfoStringBuffer( args[1], (char *)VMA(2), args[3] );		return 0;	case UI_ARGC:		return Cmd_Argc();	case UI_ARGV:		Cmd_ArgvBuffer( args[1], (char *)VMA(2), args[3] );		return 0;	case UI_CMD_EXECUTETEXT:		Cbuf_ExecuteText( args[1], (const char *)VMA(2) );		return 0;	case UI_FS_FOPENFILE:		return FS_FOpenFileByMode( (const char *)VMA(1), (int *)VMA(2), (fsMode_t)args[3] );	case UI_FS_READ:		FS_Read( VMA(1), args[2], args[3] );		return 0;	case UI_FS_WRITE:		FS_Write( VMA(1), args[2], args[3] );		return 0;	case UI_FS_FCLOSEFILE:		FS_FCloseFile( args[1] );		return 0;	case UI_FS_GETFILELIST:		return FS_GetFileList( (const char *)VMA(1), (const char *)VMA(2), (char *)VMA(3), args[4] );	case UI_R_REGISTERMODEL:		return re->RegisterModel( (const char *)VMA(1) );	case UI_R_REGISTERSKIN:		return re->RegisterSkin( (const char *)VMA(1) );
开发者ID:adnanfzafar,项目名称:OpenJK,代码行数:67,


示例23: SV_Record_f

// code is a merge of the cl_main.cpp function of the same name and SV_SendClientGameState in sv_client.cppstatic void SV_Record_f( void ) {	char		demoName[MAX_OSPATH];	char		name[MAX_OSPATH];	int			i;	char		*s;	client_t	*cl;	if ( svs.clients == NULL ) {		Com_Printf( "cannot record server demo - null svs.clients/n" );		return;	}	if ( Cmd_Argc() > 3 ) {		Com_Printf( "record <demoname> <clientnum>/n" );		return;	}	if ( Cmd_Argc() == 3 ) {		int clIndex = atoi( Cmd_Argv( 2 ) );		if ( clIndex < 0 || clIndex >= sv_maxclients->integer ) {			Com_Printf( "Unknown client number %d./n", clIndex );			return;		}		cl = &svs.clients[clIndex];	} else {		for ( i=0, cl=svs.clients ; i < sv_maxclients->integer ; i++, cl++ )		{			if ( !cl->state )			{				continue;			}			if ( cl->demo.demorecording )			{				continue;			}			if ( cl->state == CS_ACTIVE )			{				break;			}		}	}	if (cl - svs.clients >= sv_maxclients->integer) {		Com_Printf( "No active client could be found./n" );		return;	}	if ( cl->demo.demorecording ) {		Com_Printf( "Already recording./n" );		return;	}	if ( cl->state != CS_ACTIVE ) {		Com_Printf( "Client is not active./n" );		return;	}	if ( Cmd_Argc() >= 2 ) {		s = Cmd_Argv( 1 );		Q_strncpyz( demoName, s, sizeof( demoName ) );		Com_sprintf( name, sizeof( name ), "demos/%s.dm_%d", demoName, PROTOCOL_VERSION );	} else {		// timestamp the file		SV_DemoFilename( demoName, sizeof( demoName ) );		Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, PROTOCOL_VERSION );		if ( FS_FileExists( name ) ) {			Com_Printf( "Record: Couldn't create a file/n");			return; 		}	}	SV_RecordDemo( cl, demoName );}
开发者ID:ooxavenue,项目名称:JediKnightGalaxies,代码行数:79,


示例24: CL_CgameSystemCalls

int CL_CgameSystemCalls( int *args ) {#ifndef __NO_JK2    if( Cvar_VariableIntegerValue("com_jk2") )    {        args[0] = (int)CL_ConvertJK2SysCall((cgameJK2Import_t)args[0]);    }#endif    switch( args[0] ) {    case CG_PRINT:        Com_Printf( "%s", VMA(1) );        return 0;    case CG_ERROR:        Com_Error( ERR_DROP, S_COLOR_RED"%s", VMA(1) );        return 0;    case CG_MILLISECONDS:        return Sys_Milliseconds();    case CG_CVAR_REGISTER:        Cvar_Register( (vmCvar_t *) VMA(1), (const char *) VMA(2), (const char *) VMA(3), args[4] );        return 0;    case CG_CVAR_UPDATE:        Cvar_Update( (vmCvar_t *) VMA(1) );        return 0;    case CG_CVAR_SET:        Cvar_Set( (const char *) VMA(1), (const char *) VMA(2) );        return 0;    case CG_ARGC:        return Cmd_Argc();    case CG_ARGV:        Cmd_ArgvBuffer( args[1], (char *) VMA(2), args[3] );        return 0;    case CG_ARGS:        Cmd_ArgsBuffer( (char *) VMA(1), args[2] );        return 0;    case CG_FS_FOPENFILE:        return FS_FOpenFileByMode( (const char *) VMA(1), (int *) VMA(2), (fsMode_t) args[3] );    case CG_FS_READ:        FS_Read( VMA(1), args[2], args[3] );        return 0;    case CG_FS_WRITE:        FS_Write( VMA(1), args[2], args[3] );        return 0;    case CG_FS_FCLOSEFILE:        FS_FCloseFile( args[1] );        return 0;    case CG_SENDCONSOLECOMMAND:        Cbuf_AddText( (const char *) VMA(1) );        return 0;    case CG_ADDCOMMAND:        CL_AddCgameCommand( (const char *) VMA(1) );        return 0;    case CG_SENDCLIENTCOMMAND:        CL_AddReliableCommand( (const char *) VMA(1) );        return 0;    case CG_UPDATESCREEN:        // this is used during lengthy level loading, so pump message loop        Com_EventLoop();	// FIXME: if a server restarts here, BAD THINGS HAPPEN!        SCR_UpdateScreen();        return 0;#ifdef _XBOX    case CG_RMG_INIT:    case CG_CM_REGISTER_TERRAIN:    case CG_RE_INIT_RENDERER_TERRAIN:        Com_Error( ERR_FATAL, "ERROR: Terrain unsupported on Xbox./n" );#else    case CG_RMG_INIT:        /*        if (!com_sv_running->integer)        {	// don't do this if we are connected locally        	if (!TheRandomMissionManager)        	{        		TheRandomMissionManager = new CRMManager;        	}        	TheRandomMissionManager->SetLandScape( cmg.landScapes[args[1]] );        	TheRandomMissionManager->LoadMission(qfalse);        	TheRandomMissionManager->SpawnMission(qfalse);        	cmg.landScapes[args[1]]->UpdatePatches();        }        */ //this is SP.. I guess we're always the client and server.//		cl.mRMGChecksum = cm.landScapes[args[1]]->get_rand_seed();        RM_CreateRandomModels(args[1], (const char *)VMA(2));        //cmg.landScapes[args[1]]->rand_seed(cl.mRMGChecksum);		// restore it, in case we do a vid restart        cmg.landScape->rand_seed(cmg.landScape->get_rand_seed());//		TheRandomMissionManager->CreateMap();        return 0;    case CG_CM_REGISTER_TERRAIN:        return CM_RegisterTerrain((const char *)VMA(1), false)->GetTerrainId();    case CG_RE_INIT_RENDERER_TERRAIN:        RE_InitRendererTerrain((const char *)VMA(1));        return 0;#endif	// _XBOX    case CG_CM_LOADMAP:#ifdef _XBOX        CL_CM_LoadMap( (const char *) VMA(1) );#else        CL_CM_LoadMap( (const char *) VMA(1), args[2] );#endif        return 0;//.........这里部分代码省略.........
开发者ID:Arbixal,项目名称:OpenJK,代码行数:101,


示例25: SV_AddBanToList

static void SV_AddBanToList( qboolean isexception ){	char *banstring;	char addy2[NET_ADDRSTRMAXLEN];	netadr_t ip;	int index, argc, mask;	serverBan_t *curban;	// make sure server is running	if ( !com_sv_running->integer ) {		Com_Printf( "Server is not running./n" );		return;	}	argc = Cmd_Argc();	if ( argc < 2 || argc > 3 )	{		Com_Printf( "Usage: %s (ip[/subnet] | clientnum [subnet])/n", Cmd_Argv( 0 ) );		return;	}	if ( serverBansCount >= (int)ARRAY_LEN( serverBans ) )	{		Com_Printf( "Error: Maximum number of bans/exceptions exceeded./n" );		return;	}	banstring = Cmd_Argv( 1 );	if ( strchr( banstring, '.' ) /*|| strchr( banstring, ':' )*/ )	{		// This is an ip address, not a client num.		if ( SV_ParseCIDRNotation( &ip, &mask, banstring ) )		{			Com_Printf( "Error: Invalid address %s/n", banstring );			return;		}	}	else	{		client_t *cl;		// client num.		cl = SV_GetPlayerByNum();		if ( !cl )		{			Com_Printf( "Error: Playernum %s does not exist./n", Cmd_Argv( 1 ) );			return;		}		ip = cl->netchan.remoteAddress;		if ( argc == 3 )		{			mask = atoi( Cmd_Argv( 2 ) );			if ( ip.type == NA_IP )			{				if ( mask < 1 || mask > 32 )					mask = 32;			}			else				mask = 32;		}		else			mask = 32;	}	if ( ip.type != NA_IP )	{		Com_Printf( "Error: Can ban players connected via the internet only./n" );		return;	}	// first check whether a conflicting ban exists that would supersede the new one.	for ( index = 0; index < serverBansCount; index++ )	{		curban = &serverBans[index];		if ( curban->subnet <= mask )		{			if ( (curban->isexception || !isexception) && NET_CompareBaseAdrMask( curban->ip, ip, curban->subnet ) )			{				Q_strncpyz( addy2, NET_AdrToString( ip ), sizeof( addy2 ) );				Com_Printf( "Error: %s %s/%d supersedes %s %s/%d/n", curban->isexception ? "Exception" : "Ban",					NET_AdrToString( curban->ip ), curban->subnet,					isexception ? "exception" : "ban", addy2, mask );				return;			}		}		if ( curban->subnet >= mask )		{			if ( !curban->isexception && isexception && NET_CompareBaseAdrMask( curban->ip, ip, mask ) )			{				Q_strncpyz( addy2, NET_AdrToString( curban->ip ), sizeof( addy2 ) );//.........这里部分代码省略.........
开发者ID:ooxavenue,项目名称:JediKnightGalaxies,代码行数:101,


示例26: SV_WriteDownloadToClient

/*==================SV_WriteDownloadToClientCheck to see if the client wants a file, open it if needed and start pumping the clientFill up msg with data ==================*/void SV_WriteDownloadToClient( client_t *cl , msg_t *msg ){	int curindex;	int rate;	int blockspersnap;	int idPack = 0, missionPack = 0, unreferenced = 1;	char errorMessage[1024];	char pakbuf[MAX_QPATH], *pakptr;	int numRefPaks;	if (!*cl->downloadName)		return;	// Nothing being downloaded	if (!cl->download) { 		// Chop off filename extension.		Com_sprintf(pakbuf, sizeof(pakbuf), "%s", cl->downloadName);		pakptr = Q_strrchr(pakbuf, '.');				if(pakptr)		{			*pakptr = '/0';			// Check for pk3 filename extension			if(!Q_stricmp(pakptr + 1, "pk3"))			{				const char *referencedPaks = FS_ReferencedPakNames();				// Check whether the file appears in the list of referenced				// paks to prevent downloading of arbitrary files.				Cmd_TokenizeStringIgnoreQuotes(referencedPaks);				numRefPaks = Cmd_Argc();				for(curindex = 0; curindex < numRefPaks; curindex++)				{					if(!FS_FilenameCompare(Cmd_Argv(curindex), pakbuf))					{						unreferenced = 0;						// now that we know the file is referenced,						// check whether it's legal to download it.						missionPack = FS_idPak(pakbuf, "missionpack");						idPack = missionPack || FS_idPak(pakbuf, BASEGAME);						break;					}				}			}		}		// We open the file here		if ( !(sv_allowDownload->integer & DLF_ENABLE) ||			(sv_allowDownload->integer & DLF_NO_UDP) ||			idPack || unreferenced ||			( cl->downloadSize = FS_SV_FOpenFileRead( cl->downloadName, &cl->download ) ) <= 0 ) {			// cannot auto-download file			if(unreferenced)			{				Com_Printf("clientDownload: %d : /"%s/" is not referenced and cannot be downloaded./n", (int) (cl - svs.clients), cl->downloadName);				Com_sprintf(errorMessage, sizeof(errorMessage), "File /"%s/" is not referenced and cannot be downloaded.", cl->downloadName);			}			else if (idPack) {				Com_Printf("clientDownload: %d : /"%s/" cannot download id pk3 files/n", (int) (cl - svs.clients), cl->downloadName);				if (missionPack) {					Com_sprintf(errorMessage, sizeof(errorMessage), "Cannot autodownload Team Arena file /"%s/"/n"									"The Team Arena mission pack can be found in your local game store.", cl->downloadName);				}				else {					Com_sprintf(errorMessage, sizeof(errorMessage), "Cannot autodownload id pk3 file /"%s/"", cl->downloadName);				}			}			else if ( !(sv_allowDownload->integer & DLF_ENABLE) ||				(sv_allowDownload->integer & DLF_NO_UDP) ) {				Com_Printf("clientDownload: %d : /"%s/" download disabled", (int) (cl - svs.clients), cl->downloadName);				if (sv_pure->integer) {					Com_sprintf(errorMessage, sizeof(errorMessage), "Could not download /"%s/" because autodownloading is disabled on the server./n/n"										"You will need to get this file elsewhere before you "										"can connect to this pure server./n", cl->downloadName);				} else {					Com_sprintf(errorMessage, sizeof(errorMessage), "Could not download /"%s/" because autodownloading is disabled on the server./n/n"                    "The server you are connecting to is not a pure server, "                    "set autodownload to No in your settings and you might be "                    "able to join the game anyway./n", cl->downloadName);				}			} else {        // NOTE TTimo this is NOT supposed to happen unless bug in our filesystem scheme?        //   if the pk3 is referenced, it must have been found somewhere in the filesystem				Com_Printf("clientDownload: %d : /"%s/" file not found on server/n", (int) (cl - svs.clients), cl->downloadName);				Com_sprintf(errorMessage, sizeof(errorMessage), "File /"%s/" not found on server for autodownloading./n", cl->downloadName);			}			MSG_WriteByte( msg, svc_download );			MSG_WriteShort( msg, 0 ); // client is expecting block zero//.........这里部分代码省略.........
开发者ID:AlienHoboken,项目名称:Tremulous-W-Server,代码行数:101,


示例27: SV_BeginDownload_f

/*==================SV_BeginDownload_f==================*/void SV_BeginDownload_f(void){	char		*name, *p;	size_t		length;	qboolean	valid;//	extern int	file_from_pak; // ZOID did file come from pak?	int offset = 0;	name = Cmd_Argv(1);	if (Cmd_Argc() > 2)		offset = atoi(Cmd_Argv(2)); // downloaded offset	// r1ch fix: name is always filtered for security reasons	StripHighBits (name, 1);	// hacked by zoid to allow more conrol over download	// first off, no .. or global allow check	// r1ch fix: for  some ./ references in maps, eg ./textures/map/file	length = strlen(name);	p = name;	while ((p = strstr (p, "./")))	{		memmove (p, p+2, length - (p - name) - 1);		length -= 2;	}	// r1ch fix: block the really nasty ones - /server.cfg will download from mod root on win32, .. is obvious	if (name[0] == '//' || strstr (name, ".."))	{		Com_Printf ("Refusing illegal download path %s to %s/n", name, sv_client->name);		MSG_WriteByte (&sv_client->netchan.message, svc_download);		MSG_WriteShort (&sv_client->netchan.message, -1);		MSG_WriteByte (&sv_client->netchan.message, 0);		Com_Printf ("Client %s[%s] tried to download illegal path: %s/n", sv_client->name, NET_AdrToString (sv_client->netchan.remote_address), name);		SV_DropClient (sv_client);		return;	}	else if (offset < 0) // r1ch fix: negative offset will crash on read	{		Com_Printf ("Refusing illegal download offset %d to %s/n", offset, sv_client->name);		MSG_WriteByte (&sv_client->netchan.message, svc_download);		MSG_WriteShort (&sv_client->netchan.message, -1);		MSG_WriteByte (&sv_client->netchan.message, 0);		Com_Printf ("Client %s[%s] supplied illegal download offset for %s: %d/n", sv_client->name, NET_AdrToString (sv_client->netchan.remote_address), name, offset);		SV_DropClient (sv_client);		return;	}	else if ( !length || name[0] == 0 // empty name, maybe as result of ./ normalize			|| !IsValidChar(name[0])			// r1ch: / is bad in general, client won't even write properly if we do sent it			|| strchr (name, '//')			// MUST be in a subdirectory, unless a pk3				|| (!strstr (name, "/") && strcmp(name+strlen(name)-4, ".pk3"))			// r1ch: another bug, maps/. will fopen(".") -> crash			|| !IsValidChar(name[length-1]) )/*	if (strstr (name, "..") || !allow_download->value		// leading dot is no good		|| *name == '.' 		// leading slash bad as well, must be in subdir		|| *name == '/'		// next up, skin check		|| (strncmp(name, "players/", 8) == 0 && !allow_download_players->value)		// now models		|| (strncmp(name, "models/", 7) == 0 && !allow_download_models->value)		// now sounds		|| (strncmp(name, "sound/", 6) == 0 && !allow_download_sounds->value)		// now maps (note special case for maps, must not be in pak)		|| (strncmp(name, "maps/", 5) == 0 && !allow_download_maps->value)		// MUST be in a subdirectory, unless a pk3			|| (!strstr (name, "/") && strcmp(name+strlen(name)-4, ".pk3")) )	*/	{	// don't allow anything with .. path		MSG_WriteByte (&sv_client->netchan.message, svc_download);		MSG_WriteShort (&sv_client->netchan.message, -1);		MSG_WriteByte (&sv_client->netchan.message, 0);		return;	}	valid = true;	if ( !allow_download->value		|| (strncmp(name, "players/", 8) == 0 && !allow_download_players->value)		|| (strncmp(name, "models/", 7) == 0 && !allow_download_models->value)		|| (strncmp(name, "sound/", 6) == 0 && !allow_download_sounds->value)		|| (strncmp(name, "maps/", 5) == 0 && !allow_download_maps->value)		|| (strncmp(name, "pics/", 5) == 0 && !allow_download_pics->value)		|| ( ((strncmp(name, "env/", 4) == 0 || strncmp(name, "textures/", 9) == 0)) && !allow_download_textures->value ) )		valid = false;	if (!valid)	{		MSG_WriteByte (&sv_client->netchan.message, svc_download);		MSG_WriteShort (&sv_client->netchan.message, -1);//.........这里部分代码省略.........
开发者ID:Kiln707,项目名称:KMQuake2,代码行数:101,


示例28: Log_log_f

static void Log_log_f(void) {	char *fulllogname;	FILE *templog;	void *buf;	switch (Cmd_Argc()) {	case 1:		if (autologging)			Com_Printf("Auto console logging is in progress/n");		else if (Log_IsLogging())			Com_Printf("Logging to %s/n", logfilename);		else			Com_Printf("Not logging/n");		return;	case 2:		if (!strcasecmp(Cmd_Argv(1), "stop")) {			if (autologging) {				Log_AutoLogging_StopMatch();			} else {				if (Log_IsLogging()) {					Log_Stop();					Com_Printf("Stopped logging to %s/n", logfilename);				} else {					Com_Printf("Not logging/n");				}			}			return;		}		if (autologging) {			Com_Printf("Auto console logging must be stopped first!/n");			return;		}		if (Log_IsLogging()) {			Log_Stop();			Com_Printf("Stopped logging to %s/n", logfilename);		}		strlcpy(logfilename, Cmd_Argv(1), sizeof(logfilename) - 4);		Util_Process_Filename(logfilename);		if (!Util_Is_Valid_Filename(logfilename)) {			Com_Printf(Util_Invalid_Filename_Msg("filename"));			return;		}		COM_ForceExtensionEx (logfilename, ".log", sizeof (logfilename));		fulllogname = va("%s/%s", Log_LogDirectory(), logfilename);		if (!(templog = fopen (fulllogname, log_readable.value ? "w" : "wb"))) {			FS_CreatePath(fulllogname);			if (!(templog = fopen (fulllogname, log_readable.value ? "w" : "wb"))) {				Com_Printf("Error: Couldn't open %s/n", logfilename);				return;			}		}		buf = Q_calloc(1, LOGFILEBUFFER);		if (!buf) {			Com_Printf("Not enough memory to allocate log buffer/n");			return;		}		memlogfile = FSMMAP_OpenVFS(buf, LOGFILEBUFFER);		Com_Printf("Logging to %s/n", logfilename);		logfile = templog;		break;	default:		Com_Printf("Usage: %s [filename | stop]/n", Cmd_Argv(0));		return;	}}
开发者ID:DeejStar,项目名称:ezquake-source,代码行数:68,



注:本文中的Cmd_Argc函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ Cmd_ArgsFrom函数代码示例
C++ Cmd_AddCommand函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。