这篇教程C++ trap_S_StartLocalSound函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中trap_S_StartLocalSound函数的典型用法代码示例。如果您正苦于以下问题:C++ trap_S_StartLocalSound函数的具体用法?C++ trap_S_StartLocalSound怎么用?C++ trap_S_StartLocalSound使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了trap_S_StartLocalSound函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: CG_DrawPlayerWeaponIcon/*==============CG_DrawPlayerWeaponIcon==============*/void CG_DrawPlayerWeaponIcon(rectDef_t *rect, int align, vec4_t *refcolor) { int size; int realweap; // DHM - Nerve qhandle_t icon; float scale, halfScale; vec4_t hcolor; VectorCopy(*refcolor, hcolor); hcolor[3] = 1.f; if (cg.predictedPlayerEntity.currentState.eFlags & EF_MG42_ACTIVE || cg.predictedPlayerEntity.currentState.eFlags & EF_MOUNTEDTANK) { realweap = WP_MOBILE_MG42; } else { realweap = cg.predictedPlayerState.weapon; } size = weapIconDrawSize(realweap); if (!size) { return; } if (cg.predictedPlayerEntity.currentState.eFlags & EF_MOUNTEDTANK && cg_entities[cg_entities[cg_entities[cg.snap->ps.clientNum].tagParent].tankparent].currentState.density & 8) { icon = cgs.media.browningIcon; } else { icon = cg_weapons[realweap].weaponIcon[1]; } // pulsing grenade icon to help the player 'count' in their head if (cg.predictedPlayerState.grenadeTimeLeft) { // grenades and dynamite set this // these time differently if (realweap == WP_DYNAMITE) { if (((cg.grenLastTime) % 1000) > ((cg.predictedPlayerState.grenadeTimeLeft) % 1000)) { trap_S_StartLocalSound(cgs.media.grenadePulseSound4, CHAN_LOCAL_SOUND); } } else { if (((cg.grenLastTime) % 1000) < ((cg.predictedPlayerState.grenadeTimeLeft) % 1000)) { switch (cg.predictedPlayerState.grenadeTimeLeft / 1000) { case 3: trap_S_StartLocalSound(cgs.media.grenadePulseSound4, CHAN_LOCAL_SOUND); break; case 2: trap_S_StartLocalSound(cgs.media.grenadePulseSound3, CHAN_LOCAL_SOUND); break; case 1: trap_S_StartLocalSound(cgs.media.grenadePulseSound2, CHAN_LOCAL_SOUND); break; case 0: trap_S_StartLocalSound(cgs.media.grenadePulseSound1, CHAN_LOCAL_SOUND); break; } } } scale = (float)((cg.predictedPlayerState.grenadeTimeLeft) % 1000) / 100.0f; halfScale = scale * 0.5f; cg.grenLastTime = cg.predictedPlayerState.grenadeTimeLeft; } else { scale = halfScale = 0; } if (icon) { float x, y, w, h; if (size == 1) { // draw half width to match the icon asset // start at left x = rect->x - halfScale; y = rect->y - halfScale; w = rect->w / 2 + scale; h = rect->h + scale; switch (align) { case ITEM_ALIGN_CENTER: x += rect->w / 4; break; case ITEM_ALIGN_RIGHT: x += rect->w / 2; break; case ITEM_ALIGN_LEFT: default: break; } } else { x = rect->x - halfScale; y = rect->y - halfScale; w = rect->w + scale; h = rect->h + scale; } trap_R_SetColor(hcolor); // JPW NERVE CG_DrawPic(x, y, w, h, icon);//.........这里部分代码省略.........
开发者ID:Exosum,项目名称:ETrun,代码行数:101,
示例2: UI_DrawPlayer/*===============UI_DrawPlayer===============*/void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int time ) { refdef_t refdef; refEntity_t legs; refEntity_t torso; refEntity_t head; refEntity_t gun; refEntity_t flash; vec3_t origin; int renderfx; vec3_t mins = {-16, -16, -24}; vec3_t maxs = {16, 16, 32}; float len; float xx; if ( !pi->legsModel || !pi->torsoModel || !pi->headModel || !pi->animations[0].numFrames ) { return; } // this allows the ui to cache the player model on the main menu if (w == 0 || h == 0) { return; } dp_realtime = time; if ( pi->pendingWeapon != -1 && dp_realtime > pi->weaponTimer ) { pi->weapon = pi->pendingWeapon; pi->lastWeapon = pi->pendingWeapon; pi->pendingWeapon = -1; pi->weaponTimer = 0; if( pi->currentWeapon != pi->weapon ) { trap_S_StartLocalSound( weaponChangeSound, CHAN_LOCAL ); } } UI_AdjustFrom640( &x, &y, &w, &h ); y -= jumpHeight; memset( &refdef, 0, sizeof( refdef ) ); memset( &legs, 0, sizeof(legs) ); memset( &torso, 0, sizeof(torso) ); memset( &head, 0, sizeof(head) ); refdef.rdflags = RDF_NOWORLDMODEL; AxisClear( refdef.viewaxis ); refdef.x = x; refdef.y = y; refdef.width = w; refdef.height = h; refdef.fov_x = (int)((float)refdef.width / 640.0f * 90.0f); xx = refdef.width / tan( refdef.fov_x / 360 * M_PI ); refdef.fov_y = atan2( refdef.height, xx ); refdef.fov_y *= ( 360 / (float)M_PI ); // calculate distance so the player nearly fills the box len = 0.72 * ( maxs[2] - mins[2] ); origin[0] = len / tan( DEG2RAD(refdef.fov_x) * 0.5 ); origin[1] = 0.5 * ( mins[1] + maxs[1] ); origin[2] = -0.5 * ( mins[2] + maxs[2] ); refdef.time = dp_realtime; trap_R_ClearScene(); // get the rotation information UI_PlayerAngles( pi, legs.axis, torso.axis, head.axis ); // get the animation state (after rotation, to allow feet shuffle) UI_PlayerAnimation( pi, &legs.oldframe, &legs.frame, &legs.backlerp, &torso.oldframe, &torso.frame, &torso.backlerp ); renderfx = RF_LIGHTING_ORIGIN | RF_NOSHADOW; // // add the legs // legs.hModel = pi->legsModel; legs.customSkin = pi->legsSkin; VectorCopy( origin, legs.origin ); VectorCopy( origin, legs.lightingOrigin ); legs.renderfx = renderfx; VectorCopy (legs.origin, legs.oldorigin); trap_R_AddRefEntityToScene( &legs ); if (!legs.hModel) { return; }//.........这里部分代码省略.........
开发者ID:LuckyBro,项目名称:sgfork,代码行数:101,
示例3: CG_SiegeRoundOvervoid CG_SiegeRoundOver(centity_t *ent, int won){ int myTeam; char teamstr[64]; char appstring[1024]; char soundstr[1024]; int success = 0; playerState_t *ps = NULL; if (!siege_valid) { CG_Error("ERROR: Siege data does not exist on client!/n"); return; } if (cg.snap) { //this should always be true, if it isn't though use the predicted ps as a fallback ps = &cg.snap->ps; } else { ps = &cg.predictedPlayerState; } if (!ps) { assert(0); return; } myTeam = ps->persistant[PERS_TEAM]; if (myTeam == TEAM_SPECTATOR) { return; } if (myTeam == SIEGETEAM_TEAM1) { Com_sprintf(teamstr, sizeof(teamstr), team1); } else { Com_sprintf(teamstr, sizeof(teamstr), team2); } if (BG_SiegeGetValueGroup(siege_info, teamstr, cgParseObjectives)) { if (won == myTeam) { success = BG_SiegeGetPairedValue(cgParseObjectives, "wonround", appstring); } else { success = BG_SiegeGetPairedValue(cgParseObjectives, "lostround", appstring); } if (success) { CG_DrawSiegeMessage(appstring, 0); } appstring[0] = 0; soundstr[0] = 0; if (myTeam == won) { Com_sprintf(teamstr, sizeof(teamstr), "roundover_sound_wewon"); } else { Com_sprintf(teamstr, sizeof(teamstr), "roundover_sound_welost"); } if (BG_SiegeGetPairedValue(cgParseObjectives, teamstr, appstring)) { Com_sprintf(soundstr, sizeof(soundstr), appstring); } /* else { if (myTeam != won) { Com_sprintf(soundstr, sizeof(soundstr), DEFAULT_LOSE_ROUND); } else { Com_sprintf(soundstr, sizeof(soundstr), DEFAULT_WIN_ROUND); } } */ if (soundstr[0]) { trap_S_StartLocalSound(trap_S_RegisterSound(soundstr), CHAN_ANNOUNCER); } }}
开发者ID:ForcePush,项目名称:OJPRPFZ,代码行数:98,
示例4: CG_CheckLocalSounds/*==================CG_CheckLocalSounds==================*/void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ){ int reward, delta; // don't play the sounds if the player just spawned if( ps->persistant[ PERS_SPECSTATE ] != ops->persistant[ PERS_SPECSTATE ] ) return; //hitsound delta = ps->persistant[PERS_HITS] - ops->persistant[PERS_HITS]; if (cg_hitsound.integer == 3) { if (delta > 165) //125 trap_S_StartLocalSound( cgs.media.hitSound[8], CHAN_LOCAL_SOUND ); else if (delta > 120) //100 trap_S_StartLocalSound( cgs.media.hitSound[7], CHAN_LOCAL_SOUND ); else if (delta > 85) //75 trap_S_StartLocalSound( cgs.media.hitSound[6], CHAN_LOCAL_SOUND ); else if (delta > 50) trap_S_StartLocalSound( cgs.media.hitSound[5], CHAN_LOCAL_SOUND ); else if (delta > 25) trap_S_StartLocalSound( cgs.media.hitSound[4], CHAN_LOCAL_SOUND ); else if (delta > 12) trap_S_StartLocalSound( cgs.media.hitSound[3], CHAN_LOCAL_SOUND ); else if (delta > 8) trap_S_StartLocalSound( cgs.media.hitSound[2], CHAN_LOCAL_SOUND ); else if (delta > 4) trap_S_StartLocalSound( cgs.media.hitSound[1], CHAN_LOCAL_SOUND ); else if (delta > 0) //0 = no events trap_S_StartLocalSound( cgs.media.hitSound[0], CHAN_LOCAL_SOUND ); } else if (cg_hitsound.integer == 2) { if (delta > 8) trap_S_StartLocalSound( cgs.media.hitSound[8], CHAN_LOCAL_SOUND ); else if (delta > 7) trap_S_StartLocalSound( cgs.media.hitSound[7], CHAN_LOCAL_SOUND ); else if (delta > 6) trap_S_StartLocalSound( cgs.media.hitSound[6], CHAN_LOCAL_SOUND ); else if (delta > 5) trap_S_StartLocalSound( cgs.media.hitSound[5], CHAN_LOCAL_SOUND ); else if (delta > 4) trap_S_StartLocalSound( cgs.media.hitSound[4], CHAN_LOCAL_SOUND ); else if (delta > 3) trap_S_StartLocalSound( cgs.media.hitSound[3], CHAN_LOCAL_SOUND ); else if (delta > 2) trap_S_StartLocalSound( cgs.media.hitSound[2], CHAN_LOCAL_SOUND ); else if (delta > 1) trap_S_StartLocalSound( cgs.media.hitSound[1], CHAN_LOCAL_SOUND ); else if (delta > 0) //0 = no events trap_S_StartLocalSound( cgs.media.hitSound[0], CHAN_LOCAL_SOUND ); } else if (cg_hitsound.integer && (delta > 0)) //no tonal change trap_S_StartLocalSound( cgs.media.hitSound[4], CHAN_LOCAL_SOUND ); //health changes of more than -1 should make pain sounds //and don't play hurt sound if evolving if( ps->stats[ STAT_HEALTH ] < ops->stats[ STAT_HEALTH ] - 1 && ps->stats[ STAT_CLASS ] == ops->stats[ STAT_CLASS ] ) { float healthlost = ((ops->stats[ STAT_HEALTH ] - ps->stats[ STAT_HEALTH ])/ps->stats[ STAT_MAX_HEALTH ]); if( ps->stats[ STAT_HEALTH ] > 0 ) { CG_PainEvent( &cg.predictedPlayerEntity, ps->stats[ STAT_HEALTH ] ); //play critical hit! sound if lost > 30% hp if (healthlost > 0.3) trap_S_StartLocalSound( cgs.media.hitSound[9], CHAN_LOCAL_SOUND ); } } //Don't spam it if the user is spamming spacebar up a stair (Urasai! Annoying!) if(cg_doublejumpsound.integer && ps->persistant[PERS_DOUBLEJUMPED] > ops->persistant[PERS_DOUBLEJUMPED]) { trap_S_StartLocalSound( cgs.media.doublejumpsound, CHAN_LOCAL_SOUND ); } // health changes of more than -1 should make pain sounds if( ps->stats[ STAT_HEALTH ] < ops->stats[ STAT_HEALTH ] - 1 ) { if( ps->stats[ STAT_HEALTH ] > 0 ) CG_PainEvent( &cg.predictedPlayerEntity, ps->stats[ STAT_HEALTH ] ); } if( ( BG_UpgradeIsActive( UP_JETPACK, ps->stats ) || ( cg.predictedPlayerEntity.jetPackJumpTime + 1000 > cg.time && cg.predictedPlayerEntity.jetPackJumpTime + 250 < cg.time ) ) && ps->stats[ STAT_FUEL ] <= JETPACK_FUEL_LOW ) { static int last = 0; if( last + 740 < cg.time ) { trap_S_StartSound( NULL, cg.predictedPlayerState.clientNum, CHAN_AUTO, cgs.media.jetpackLowFuelSound ); last = cg.time; } }//.........这里部分代码省略.........
开发者ID:ZdrytchX,项目名称:cuboid,代码行数:101,
示例5: Cmd_Argc/**The string has been tokenized and can be retrieved withCmd_Argc() / Cmd_Argv()*/static void CG_ServerCommand(void){ const char *cmd; char text[MAX_SAY_TEXT]; cmd = BG_Argv(0); if (!cmd[0]) { // server claimed the command return; } if (!strcmp(cmd, "cp")) { CG_CenterPrint(BG_Argv(1)); return; } if (!strcmp(cmd, "cs")) { CG_ConfigStringModified(); return; } if (!strcmp(cmd, "pings")) { CG_ParsePings(); return; } if (!strcmp(cmd, "tinfo")) { CG_ParseTeamInfo(); } if (!strcmp(cmd, "print")) { CG_Printf("%s", BG_Argv(1)); return; } if (!strcmp(cmd, "screenprint")) { Q_strncpyz(text, BG_Argv(1), sizeof text); CG_AddScreenMessage(text, qfalse); CG_Printf("%s/n", text); return; } if (!strcmp(cmd, "s")) { CG_ParseScores(); return; } if (!strcmp(cmd, "stats")) { CG_ParseStats(); return; } if (!strcmp(cmd, "chat")) { if (cg_teamChatsOnly.integer) { return; } if (cg_teamChatBeep.integer) { trap_S_StartLocalSound(cgs.media.talkSound, CHAN_LOCAL_SOUND); } Q_strncpyz(text, BG_Argv(1), sizeof text); CG_RemoveChatEscapeChar(text); CG_AddScreenMessage(text, qfalse); CG_Printf("%s/n", text); return; } if (!strcmp(cmd, "tchat")) { if (cg_chatBeep.integer) { trap_S_StartLocalSound(cgs.media.talkSound, CHAN_LOCAL_SOUND); } Q_strncpyz(text, BG_Argv(1), sizeof text); CG_RemoveChatEscapeChar(text); CG_AddScreenMessage(text, qtrue); CG_Printf("%s/n", text); return; } if (!strcmp(cmd, "map_restart")) { CG_MapRestart(); return; } if (!strcmp(cmd, "remapShader") == 0) { if (trap_Argc() == 4) { char shader1[MAX_QPATH]; char shader2[MAX_QPATH]; char shader3[MAX_QPATH]; Q_strncpyz(shader1, BG_Argv(1), sizeof(shader1)); Q_strncpyz(shader2, BG_Argv(2), sizeof(shader2)); Q_strncpyz(shader3, BG_Argv(3), sizeof(shader3)); trap_R_RemapShader(shader1, shader2, shader3); }//.........这里部分代码省略.........
开发者ID:baseas,项目名称:aftershock,代码行数:101,
示例6: CG_EntityEvent//.........这里部分代码省略......... { CG_PainEvent( cent, es->eventParm ); } break; case EV_DEATH1: case EV_DEATH2: case EV_DEATH3: trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, va( "*death%i.wav", event - EV_DEATH1 + 1 ) ) ); break; case EV_OBITUARY: CG_Obituary( es ); break; case EV_GIB_PLAYER: // no gibbing break; case EV_STOPLOOPINGSOUND: trap_S_StopLoopingSound( es->number ); es->loopSound = 0; break; case EV_DEBUG_LINE: CG_Beam( cent ); break; case EV_BUILD_DELAY: if ( clientNum == cg.predictedPlayerState.clientNum ) { trap_S_StartLocalSound( cgs.media.buildableRepairedSound, CHAN_LOCAL_SOUND ); cg.lastBuildAttempt = cg.time; } break; case EV_BUILD_REPAIR: trap_S_StartSound( NULL, es->number, CHAN_AUTO, cgs.media.buildableRepairSound ); break; case EV_BUILD_REPAIRED: trap_S_StartSound( NULL, es->number, CHAN_AUTO, cgs.media.buildableRepairedSound ); break; case EV_OVERMIND_ATTACK_1: case EV_OVERMIND_ATTACK_2: if ( cg.predictedPlayerState.persistant[ PERS_TEAM ] == TEAM_ALIENS ) { trap_S_StartLocalSound( cgs.media.alienOvermindAttack, CHAN_ANNOUNCER ); CG_CenterPrint( va( "^%c%s", "31"[ event - EV_OVERMIND_ATTACK_1 ], _( "The Overmind is under attack!" ) ), 200, GIANTCHAR_WIDTH * 4 ); } break; case EV_OVERMIND_DYING: if ( cg.predictedPlayerState.persistant[ PERS_TEAM ] == TEAM_ALIENS ) { trap_S_StartLocalSound( cgs.media.alienOvermindDying, CHAN_ANNOUNCER ); CG_CenterPrint( _( "^1The Overmind is dying!" ), 200, GIANTCHAR_WIDTH * 4 ); } break;
开发者ID:Gireen,项目名称:Unvanquished,代码行数:66,
示例7: CG_ConfigStringModified/*================CG_ConfigStringModified================*/static void CG_ConfigStringModified( void ) { const char *str; int num; num = atoi( CG_Argv( 1 ) ); // get the gamestate from the client system, which will have the // new configstring already integrated trap_GetGameState( &cgs.gameState ); // look up the individual string that was modified str = CG_ConfigString( num ); // do something with it if necessary if ( num == CS_MUSIC ) { CG_StartMusic(); } else if ( num == CS_SERVERINFO ) { CG_ParseServerinfo(); } else if ( num == CS_WARMUP ) { CG_ParseWarmup(); } else if ( num == CS_SCORES1 ) { cgs.scores1 = atoi( str ); } else if ( num == CS_SCORES2 ) { cgs.scores2 = atoi( str ); } else if ( num == CS_LEVEL_START_TIME ) { cgs.levelStartTime = atoi( str ); } else if ( num == CS_VOTE_TIME ) { cgs.voteTime = atoi( str ); cgs.voteModified = qtrue; } else if ( num == CS_VOTE_YES ) { cgs.voteYes = atoi( str ); cgs.voteModified = qtrue; } else if ( num == CS_VOTE_NO ) { cgs.voteNo = atoi( str ); cgs.voteModified = qtrue; } else if ( num == CS_VOTE_STRING ) { Q_strncpyz( cgs.voteString, str, sizeof( cgs.voteString ) );#ifdef MISSIONPACK trap_S_StartLocalSound( cgs.media.voteNow, CHAN_ANNOUNCER );#endif //MISSIONPACK } else if ( num >= CS_TEAMVOTE_TIME && num <= CS_TEAMVOTE_TIME + 1) { cgs.teamVoteTime[num-CS_TEAMVOTE_TIME] = atoi( str ); cgs.teamVoteModified[num-CS_TEAMVOTE_TIME] = qtrue; } else if ( num >= CS_TEAMVOTE_YES && num <= CS_TEAMVOTE_YES + 1) { cgs.teamVoteYes[num-CS_TEAMVOTE_YES] = atoi( str ); cgs.teamVoteModified[num-CS_TEAMVOTE_YES] = qtrue; } else if ( num >= CS_TEAMVOTE_NO && num <= CS_TEAMVOTE_NO + 1) { cgs.teamVoteNo[num-CS_TEAMVOTE_NO] = atoi( str ); cgs.teamVoteModified[num-CS_TEAMVOTE_NO] = qtrue; } else if ( num >= CS_TEAMVOTE_STRING && num <= CS_TEAMVOTE_STRING + 1) { Q_strncpyz( cgs.teamVoteString[num-CS_TEAMVOTE_STRING], str, sizeof( cgs.teamVoteString ) );#ifdef MISSIONPACK trap_S_StartLocalSound( cgs.media.voteNow, CHAN_ANNOUNCER );#endif } else if ( num == CS_INTERMISSION ) { cg.intermissionStarted = atoi( str ); } else if ( num >= CS_MODELS && num < CS_MODELS+MAX_MODELS ) { cgs.gameModels[ num-CS_MODELS ] = trap_R_RegisterModel( str ); } else if ( num >= CS_SOUNDS && num < CS_SOUNDS+MAX_MODELS ) { if ( str[0] != '*' ) { // player specific sounds don't register here cgs.gameSounds[ num-CS_SOUNDS] = trap_S_RegisterSound( str, qfalse ); } } else if ( num >= CS_PLAYERS && num < CS_PLAYERS+MAX_CLIENTS ) { CG_NewClientInfo( num - CS_PLAYERS ); CG_BuildSpectatorString(); } else if ( num == CS_FLAGSTATUS ) { if( cgs.gametype == GT_CTF ) { // format is rb where its red/blue, 0 is at base, 1 is taken, 2 is dropped cgs.redflag = str[0] - '0'; cgs.blueflag = str[1] - '0'; }#ifdef MISSIONPACK else if( cgs.gametype == GT_1FCTF ) { cgs.flagStatus = str[0] - '0'; }#endif } else if ( num == CS_SHADERSTATE ) { CG_ShaderStateChanged(); }}
开发者ID:linux26,项目名称:corkscrew,代码行数:88,
示例8: Cmd_Argc/*=================CG_ServerCommandThe string has been tokenized and can be retrieved withCmd_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();//.........这里部分代码省略.........
开发者ID:linux26,项目名称:corkscrew,代码行数:101,
示例9: Cmd_Argc/*=================CG_ServerCommandThe string has been tokenized and can be retrieved withCmd_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; }//.........这里部分代码省略.........
开发者ID:OpenArena,项目名称:leixperimental,代码行数:101,
示例10: CG_CheckLocalSounds/*==================CG_CheckLocalSounds==================*/voidCG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ){ if ( cg_hitsounds.integer && ps->clientNum == ops->clientNum && ps->persistant[PERS_SPAWN_COUNT] == ops->persistant[PERS_SPAWN_COUNT] ) { int* const h = ps->holdable; int* const oh = ops->holdable; /////////////////////////////////////////////////////////////////// if ((h[HOLDABLE_HIT] & 0x000f) > (oh[HOLDABLE_HIT] & 0x000f)) trap_S_StartLocalSound( cgs.media.hitsound_head, CHAN_LOCAL_SOUND ); if (cg_hitsounds.integer != 2) { if ((h[HOLDABLE_HIT] & 0x00f0) != (oh[HOLDABLE_HIT] & 0x00f0)) trap_S_StartLocalSound( cgs.media.hitsound_hand, CHAN_LOCAL_SOUND ); if ((h[HOLDABLE_HIT] & 0x0f00) != (oh[HOLDABLE_HIT] & 0x0f00)) trap_S_StartLocalSound( cgs.media.hitsound_torso, CHAN_LOCAL_SOUND ); if ((h[HOLDABLE_HIT] & 0xf000) != (oh[HOLDABLE_HIT] & 0xf000)) trap_S_StartLocalSound( cgs.media.hitsound_foot, CHAN_LOCAL_SOUND ); } /////////////////////////////////////////////////////////////////// if ((h[HOLDABLE_HITF] & 0x000f) != (oh[HOLDABLE_HITF] & 0x000f)) trap_S_StartLocalSound( cgs.media.hitsound_fhead, CHAN_LOCAL_SOUND ); if (cg_hitsounds.integer != 2) { if ((h[HOLDABLE_HITF] & 0x00f0) != (oh[HOLDABLE_HITF] & 0x00f0)) trap_S_StartLocalSound( cgs.media.hitsound_fhand, CHAN_LOCAL_SOUND ); if ((h[HOLDABLE_HITF] & 0x0f00) != (oh[HOLDABLE_HITF] & 0x0f00)) trap_S_StartLocalSound( cgs.media.hitsound_ftorso, CHAN_LOCAL_SOUND ); if ((h[HOLDABLE_HITF] & 0xf000) != (oh[HOLDABLE_HITF] & 0xf000)) trap_S_StartLocalSound( cgs.media.hitsound_ffoot, CHAN_LOCAL_SOUND ); } } // health changes of more than -1 should make pain sounds if ( ps->stats[STAT_HEALTH] < ops->stats[STAT_HEALTH] - 1 ) { if ( ps->stats[STAT_HEALTH] > 0 ) { CG_PainEvent( &cg.predictedPlayerEntity, ps->stats[STAT_HEALTH], qfalse ); cg.painTime = cg.time; } } // timelimit warnings if ( cgs.timelimit > 0 && cgs.gamestate == GS_PLAYING) { int msec; msec = cg.time - cgs.levelStartTime; if ( cgs.timelimit > 5 && !( cg.timelimitWarnings & 1 ) && (msec > (cgs.timelimit - 5) * 60 * 1000) && ( msec < (cgs.timelimit-5)*60*1000+1000 ) ) { cg.timelimitWarnings |= 1; if( ps->persistant[PERS_TEAM] == TEAM_AXIS ) { if( cgs.media.fiveMinuteSound_g == -1 ) { CG_SoundPlaySoundScript( cg.fiveMinuteSound_g, NULL, -1, qtrue ); } else if( cgs.media.fiveMinuteSound_g ) { trap_S_StartLocalSound( cgs.media.fiveMinuteSound_g, CHAN_ANNOUNCER ); } } else if( ps->persistant[PERS_TEAM] == TEAM_ALLIES ) { if( cgs.media.fiveMinuteSound_a == -1 ) { CG_SoundPlaySoundScript( cg.fiveMinuteSound_a, NULL, -1, qtrue ); } else if( cgs.media.fiveMinuteSound_a ) { trap_S_StartLocalSound( cgs.media.fiveMinuteSound_a, CHAN_ANNOUNCER ); } } } if ( cgs.timelimit > 2 && !( cg.timelimitWarnings & 2 ) && (msec > (cgs.timelimit - 2) * 60 * 1000) && ( msec < (cgs.timelimit-2)*60*1000+1000 ) ) { cg.timelimitWarnings |= 2; if( ps->persistant[PERS_TEAM] == TEAM_AXIS ) { if( cgs.media.twoMinuteSound_g == -1 ) { CG_SoundPlaySoundScript( cg.twoMinuteSound_g, NULL, -1, qtrue ); } else if( cgs.media.twoMinuteSound_g ) { trap_S_StartLocalSound( cgs.media.twoMinuteSound_g, CHAN_ANNOUNCER ); } } else if( ps->persistant[PERS_TEAM] == TEAM_ALLIES ) { if( cgs.media.twoMinuteSound_a == -1 ) { CG_SoundPlaySoundScript( cg.twoMinuteSound_a, NULL, -1, qtrue ); } else if( cgs.media.twoMinuteSound_a ) { trap_S_StartLocalSound( cgs.media.twoMinuteSound_a, CHAN_ANNOUNCER ); } } } if ( !( cg.timelimitWarnings & 4 ) && (msec > (cgs.timelimit) * 60 * 1000 - 30000) && (msec < (cgs.timelimit) * 60 * 1000 - 29000 ) ) { cg.timelimitWarnings |= 4;//.........这里部分代码省略.........
开发者ID:Dragonji,项目名称:jaymod,代码行数:101,
示例11: InformUnlockableStatusChangesstatic void InformUnlockableStatusChanges( int *statusChanges, int count ){ char text[ MAX_STRING_CHARS ]; char *textptr = text; int unlockableNum; bool firstPass = true, unlocked = true; unlockable_t *unlockable; for ( unlockableNum = 0; unlockableNum < NUM_UNLOCKABLES; unlockableNum++ ) { unlockable = &unlockables[ unlockableNum ]; if ( !statusChanges[ unlockableNum ] || Disabled( unlockable ) ) { continue; } if ( firstPass ) { if ( statusChanges[ unlockableNum ] > 0 ) { Com_sprintf( text, sizeof( text ), S_COLOR_GREEN "ITEM%s UNLOCKED: " S_COLOR_WHITE, ( count > 1 ) ? "S" : "" ); } else { unlocked = false; Com_sprintf( text, sizeof( text ), S_COLOR_RED "ITEM%s LOCKED: " S_COLOR_WHITE, ( count > 1 ) ? "S" : "" ); } textptr = text + strlen( text ); firstPass = false; } else { Com_sprintf( textptr, sizeof( text ) - ( textptr - text ), ", " ); textptr += 2; } Com_sprintf( textptr, sizeof( text ) - ( textptr - text ), "%s", UnlockableHumanName( unlockable ) ); textptr += strlen( textptr ); } // TODO: Add sound for items being locked for each team switch ( cg.snap->ps.persistant[ PERS_TEAM ] ) { case TEAM_ALIENS: if ( unlocked ) { trap_S_StartLocalSound( cgs.media.weHaveEvolved, CHAN_ANNOUNCER ); } break; case TEAM_HUMANS: default: if ( unlocked ) { trap_S_StartLocalSound( cgs.media.reinforcement, CHAN_ANNOUNCER ); } break; } CG_CenterPrint( text, SCREEN_HEIGHT * 0.3, GIANTCHAR_WIDTH * 2 );}
开发者ID:JacksonTech,项目名称:Unvanquished,代码行数:65,
示例12: UI_SPPostgameMenu_MenuDraw/*=================UI_SPPostgameMenu_MenuDraw=================*/static void UI_SPPostgameMenu_MenuDraw( void ) { int timer; int serverId; int n; char info[MAX_INFO_STRING]; trap_GetConfigString( CS_SYSTEMINFO, info, sizeof(info) ); serverId = atoi( Info_ValueForKey( info, "sv_serverid" ) ); if( serverId != postgameMenuInfo.serverId ) { UI_PopMenu(); return; } // phase 1 if ( postgameMenuInfo.numClients > 2 ) { UI_DrawProportionalString( 510, 480 - 64 - PROP_HEIGHT, postgameMenuInfo.placeNames[2], UI_CENTER, color_white ); } UI_DrawProportionalString( 130, 480 - 64 - PROP_HEIGHT, postgameMenuInfo.placeNames[1], UI_CENTER, color_white ); UI_DrawProportionalString( 320, 480 - 64 - 2 * PROP_HEIGHT, postgameMenuInfo.placeNames[0], UI_CENTER, color_white ); if( postgameMenuInfo.phase == 1 ) { timer = uis.realtime - postgameMenuInfo.starttime; if( timer >= 1000 && postgameMenuInfo.winnerSound ) { trap_S_StartLocalSound( postgameMenuInfo.winnerSound, CHAN_ANNOUNCER ); postgameMenuInfo.winnerSound = 0; } if( timer < 5000 ) { return; } postgameMenuInfo.phase = 2; postgameMenuInfo.starttime = uis.realtime; } // phase 2 if( postgameMenuInfo.phase == 2 ) { timer = uis.realtime - postgameMenuInfo.starttime; if( timer >= ( postgameMenuInfo.numAwards * AWARD_PRESENTATION_TIME ) ) { if( timer < 5000 ) { return; } postgameMenuInfo.phase = 3; postgameMenuInfo.starttime = uis.realtime; } else { UI_SPPostgameMenu_DrawAwardsPresentation( timer ); } } // phase 3 if( postgameMenuInfo.phase == 3 ) { if( uis.demoversion ) { if( postgameMenuInfo.won == 1 && UI_ShowTierVideo( 8 )) { trap_Cvar_Set( "nextmap", "" ); trap_Cmd_ExecuteText( EXEC_APPEND, "disconnect; cinematic demoEnd.RoQ/n" ); return; } } else if( postgameMenuInfo.won > -1 && UI_ShowTierVideo( postgameMenuInfo.won + 1 )) { if( postgameMenuInfo.won == postgameMenuInfo.lastTier ) { trap_Cvar_Set( "nextmap", "" ); trap_Cmd_ExecuteText( EXEC_APPEND, "disconnect; cinematic end.RoQ/n" ); return; } trap_Cvar_SetValue( "ui_spSelection", postgameMenuInfo.won * ARENAS_PER_TIER ); trap_Cvar_Set( "nextmap", "levelselect" ); trap_Cmd_ExecuteText( EXEC_APPEND, va( "disconnect; cinematic tier%i.RoQ/n", postgameMenuInfo.won + 1 ) ); return; } postgameMenuInfo.item_again.generic.flags &= ~QMF_INACTIVE; postgameMenuInfo.item_next.generic.flags &= ~QMF_INACTIVE; postgameMenuInfo.item_menu.generic.flags &= ~QMF_INACTIVE; UI_SPPostgameMenu_DrawAwardsMedals( postgameMenuInfo.numAwards ); Menu_Draw( &postgameMenuInfo.menu ); } // draw the scoreboard if( !trap_Cvar_VariableValue( "ui_spScoreboard" ) ) { return; } timer = uis.realtime - postgameMenuInfo.scoreboardtime; if( postgameMenuInfo.numClients <= 3 ) { n = 0; } else { n = timer / 1500 % (postgameMenuInfo.numClients + 2); }//.........这里部分代码省略.........
开发者ID:GregMacPherson,项目名称:Quake-III-Arena,代码行数:101,
示例13: CG_CheckAmmo/*==============CG_CheckAmmoIf the ammo has gone low enough to generate the warning, play a sound==============*/void CG_CheckAmmo( void ) { int i; int total; int weapons[MAX_WEAPONS / ( sizeof( int ) * 8 )]; // see about how many seconds of ammo we have remaining memcpy( weapons, cg.snap->ps.weapons, sizeof( weapons ) ); if ( !weapons[0] && !weapons[1] ) { // (SA) we start out with no weapons, so don't make a click on startup return; } total = 0; // first weap now WP_LUGER for ( i = WP_FIRST ; i < WP_NUM_WEAPONS ; i++ ) { if ( !( weapons[0] & ( 1 << i ) ) ) { continue; } switch ( i ) { case WP_PANZERFAUST: case WP_GRENADE_LAUNCHER: case WP_GRENADE_PINEAPPLE: case WP_LUGER: case WP_COLT: case WP_AKIMBO: case WP_SILENCER: case WP_FG42: case WP_FG42SCOPE: case WP_MP40: case WP_THOMPSON: case WP_STEN: case WP_VENOM: case WP_TESLA: case WP_MAUSER: case WP_GARAND: default: total += cg.snap->ps.ammo[BG_FindAmmoForWeapon( i )] * 1000;// break;// default:// total += cg.snap->ps.ammo[BG_FindAmmoForWeapon(i)] * 200;// break; } if ( total >= 5000 ) { cg.lowAmmoWarning = 0; return; } } if ( !cg.lowAmmoWarning ) { // play a sound on this transition trap_S_StartLocalSound( cgs.media.noAmmoSound, CHAN_LOCAL_SOUND ); } if ( total == 0 ) { cg.lowAmmoWarning = 2; } else { cg.lowAmmoWarning = 1; }}
开发者ID:JackalFrost,项目名称:RTCW-WSGF,代码行数:70,
示例14: CG_ConfigStringModifiedstatic void CG_ConfigStringModified(void){ const char *str; int num; num = atoi(BG_Argv(1)); // get the gamestate from the client system, which will have the // new configstring already integrated trap_GetGameState(&cgs.gameState); // look up the individual string that was modified str = CG_ConfigString(num); // do something with it if necessary if (num == CS_SERVERINFO) { CG_ParseServerinfo(); } else if (num == CS_WARMUP) { CG_SetWarmup(atoi(str)); } else if (num == CS_SCORES1) { cgs.scores1 = atoi(str); } else if (num == CS_SCORES2) { cgs.scores2 = atoi(str); } else if (num == CS_LEVEL_START_TIME) { cgs.levelStartTime = atoi(str); } else if (num == CS_VOTE_TIME) { if (!strcmp(str, "failed")) { cgs.voteTime = 0; CG_Printf("Vote failed./n"); CG_AddBufferedSound(cgs.media.voteFailed); } else if (!strcmp(str, "passed")) { cgs.voteTime = 0; CG_Printf("Vote passed./n"); CG_AddBufferedSound(cgs.media.votePassed); } else if (*str) { cgs.voteTime = atoi(str); CG_Printf("Vote cast./n"); CG_AddBufferedSound(cgs.media.voteNow); } } else if (num == CS_VOTE_YES) { cgs.voteYes = atoi(str); trap_S_StartLocalSound(cgs.media.talkSound, CHAN_LOCAL_SOUND); } else if (num == CS_VOTE_NO) { cgs.voteNo = atoi(str); trap_S_StartLocalSound(cgs.media.talkSound, CHAN_LOCAL_SOUND); } else if (num == CS_VOTE_STRING) { Q_strncpyz(cgs.voteString, str, sizeof(cgs.voteString)); } else if (num == CS_INTERMISSION) { cg.intermissionStarted = atoi(str); } else if (num >= CS_MODELS && num < CS_MODELS+MAX_MODELS) { cgs.gameModels[num-CS_MODELS] = trap_R_RegisterModel(str); } else if (num >= CS_SOUNDS && num < CS_SOUNDS+MAX_SOUNDS) { if (str[0] != '*') { // player specific sounds don't register here cgs.gameSounds[num-CS_SOUNDS] = trap_S_RegisterSound(str, qfalse); } } else if (num >= CS_PLAYERS && num < CS_PLAYERS+MAX_CLIENTS) { CG_NewClientInfo(num - CS_PLAYERS); } else if (num == CS_FLAGSTATUS) { // format is rb where its red/blue, 0 is at base, 1 is taken, 2 is dropped if (cgs.gametype == GT_CTF) { team_t team; team = cgs.clientinfo[cg.clientNum].team; if ((cgs.redflag == 1 && str[0] - '0' == 2 && team == TEAM_RED) || (cgs.blueflag == 1 && str[1] - '0' == 2 && team == TEAM_BLUE)) { CG_CenterPrint("^2The enemy dropped your flag"); } else if ((cgs.redflag == 1 && str[0] - '0' == 2 && team == TEAM_BLUE) || (cgs.blueflag == 1 && str[1] - '0' == 2 && team == TEAM_RED)) { CG_CenterPrint("^1You team dropped the flag"); } cgs.redflag = str[0] - '0'; cgs.blueflag = str[1] - '0'; } } else if (num == CS_SHADERSTATE) { CG_ShaderStateChanged(); } else if (num == CS_ROUND_START) { cg.countdownCount = -1; cgs.roundStartTime = atoi(str); } else if (num == CS_LIVING_COUNT) { int newRed, newBlue; newRed = atoi(COM_Parse((char **) &str)); newBlue = atoi(COM_Parse((char **) &str)); if (!cgs.warmup && cg.time >= cgs.roundStartTime) { team_t team; team = cg.snap->ps.persistant[PERS_TEAM]; if ((newRed == 1 && cgs.redLivingCount != 1 && team == TEAM_RED) || (newBlue == 1 && cgs.blueLivingCount != 1 && team == TEAM_BLUE)) { CG_CenterPrint("You are the last in your team"); } } cgs.redLivingCount = newRed; cgs.blueLivingCount = newBlue; } else if (num == CS_OVERTIME) { cgs.overtimeStart = atoi(str);//.........这里部分代码省略.........
开发者ID:baseas,项目名称:aftershock,代码行数:101,
示例15: CG_CheckLocalSounds/*==================CG_CheckLocalSounds==================*/void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ) { // health changes of more than -1 should make pain sounds if ( ps->stats[STAT_HEALTH] < ops->stats[STAT_HEALTH] - 1 ) { if ( ps->stats[STAT_HEALTH] > 0 ) { CG_PainEvent( &cg.predictedPlayerEntity, ps->stats[STAT_HEALTH], qfalse ); cg.painTime = cg.time; } } // timelimit warnings if ( cgs.timelimit > 0 && cgs.gamestate == GS_PLAYING) { int msec; msec = cg.time - cgs.levelStartTime; if ( cgs.timelimit > 5 && !( cg.timelimitWarnings & 1 ) && (msec > (cgs.timelimit - 5) * 60 * 1000) && ( msec < (cgs.timelimit-5)*60*1000+1000 ) ) { cg.timelimitWarnings |= 1; if( ps->persistant[PERS_TEAM] == TEAM_AXIS ) { if( cgs.media.fiveMinuteSound_g == -1 ) { CG_SoundPlaySoundScript( cg.fiveMinuteSound_g, NULL, -1, qtrue ); } else if( cgs.media.fiveMinuteSound_g ) { trap_S_StartLocalSound( cgs.media.fiveMinuteSound_g, CHAN_ANNOUNCER ); } } else if( ps->persistant[PERS_TEAM] == TEAM_ALLIES ) { if( cgs.media.fiveMinuteSound_a == -1 ) { CG_SoundPlaySoundScript( cg.fiveMinuteSound_a, NULL, -1, qtrue ); } else if( cgs.media.fiveMinuteSound_a ) { trap_S_StartLocalSound( cgs.media.fiveMinuteSound_a, CHAN_ANNOUNCER ); } } } if ( cgs.timelimit > 2 && !( cg.timelimitWarnings & 2 ) && (msec > (cgs.timelimit - 2) * 60 * 1000) && ( msec < (cgs.timelimit-2)*60*1000+1000 ) ) { cg.timelimitWarnings |= 2; if( ps->persistant[PERS_TEAM] == TEAM_AXIS ) { if( cgs.media.twoMinuteSound_g == -1 ) { CG_SoundPlaySoundScript( cg.twoMinuteSound_g, NULL, -1, qtrue ); } else if( cgs.media.twoMinuteSound_g ) { trap_S_StartLocalSound( cgs.media.twoMinuteSound_g, CHAN_ANNOUNCER ); } } else if( ps->persistant[PERS_TEAM] == TEAM_ALLIES ) { if( cgs.media.twoMinuteSound_a == -1 ) { CG_SoundPlaySoundScript( cg.twoMinuteSound_a, NULL, -1, qtrue ); } else if( cgs.media.twoMinuteSound_a ) { trap_S_StartLocalSound( cgs.media.twoMinuteSound_a, CHAN_ANNOUNCER ); } } } if ( !( cg.timelimitWarnings & 4 ) && (msec > (cgs.timelimit) * 60 * 1000 - 30000) && (msec < (cgs.timelimit) * 60 * 1000 - 29000 ) ) { cg.timelimitWarnings |= 4; if( ps->persistant[PERS_TEAM] == TEAM_AXIS ) { if( cgs.media.thirtySecondSound_g == -1 ) { CG_SoundPlaySoundScript( cg.thirtySecondSound_g, NULL, -1, qtrue ); } else if( cgs.media.thirtySecondSound_g ) { trap_S_StartLocalSound( cgs.media.thirtySecondSound_g, CHAN_ANNOUNCER ); } } else if( ps->persistant[PERS_TEAM] == TEAM_ALLIES ) { if( cgs.media.thirtySecondSound_a == -1 ) { CG_SoundPlaySoundScript( cg.thirtySecondSound_a, NULL, -1, qtrue ); } else if( cgs.media.thirtySecondSound_a ) { trap_S_StartLocalSound( cgs.media.thirtySecondSound_a, CHAN_ANNOUNCER ); } } } }}
开发者ID:BulldogDrummond,项目名称:etpub,代码行数:74,
示例16: CG_AddKamikaze/*====================CG_AddKamikaze====================*/void CG_AddKamikaze( localEntity_t *le ) { refEntity_t *re; refEntity_t shockwave; float c; vec3_t test, axis[3]; int t; re = &le->refEntity; t = cg.time - le->startTime; VectorClear( test ); AnglesToAxis( test, axis ); if (t > KAMI_SHOCKWAVE_STARTTIME && t < KAMI_SHOCKWAVE_ENDTIME) { if (!(le->leFlags & LEF_SOUND1)) {// trap_S_StartSound (re->origin, ENTITYNUM_WORLD, CHAN_AUTO, cgs.media.kamikazeExplodeSound ); trap_S_StartLocalSound(cgs.media.kamikazeExplodeSound, CHAN_AUTO); le->leFlags |= LEF_SOUND1; } // 1st kamikaze shockwave memset(&shockwave, 0, sizeof(shockwave)); shockwave.hModel = cgs.media.kamikazeShockWave; shockwave.reType = RT_MODEL; shockwave.shaderTime = re->shaderTime; VectorCopy(re->origin, shockwave.origin); c = (float)(t - KAMI_SHOCKWAVE_STARTTIME) / (float)(KAMI_SHOCKWAVE_ENDTIME - KAMI_SHOCKWAVE_STARTTIME); VectorScale( axis[0], c * KAMI_SHOCKWAVE_MAXRADIUS / KAMI_SHOCKWAVEMODEL_RADIUS, shockwave.axis[0] ); VectorScale( axis[1], c * KAMI_SHOCKWAVE_MAXRADIUS / KAMI_SHOCKWAVEMODEL_RADIUS, shockwave.axis[1] ); VectorScale( axis[2], c * KAMI_SHOCKWAVE_MAXRADIUS / KAMI_SHOCKWAVEMODEL_RADIUS, shockwave.axis[2] ); shockwave.nonNormalizedAxes = qtrue; if (t > KAMI_SHOCKWAVEFADE_STARTTIME) { c = (float)(t - KAMI_SHOCKWAVEFADE_STARTTIME) / (float)(KAMI_SHOCKWAVE_ENDTIME - KAMI_SHOCKWAVEFADE_STARTTIME); } else { c = 0; } c *= 0xff; shockwave.shaderRGBA[0] = 0xff - c; shockwave.shaderRGBA[1] = 0xff - c; shockwave.shaderRGBA[2] = 0xff - c; shockwave.shaderRGBA[3] = 0xff - c; CG_AddRefEntityWithMinLight( &shockwave ); } if (t > KAMI_EXPLODE_STARTTIME && t < KAMI_IMPLODE_ENDTIME) { // explosion and implosion c = ( le->endTime - cg.time ) * le->lifeRate; c *= 0xff; re->shaderRGBA[0] = le->color[0] * c; re->shaderRGBA[1] = le->color[1] * c; re->shaderRGBA[2] = le->color[2] * c; re->shaderRGBA[3] = le->color[3] * c; if( t < KAMI_IMPLODE_STARTTIME ) { c = (float)(t - KAMI_EXPLODE_STARTTIME) / (float)(KAMI_IMPLODE_STARTTIME - KAMI_EXPLODE_STARTTIME); } else { if (!(le->leFlags & LEF_SOUND2)) {// trap_S_StartSound (re->origin, ENTITYNUM_WORLD, CHAN_AUTO, cgs.media.kamikazeImplodeSound ); trap_S_StartLocalSound(cgs.media.kamikazeImplodeSound, CHAN_AUTO); le->leFlags |= LEF_SOUND2; } c = (float)(KAMI_IMPLODE_ENDTIME - t) / (float) (KAMI_IMPLODE_ENDTIME - KAMI_IMPLODE_STARTTIME); } VectorScale( axis[0], c * KAMI_BOOMSPHERE_MAXRADIUS / KAMI_BOOMSPHEREMODEL_RADIUS, re->axis[0] ); VectorScale( axis[1], c * KAMI_BOOMSPHERE_MAXRADIUS / KAMI_BOOMSPHEREMODEL_RADIUS, re->axis[1] ); VectorScale( axis[2], c * KAMI_BOOMSPHERE_MAXRADIUS / KAMI_BOOMSPHEREMODEL_RADIUS, re->axis[2] ); re->nonNormalizedAxes = qtrue; CG_AddRefEntityWithMinLight( re ); // add the dlight trap_R_AddLightToScene( re->origin, c * 1000.0, 1.0, 1.0, 1.0, c ); } if (t > KAMI_SHOCKWAVE2_STARTTIME && t < KAMI_SHOCKWAVE2_ENDTIME) { // 2nd kamikaze shockwave if (le->angles.trBase[0] == 0 && le->angles.trBase[1] == 0 && le->angles.trBase[2] == 0) { le->angles.trBase[0] = random() * 360; le->angles.trBase[1] = random() * 360; le->angles.trBase[2] = random() * 360; } memset(&shockwave, 0, sizeof(shockwave)); shockwave.hModel = cgs.media.kamikazeShockWave; shockwave.reType = RT_MODEL; shockwave.shaderTime = re->shaderTime; VectorCopy(re->origin, shockwave.origin); test[0] = le->angles.trBase[0]; test[1] = le->angles.trBase[1];//.........这里部分代码省略.........
开发者ID:mecwerks,项目名称:spearmint-ios,代码行数:101,
示例17: UI_StartSoundvoid UI_StartSound( qhandle_t sound ) { if ( soundTime > uis.realtime ) return; trap_S_StartLocalSound( sound, CHAN_LOCAL_SOUND );}
开发者ID:linux26,项目名称:corkscrew,代码行数:5,
示例18: CG_SiegeObjectiveCompleted//.........这里部分代码省略......... char foundobjective[MAX_SIEGE_INFO_SIZE]; char appstring[1024]; char soundstr[1024]; int success = 0; playerState_t *ps = NULL; if (!siege_valid) { CG_Error("Siege data does not exist on client!/n"); return; } if (cg.snap) { //this should always be true, if it isn't though use the predicted ps as a fallback ps = &cg.snap->ps; } else { ps = &cg.predictedPlayerState; } if (!ps) { assert(0); return; } myTeam = ps->persistant[PERS_TEAM]; if (myTeam == TEAM_SPECTATOR) { return; } if (won == SIEGETEAM_TEAM1) { Com_sprintf(teamstr, sizeof(teamstr), team1); } else { Com_sprintf(teamstr, sizeof(teamstr), team2); } if (BG_SiegeGetValueGroup(siege_info, teamstr, cgParseObjectives)) { Com_sprintf(objstr, sizeof(objstr), "Objective%i", objectivenum); if (BG_SiegeGetValueGroup(cgParseObjectives, objstr, foundobjective)) { if (myTeam == SIEGETEAM_TEAM1) { success = BG_SiegeGetPairedValue(foundobjective, "message_team1", appstring); } else { success = BG_SiegeGetPairedValue(foundobjective, "message_team2", appstring); } if (success) { CG_DrawSiegeMessageNonMenu(appstring); } appstring[0] = 0; soundstr[0] = 0; if (myTeam == SIEGETEAM_TEAM1) { Com_sprintf(teamstr, sizeof(teamstr), "sound_team1"); } else { Com_sprintf(teamstr, sizeof(teamstr), "sound_team2"); } if (BG_SiegeGetPairedValue(foundobjective, teamstr, appstring)) { Com_sprintf(soundstr, sizeof(soundstr), appstring); } /* else { if (myTeam != won) { Com_sprintf(soundstr, sizeof(soundstr), DEFAULT_LOSE_OBJECTIVE); } else { Com_sprintf(soundstr, sizeof(soundstr), DEFAULT_WIN_OBJECTIVE); } } */ if (soundstr[0]) { trap_S_StartLocalSound(trap_S_RegisterSound(soundstr), CHAN_ANNOUNCER); } } }}
开发者ID:ForcePush,项目名称:OJPRPFZ,代码行数:101,
示例19: CG_CheckLocalSounds/*==================CG_CheckLocalSounds==================*/void CG_CheckLocalSounds(playerState_t *ps, playerState_t *ops){ // health changes of more than -1 should make pain sounds if (ps->stats[STAT_HEALTH] < ops->stats[STAT_HEALTH] - 1) { if (ps->stats[STAT_HEALTH] > 0) { CG_PainEvent(&cg.predictedPlayerEntity, ps->stats[STAT_HEALTH], qfalse); cg.painTime = cg.time; } } // hitsounds // add server control cvars?! - no, admins just have to force cg_hitSounds if (ops->persistant[PERS_HITS] != ps->persistant[PERS_HITS] && (cg_hitSounds.integer & HITSOUNDS_ON)) { if (ps->persistant[PERS_HITS] < ops->persistant[PERS_HITS]) { if (!(cg_hitSounds.integer & HITSOUNDS_NOTEAMSHOT)) { trap_S_StartSound(NULL, ps->clientNum, CHAN_AUTO, cgs.media.teamShot); } } else if (ps->persistant[PERS_HEADSHOTS] > ops->persistant[PERS_HEADSHOTS]) { if (!(cg_hitSounds.integer & HITSOUNDS_NOHEADSHOT)) { trap_S_StartSound(NULL, ps->clientNum, CHAN_AUTO, cgs.media.headShot); } else if (!(cg_hitSounds.integer & HITSOUNDS_NOBODYSHOT)) { trap_S_StartSound(NULL, ps->clientNum, CHAN_AUTO, cgs.media.bodyShot); } } else { if (!(cg_hitSounds.integer & HITSOUNDS_NOBODYSHOT)) { trap_S_StartSound(NULL, ps->clientNum, CHAN_AUTO, cgs.media.bodyShot); } } } // timelimit warnings if (cgs.timelimit > 0 && cgs.gamestate == GS_PLAYING) { int msec = cg.time - cgs.levelStartTime; if (cgs.timelimit > 5 && !(cg.timelimitWarnings & 1) && (msec > (cgs.timelimit - 5) * 60 * 1000) && (msec < (cgs.timelimit - 5) * 60 * 1000 + 1000)) { cg.timelimitWarnings |= 1; if (ps->persistant[PERS_TEAM] == TEAM_AXIS) { if (cgs.media.fiveMinuteSound_g == -1) { CG_SoundPlaySoundScript(cg.fiveMinuteSound_g, NULL, -1, qtrue); } else if (cgs.media.fiveMinuteSound_g) { trap_S_StartLocalSound(cgs.media.fiveMinuteSound_g, CHAN_ANNOUNCER); } } else if (ps->persistant[PERS_TEAM] == TEAM_ALLIES) { if (cgs.media.fiveMinuteSound_a == -1) { CG_SoundPlaySoundScript(cg.fiveMinuteSound_a, NULL, -1, qtrue); } else if (cgs.media.fiveMinuteSound_a) { trap_S_StartLocalSound(cgs.media.fiveMinuteSound_a, CHAN_ANNOUNCER); } } } if (cgs.timelimit > 2 && !(cg.timelimitWarnings & 2) && (msec > (cgs.timelimit - 2) * 60 * 1000) && (msec < (cgs.timelimit - 2) * 60 * 1000 + 1000)) { cg.timelimitWarnings |= 2; if (ps->persistant[PERS_TEAM] == TEAM_AXIS) { if (cgs.media.twoMinuteSound_g == -1) { CG_SoundPlaySoundScript(cg.twoMinuteSound_g, NULL, -1, qtrue); } else if (cgs.media.twoMinuteSound_g) { trap_S_StartLocalSound(cgs.media.twoMinuteSound_g, CHAN_ANNOUNCER); } } else if (ps->persistant[PERS_TEAM] == TEAM_ALLIES) { if (cgs.media.twoMinuteSound_a == -1) {//.........这里部分代码省略.........
开发者ID:ic319,项目名称:etlegacy,代码行数:101,
示例20: CG_CheckAmmo/*==============CG_CheckAmmoIf the ammo has gone low enough to generate the warning, play a sound==============*/void CG_CheckAmmo( void ) {#if 0 int i; int total; int previous; int weapons; // see about how many seconds of ammo we have remaining weapons = cg.snap->ps.stats[ STAT_WEAPONS ]; total = 0; for ( i = WP_BRYAR_PISTOL; i < WP_NUM_WEAPONS ; i++ ) { if ( ! ( weapons & ( 1 << i ) ) ) { continue; } switch ( i ) { case WP_BRYAR_PISTOL: case WP_CONCUSSION: case WP_BRYAR_OLD: case WP_BLASTER: case WP_DISRUPTOR: case WP_BOWCASTER: case WP_REPEATER: case WP_DEMP2: case WP_FLECHETTE: case WP_ROCKET_LAUNCHER: case WP_THERMAL: case WP_TRIP_MINE: case WP_DET_PACK: case WP_EMPLACED_GUN: total += cg.snap->ps.ammo[weaponData[i].ammoIndex] * 1000; break; default: total += cg.snap->ps.ammo[weaponData[i].ammoIndex] * 200; break; } if ( total >= 5000 ) { cg.lowAmmoWarning = 0; return; } } previous = cg.lowAmmoWarning; if ( total == 0 ) { cg.lowAmmoWarning = 2; } else { cg.lowAmmoWarning = 1; } if (cg.snap->ps.weapon == WP_SABER) { cg.lowAmmoWarning = 0; } // play a sound on transitions if ( cg.lowAmmoWarning != previous ) { trap_S_StartLocalSound( cgs.media.noAmmoSound, CHAN_LOCAL_SOUND ); }#endif //disabled silly ammo warning stuff for now}
开发者ID:Camron,项目名称:OpenJK,代码行数:69,
示例21: UI_SPSkillMenu_Key/*=================UI_SPSkillMenu_Key=================*/static sfxHandle_t UI_SPSkillMenu_Key( int key ) { if( key == K_MOUSE2 || key == K_ESCAPE ) { trap_S_StartLocalSound( skillMenuInfo.silenceSound, CHAN_ANNOUNCER ); } return Menu_DefaultKey( &skillMenuInfo.menu, key );}
开发者ID:mtrencseni,项目名称:quake3,代码行数:11,
示例22: CG_EntityEvent//.........这里部分代码省略......... else//#endif CG_AddBufferedSound( cgs.media.yourTeamTookEnemyFlagSound ); } } break; case GTS_REDOBELISK_ATTACKED: // Overload: red obelisk is being attacked if (cgs.clientinfo[cg.clientNum].team == TEAM_RED) { CG_AddBufferedSound( cgs.media.yourBaseIsUnderAttackSound ); } break; case GTS_BLUEOBELISK_ATTACKED: // Overload: blue obelisk is being attacked if (cgs.clientinfo[cg.clientNum].team == TEAM_BLUE) { CG_AddBufferedSound( cgs.media.yourBaseIsUnderAttackSound ); } break; case GTS_REDTEAM_SCORED: CG_AddBufferedSound(cgs.media.redScoredSound); break; case GTS_BLUETEAM_SCORED: CG_AddBufferedSound(cgs.media.blueScoredSound); break; case GTS_REDTEAM_TOOK_LEAD: CG_AddBufferedSound(cgs.media.redLeadsSound); break; case GTS_BLUETEAM_TOOK_LEAD: CG_AddBufferedSound(cgs.media.blueLeadsSound); break; case GTS_TEAMS_ARE_TIED: CG_AddBufferedSound( cgs.media.teamsTiedSound ); break; case GTS_KAMIKAZE: trap_S_StartLocalSound(cgs.media.kamikazeFarSound, CHAN_ANNOUNCER); break; default: break; } break; } case EV_PAIN: // local player sounds are triggered in CG_CheckLocalSounds, // so ignore events on the player DEBUGNAME("EV_PAIN"); if ( cent->currentState.number != cg.snap->ps.clientNum ) { CG_PainEvent( cent, es->eventParm ); } break; case EV_DEATH1: case EV_DEATH2: case EV_DEATH3: DEBUGNAME("EV_DEATHx"); if (CG_WaterLevel(cent) >= 1) { trap_S_StartSound(NULL, es->number, CHAN_VOICE, CG_CustomSound(es->number, "*drown.wav")); } else { trap_S_StartSound(NULL, es->number, CHAN_VOICE, CG_CustomSound(es->number, va("*death%i.wav", event - EV_DEATH1 + 1))); } break; case EV_OBITUARY: DEBUGNAME("EV_OBITUARY");
开发者ID:OpenArena,项目名称:legacy,代码行数:67,
示例23: UI_SPSkillMenu_Init//.........这里部分代码省略......... skillMenuInfo.art_banner.color = color_white; skillMenuInfo.art_banner.style = UI_CENTER; skillMenuInfo.item_baby.generic_mc.type = MTYPE_PTEXT; skillMenuInfo.item_baby.generic_mc.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_baby.generic_mc.x = 320; skillMenuInfo.item_baby.generic_mc.y = 170; skillMenuInfo.item_baby.generic_mc.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_baby.generic_mc.id = ID_BABY; skillMenuInfo.item_baby.string = "I Can Win"; skillMenuInfo.item_baby.color = color_red; skillMenuInfo.item_baby.style = UI_CENTER; skillMenuInfo.item_easy.generic_mc.type = MTYPE_PTEXT; skillMenuInfo.item_easy.generic_mc.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_easy.generic_mc.x = 320; skillMenuInfo.item_easy.generic_mc.y = 198; skillMenuInfo.item_easy.generic_mc.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_easy.generic_mc.id = ID_EASY; skillMenuInfo.item_easy.string = "Bring It On"; skillMenuInfo.item_easy.color = color_red; skillMenuInfo.item_easy.style = UI_CENTER; skillMenuInfo.item_medium.generic_mc.type = MTYPE_PTEXT; skillMenuInfo.item_medium.generic_mc.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_medium.generic_mc.x = 320; skillMenuInfo.item_medium.generic_mc.y = 227; skillMenuInfo.item_medium.generic_mc.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_medium.generic_mc.id = ID_MEDIUM; skillMenuInfo.item_medium.string = "Hurt Me Plenty"; skillMenuInfo.item_medium.color = color_red; skillMenuInfo.item_medium.style = UI_CENTER; skillMenuInfo.item_hard.generic_mc.type = MTYPE_PTEXT; skillMenuInfo.item_hard.generic_mc.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_hard.generic_mc.x = 320; skillMenuInfo.item_hard.generic_mc.y = 255; skillMenuInfo.item_hard.generic_mc.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_hard.generic_mc.id = ID_HARD; skillMenuInfo.item_hard.string = "Hardcore"; skillMenuInfo.item_hard.color = color_red; skillMenuInfo.item_hard.style = UI_CENTER; skillMenuInfo.item_nightmare.generic_mc.type = MTYPE_PTEXT; skillMenuInfo.item_nightmare.generic_mc.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_nightmare.generic_mc.x = 320; skillMenuInfo.item_nightmare.generic_mc.y = 283; skillMenuInfo.item_nightmare.generic_mc.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_nightmare.generic_mc.id = ID_NIGHTMARE; skillMenuInfo.item_nightmare.string = "NIGHTMARE!"; skillMenuInfo.item_nightmare.color = color_red; skillMenuInfo.item_nightmare.style = UI_CENTER; skillMenuInfo.item_back.generic_mc.type = MTYPE_BITMAP; skillMenuInfo.item_back.generic_mc.name = ART_BACK; skillMenuInfo.item_back.generic_mc.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_back.generic_mc.x = 0; skillMenuInfo.item_back.generic_mc.y = 480-64; skillMenuInfo.item_back.generic_mc.callback = UI_SPSkillMenu_BackEvent; skillMenuInfo.item_back.generic_mc.id = ID_BACK; skillMenuInfo.item_back.width = 128; skillMenuInfo.item_back.height = 64; skillMenuInfo.item_back.focuspic = ART_BACK_FOCUS; skillMenuInfo.art_skillPic.generic_mc.type = MTYPE_BITMAP; skillMenuInfo.art_skillPic.generic_mc.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; skillMenuInfo.art_skillPic.generic_mc.x = 320-64; skillMenuInfo.art_skillPic.generic_mc.y = 368; skillMenuInfo.art_skillPic.width = 128; skillMenuInfo.art_skillPic.height = 96; skillMenuInfo.item_fight.generic_mc.type = MTYPE_BITMAP; skillMenuInfo.item_fight.generic_mc.name = ART_FIGHT; skillMenuInfo.item_fight.generic_mc.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_fight.generic_mc.callback = UI_SPSkillMenu_FightEvent; skillMenuInfo.item_fight.generic_mc.id = ID_FIGHT; skillMenuInfo.item_fight.generic_mc.x = 640; skillMenuInfo.item_fight.generic_mc.y = 480-64; skillMenuInfo.item_fight.width = 128; skillMenuInfo.item_fight.height = 64; skillMenuInfo.item_fight.focuspic = ART_FIGHT_FOCUS; Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_frame ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_banner ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_baby ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_easy ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_medium ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_hard ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_nightmare ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_skillPic ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_back ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_fight ); skill = (int)Com_Clamp( 1, 5, trap_Cvar_VariableValue( "g_spSkill" ) ); SetSkillColor( skill, color_white ); skillMenuInfo.art_skillPic.shader = skillMenuInfo.skillpics[skill - 1]; if( skill == 5 ) { trap_S_StartLocalSound( skillMenuInfo.nightmareSound, CHAN_ANNOUNCER ); }}
开发者ID:mtrencseni,项目名称:quake3,代码行数:101,
示例24: UI_DrawPlayervoid UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int time ) { refdef_t refdef; refEntity_t legs = {0}; refEntity_t torso = {0}; refEntity_t head = {0}; refEntity_t gun = {0}; refEntity_t backpack = {0}; refEntity_t helmet = {0};// refEntity_t barrel = {0}; refEntity_t flash = {0}; vec3_t origin; int renderfx; vec3_t mins = {-16, -16, -24}; vec3_t maxs = {16, 16, 32}; float len; float xx; vec4_t hcolor = { 1, 0, 0, 0.5 }; const char *torso_anim = NULL, *legs_anim = NULL; if ( !pi->legsModel || !pi->torsoModel || !pi->headModel || !pi->animations[0].numFrames ) { return; } dp_realtime = time; if ( pi->pendingWeapon != WP_NUM_WEAPONS && dp_realtime > pi->weaponTimer ) { pi->weapon = pi->pendingWeapon; pi->lastWeapon = pi->pendingWeapon; pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; if ( pi->currentWeapon != pi->weapon ) { trap_S_StartLocalSound( trap_S_RegisterSound( "sound/weapons/change.wav" ), CHAN_LOCAL ); } } UI_AdjustFrom640( &x, &y, &w, &h ); y -= jumpHeight; memset( &refdef, 0, sizeof( refdef ) ); memset( &legs, 0, sizeof( legs ) ); memset( &torso, 0, sizeof( torso ) ); memset( &head, 0, sizeof( head ) ); refdef.rdflags = RDF_NOWORLDMODEL; AxisClear( refdef.viewaxis ); refdef.x = x; refdef.y = y; refdef.width = w; refdef.height = h; refdef.fov_x = (int)((float)refdef.width / uiInfo.uiDC.xscale / 640.0f * 90.0f); xx = refdef.width / uiInfo.uiDC.xscale / tan( refdef.fov_x / 360 * M_PI ); refdef.fov_y = atan2( refdef.height / uiInfo.uiDC.yscale, xx ); refdef.fov_y *= ( 360 / M_PI ); // calculate distance so the player nearly fills the box len = 1.01 * ( maxs[2] - mins[2] ); // NERVE - SMF - changed from 0.7 origin[0] = len / tan( DEG2RAD( refdef.fov_x ) * 0.5 ); origin[1] = 0.5 * ( mins[1] + maxs[1] ); origin[2] = -0.5 * ( mins[2] + maxs[2] ); refdef.time = dp_realtime; trap_R_SetColor( hcolor ); trap_R_ClearScene(); trap_R_SetColor( NULL ); // get the rotation information UI_PlayerAngles( pi, legs.axis, torso.axis, head.axis ); // get the animation state (after rotation, to allow feet shuffle)// UI_PlayerAnimation( pi, &legs.oldframe, &legs.frame, &legs.backlerp,// &torso.oldframe, &torso.frame, &torso.backlerp ); renderfx = RF_LIGHTING_ORIGIN | RF_NOSHADOW; // // add the body // legs.hModel = pi->legsModel; legs.customSkin = pi->legsSkin; legs.renderfx = renderfx; VectorCopy( origin, legs.origin ); VectorCopy( origin, legs.lightingOrigin ); VectorCopy( legs.origin, legs.oldorigin ); WM_getWeaponAnim( &torso_anim, &legs_anim ); if ( torso_anim ) { legs.torsoFrame = UI_GetAnimation( pi, torso_anim ); legs.oldTorsoFrame = UI_GetAnimation( pi, torso_anim ); } legs.torsoBacklerp = 0; //torso.backlerp; if ( legs_anim ) { legs.frame = UI_GetAnimation( pi, legs_anim );//.........这里部分代码省略.........
开发者ID:MAN-AT-ARMS,项目名称:iortcw-archive,代码行数:101,
示例25: CG_CheckLocalSounds/*==================CG_CheckLocalSounds==================*/void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ) { const char *s; int highScore; // hit changes if ( ps->persistant[PERS_HITS] > ops->persistant[PERS_HITS] ) { trap_S_StartLocalSound( cgs.media.hitSound, CHAN_LOCAL_SOUND ); } else if ( ps->persistant[PERS_HITS] < ops->persistant[PERS_HITS] ) { trap_S_StartLocalSound( cgs.media.hitTeamSound, CHAN_LOCAL_SOUND ); } // health changes of more than -1 should make pain sounds if ( ps->stats[STAT_HEALTH] < ops->stats[STAT_HEALTH] - 1 ) { if ( ps->stats[STAT_HEALTH] > 0 ) { CG_PainEvent( &cg.predictedPlayerEntity, ps->stats[STAT_HEALTH], qfalse ); } } // if we are going into the intermission, don't start any voices if ( cg.intermissionStarted ) { return; } // reward sounds if ( ps->persistant[PERS_REWARD_COUNT] > ops->persistant[PERS_REWARD_COUNT] ) { switch ( ps->persistant[PERS_REWARD] ) { case REWARD_IMPRESSIVE: trap_S_StartLocalSound( cgs.media.impressiveSound, CHAN_ANNOUNCER ); cg.rewardTime = cg.time; cg.rewardShader = cgs.media.medalImpressive; cg.rewardCount = ps->persistant[PERS_IMPRESSIVE_COUNT]; break; case REWARD_EXCELLENT: trap_S_StartLocalSound( cgs.media.excellentSound, CHAN_ANNOUNCER ); cg.rewardTime = cg.time; cg.rewardShader = cgs.media.medalExcellent; cg.rewardCount = ps->persistant[PERS_EXCELLENT_COUNT]; break; case REWARD_DENIED: trap_S_StartLocalSound( cgs.media.deniedSound, CHAN_ANNOUNCER ); break; case REWARD_GAUNTLET: trap_S_StartLocalSound( cgs.media.humiliationSound, CHAN_ANNOUNCER ); // if we are the killer and not the killee, show the award if ( ps->stats[STAT_HEALTH] ) { cg.rewardTime = cg.time; cg.rewardShader = cgs.media.medalGauntlet; cg.rewardCount = ps->persistant[PERS_GAUNTLET_FRAG_COUNT]; } break; default: CG_Error( "Bad reward_t" ); } } else { // lead changes (only if no reward) s = CG_ConfigString( CS_WARMUP ); if ( !s[0] ) { // never play lead changes during warmup if ( ps->persistant[PERS_RANK] != ops->persistant[PERS_RANK] ) { if ( cgs.gametype >= GT_TEAM ) { if ( ps->persistant[PERS_RANK] == 2 ) { trap_S_StartLocalSound( cgs.media.teamsTiedSound, CHAN_ANNOUNCER ); } else if ( ps->persistant[PERS_RANK] == 0 ) { trap_S_StartLocalSound( cgs.media.redLeadsSound, CHAN_ANNOUNCER ); } else if ( ps->persistant[PERS_RANK] == 1 ) { trap_S_StartLocalSound( cgs.media.blueLeadsSound, CHAN_ANNOUNCER ); } } else { if ( ps->persistant[PERS_RANK] == 0 ) { trap_S_StartLocalSound( cgs.media.takenLeadSound, CHAN_ANNOUNCER ); } else if ( ps->persistant[PERS_RANK] == RANK_TIED_FLAG ) { trap_S_StartLocalSound( cgs.media.tiedLeadSound, CHAN_ANNOUNCER ); } else if ( ( ops->persistant[PERS_RANK] & ~RANK_TIED_FLAG ) == 0 ) { trap_S_StartLocalSound( cgs.media.lostLeadSound, CHAN_ANNOUNCER ); } } } } } // timelimit warnings if ( cgs.timelimit > 0 ) { int msec; msec = cg.time - cgs.levelStartTime; if ( cgs.timelimit > 5 && !( cg.timelimitWarnings & 1 ) && msec > ( cgs.timelimit - 5 ) * 60 * 1000 ) { cg.timelimitWarnings |= 1; trap_S_StartLocalSound( cgs.media.fiveMinuteSound, CHAN_ANNOUNCER ); } if ( !( cg.timelimitWarnings & 2 ) && msec > ( cgs.timelimit - 1 ) * 60 * 1000 ) { cg.timelimitWarnings |= 2; trap_S_StartLocalSound( cgs.media.oneMinuteSound, CHAN_ANNOUNCER ); }//.........这里部分代码省略.........
开发者ID:JackalFrost,项目名称:RTCW-WSGF,代码行数:101,
示例26: CG_EntityEvent//.........这里部分代码省略......... break; case PW_DOUBLER: trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.doublerSound ); break; case PW_AMMOREGEN: trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.ammoregenSound ); break; }#endif } else { trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.itemPickupSounds[ index ] ); } // show icon and name on status bar for (i = 0; i < CG_MaxSplitView(); i++) { if ( es->number == cg.snap->pss[i].playerNum ) { CG_ItemPickup( i, index ); } } } break; case EV_GLOBAL_ITEM_PICKUP: DEBUGNAME("EV_GLOBAL_ITEM_PICKUP"); { int index; index = es->eventParm; // player predicted if ( index < 1 || index >= BG_NumItems() ) { break; } // powerup pickups are global trap_S_StartLocalSound( cgs.media.itemPickupSounds[ index ], CHAN_AUTO ); // show icon and name on status bar for (i = 0; i < CG_MaxSplitView(); i++) { if ( es->number == cg.snap->pss[i].playerNum ) { CG_ItemPickup( i, index ); } } } break; // // weapon events // case EV_NOAMMO: DEBUGNAME("EV_NOAMMO");// trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.noAmmoSound ); for (i = 0; i < CG_MaxSplitView(); i++) { if ( es->number == cg.snap->pss[i].playerNum ) { CG_OutOfAmmoChange(i); } } break; case EV_CHANGE_WEAPON: DEBUGNAME("EV_CHANGE_WEAPON"); trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.selectSound ); break; case EV_FIRE_WEAPON: DEBUGNAME("EV_FIRE_WEAPON"); CG_FireWeapon( cent ); break; case EV_USE_ITEM0:
开发者ID:mecwerks,项目名称:revamp,代码行数:67,
示例27: CG_EntityEvent//.........这里部分代码省略.........#endif CG_AddBufferedSound(cgs.media.yourTeamTookEnemyFlagSound); } } break; case GTS_REDOBELISK_ATTACKED: // Overload: red obelisk is being attacked if (cgs.clientinfo[cg.clientNum].team == TEAM_RED) { CG_AddBufferedSound(cgs.media.yourBaseIsUnderAttackSound); } break; case GTS_BLUEOBELISK_ATTACKED: // Overload: blue obelisk is being attacked if (cgs.clientinfo[cg.clientNum].team == TEAM_BLUE) { CG_AddBufferedSound(cgs.media.yourBaseIsUnderAttackSound); } break; case GTS_REDTEAM_SCORED: CG_AddBufferedSound(cgs.media.redScoredSound); break; case GTS_BLUETEAM_SCORED: CG_AddBufferedSound(cgs.media.blueScoredSound); break; case GTS_REDTEAM_TOOK_LEAD: CG_AddBufferedSound(cgs.media.redLeadsSound); break; case GTS_BLUETEAM_TOOK_LEAD: CG_AddBufferedSound(cgs.media.blueLeadsSound); break; case GTS_TEAMS_ARE_TIED: CG_AddBufferedSound(cgs.media.teamsTiedSound); break;#ifdef MISSIONPACK case GTS_KAMIKAZE: trap_S_StartLocalSound(cgs.media.kamikazeFarSound, CHAN_ANNOUNCER); break;#endif default: break; } break; } case EV_PAIN: // local player sounds are triggered in CG_CheckLocalSounds, // so ignore events on the player DEBUGNAME("EV_PAIN"); if (cent->currentState.number != cg.snap->ps.clientNum) { CG_PainEvent(cent, es->eventParm); } break; case EV_DEATH1: case EV_DEATH2: case EV_DEATH3: DEBUGNAME("EV_DEATHx"); if (clientNum == cg.predictedPlayerState.clientNum) { CG_ZoomReset_f(); } trap_S_StartSound(NULL, es->number, CHAN_VOICE, CG_CustomSound(es->number, va("*death%i.wav", event - EV_DEATH1 + 1))); break; case EV_OBITUARY: DEBUGNAME("EV_OBITUARY"); CG_Obituary(es);
开发者ID:bludshot,项目名称:alturt,代码行数:67,
注:本文中的trap_S_StartLocalSound函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ trap_S_StartSound函数代码示例 C++ trap_R_SetColor函数代码示例 |