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

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

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

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

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

示例1: CD_f

static voidCD_f (){	char *command;	int cdstate;	if ( Cmd_Argc() < 2 )	{		return;	}	command = Cmd_Argv( 1 );	if ( !Q_strcasecmp( command, "on" ) )	{		enabled = true;	}	if ( !Q_strcasecmp( command, "off" ) )	{		if ( !cd_id )		{			return;		}		cdstate = SDL_CDStatus( cd_id );		if ( ( cdstate == CD_PLAYING ) || ( cdstate == CD_PAUSED ) )		{			CDAudio_Stop();		}		enabled = false;		return;	}	if ( !Q_strcasecmp( command, "play" ) )	{		CDAudio_Play( (byte) atoi( Cmd_Argv( 2 ) ), false );		return;	}	if ( !Q_strcasecmp( command, "loop" ) )	{		CDAudio_Play( (byte) atoi( Cmd_Argv( 2 ) ), true );		return;	}	if ( !Q_strcasecmp( command, "stop" ) )	{		CDAudio_Stop();		return;	}	if ( !Q_strcasecmp( command, "pause" ) )	{		CDAudio_Pause();		return;	}	if ( !Q_strcasecmp( command, "resume" ) )	{		CDAudio_Resume();		return;	}	if ( !Q_strcasecmp( command, "eject" ) )	{		CDAudio_Eject();		return;	}	if ( !Q_strcasecmp( command, "info" ) )	{		if ( !cd_id )		{			return;		}		cdstate = SDL_CDStatus( cd_id );		Com_Printf( "%d tracks/n", cd_id->numtracks );		if ( cdstate == CD_PLAYING )		{			Com_Printf( "Currently %s track %d/n",					playLooping ? "looping" : "playing",					cd_id->cur_track + 1 );		}		else		if ( cdstate == CD_PAUSED )		{			Com_Printf( "Paused %s track %d/n",					playLooping ? "looping" : "playing",					cd_id->cur_track + 1 );		}		return;	}}
开发者ID:Nekrofage,项目名称:Quake2RPi,代码行数:99,


示例2: 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:d00man,项目名称:openarena-engine,代码行数:101,


示例3: Cmd_ArgvBuffer

/*============Cmd_ArgvBufferThe interpreted versions use this becausethey can't have pointers returned to them============*/void Cmd_ArgvBuffer( int arg, char *buffer, int bufferLength ){	Q_strncpyz( buffer, Cmd_Argv( arg ), bufferLength );}
开发者ID:JacksonTech,项目名称:Unvanquished,代码行数:12,


示例4: 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 = 0;	gamestate_t new_gs, old_gs;     // NERVE - SMF	// 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;	}	// ydnar: allow multiple delayed server restarts [atvi bug 3813]	//%	if ( sv.restartTime ) {	//%		return;	//%	}	if (Cmd_Argc() > 1)	{		delay = atoi(Cmd_Argv(1));	}	if (delay)	{		sv.restartTime = svs.time + delay * 1000;		SV_SetConfigstring(CS_WARMUP, va("%i", sv.restartTime));		return;	}	// NERVE - SMF - read in gamestate or just default to GS_PLAYING	old_gs = atoi(Cvar_VariableString("gamestate"));	if (SV_GameIsSinglePlayer() || SV_GameIsCoop())	{		new_gs = GS_PLAYING;	}	else	{		if (Cmd_Argc() > 2)		{			new_gs = atoi(Cmd_Argv(2));		}		else		{			new_gs = GS_PLAYING;		}	}	if (!SV_TransitionGameState(new_gs, old_gs, delay))	{		return;	}	// check for changes in variables that can't just be restarted	// check for maxclients change	if (sv_maxclients->modified)	{		char mapname[MAX_QPATH];		Com_Printf("sv_maxclients variable change -- restarting./n");		// restart the map the slow way		Q_strncpyz(mapname, Cvar_VariableString("mapname"), sizeof(mapname));		SV_SpawnServer(mapname, qfalse);		return;	}	// Check for loading a saved game	if (Cvar_VariableIntegerValue("savegame_loading"))	{		// open the current savegame, and find out what the time is, everything else we can ignore		char savemap[MAX_QPATH];		byte *buffer;		int  size, savegameTime;		char *cl_profileStr = Cvar_VariableString("cl_profile");		if (com_gameInfo.usesProfiles)		{			Com_sprintf(savemap, sizeof(savemap), "profiles/%s/save/current.sav", cl_profileStr);		}		else		{//.........这里部分代码省略.........
开发者ID:morsik,项目名称:war-territory,代码行数:101,


示例5: ParseMasterArgs

