本文整理汇总了C++中Q_stricmpn函数的典型用法代码示例。如果您正苦于以下问题:C++ Q_stricmpn函数的具体用法?C++ Q_stricmpn怎么用?C++ Q_stricmpn使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Q_stricmpn函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SV_Map_f
/*
==================
SV_Map_f
Restart 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" );
}
}
示例2: HTTPCreateWebadminMessage
qboolean HTTPCreateWebadminMessage(ftRequest_t* request, msg_t* msg, char* sessionkey, httpPostVals_t* values)
{
byte *buf;
char qpath[MAX_QPATH];
int len;
const char *session;
char banmsg[1024];
buf = NULL;
MSG_Init(msg, buf, 0);
Com_Printf("URL: %s\n", request->url);
if(!Q_strncmp(request->url, "/files", 6))
{
if(request->url[6] != '/' || request->url[7] == '\0')
{
return qfalse;
}
Com_sprintf(qpath, sizeof(qpath), "/webadmindata/%s", &request->url[7]);
if(strstr(qpath, "..") != NULL || strstr(qpath, "::") != NULL)
{
return qfalse;
}
len = FS_ReadFile(qpath, (void**)&buf);
if(len < 0)
{
return qfalse;
}
msg->data = buf;
msg->cursize = len;
msg->maxsize = len;
FS_FreeFileKeepBuf( );
return qtrue;
}
len = 0x20000;
buf = Z_Malloc(len);
if(buf == NULL)
{
return qfalse;
}
msg->data = buf;
msg->cursize = 0;
msg->maxsize = len;
if (Q_stricmpn(request->url, "/webadmin", 9))
{
Webadmin_BuildMessage(msg, NULL, qfalse, NULL ,request->url, values);
return qtrue;
}
qboolean invalidlogin = qfalse;
const char* username = NULL;
const char* password = NULL;
if(SV_PlayerBannedByip(&request->remote, banmsg, sizeof(banmsg)))
{
Webadmin_BuildMessage(msg, NULL, qfalse, banmsg, request->url, values);
return qtrue;
}
username = Auth_FindSessionID(sessionkey);
if(username == NULL)
{
username = HTTP_GetFormDataItem(values, "username");
password = HTTP_GetFormDataItem(values, "password");
if(username[0] && password[0])
{
session = Auth_GetSessionId(username, password);
if(session == NULL)
{
Com_Printf("^1Invalid login\n");
invalidlogin = qtrue;
SV_PlayerAddBanByip(&request->remote, "Invalid login attempt. You have to wait 20 seconds", Com_GetRealtime() + 10);
username = NULL;
}else {
Com_Printf("^2Successful login with username: %s\n", username);
}
}else {
Com_Printf("No login!\n");
session = NULL;
username = NULL;
}
/* not longer than 127 or overflow */
if(session != NULL)
{
strcpy(sessionkey, session);
}
}else{
//.........这里部分代码省略.........
示例3: GLimp_InitExtensions
//.........这里部分代码省略.........
// function pointers. ARB rocks!
// Vertex Programs.
bool bARBVertexProgram = false;
if ( GL_CheckForExtension( "GL_ARB_vertex_program" ) )
{
bARBVertexProgram = true;
}
else
{
bARBVertexProgram = false;
Com_Printf ("...GL_ARB_vertex_program not found\n" );
}
// Fragment Programs.
bool bARBFragmentProgram = false;
if ( GL_CheckForExtension( "GL_ARB_fragment_program" ) )
{
bARBFragmentProgram = true;
}
else
{
bARBFragmentProgram = false;
Com_Printf ("...GL_ARB_fragment_program not found\n" );
}
// If we support one or the other, load the shared function pointers.
if ( bARBVertexProgram || bARBFragmentProgram )
{
qglProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC) SDL_GL_GetProcAddress("glProgramStringARB");
qglBindProgramARB = (PFNGLBINDPROGRAMARBPROC) SDL_GL_GetProcAddress("glBindProgramARB");
qglDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC) SDL_GL_GetProcAddress("glDeleteProgramsARB");
qglGenProgramsARB = (PFNGLGENPROGRAMSARBPROC) SDL_GL_GetProcAddress("glGenProgramsARB");
qglProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC) SDL_GL_GetProcAddress("glProgramEnvParameter4dARB");
qglProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC) SDL_GL_GetProcAddress("glProgramEnvParameter4dvARB");
qglProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC) SDL_GL_GetProcAddress("glProgramEnvParameter4fARB");
qglProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC) SDL_GL_GetProcAddress("glProgramEnvParameter4fvARB");
qglProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) SDL_GL_GetProcAddress("glProgramLocalParameter4dARB");
qglProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) SDL_GL_GetProcAddress("glProgramLocalParameter4dvARB");
qglProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC) SDL_GL_GetProcAddress("glProgramLocalParameter4fARB");
qglProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) SDL_GL_GetProcAddress("glProgramLocalParameter4fvARB");
qglGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC) SDL_GL_GetProcAddress("glGetProgramEnvParameterdvARB");
qglGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC) SDL_GL_GetProcAddress("glGetProgramEnvParameterfvARB");
qglGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) SDL_GL_GetProcAddress("glGetProgramLocalParameterdvARB");
qglGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) SDL_GL_GetProcAddress("glGetProgramLocalParameterfvARB");
qglGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC) SDL_GL_GetProcAddress("glGetProgramivARB");
qglGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC) SDL_GL_GetProcAddress("glGetProgramStringARB");
qglIsProgramARB = (PFNGLISPROGRAMARBPROC) SDL_GL_GetProcAddress("glIsProgramARB");
// Validate the functions we need.
if ( !qglProgramStringARB || !qglBindProgramARB || !qglDeleteProgramsARB || !qglGenProgramsARB ||
!qglProgramEnvParameter4dARB || !qglProgramEnvParameter4dvARB || !qglProgramEnvParameter4fARB ||
!qglProgramEnvParameter4fvARB || !qglProgramLocalParameter4dARB || !qglProgramLocalParameter4dvARB ||
!qglProgramLocalParameter4fARB || !qglProgramLocalParameter4fvARB || !qglGetProgramEnvParameterdvARB ||
!qglGetProgramEnvParameterfvARB || !qglGetProgramLocalParameterdvARB || !qglGetProgramLocalParameterfvARB ||
!qglGetProgramivARB || !qglGetProgramStringARB || !qglIsProgramARB )
{
bARBVertexProgram = false;
bARBFragmentProgram = false;
qglGenProgramsARB = NULL; //clear ptrs that get checked
qglProgramEnvParameter4fARB = NULL;
Com_Printf ("...ignoring GL_ARB_vertex_program\n" );
Com_Printf ("...ignoring GL_ARB_fragment_program\n" );
}
}
// Figure out which texture rectangle extension to use.
bool bTexRectSupported = false;
if ( Q_stricmpn( glConfig.vendor_string, "ATI Technologies",16 )==0
&& Q_stricmpn( glConfig.version_string, "1.3.3",5 )==0
&& glConfig.version_string[5] < '9' ) //1.3.34 and 1.3.37 and 1.3.38 are broken for sure, 1.3.39 is not
{
g_bTextureRectangleHack = true;
}
if ( GL_CheckForExtension( "GL_NV_texture_rectangle" ) || GL_CheckForExtension( "GL_EXT_texture_rectangle" ) )
{
bTexRectSupported = true;
}
// Find out how many general combiners they have.
#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
GLint iNumGeneralCombiners = 0;
if(bNVRegisterCombiners)
qglGetIntegerv( GL_MAX_GENERAL_COMBINERS_NV, &iNumGeneralCombiners );
// Only allow dynamic glows/flares if they have the hardware
if ( bTexRectSupported && bARBVertexProgram && qglActiveTextureARB && glConfig.maxActiveTextures >= 4 &&
( ( bNVRegisterCombiners && iNumGeneralCombiners >= 2 ) || bARBFragmentProgram ) )
{
g_bDynamicGlowSupported = true;
// this would overwrite any achived setting gwg
// Cvar_Set( "r_DynamicGlow", "1" );
}
else
{
g_bDynamicGlowSupported = false;
ri->Cvar_Set( "r_DynamicGlow","0" );
}
}
示例4: PrintMatches
/*
===============
PrintMatches
===============
*/
static void PrintMatches( const char *s ) {
if ( !Q_stricmpn( s, shortestMatch, strlen( shortestMatch ) ) ) {
Com_Printf( " %s\n", s );
}
}
示例5: RE_RegisterModel
//.........这里部分代码省略.........
{
// try loading skeletal file
loaded = qfalse;
bufferLen = ri.FS_ReadFile( name, ( void ** ) &buffer );
if ( buffer )
{
loadmodel = mod;
ident = LittleLong( * ( unsigned * ) buffer );
#if defined( COMPAT_ET )
#if 0
if ( ident == MDS_IDENT )
{
loaded = R_LoadMDS( mod, buffer, name );
}
else
#endif
if ( ident == MDM_IDENT )
{
loaded = R_LoadMDM( mod, buffer, name );
}
else if ( ident == MDX_IDENT )
{
loaded = R_LoadMDX( mod, buffer, name );
}
#endif
#if defined( USE_REFENTITY_ANIMATIONSYSTEM )
if ( !Q_stricmpn( ( const char * ) buffer, "MD5Version", 10 ) )
{
loaded = R_LoadMD5( mod, buffer, bufferLen, name );
}
else if ( !Q_stricmpn( ( const char * ) buffer, PSK_IDENTSTRING, PSK_IDENTLEN ) )
{
loaded = R_LoadPSK( mod, buffer, bufferLen, name );
}
#endif
ri.FS_FreeFile( buffer );
}
if ( loaded )
{
// make sure the VBO glState entries are save
R_BindNullVBO();
R_BindNullIBO();
return mod->index;
}
}
for ( lod = MD3_MAX_LODS - 1; lod >= 0; lod-- )
{
char filename[ 1024 ];
strcpy( filename, name );
if ( lod != 0 )
{
char namebuf[ 80 ];
示例6: Cmd_Argc
/*
=================
CG_ServerCommand
The string has been tokenized and can be retrieved with
Cmd_Argc() / Cmd_Argv()
=================
*/
static void CG_ServerCommand( void ) {
const char *cmd;
char text[MAX_SAY_TEXT];
cmd = CG_Argv(0);
if ( !cmd[0] ) {
// server claimed the command
return;
}
if ( !strcmp( cmd, "cp" ) ) {
CG_CenterPrint( CG_Argv(1), SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH );
return;
}
if ( !strcmp( cmd, "cs" ) ) {
CG_ConfigStringModified();
return;
}
if ( !strcmp( cmd, "print" ) ) {
CG_Printf( "%s", CG_Argv(1) );
#ifdef MISSIONPACK
cmd = CG_Argv(1); // yes, this is obviously a hack, but so is the way we hear about
// votes passing or failing
if ( !Q_stricmpn( cmd, "vote failed", 11 ) || !Q_stricmpn( cmd, "team vote failed", 16 )) {
trap_S_StartLocalSound( cgs.media.voteFailed, CHAN_ANNOUNCER );
} else if ( !Q_stricmpn( cmd, "vote passed", 11 ) || !Q_stricmpn( cmd, "team vote passed", 16 ) ) {
trap_S_StartLocalSound( cgs.media.votePassed, CHAN_ANNOUNCER );
}
#endif
return;
}
if ( !strcmp( cmd, "chat" ) ) {
if ( !cg_teamChatsOnly.integer ) {
trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CG_RemoveChatEscapeChar( text );
CG_Printf( "%s\n", text );
}
return;
}
if ( !strcmp( cmd, "tchat" ) ) {
trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CG_RemoveChatEscapeChar( text );
CG_AddToTeamChat( text );
CG_Printf( "%s\n", text );
return;
}
if ( !strcmp( cmd, "vchat" ) ) {
CG_VoiceChat( SAY_ALL );
return;
}
if ( !strcmp( cmd, "vtchat" ) ) {
CG_VoiceChat( SAY_TEAM );
return;
}
if ( !strcmp( cmd, "vtell" ) ) {
CG_VoiceChat( SAY_TELL );
return;
}
if ( !strcmp( cmd, "scores" ) ) {
CG_ParseScores();
return;
}
if ( !strcmp( cmd, "tinfo" ) ) {
CG_ParseTeamInfo();
return;
}
if ( !strcmp( cmd, "map_restart" ) ) {
CG_MapRestart();
return;
}
if ( Q_stricmp (cmd, "remapShader") == 0 ) {
if (trap_Argc() == 4) {
trap_R_RemapShader(CG_Argv(1), CG_Argv(2), CG_Argv(3));
}
}
// loaddeferred can be both a servercmd and a consolecmd
if ( !strcmp( cmd, "loaddefered" ) ) { // FIXME: spelled wrong, but not changing for demo
CG_LoadDeferredPlayers();
//.........这里部分代码省略.........
示例7: SV_Map_f
/*
==================
SV_Map_f
Restart the server on a different map
==================
*/
static void SV_Map_f( void ) {
char *cmd;
char *map;
char mapname[MAX_QPATH];
qboolean killBots, cheat;
char expanded[MAX_QPATH];
// TTimo: unused
// int savegameTime = -1;
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;
}
Cvar_Set( "gamestate", va( "%i", GS_INITIALIZE ) ); // NERVE - SMF - reset gamestate on map/devmap
Cvar_Set( "savegame_loading", "0" ); // make sure it's turned off
Cvar_Set( "g_currentRound", "0" ); // NERVE - SMF - reset the current round
Cvar_Set( "g_nextTimeLimit", "0" ); // NERVE - SMF - reset the next time limit
// force latched values to get set
// DHM - Nerve :: default to GT_WOLF
Cvar_Get( "g_gametype", "5", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH );
// Rafael gameskill
Cvar_Get( "g_gameskill", "3", CVAR_SERVERINFO | CVAR_LATCH );
// done
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
#ifdef __MACOS__
Cvar_SetLatched( "sv_maxclients", "16" ); //DAJ HOG
#else
Cvar_SetLatched( "sv_maxclients", "32" ); // Ridah, modified this
#endif
cmd += 2;
killBots = qtrue;
if ( !Q_stricmp( cmd, "devmap" ) ) {
cheat = qtrue;
} else {
cheat = qfalse;
}
} 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" );
}
}
示例8: Cmd_Argc
/*
=================
CG_ServerCommand
The string has been tokenized and can be retrieved with
Cmd_Argc() / Cmd_Argv()
=================
*/
static void CG_ServerCommand( void ) {
const char *cmd;
char text[MAX_SAY_TEXT];
cmd = CG_Argv(0);
if ( !cmd[0] ) {
// server claimed the command
return;
}
if ( !strcmp( cmd, "cp" ) ) {
CG_CenterPrint( CG_Argv(1), SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH );
return;
}
if ( !strcmp( cmd, "cs" ) ) {
CG_ConfigStringModified();
return;
}
if ( !strcmp( cmd, "print" ) ) {
CG_Printf( "%s", CG_Argv(1) );
#ifdef MISSIONPACK
cmd = CG_Argv(1); // yes, this is obviously a hack, but so is the way we hear about
// votes passing or failing
if ( !Q_stricmpn( cmd, "vote failed", 11 ) || !Q_stricmpn( cmd, "team vote failed", 16 )) {
trap_S_StartLocalSound( cgs.media.voteFailed, CHAN_ANNOUNCER );
} else if ( !Q_stricmpn( cmd, "vote passed", 11 ) || !Q_stricmpn( cmd, "team vote passed", 16 ) ) {
trap_S_StartLocalSound( cgs.media.votePassed, CHAN_ANNOUNCER );
}
#endif
return;
}
if ( !strcmp( cmd, "chat" ) ) {
if ( !cg_teamChatsOnly.integer ) {
if( cg_chatBeep.integer )
trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CG_RemoveChatEscapeChar( text );
CG_Printf( "%s\n", text );
}
return;
}
if ( !strcmp( cmd, "tchat" ) ) {
if( cg_teamChatBeep.integer )
trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CG_RemoveChatEscapeChar( text );
CG_AddToTeamChat( text );
CG_Printf( "%s\n", text );
return;
}
if ( !strcmp( cmd, "vchat" ) ) {
CG_VoiceChat( SAY_ALL );
return;
}
if ( !strcmp( cmd, "vtchat" ) ) {
CG_VoiceChat( SAY_TEAM );
return;
}
if ( !strcmp( cmd, "vtell" ) ) {
CG_VoiceChat( SAY_TELL );
return;
}
if ( !strcmp( cmd, "scores" ) ) {
CG_ParseScores();
return;
}
if ( !strcmp( cmd, "accs" ) ) {
CG_ParseAccuracy();
return;
}
if ( !strcmp( cmd, "ddtaken" ) ) {
CG_ParseDDtimetaken();
return;
}
if ( !strcmp( cmd, "dompointnames" ) ) {
CG_ParseDomPointNames();
return;
}
//.........这里部分代码省略.........
示例9: WP_BreakSaber
qboolean WP_BreakSaber( gentity_t *ent, const char *surfName, saberType_t saberType )
{//Make sure there *is* one specified and not using dualSabers
if ( ent == NULL || ent->client == NULL )
{//invalid ent or client
return qfalse;
}
if ( ent->s.number < MAX_CLIENTS )
{//player
//if ( g_spskill->integer < 3 )
{//only on the hardest level?
//FIXME: add a cvar?
return qfalse;
}
}
if ( ent->health <= 0 )
{//not if they're dead
return qfalse;
}
if ( ent->client->ps.weapon != WP_SABER )
{//not holding saber
return qfalse;
}
if ( ent->client->ps.dualSabers )
{//FIXME: handle this?
return qfalse;
}
if ( !ent->client->ps.saber[0].brokenSaber1 )
{//not breakable into another type of saber
return qfalse;
}
if ( PM_SaberInStart( ent->client->ps.saberMove ) //in a start
|| PM_SaberInTransition( ent->client->ps.saberMove ) //in a transition
|| PM_SaberInAttack( ent->client->ps.saberMove ) )//in an attack
{//don't break when in the middle of an attack
return qfalse;
}
if ( Q_stricmpn( "w_", surfName, 2 )
&& Q_stricmpn( "saber_", surfName, 6 ) //hack because using mod-community made saber
&& Q_stricmp( "cylinder01", surfName ) )//hack because using mod-community made saber
{//didn't hit my weapon
return qfalse;
}
//Sith Sword should ALWAYS do this
if ( saberType != SABER_SITH_SWORD && Q_irand( 0, 50 ) )//&& Q_irand( 0, 10 ) )
{//10% chance - FIXME: extern this, too?
return qfalse;
}
//break it
char *replacementSaber1 = G_NewString( ent->client->ps.saber[0].brokenSaber1 );
char *replacementSaber2 = G_NewString( ent->client->ps.saber[0].brokenSaber2 );
int i, originalNumBlades = ent->client->ps.saber[0].numBlades;
qboolean broken = qfalse;
saber_colors_t colors[MAX_BLADES];
//store the colors
for ( i = 0; i < MAX_BLADES; i++ )
{
colors[i] = ent->client->ps.saber[0].blade[i].color;
}
//FIXME: chance of dropping the right-hand one? Based on damage, or...?
//FIXME: sound & effect when this happens, and send them into a broken parry?
//remove saber[0], replace with replacementSaber1
if ( replacementSaber1 )
{
WP_RemoveSaber( ent, 0 );
WP_SetSaber( ent, 0, replacementSaber1 );
for ( i = 0; i < ent->client->ps.saber[0].numBlades; i++ )
{
ent->client->ps.saber[0].blade[i].color = colors[i];
}
broken = qtrue;
//change my saberent's model and skin to match my new right-hand saber
WP_SetSaberEntModelSkin( ent, &g_entities[ent->client->ps.saberEntityNum] );
}
if ( originalNumBlades <= 1 )
{//nothing to split off
//FIXME: handle this?
}
else
{
//remove saber[1], replace with replacementSaber2
if ( replacementSaber2 )
{//FIXME: 25% chance that it just breaks - just spawn the second saber piece and toss it away immediately, can't be picked up.
//shouldn't be one in this hand, but just in case, remove it
WP_RemoveSaber( ent, 1 );
WP_SetSaber( ent, 1, replacementSaber2 );
//put the remainder of the original saber's blade colors onto this saber's blade(s)
//.........这里部分代码省略.........
示例10: SV_Map_f
/*
==================
SV_Map_f
Restart the server on a different map
==================
*/
static void SV_Map_f(void) {
char *cmd;
char *searchmap;
char mapname[MAX_QPATH];
qboolean killBots, cheat;
if (Cmd_Argc() < 2) {
return;
}
searchmap = SV_GetMapSoundingLike(Cmd_Argv(1));
if (!searchmap) {
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;
cheat = qfalse;
killBots = qtrue;
}
else {
if (!Q_stricmp( cmd, "devmap") || !Q_stricmp(cmd, "spdevmap") ) {
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, searchmap, 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");
}
}
示例11: WP_SaberParseParms
//.........这里部分代码省略.........
}
saber->soundLoop = G_SoundIndex( G_NewString( value ) );
continue;
}
//off sound
if ( !Q_stricmp( token, "soundOff" ) )
{
if ( COM_ParseString( &p, &value ) )
{
continue;
}
saber->soundOff = G_SoundIndex( G_NewString( value ) );
continue;
}
if ( !Q_stricmp( token, "numBlades" ) )
{
if ( COM_ParseInt( &p, &n ) )
{
SkipRestOfLine( &p );
continue;
}
if ( n < 1 || n >= MAX_BLADES )
{
G_Error( "WP_SaberParseParms: saber %s has illegal number of blades (%d) max: %d", SaberName, n, MAX_BLADES );
continue;
}
saber->numBlades = n;
continue;
}
// saberColor
if ( !Q_stricmpn( token, "saberColor", 10 ) )
{
if ( !setColors )
{//don't actually want to set the colors
//read the color out anyway just to advance the *p pointer
COM_ParseString( &p, &value );
continue;
}
else
{
if (strlen(token)==10)
{
n = -1;
}
else if (strlen(token)==11)
{
n = atoi(&token[10])-1;
if (n > 7 || n < 1 )
{
gi.Printf( S_COLOR_YELLOW"WARNING: bad saberColor '%s' in %s\n", token, SaberName );
//read the color out anyway just to advance the *p pointer
COM_ParseString( &p, &value );
continue;
}
}
else
{
gi.Printf( S_COLOR_YELLOW"WARNING: bad saberColor '%s' in %s\n", token, SaberName );
//read the color out anyway just to advance the *p pointer
COM_ParseString( &p, &value );
continue;
}
示例12: PlayerModel_BuildList
/*
=================
PlayerModel_BuildList
=================
*/
static void PlayerModel_BuildList( void )
{
int numdirs;
int numfiles;
char dirlist[2048];
char filelist[2048];
char skinname[64];
char* dirptr;
char* fileptr;
int i;
int j;
int dirlen;
int filelen;
qboolean precache;
precache = trap_Cvar_VariableValue("com_buildscript");
s_playermodel.modelpage = 0;
s_playermodel.nummodels = 0;
// iterate directory of all player models
numdirs = trap_FS_GetFileList("models/players", "/", dirlist, 2048 );
dirptr = dirlist;
for (i=0; i<numdirs && s_playermodel.nummodels < MAX_PLAYERMODELS; i++,dirptr+=dirlen+1)
{
dirlen = (int)strlen(dirptr);
if (dirlen && dirptr[dirlen-1]=='/') dirptr[dirlen-1]='\0';
if (!strcmp(dirptr,".") || !strcmp(dirptr,".."))
continue;
// iterate all skin files in directory
numfiles = trap_FS_GetFileList( va("models/players/%s",dirptr), "tga", filelist, 2048 );
fileptr = filelist;
for (j=0; j<numfiles && s_playermodel.nummodels < MAX_PLAYERMODELS;j++,fileptr+=filelen+1)
{
filelen = (int)strlen(fileptr);
COM_StripExtension(fileptr,skinname);
// look for icon_????
if (!Q_stricmpn(skinname,"icon_",5))
{
Com_sprintf( s_playermodel.modelnames[s_playermodel.nummodels++],
sizeof( s_playermodel.modelnames[s_playermodel.nummodels] ),
"models/players/%s/%s", dirptr, skinname );
//if (s_playermodel.nummodels >= MAX_PLAYERMODELS)
// return;
}
if( precache ) {
trap_S_RegisterSound( va( "sound/player/announce/%s_wins.wav", skinname), qfalse );
}
}
}
//APSFIXME - Degenerate no models case
s_playermodel.numpages = s_playermodel.nummodels/MAX_MODELSPERPAGE;
if (s_playermodel.nummodels % MAX_MODELSPERPAGE)
s_playermodel.numpages++;
}
示例13: CG_ParseServerinfo
/*
================
CG_ParseServerinfo
This is called explicitly when the gamestate is first received,
and whenever the server updates any serverinfo flagged cvars
================
*/
void CG_ParseServerinfo( void ) {
const char *info = NULL, *tinfo = NULL;
char *mapname;
int i, value;
info = CG_ConfigString( CS_SERVERINFO );
cgs.debugMelee = atoi( Info_ValueForKey( info, "g_debugMelee" ) ); //trap->Cvar_GetHiddenVarValue("g_iknowkungfu");
cgs.stepSlideFix = atoi( Info_ValueForKey( info, "g_stepSlideFix" ) );
cgs.noSpecMove = atoi( Info_ValueForKey( info, "g_noSpecMove" ) );
cgs.siegeTeamSwitch = atoi( Info_ValueForKey( info, "g_siegeTeamSwitch" ) );
cgs.showDuelHealths = atoi( Info_ValueForKey( info, "g_showDuelHealths" ) );
cgs.gametype = atoi( Info_ValueForKey( info, "g_gametype" ) );
trap->Cvar_Set("g_gametype", va("%i", cgs.gametype));
cgs.needpass = atoi( Info_ValueForKey( info, "g_needpass" ) );
cgs.jediVmerc = atoi( Info_ValueForKey( info, "g_jediVmerc" ) );
// this changes on map_restart, attempt to precache weapons
value = atoi( Info_ValueForKey( info, "g_weaponDisable" ) );
if ( cgs.wDisable != value ) {
gitem_t *item = NULL;
itemInfo_t *itemInfo = NULL;
cgs.wDisable = value;
for ( i=1, item=bg_itemlist, itemInfo = cg_items;
i<bg_numItems;
i++, item++, itemInfo++ )
{// register all weapons that aren't disabled
if ( item->giType == IT_WEAPON )
CG_RegisterWeapon( item->giTag );
}
}
cgs.fDisable = atoi( Info_ValueForKey( info, "g_forcePowerDisable" ) );
cgs.dmflags = atoi( Info_ValueForKey( info, "dmflags" ) );
cgs.duel_fraglimit = atoi( Info_ValueForKey( info, "duel_fraglimit" ) );
cgs.capturelimit = atoi( Info_ValueForKey( info, "capturelimit" ) );
// reset fraglimit warnings
i = atoi( Info_ValueForKey( info, "fraglimit" ) );
if ( cgs.fraglimit < i )
cg.fraglimitWarnings &= ~(1|2|4);
cgs.fraglimit = i;
// reset timelimit warnings
i = atoi( Info_ValueForKey( info, "timelimit" ) );
if ( cgs.timelimit != i )
cg.timelimitWarnings &= ~(1|2);
cgs.timelimit = i;
cgs.maxclients = Com_Clampi( 0, MAX_CLIENTS, atoi( Info_ValueForKey( info, "sv_maxclients" ) ) );
cgs.isJAPlus = qfalse;
cgs.isJAPro = qfalse;
cgs.cinfo = 0;
cgs.jcinfo = 0;
cgs.restricts = 0;
if (!Q_stricmpn(Info_ValueForKey(info, "gamename"), "JA+ Mod", 7) || !Q_stricmpn(Info_ValueForKey(info, "gamename"), "^4U^3A^5Galaxy", 14 )) { //uag :s - yes its fatz
cgs.isJAPlus = qtrue;
cgs.cinfo = atoi (Info_ValueForKey (info, "jp_cinfo" ));//[JAPRO - Clientside - All - Add jp_cinfo variable to get cinfo from japlus servers]
}
else if (!Q_stricmpn(Info_ValueForKey(info, "gamename"), "japro", 5)) {
cgs.isJAPro = qtrue;
cgs.jcinfo= atoi (Info_ValueForKey (info, "jcinfo" ));//[JAPRO - Clientside - All - Add gamename variable to get jcinfo from japro servers]
}
cgs.restricts = atoi (Info_ValueForKey (info, "restricts" ));//[JAPRO - Clientside - All - Add gamename variable to get jcinfo from japro servers]
mapname = Info_ValueForKey( info, "mapname" );
//rww - You must do this one here, Info_ValueForKey always uses the same memory pointer.
trap->Cvar_Set ( "ui_about_mapname", mapname );
Com_sprintf( cgs.mapname, sizeof( cgs.mapname ), "maps/%s.bsp", mapname );
// Q_strncpyz( cgs.redTeam, Info_ValueForKey( info, "g_redTeam" ), sizeof(cgs.redTeam) );
// trap->Cvar_Set("g_redTeam", cgs.redTeam);
// Q_strncpyz( cgs.blueTeam, Info_ValueForKey( info, "g_blueTeam" ), sizeof(cgs.blueTeam) );
// trap->Cvar_Set("g_blueTeam", cgs.blueTeam);
trap->Cvar_Set ( "ui_about_gametype", va("%i", cgs.gametype ) );
trap->Cvar_Set ( "ui_about_fraglimit", va("%i", cgs.fraglimit ) );
trap->Cvar_Set ( "ui_about_duellimit", va("%i", cgs.duel_fraglimit ) );
trap->Cvar_Set ( "ui_about_capturelimit", va("%i", cgs.capturelimit ) );
trap->Cvar_Set ( "ui_about_timelimit", va("%i", cgs.timelimit ) );
trap->Cvar_Set ( "ui_about_maxclients", va("%i", cgs.maxclients ) );
trap->Cvar_Set ( "ui_about_dmflags", va("%i", cgs.dmflags ) );
trap->Cvar_Set ( "ui_about_hostname", Info_ValueForKey( info, "sv_hostname" ) );
trap->Cvar_Set ( "ui_about_needpass", Info_ValueForKey( info, "g_needpass" ) );
trap->Cvar_Set ( "ui_about_botminplayers", Info_ValueForKey ( info, "bot_minplayers" ) );
//.........这里部分代码省略.........
示例14: Q_stricmp
int Q_stricmp (const char *s1, const char *s2) {
return (s1 && s2) ? Q_stricmpn (s1, s2, 99999) : -1;
}
示例15: SV_Map_f
/*
==================
SV_Map_f
Restart the server on a different map
==================
*/
static void SV_Map_f( void ) {
char *cmd = NULL, *map = NULL;
qboolean killBots=qfalse, cheat=qfalse;
char expanded[MAX_QPATH] = {0}, mapname[MAX_QPATH] = {0};
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
if (strchr (map, '\\') ) {
Com_Printf ("Can't have mapnames with a \\\n");
return;
}
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_LATCH );
cmd = Cmd_Argv(0);
if ( !Q_stricmpn( cmd, "devmap", 6 ) ) {
cheat = qtrue;
killBots = qtrue;
} else {
cheat = qfalse;
killBots = qfalse;
}
// save the map name here cause on a map restart we reload the jampconfig.cfg
// and thus nuke the arguments of the map command
Q_strncpyz(mapname, map, sizeof(mapname));
ForceReload_e eForceReload = eForceReload_NOTHING; // default for normal load
// if ( !Q_stricmp( cmd, "devmapbsp") ) { // not relevant in MP codebase
// eForceReload = eForceReload_BSP;
// }
// else
if ( !Q_stricmp( cmd, "devmapmdl") ) {
eForceReload = eForceReload_MODELS;
}
else
if ( !Q_stricmp( cmd, "devmapall") ) {
eForceReload = eForceReload_ALL;
}
// start up the map
SV_SpawnServer( mapname, killBots, eForceReload );
// set the cheat value
// if the level was started with "map <levelname>", then
// cheats will not be allowed. If started with "devmap <levelname>"
// then cheats will be allowed
Cvar_Set( "sv_cheats", cheat ? "1" : "0" );
}