static void ParseMasterArgs(netadr_t *broadcast){    void *data;    ssize_t len;    void (*parse)(void *, size_t, size_t);    size_t chunk;    char *s, *p;    int i, argc;    Cmd_TokenizeString(m_servers.args, qfalse);    argc = Cmd_Argc();    if (!argc) {        // default action to take when no URLs are given        ParseAddressBook();        broadcast->type = NA_BROADCAST;        broadcast->port = BigShort(PORT_SERVER);        return;    }    for (i = 0; i < argc; i++) {        s = Cmd_Argv(i);        if (!*s)            continue;        // parse binary format specifier        parse = ParsePlain;        chunk = 0;        if (*s == '+' || *s == '-') {            parse = ParseBinary;            chunk = strtoul(s, &p, 10);            if (s == p) {                chunk = 6;                s = p + 1;            } else {                if (chunk < 6)                    goto ignore;                s = p;            }        }        if (!strncmp(s, "file://", 7)) {            len = FS_LoadFile(s + 7, &data);            if (len < 0)                continue;            (*parse)(data, len, chunk);            FS_FreeFile(data);            continue;        }        if (!strncmp(s, "http://", 7)) {#if USE_CURL            len = HTTP_FetchFile(s + 7, &data);            if (len < 0)                continue;            (*parse)(data, len, chunk);            Z_Free(data);#else            Com_Printf("Can't fetch '%s', no HTTP support compiled in./n", s);#endif            continue;        }        if (!strncmp(s, "favorites://", 12)) {            ParseAddressBook();            continue;        }        if (!strncmp(s, "broadcast://", 12)) {            broadcast->type = NA_BROADCAST;            broadcast->port = BigShort(PORT_SERVER);            continue;        }        if (!strncmp(s, "quake2://", 9)) {            AddServer(NULL, s + 9);            continue;        }ignore:        Com_Printf("Ignoring invalid master URL: %s/n", s);    }}
开发者ID:m4son,项目名称:q2pro,代码行数:83,


示例6: SV_DelBanFromList

static void SV_DelBanFromList(qboolean isexception){	int index, count = 0, todel, mask;	netadr_t ip;	char *banstring;		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:TwistTheNeil,项目名称:ioq3-urt-4.2-jump-server,代码行数:76,


示例7: string

/*----------------------------------------------------------------------------- Function: Cmd_Alias_f -Creates a new command that executes a command 						string (possibly ; seperated).  Parameters: Nothing.  Returns: Nothing.   Notes: -----------------------------------------------------------------------------*/PRIVATE void Cmd_Alias_f( void ){	cmdalias_t	*a;	char		cmd[ 1024 ];	int			i, c;	char		*s;	W32	hashid;	if( Cmd_Argc() == 1 )	{		Com_Printf( "Current alias commands:/n" );		for( a = cmd_alias ; a ; a = a->next )		{			Com_Printf( "%s : %s/n", a->name, a->value );		}		return;	}	s = Cmd_Argv( 1 );	if( strlen( s ) >= MAX_ALIAS_NAME )	{		Com_Printf( "Alias name is too long/n" );		return;	}	hashid = my_strhash( s );	// if the alias already exists, reuse it	for( a = cmd_alias ; a ; a = a->next )	{		if( hashid == a->id )		{			Z_Free( a->value );			break;		}	}	if( ! a )	{		a = Z_Malloc( sizeof( cmdalias_t ) );		a->next = cmd_alias;		cmd_alias = a;	}		my_strlcpy( a->name, s, sizeof( a->name ) );	a->id = hashid;// copy the rest of the command line	cmd[ 0 ] = '/0';	// start out with a NUL-terminated string	c = Cmd_Argc();	for( i = 2; i < c; ++i )	{		my_strlcat( cmd, Cmd_Argv( i ), sizeof( cmd ) );		if( i != (c - 1) )		{			my_strlcat( cmd, " ", sizeof( cmd ) );		}	}	my_strlcat( cmd, "/n", sizeof( cmd ) );		a->value = my_CopyString( cmd );}
开发者ID:feraligatr,项目名称:wolf2d,代码行数:74,


示例8: KeyUp

voidKeyUp(kbutton_t *b){	int k;	char *c;	unsigned uptime;	c = Cmd_Argv(1);	if (c[0])	{		k = (int)strtol(c, (char **)NULL, 10);	}	else	{		/* typed manually at the console, assume for unsticking, so clear all */		b->down[0] = b->down[1] = 0;		b->state = 4; /* impulse up */		return;	}	if (b->down[0] == k)	{		b->down[0] = 0;	}	else if (b->down[1] == k)	{		b->down[1] = 0;	}	else	{		return; /* key up without coresponding down (menu pass through) */	}	if (b->down[0] || b->down[1])	{		return; /* some other key is still holding it down */	}	if (!(b->state & 1))	{		return; /* still up (this should not happen) */	}	/* save timestamp */	c = Cmd_Argv(2);	uptime = (int)strtol(c, (char **)NULL, 10);	if (uptime)	{		b->msec += uptime - b->downtime;	}	else	{		b->msec += 10;	}	b->state &= ~1; /* now up */	b->state |= 4; /* impulse up */}
开发者ID:Samurai336,项目名称:yquake2,代码行数:64,


示例9: IN_Impulse

voidIN_Impulse(void){	in_impulse = (int)strtol(Cmd_Argv(1), (char **)NULL, 10);}
开发者ID:Samurai336,项目名称:yquake2,代码行数:5,


示例10: CL_PlayDemo_f

/*====================CL_PlayDemo_fplaydemo <demoname>====================*/void CL_PlayDemo_f( void ){	string	filename;	string	demoname;	int	i;	if( Cmd_Argc() != 2 )	{		Msg( "Usage: playdemo <demoname>/n" );		return;	}	if( cls.demoplayback )	{		CL_StopPlayback();	}	if( cls.demorecording )	{		Msg( "Can't playback during demo record./n");		return;	}	Q_strncpy( demoname, Cmd_Argv( 1 ), sizeof( demoname ) - 1 );	Q_snprintf( filename, sizeof( filename ), "demos/%s.dem", demoname );	if( !FS_FileExists( filename, true ))	{		MsgDev( D_ERROR, "couldn't open %s/n", filename );		cls.demonum = -1; // stop demo loop		return;	}	cls.demofile = FS_Open( filename, "rb", true );	Q_strncpy( cls.demoname, demoname, sizeof( cls.demoname ));	Q_strncpy( menu.globals->demoname, demoname, sizeof( menu.globals->demoname ));	// read in the m_DemoHeader	FS_Read( cls.demofile, &demo.header, sizeof( demoheader_t ));	if( demo.header.id != IDEMOHEADER )	{		MsgDev( D_ERROR, "%s is not a demo file/n", filename );		FS_Close( cls.demofile );		cls.demofile = NULL;		cls.demonum = -1; // stop demo loop		return;	}	if( demo.header.net_protocol != PROTOCOL_VERSION || demo.header.dem_protocol != DEMO_PROTOCOL )	{		MsgDev( D_ERROR, "demo protocol outdated/n"			"Demo file protocols Network(%i), Demo(%i)/n"			"Server protocol is at Network(%i), Demo(%i)/n",			demo.header.net_protocol, 			demo.header.dem_protocol,			PROTOCOL_VERSION,			DEMO_PROTOCOL		);		FS_Close( cls.demofile );		cls.demofile = NULL;		cls.demonum = -1; // stop demo loop		return;	}	// now read in the directory structure.	FS_Seek( cls.demofile, demo.header.directory_offset, SEEK_SET );	FS_Read( cls.demofile, &demo.directory.numentries, sizeof( int ));	if( demo.directory.numentries < 1 || demo.directory.numentries > 1024 )	{		MsgDev( D_ERROR, "demo had bogus # of directory entries: %i/n", demo.directory.numentries );		FS_Close( cls.demofile );		cls.demofile = NULL;		cls.demonum = -1; // stop demo loop		cls.changedemo = false;		return;	}	if( cls.changedemo )	{		S_StopAllSounds();		SCR_BeginLoadingPlaque( false );		CL_ClearState ();		CL_InitEdicts (); // re-arrange edicts	}	else	{		// NOTE: at this point demo is still valid		CL_Disconnect();		Host_ShutdownServer();//.........这里部分代码省略.........
开发者ID:Reedych,项目名称:xash3d,代码行数:101,


示例11: CL_Record_f

/*====================CL_Record_frecord <demoname>Begins recording a demo from the current position====================*/void CL_Record_f( void ){	const char	*name;	string		demoname, demopath, demoshot;	int		n;	if( Cmd_Argc() == 1 )	{		name = "new";	}	else if( Cmd_Argc() == 2 )	{		name = Cmd_Argv( 1 );	}	else	{		Msg( "Usage: record <demoname>/n" );		return;	}	if( cls.demorecording )	{		Msg( "Already recording./n");		return;	}	if( cls.demoplayback )	{		Msg( "Can't record during demo playback./n");		return;	}	if( !cls.demoheader || cls.state != ca_active )	{		Msg( "You must be in a level to record./n");		return;	}	if( !Q_stricmp( name, "new" ))	{		// scan for a free filename		for( n = 0; n < 10000; n++ )		{			CL_DemoGetName( n, demoname );			if( !FS_FileExists( va( "demos/%s.dem", demoname ), true ))				break;		}		if( n == 10000 )		{			Msg( "^3ERROR: no free slots for demo recording/n" );			return;		}	}	else Q_strncpy( demoname, name, sizeof( demoname ));	// open the demo file	Q_sprintf( demopath, "demos/%s.dem", demoname );	Q_sprintf( demoshot, "demos/%s.bmp", demoname );	// make sure what old demo is removed	if( FS_FileExists( demopath, false )) FS_Delete( demopath );	if( FS_FileExists( demoshot, false )) FS_Delete( demoshot );	// write demoshot for preview	Cbuf_AddText( va( "demoshot /"%s/"/n", demoname ));	Q_strncpy( cls.demoname, demoname, sizeof( cls.demoname ));	Q_strncpy( menu.globals->demoname, demoname, sizeof( menu.globals->demoname ));		CL_WriteDemoHeader( demopath );}
开发者ID:Reedych,项目名称:xash3d,代码行数:79,


示例12: SVC_DirectConnect

/*==================SVC_DirectConnectA connection request that did not come from the master==================*/void SVC_DirectConnect (void){    char		userinfo[MAX_INFO_STRING];    netadr_t	adr;    int32_t			i;    client_t	*cl, *newcl;    client_t	temp;    edict_t		*ent;    int32_t			edictnum;    int32_t			version;    int32_t			qport;    int32_t			challenge;    int32_t			previousclients;	// rich: connection limit per IP    adr = net_from;    Com_DPrintf ("SVC_DirectConnect ()/n");    version = atoi(Cmd_Argv(1));    if (version != PROTOCOL_VERSION)    {        Netchan_OutOfBandPrint (NS_SERVER, adr, "print/nServer is version %4.2f./n", VERSION);        Com_DPrintf ("    rejected connect from version %i/n", version);        return;    }    qport = atoi(Cmd_Argv(2));    challenge = atoi(Cmd_Argv(3));    // r1ch: limit connections from a single IP    previousclients = 0;    for (i=0,cl=svs.clients; i<(int32_t)maxclients->value; i++,cl++)    {        if (cl->state == cs_free)            continue;        if (NET_CompareBaseAdr (adr, cl->netchan.remote_address))        {            // r1ch: zombies are less dangerous            if (cl->state == cs_zombie)                previousclients++;            else                previousclients += 2;        }    }    if (previousclients >= (int32_t)sv_iplimit->value * 2)    {        Netchan_OutOfBandPrint (NS_SERVER, adr, "print/nToo many connections from your host./n");        Com_DPrintf ("    too many connections/n");        return;    }    // end r1ch fix    strncpy (userinfo, Cmd_Argv(4), sizeof(userinfo)-1);    userinfo[sizeof(userinfo) - 1] = 0;    // force the IP key/value pair so the game can filter based on ip    Info_SetValueForKey (userinfo, "ip", NET_AdrToString(net_from));    // attractloop servers are ONLY for local clients    if (sv.attractloop)    {        if (!NET_IsLocalAddress (adr))        {            Com_Printf ("Remote connect in attract loop.  Ignored./n");            Netchan_OutOfBandPrint (NS_SERVER, adr, "print/nConnection refused./n");            return;        }    }    // see if the challenge is valid    if (!NET_IsLocalAddress (adr))    {        for (i=0 ; i<MAX_CHALLENGES ; i++)        {            if (NET_CompareBaseAdr (net_from, svs.challenges[i].adr))            {                if (challenge == svs.challenges[i].challenge)                    break;		// good                Netchan_OutOfBandPrint (NS_SERVER, adr, "print/nBad challenge./n");                return;            }        }        if (i == MAX_CHALLENGES)        {            Netchan_OutOfBandPrint (NS_SERVER, adr, "print/nNo challenge for address./n");            return;        }    }    newcl = &temp;    memset (newcl, 0, sizeof(client_t));//.........这里部分代码省略.........
开发者ID:postfix,项目名称:quake2vr,代码行数:101,


示例13: CL_Say_f

void CL_Say_f (void){	char output[8192];	char string[256];	char *msg;	int c;	output[0] = '/0';	if (cls.state == ca_disconnected || cls.demoplayback)	{#ifndef CLIENT_ONLY		if (sv.state)			SV_ConSay_f();		else#endif			Con_TPrintf ("Can't /"%s/", not connected/n", Cmd_Argv(0));		return;	}	if (!strcmp("sayone", Cmd_Argv(0)))	{		if (strcmp(Info_ValueForKey(cl.serverinfo, "*distrib"), DISTRIBUTION) || atoi(Info_ValueForKey(cl.serverinfo, "*ver")) < PRE_SAYONE)		{			Con_Printf ("%s is only available with server support/n", Cmd_Argv(0));			return;		}	}	Q_strncpyz(output, Cmd_Argv(0), sizeof(string));	for (msg = output; *msg; msg++)		if (*msg >= 'A' && *msg <= 'Z')			*msg = *msg - 'A' + 'a';	msg = Cmd_Args();	if (Cmd_Argc() > 1)	{		Q_strncatz(output, " /"", sizeof(output));		while(*msg)		{			c = *msg;			if (c == '%')			{				char *message = NULL;				msg++;				if (message == NULL)				switch(*msg)				{				case 'n':					Q_strncatz(output, name.string, sizeof(output));					msg++;					continue;				case 'h':					Q_strncatz(output, va("%i", cl.stats[0][STAT_HEALTH]), sizeof(output));					msg++;					continue;				case 'a':					Q_strncatz(output, va("%i", cl.stats[0][STAT_ARMOR]), sizeof(output));					msg++;					continue;				case 'A':					Q_strncatz(output, TP_ArmourType(), sizeof(output));					msg++;					continue;				case 'l':					Q_strncatz(output, CL_LocationName(cl.simorg[0]), sizeof(output));					msg++;					continue;				case 'S':					Q_strncatz(output, TP_ClassForTFSkin(), sizeof(output));					msg++;					continue;				case '%':					c  = '%';					break;				default:					c  = '%';					msg--;					break;				}			}			else if (c == '$')			{				msg++;				switch(*msg)				{				case '//': c = 0x0D; break;				case ':': c = 0x0A; break;				case '[': c = 0x10; break;				case ']': c = 0x11; break;				case 'G': c = 0x86; break;				case 'R': c = 0x87; break;				case 'Y': c = 0x88; break;				case 'B': c = 0x89; break;				case '(': c = 0x80; break;				case '=': c = 0x81; break;				case ')': c = 0x82; break;				case 'a': c = 0x83; break;//.........这里部分代码省略.........
开发者ID:ProfessorKaos64,项目名称:ftequake,代码行数:101,


示例14: Cmd_CvarList_f

/* <18d23> ../engine/cvar.c:671 */void Cmd_CvarList_f(void){	cvar_t *var;	int iCvars;	int iArgs;	const char *partial, *arg1;	int ipLen;	qboolean bAOnly;	qboolean bSOnly;	char szTemp[MAX_PATH];	FileHandle_t f;	FileHandle_t fp;	qboolean bLogging;	iCvars = 0;	partial = NULL;	bAOnly = FALSE;	bSOnly = FALSE;	f = NULL;	fp = NULL;	bLogging = FALSE;	iArgs = Cmd_Argc();	if (iArgs > 1)	{		arg1 = Cmd_Argv(1);		if (!Q_stricmp(arg1, "?"))		{			Con_Printf("CvarList           : List all cvars/nCvarList [Partial] : List cvars starting with 'Partial'/nCvarList log [Partial] : Logs cvars to file /"cvarlist.txt/" in the gamedir./n");			return;		}		if (!Q_stricmp(arg1, "log"))		{			// Open log			int i;			for (i = 0; i < 100; i++)			{				Q_snprintf(szTemp, ARRAYSIZE(szTemp) - 1, "cvarlist%02d.txt", i);				szTemp[ARRAYSIZE(szTemp) - 1] = 0;				fp = FS_Open(szTemp, "r");				if (!fp)				{					break;				}				FS_Close(fp);			}			if (i >= 100)			{				Con_Printf("Can't cvarlist! Too many existing cvarlist output files in the gamedir!/n");				return;			}			f = FS_Open(szTemp, "wt");			if (!f)			{				Con_Printf("Couldn't open /"%s/" for writing!/n", szTemp);				return;			}			bLogging = TRUE;			// Get next argument into partial, if present			if (iArgs > 2)			{				partial = Cmd_Argv(2);				ipLen = Q_strlen(partial);			}		}		else if (!Q_stricmp(arg1, "-a"))		{			bAOnly = TRUE;		}		else if (!Q_stricmp(arg1, "-s"))		{			bSOnly = TRUE;		}		else		{			partial = arg1;			ipLen = Q_strlen(partial);		}	}	// Print cvars	Con_Printf("CVar List/n--------------/n");	for (var = cvar_vars; var; var = var->next)	{		if (bAOnly && !(var->flags & FCVAR_ARCHIVE))		{			continue;		}		if (bSOnly && !(var->flags & FCVAR_SERVER))		{			continue;		}//.........这里部分代码省略.........
开发者ID:Adidasman1,项目名称:rehlds,代码行数:101,


示例15: 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 && !Cvar_VariableValue("g_doWarmup") ) {		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 );		return;	}	// 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 ) );	// 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_RestartGameProgs();	// run a few frames to allow everything to settle	for (i = 0; i < 3; i++)	{		VM_Call (gvm, GAME_RUN_FRAME, 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];		// send the new gamestate to all connected clients		if ( client->state < CS_CONNECTED) {			continue;		}//.........这里部分代码省略.........
开发者ID:TwistTheNeil,项目名称:ioq3-urt-4.2-jump-server,代码行数:101,


示例16: 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++)	{		// Dont show internal cvars		if ( var->flags & CVAR_INTERNAL )		{			continue;		}		if (match && !Com_Filter(match, var->name, qfalse)) continue;		if (var->flags & CVAR_SERVERINFO) {			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(" ");		}		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:vvvjk2,项目名称:jk2mv,代码行数:69,


示例17: SV_AddBanToList

static void SV_AddBanToList(qboolean isexception){	char *banstring;	char addy2[NET_ADDRSTRMAXLEN];	netadr_t ip;	int index, argc, mask;	serverBan_t *curban;		argc = Cmd_Argc();		if(argc < 2 || argc > 3)	{		Com_Printf ("Usage: %s (ip[/subnet] | clientnum [subnet])/n", Cmd_Argv(0));		return;	}	if(serverBansCount > 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.		if(!com_sv_running->integer)		{			Com_Printf("Server is not running./n");			return;		}				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			{				if(mask < 1 || mask > 128)					mask = 128;			}		}		else			mask = (ip.type == NA_IP6) ? 128 : 32;	}	if(ip.type != NA_IP && ip.type != NA_IP6)	{		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))//.........这里部分代码省略.........
开发者ID:TwistTheNeil,项目名称:ioq3-urt-4.2-jump-server,代码行数:101,


示例18: CD_f

static void CD_f (void){	char	*command;	int		ret;	int		n;	if (Cmd_Argc() < 2)		return;	command = Cmd_Argv (1);	if (Q_strcasecmp(command, "on") == 0)	{		enabled = true;		return;	}	if (Q_strcasecmp(command, "off") == 0)	{		if (playing)			CDAudio_Stop();		enabled = false;		return;	}	if (Q_strcasecmp(command, "reset") == 0)	{		enabled = true;		if (playing)			CDAudio_Stop();		for (n = 0; n < 100; n++)			remap[n] = n;		CDAudio_GetAudioDiskInfo();		return;	}	if (Q_strcasecmp(command, "remap") == 0)	{		ret = Cmd_Argc() - 2;		if (ret <= 0)		{			for (n = 1; n < 100; n++)				if (remap[n] != n)					Com_Printf("  %u -> %u/n", n, remap[n]);			return;		}		for (n = 1; n <= ret; n++)			remap[n] = atoi(Cmd_Argv (n+1));		return;	}	if (Q_strcasecmp(command, "close") == 0)	{		CDAudio_CloseDoor();		return;	}	if (!cdValid)	{		CDAudio_GetAudioDiskInfo();		if (!cdValid)		{			Com_Printf("No CD in player./n");			return;		}	}	if (Q_strcasecmp(command, "play") == 0)	{		CDAudio_Play((byte)atoi(Cmd_Argv (2)), false);		return;	}	if (Q_strcasecmp(command, "loop") == 0)	{		CDAudio_Play((byte)atoi(Cmd_Argv (2)), true);		return;	}	if (Q_strcasecmp(command, "stop") == 0)	{		CDAudio_Stop();		return;	}	if (Q_strcasecmp(command, "pause") == 0)	{		CDAudio_Pause();		return;	}	if (Q_strcasecmp(command, "resume") == 0)	{		CDAudio_Resume();		return;	}	if (Q_strcasecmp(command, "eject") == 0)	{		if (playing)//.........这里部分代码省略.........
开发者ID:Izhido,项目名称:qrevpak,代码行数:101,


示例19: SV_Map_f

/*==================SV_Map_fRestart the server on a different map==================*/static void SV_Map_f(void){	char     *cmd;	char     *map;	char     smapname[MAX_QPATH];	char     mapname[MAX_QPATH];	qboolean killBots, cheat, buildScript;	char     expanded[MAX_QPATH];	int      savegameTime   = -1;	char     *cl_profileStr = Cvar_VariableString("cl_profile");	map = Cmd_Argv(1);	if (!map)	{		return;	}	if (!com_gameInfo.spEnabled)	{		if (!Q_stricmp(Cmd_Argv(0), "spdevmap") || !Q_stricmp(Cmd_Argv(0), "spmap"))		{			Com_Printf("Single Player is not enabled./n");			return;		}	}	buildScript = Cvar_VariableIntegerValue("com_buildScript");	if (SV_GameIsSinglePlayer())	{		if (!buildScript && sv_reloading->integer && sv_reloading->integer != RELOAD_NEXTMAP)     // game is in 'reload' mode, don't allow starting new maps yet.		{			return;		}		// Trap a savegame load		if (strstr(map, ".sav"))		{			// open the savegame, read the mapname, and copy it to the map string			char savemap[MAX_QPATH];			char savedir[MAX_QPATH];			byte *buffer;			int  size, csize;			if (com_gameInfo.usesProfiles && cl_profileStr[0])			{				Com_sprintf(savedir, sizeof(savedir), "profiles/%s/save/", cl_profileStr);			}			else			{				Q_strncpyz(savedir, "save/", sizeof(savedir));			}			if (!(strstr(map, savedir) == map))			{				Com_sprintf(savemap, sizeof(savemap), "%s%s", savedir, map);			}			else			{				strcpy(savemap, map);			}			size = FS_ReadFile(savemap, NULL);			if (size < 0)			{				Com_Printf("Can't find savegame %s/n", savemap);				return;			}			//buffer = Hunk_AllocateTempMemory(size);			FS_ReadFile(savemap, (void **)&buffer);			if (Q_stricmp(savemap, va("%scurrent.sav", savedir)) != 0)			{				// copy it to the current savegame file				FS_WriteFile(va("%scurrent.sav", savedir), buffer, size);				// make sure it is the correct size				csize = FS_ReadFile(va("%scurrent.sav", savedir), NULL);				if (csize != size)				{					Hunk_FreeTempMemory(buffer);					FS_Delete(va("%scurrent.sav", savedir));// TTimo#ifdef __linux__					Com_Error(ERR_DROP, "Unable to save game./n/nPlease check that you have at least 5mb free of disk space in your home directory.");#else					Com_Error(ERR_DROP, "Insufficient free disk space./n/nPlease free at least 5mb of free space on game drive.");#endif					return;				}			}			// set the cvar, so the game knows it needs to load the savegame once the clients have connected//.........这里部分代码省略.........
开发者ID:morsik,项目名称:war-territory,代码行数:101,


示例20: IN_IsLastArgKeyCode

// Checks if we have a keycode at the end, e.g. +fire 8 5 3 120// if it's >= 32, treat is as keycodes, otherwise an impulsestatic qbool IN_IsLastArgKeyCode(void){	return atoi(Cmd_Argv(Cmd_Argc() - 1)) >= 32;}
开发者ID:eb,项目名称:ezquake-source,代码行数:6,


示例21: SV_LoadGame_f

/*=================SV_LoadGame_f=================*/void    SV_LoadGame_f(void){	char filename[MAX_QPATH], mapname[MAX_QPATH], savedir[MAX_QPATH];	byte *buffer;	int  size;	char *cl_profileStr = Cvar_VariableString("cl_profile");	// dont allow command if another loadgame is pending	if (Cvar_VariableIntegerValue("savegame_loading"))	{		return;	}	if (sv_reloading->integer)	{		// (SA) disabling//	if(sv_reloading->integer && sv_reloading->integer != RELOAD_FAILED )	// game is in 'reload' mode, don't allow starting new maps yet.		return;	}	Q_strncpyz(filename, Cmd_Argv(1), sizeof(filename));	if (!filename[0])	{		Com_Printf("You must specify a savegame to load/n");		return;	}	if (com_gameInfo.usesProfiles && cl_profileStr[0])	{		Com_sprintf(savedir, sizeof(savedir), "profiles/%s/save/", cl_profileStr);	}	else	{		Q_strncpyz(savedir, "save/", sizeof(savedir));	}	/*if ( Q_strncmp( filename, "save/", 5 ) && Q_strncmp( filename, "save//", 5 ) ) {	    Q_strncpyz( filename, va("save/%s", filename), sizeof( filename ) );	}*/	// go through a va to avoid vsnprintf call with same source and target	Q_strncpyz(filename, va("%s%s", savedir, filename), sizeof(filename));	// enforce .sav extension	if (!strstr(filename, ".") || Q_strncmp(strstr(filename, ".") + 1, "sav", 3))	{		Q_strcat(filename, sizeof(filename), ".sav");	}	// use '/' instead of '//' for directories	while (strstr(filename, "//"))	{		*(char *)strstr(filename, "//") = '/';	}	size = FS_ReadFile(filename, NULL);	if (size < 0)	{		Com_Printf("Can't find savegame %s/n", filename);		return;	}	//buffer = Hunk_AllocateTempMemory(size);	FS_ReadFile(filename, (void **)&buffer);	// read the mapname, if it is the same as the current map, then do a fast load	Com_sprintf(mapname, sizeof(mapname), (const char *)(buffer + sizeof(int)));	if (com_sv_running->integer && (com_frameTime != sv.serverId))	{		// check mapname		if (!Q_stricmp(mapname, sv_mapname->string))          // same		{			if (Q_stricmp(filename, va("%scurrent.sav", savedir)) != 0)			{				// copy it to the current savegame file				FS_WriteFile(va("%scurrent.sav", savedir), buffer, size);			}			Hunk_FreeTempMemory(buffer);			Cvar_Set("savegame_loading", "2");    // 2 means it's a restart, so stop rendering until we are loaded			// set the filename			Cvar_Set("savegame_filename", filename);			// quick-restart the server			SV_MapRestart_f();  // savegame will be loaded after restart			return;		}	}	Hunk_FreeTempMemory(buffer);	// otherwise, do a slow load	if (Cvar_VariableIntegerValue("sv_cheats"))	{		Cbuf_ExecuteText(EXEC_APPEND, va("spdevmap %s", filename));//.........这里部分代码省略.........
开发者ID:morsik,项目名称:war-territory,代码行数:101,


示例22: IN_Weapon

// This is the same command as impulse but cl_weaponpreselect can be used in here, while for impulses cannot be used.void IN_Weapon(void){	int c, best, mode;	if ((c = Cmd_Argc() - 1) < 1) {		Com_Printf("Usage: %s w1 [w2 [w3..]]/nWill pre-select best available weapon from given sequence./n", Cmd_Argv(0));		return;	}	// read user input	IN_RememberWpOrder();	best = IN_BestWeapon();	mode = (int) cl_weaponpreselect.value;	// cl_weaponpreselect behaviour:	// 0: select best weapon right now	// 1: always only pre-select; switch to it on +attack	// 2: user is holding +attack -> select, otherwise just pre-select	// 3: same like 1, but only in deathmatch 1	// 4: same like 2, but only in deathmatch 1	if (mode == 3) {		mode = (cl.deathmatch == 1) ? 1 : 0;	}	else if (mode == 4) {		mode = (cl.deathmatch == 1) ? 2 : 0;	}	switch (mode)	{		case 2:			if ((in_attack.state & 3) && best) // user is holding +attack and there is some weapon available				in_impulse = best;			break;		case 1: break;	// don't select weapon immediately		default: case 0:	// no pre-selection			if (best)				in_impulse = best;			break;	}}
开发者ID:eb,项目名称:ezquake-source,代码行数:43,


示例23: Master_SetMaster_f

void Master_SetMaster_f() {   int AreAdding;   const char * arg_1, * arg_2;   int port;   netadr_t netaddress;   master_server_t * ptr, * ptr2;   if(Cmd_Argc() < 2 || Cmd_Argc() > 4) {      Con_Printf("Setmaster <add | remove | enable | disable> <IP:port>/n");      Con_Printf(" Current master list:/n");      for(ptr = masterlist; ptr != NULL; ptr = ptr->next) {         Con_Printf("  %s/n", NET_AdrToString(ptr->address));      }      Con_Printf(" End if list/n");      return;   }   arg_1 = Cmd_Argv(1);   if(arg_1[0] == '/0') { return; }   if(Q_strcasecmp(arg_1, "disable") == 0) { gfNoMasterServer = 1; return; }   if(Q_strcasecmp(arg_1, "enable") == 0) { gfNoMasterServer = 0; return; }   if(Q_strcasecmp(arg_1, "add") == 0) { AreAdding = 1; }   else if(Q_strcasecmp(arg_1, "remove") == 0) { AreAdding = 0; }   else {      Con_Printf("Setmaster:  Unknown command /"%s/"./n", arg_1);      return;   }   arg_2 = Cmd_Argv(2);   if(Cmd_Argc() == 4) {      port = Q_atoi(Cmd_Argv(3));      if(port < 1 || port > 65535) {         Con_Printf("Setmaster: Invalid port.  Ports can't be larger than 65535./n");         return;      }   }   else {      port = 27010;   }   if(NET_StringToAdr(arg_2, &netaddress) == 0) {      Con_Printf("Setmaster: Passed address could not be processed by StringToAdr./n");      return;   }   netaddress.port = port;   if(AreAdding) {      Master_Init();      Master_AddServer(&netaddress);      gfNoMasterServer = 0;      Con_Printf("Master server %s:%u added./n", arg_2, port);   }   else {      //case 1: first node.      if(NET_CompareAdr(masterlist->address, netaddress) != 0) {         ptr = masterlist;         masterlist = masterlist->next;         Q_Free(ptr);         return;      }      //case 2: some node afterwards      for(ptr = masterlist; ptr->next != NULL; ptr = ptr->next) {         if(NET_CompareAdr(ptr->next->address, netaddress) != 0) {            ptr2 = ptr->next;            ptr->next = ptr->next->next;            Q_Free(ptr2);            return;         }      }      //case 3: not here      Con_Printf("Master %s:%u couldn't be removed.  Couldn't find it./n", arg_2, port);   }}
开发者ID:SOLARIC,项目名称:world-opponent-network,代码行数:86,


示例24: SV_Argc_to_idnum

/*==================SV_PP_Cmd_Argc_to_idnum@Barbatos: wow this one looks horrible, FIXME!==================*/int SV_Argc_to_idnum( int arg_num ) {	client_t	*cl;	int			idnum;	int			i, k, f, g;	int			len, nlen, slen;	int			count;	char		*search;	char		*name;	// make sure server is running	if ( !com_sv_running->integer ) {		return -1;	}	if ( Cmd_Argc() < 1 ) {		Com_Printf( "No player specified./n" );		return -1;	}	search = Cmd_Argv( arg_num );	if(strlen( search ) < 3 )	{		for (i = 0; search[i]; i++) {			if (search[i] < '0' || search[i] > '9') {				Com_Printf( "Bad slot number: /"%s/"./n", search);				return -1;			}		}		idnum = atoi( search );		if ( idnum < 0 || idnum >= sv_maxclients->integer ) {			Com_Printf( "Bad client slot: %i./n", idnum );			return -1;		}		cl = &svs.clients[idnum];		if ( !cl->state ) {			Com_Printf( "Client %i is not active./n", idnum );			return -1;		}		return idnum;	}	else	{		f = 0; g = 0;		count = 0;		idnum = -1;		slen = strlen(search);		for (i=0,cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++) {			if ( cl->state >= CS_CONNECTED ) {				name = cl->name;				nlen = strlen(name);				len = nlen - slen;				if(len>=0) {					for (k=0; k<=len; k++, name++) {						if( toupper(name[0])==toupper(search[0]) ) {							for (g=1,f=1; search[f] && name[g]; g++) {								if( Q_IsColorString( &name[g] ) ) {									g++;								} else {									if( toupper(name[g])!=toupper(search[f]) ) break;									f++;								}							}							if (f==slen) { 								count++; 								idnum = i; 								break; 							}						}					}				}			}		}		if( count == 1 ) { 			return idnum;		}		if( count > 0 ) { 			Com_Printf( "Too many players found for /"%s/"./n", search );			return -1;		}		if( count == 0 ) { 			Com_Printf( "No player found for /"%s/"./n", search );			return -1;		}	}	return -1;}
开发者ID:TwistTheNeil,项目名称:ioq3-urt-4.2-jump-server,代码行数:96,


示例25: R_ScreenShot

/** * Take a screenshot of the frame buffer * @param[in] x * @param[in] y * @param[in] width * @param[in] height * @param[in] filename Force to use a filename. Else NULL to autogen a filename * @param[in] ext Force to use an image format (tga/png/jpg). Else NULL to use value of r_screenshot_format */void R_ScreenShot (int x, int y, int width, int height, const char *filename, const char *ext){	char	checkName[MAX_OSPATH];	int		type, shotNum, quality = 100;	byte	*buffer;	qFILE	f;	int rowPack;	glGetIntegerv(GL_PACK_ALIGNMENT, &rowPack);	glPixelStorei(GL_PACK_ALIGNMENT, 1);	/* Find out what format to save in */	if (ext == NULL)		ext = r_screenshot_format->string;	if (!Q_strcasecmp(ext, "png"))		type = SSHOTTYPE_PNG;	else if (!Q_strcasecmp(ext, "jpg"))		type = SSHOTTYPE_JPG;	else		type = SSHOTTYPE_TGA_COMP;	/* Set necessary values */	switch (type) {	case SSHOTTYPE_TGA_COMP:		Com_Printf("Taking TGA screenshot.../n");		ext = "tga";		break;	case SSHOTTYPE_PNG:		Com_Printf("Taking PNG screenshot.../n");		ext = "png";		break;	case SSHOTTYPE_JPG:		if (Cmd_Argc() == 3)			quality = atoi(Cmd_Argv(2));		else			quality = r_screenshot_jpeg_quality->integer;		if (quality > 100 || quality <= 0)			quality = 100;		Com_Printf("Taking JPG screenshot (at %i%% quality).../n", quality);		ext = "jpg";		break;	}	/* Find a file name to save it to */	if (filename) {		Com_sprintf(checkName, sizeof(checkName), "scrnshot/%s.%s", filename, ext);	} else {		for (shotNum = 0; shotNum < 1000; shotNum++) {			Com_sprintf(checkName, sizeof(checkName), "scrnshot/ufo%i%i.%s", shotNum / 10, shotNum % 10, ext);			if (FS_CheckFile("%s", checkName) == -1)				break;		}		if (shotNum == 1000) {			Com_Printf("R_ScreenShot_f: screenshot limit (of 1000) exceeded!/n");			return;		}	}	/* Open it */	FS_OpenFile(checkName, &f, FILE_WRITE);	if (!f.f) {		Com_Printf("R_ScreenShot_f: Couldn't create file: %s/n", checkName);		return;	}	/* Allocate room for a copy of the framebuffer */	buffer = (byte *)Mem_PoolAlloc(width * height * 3, vid_imagePool, 0);	if (!buffer) {		Com_Printf("R_ScreenShot_f: Could not allocate %i bytes for screenshot!/n", width * height * 3);		FS_CloseFile(&f);		return;	}	/* Read the framebuffer into our storage */	glReadPixels(x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer);	R_CheckError();	/* Write */	switch (type) {	case SSHOTTYPE_TGA_COMP:		R_WriteCompressedTGA(&f, buffer, width, height);		break;	case SSHOTTYPE_PNG:		R_WritePNG(&f, buffer, width, height);		break;//.........这里部分代码省略.........
开发者ID:chrisglass,项目名称:ufoai,代码行数:101,


示例26: SV_Map_f

/*==================SV_Map_fRestart the server on a different map==================*/static void SV_Map_f( void ) {	char		*cmd;	char		*map;	qboolean	killBots, cheat;	char		expanded[MAX_QPATH];	char		mapname[MAX_QPATH];	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;	}	// force latched values to get set	Cvar_Get ("g_gametype", "0", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH );	cmd = Cmd_Argv(0);	if( Q_stricmpn( cmd, "sp", 2 ) == 0 ) {		Cvar_SetValue( "g_gametype", GT_SINGLE_PLAYER );		Cvar_SetValue( "g_doWarmup", 0 );		// may not set sv_maxclients directly, always set latched		Cvar_SetLatched( "sv_maxclients", "8" );		cmd += 2;		if (!Q_stricmp( cmd, "devmap" ) ) {			cheat = qtrue;		} else {			cheat = qfalse;		}		killBots = qtrue;	}	else {		if ( !Q_stricmp( cmd, "devmap" ) ) {			cheat = qtrue;			killBots = qtrue;		} else {			cheat = qfalse;			killBots = qfalse;		}		if( sv_gametype->integer == GT_SINGLE_PLAYER ) {			Cvar_SetValue( "g_gametype", GT_FFA );		}	}	// 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, killBots );	// 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	if ( cheat ) {		Cvar_Set( "sv_cheats", "1" );	} else {		Cvar_Set( "sv_cheats", "0" );	}}
开发者ID:TwistTheNeil,项目名称:ioq3-urt-4.2-jump-server,代码行数:74,


示例27: TP_MsgTrigger_f

void TP_MsgTrigger_f (void){	int c;	char *name;	msg_trigger_t *trig; 	c = Cmd_Argc(); 	if (c > 5) {		Com_Printf ("msg_trigger <trigger name> /"string/" [-l <level>]/n");		return;	} 	if (c == 1) {		if (!msg_triggers)			Com_Printf ("no triggers defined/n");		else			for (trig=msg_triggers; trig; trig=trig->next)				Com_Printf ("%s : /"%s/"/n", trig->name, trig->string);		return;	} 	name = Cmd_Argv(1);	if (strlen(name) > 31) {		Com_Printf ("trigger name too long/n");		return;	} 	if (c == 2) {		trig = TP_FindTrigger (name);		if (trig)			Com_Printf ("%s: /"%s/"/n", trig->name, trig->string);		else			Com_Printf ("trigger /"%s/" not found/n", name);		return;	} 	if (c >= 3) {		if (strlen(Cmd_Argv(2)) > 63) {			Com_Printf ("trigger string too long/n");			return;		} 		if (!(trig = TP_FindTrigger (name))) {			// allocate new trigger			trig = (msg_trigger_t *) Q_malloc(sizeof(msg_trigger_t));			trig->next = msg_triggers;			msg_triggers = trig;			strlcpy (trig->name, name, sizeof (trig->name));			trig->level = PRINT_HIGH;		} 		strlcpy (trig->string, Cmd_Argv(2), sizeof(trig->string));		if (c == 5 && !strcasecmp (Cmd_Argv(3), "-l")) {			if (!strcmp(Cmd_Argv(4), "t")) {				trig->level = 4;			} else {				trig->level = Q_atoi (Cmd_Argv(4));				if ((unsigned) trig->level > PRINT_CHAT)					trig->level = PRINT_HIGH;			}		}	}}
开发者ID:DavidWiberg,项目名称:ezquake-source,代码行数:64,


示例28: SVC_Info

/*================SVC_InfoResponds with a short info message that should be enough to determineif a user is interested in a server to do a full status================*/void SVC_Info( netadr_t from ) {	int		i, count;	char	*gamedir;	char	infostring[MAX_INFO_STRING];	// ignore if we are in single player	if ( Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER || Cvar_VariableValue("ui_singlePlayerActive")) {		return;	}	/*	 * Check whether Cmd_Argv(1) has a sane length. This was not done in the original Quake3 version which led	 * to the Infostring bug discovered by Luigi Auriemma. See http://aluigi.altervista.org/ for the advisory.	 */	// A maximum challenge length of 128 should be more than plenty.	if(strlen(Cmd_Argv(1)) > 128)		return;	// don't count privateclients	count = 0;	for ( i = sv_privateClients->integer ; i < sv_maxclients->integer ; i++ ) {		if ( svs.clients[i].state >= CS_CONNECTED ) {			count++;		}	}	infostring[0] = 0;	// echo back the parameter to status. so servers can use it as a challenge	// to prevent timed spoofed reply packets that add ghost servers	Info_SetValueForKey( infostring, "challenge", Cmd_Argv(1) );	Info_SetValueForKey( infostring, "protocol", va("%i", PROTOCOL_VERSION) );	Info_SetValueForKey( infostring, "hostname", sv_hostname->string );	Info_SetValueForKey( infostring, "mapname", sv_mapname->string );	Info_SetValueForKey( infostring, "clients", va("%i", count) );	Info_SetValueForKey( infostring, "sv_maxclients", 		va("%i", sv_maxclients->integer - sv_privateClients->integer ) );	Info_SetValueForKey( infostring, "gametype", va("%i", sv_gametype->integer ) );	Info_SetValueForKey( infostring, "pure", va("%i", sv_pure->integer ) );#ifdef USE_VOIP	if (sv_voip->integer) {		Info_SetValueForKey( infostring, "voip", va("%i", sv_voip->integer ) );	}#endif	if( sv_minPing->integer ) {		Info_SetValueForKey( infostring, "minPing", va("%i", sv_minPing->integer) );	}	if( sv_maxPing->integer ) {		Info_SetValueForKey( infostring, "maxPing", va("%i", sv_maxPing->integer) );	}	gamedir = Cvar_VariableString( "fs_game" );	if( *gamedir ) {		Info_SetValueForKey( infostring, "game", gamedir );	}	NET_OutOfBandPrint( NS_SERVER, from, "infoResponse/n%s", infostring );}
开发者ID:BrendanCoughran,项目名称:ioquake3,代码行数:69,



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


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