From 28e55641c92bb774cffb9b20a7a4ce08f96d147c Mon Sep 17 00:00:00 2001 From: flowtron Date: Sat, 11 Apr 2009 11:23:39 +0000 Subject: [PATCH] hitsound usage git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@4323 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- config/sounds.cfg | 181 +++++++++++++++++++------------------- source/src/clientgame.cpp | 13 +++ source/src/sound.h | 1 + source/src/weapon.cpp | 8 ++ 4 files changed, 113 insertions(+), 90 deletions(-) diff --git a/config/sounds.cfg b/config/sounds.cfg index c612ceaa..6c5224fb 100755 --- a/config/sounds.cfg +++ b/config/sounds.cfg @@ -4,95 +4,96 @@ // Files listed in here can be either *.wav or *.ogg // Filename extensions do not need to be listed. -registersound "player/jump" 80 // 0 - S_JUMP -registersound "player/step" 90 0 24 // 1 - S_SOFTLAND -registersound "player/land" 95 0 24 // 2 - S_HARDLAND -registersound "weapon/ric1" // 3 - S_BULLETAIR1 -registersound "weapon/ric2" // 4 - S_BULLETAIR2 -registersound "weapon/ric3" // 5 - S_BULLETHIT -registersound "weapon/waterimpact" // 6 - S_BULLETWATERHIT -registersound "weapon/knife" // 7 - S_KNIFE -registersound "weapon/usp" // 8 - S_PISTOL -registersound "weapon/pistol_reload" // 9 - S_RPISTOL -registersound "weapon/shotgun" // 10 - S_SHOTGUN -registersound "weapon/shotgun_reload" // 11 - S_RSHOTGUN -registersound "weapon/sub" // 12 - S_SUBGUN -registersound "weapon/sub_reload" // 13 - S_RSUBGUN -registersound "weapon/sniper" // 14 - S_SNIPER -registersound "weapon/sniper_reload" // 15 - S_RSNIPER -registersound "weapon/auto" // 16 - S_ASSAULT -registersound "weapon/auto_reload" // 17 - S_RASSAULT -registersound "misc/pickup_ammo_clip" // 18 - S_ITEMAMMO -registersound "misc/pickup_health" // 19 - S_ITEMHEALTH -registersound "misc/pickup_armour" // 20 - S_ITEMARMOUR -registersound "misc/tick9" // 21 - S_ITEMPUP -registersound "weapon/clip_empty" // 22 - S_NOAMMO -registersound "misc/tick11" // 23 - S_PUPOUT -registersound "player/pain1" // 24 - S_PAIN1 -registersound "player/pain2" // 25 - S_PAIN2 -registersound "player/pain3" // 26 - S_PAIN3 -registersound "player/pain4" // 27 - S_PAIN4 -registersound "player/pain5" // 28 - S_PAIN5 -registersound "player/pain6" // 29 - S_PAIN6 -registersound "player/die1" // 30 - S_DIE1 -registersound "player/die2" // 31 - S_DIE2 -registersound "weapon/grenade_exp" // 32 - S_FEXPLODE -registersound "player/splash1" // 33 - S_SPLASH1 -registersound "player/splash2" // 34 - S_SPLASH2 -registersound "ctf/flagdrop" // 35 - S_FLAGDROP -registersound "ctf/flagpickup" // 36 - S_FLAGPICKUP -registersound "ctf/flagreturn" // 37 - S_FLAGRETURN -registersound "ctf/flagscore" // 38 - S_FLAGSCORE -registersound "weapon/grenade_pull" // 39 - S_GRENADEPULL -registersound "weapon/grenade_throw" // 40 - S_GRENADETHROW -registersound "weapon/grenade_bounce1" // 41 - S_GRENADEBOUNCE1 -registersound "weapon/grenade_bounce2" // 42 - S_GRENADEBOUNCE2 -registersound "weapon/pistol_akreload" // 43 - S_RAKIMBO -registersound "misc/change_gun" // 44 - S_GUNCHANGE -registersound "player/gib" // 45 - S_GIB -registersound "misc/headshot" 10 // 46 - S_HEADSHOT -registersound "misc/vote/vote_call" // 47 - S_CALLVOTE -registersound "misc/vote/vote_pass" // 48 - S_VOTEPASS -registersound "misc/vote/vote_fail" // 49 - S_VOTEFAIL -registersound "player/footsteps" 40 1 20 // 50 - S_FOOTSTEPS -registersound "player/crouch" 40 1 10 // 51 - S_FOOTSTEPSCROUCH -registersound "player/watersteps" 40 1 20 // 52 - S_WATERFOOTSTEPS -registersound "player/watercrouch" 40 1 10 // 53 - S_WATERFOOTSTEPSCROUCH -registersound "player/crouch_in" 85 0 14 // 54 - S_CROUCH -registersound "player/crouch_out" 75 0 14 // 55 - S_UNCROUCH -registersound "misc/menu_click1" // 56 - S_MENUSELECT -registersound "misc/menu_click2" // 57 - S_MENUENTER -registersound "player/underwater" // 58 - S_UNDERWATER -registersound "misc/tinnitus" 2 // 59 - S_TINNITUS +registersound "player/jump" 80 // 0 - S_JUMP +registersound "player/step" 90 0 24 // 1 - S_SOFTLAND +registersound "player/land" 95 0 24 // 2 - S_HARDLAND +registersound "weapon/ric1" // 3 - S_BULLETAIR1 +registersound "weapon/ric2" // 4 - S_BULLETAIR2 +registersound "weapon/ric3" // 5 - S_BULLETHIT +registersound "weapon/waterimpact" // 6 - S_BULLETWATERHIT +registersound "weapon/knife" // 7 - S_KNIFE +registersound "weapon/usp" // 8 - S_PISTOL +registersound "weapon/pistol_reload" // 9 - S_RPISTOL +registersound "weapon/shotgun" // 10 - S_SHOTGUN +registersound "weapon/shotgun_reload" // 11 - S_RSHOTGUN +registersound "weapon/sub" // 12 - S_SUBGUN +registersound "weapon/sub_reload" // 13 - S_RSUBGUN +registersound "weapon/sniper" // 14 - S_SNIPER +registersound "weapon/sniper_reload" // 15 - S_RSNIPER +registersound "weapon/auto" // 16 - S_ASSAULT +registersound "weapon/auto_reload" // 17 - S_RASSAULT +registersound "misc/pickup_ammo_clip" // 18 - S_ITEMAMMO +registersound "misc/pickup_health" // 19 - S_ITEMHEALTH +registersound "misc/pickup_armour" // 20 - S_ITEMARMOUR +registersound "misc/tick9" // 21 - S_ITEMPUP +registersound "weapon/clip_empty" // 22 - S_NOAMMO +registersound "misc/tick11" // 23 - S_PUPOUT +registersound "player/pain1" // 24 - S_PAIN1 +registersound "player/pain2" // 25 - S_PAIN2 +registersound "player/pain3" // 26 - S_PAIN3 +registersound "player/pain4" // 27 - S_PAIN4 +registersound "player/pain5" // 28 - S_PAIN5 +registersound "player/pain6" // 29 - S_PAIN6 +registersound "player/die1" // 30 - S_DIE1 +registersound "player/die2" // 31 - S_DIE2 +registersound "weapon/grenade_exp" // 32 - S_FEXPLODE +registersound "player/splash1" // 33 - S_SPLASH1 +registersound "player/splash2" // 34 - S_SPLASH2 +registersound "ctf/flagdrop" // 35 - S_FLAGDROP +registersound "ctf/flagpickup" // 36 - S_FLAGPICKUP +registersound "ctf/flagreturn" // 37 - S_FLAGRETURN +registersound "ctf/flagscore" // 38 - S_FLAGSCORE +registersound "weapon/grenade_pull" // 39 - S_GRENADEPULL +registersound "weapon/grenade_throw" // 40 - S_GRENADETHROW +registersound "weapon/grenade_bounce1" // 41 - S_GRENADEBOUNCE1 +registersound "weapon/grenade_bounce2" // 42 - S_GRENADEBOUNCE2 +registersound "weapon/pistol_akreload" // 43 - S_RAKIMBO +registersound "misc/change_gun" // 44 - S_GUNCHANGE +registersound "misc/impact_t" // 45 - S_HITSOUND +registersound "player/gib" // 46 - S_GIB +registersound "misc/headshot" 10 // 47 - S_HEADSHOT +registersound "misc/vote/vote_call" // 48 - S_CALLVOTE +registersound "misc/vote/vote_pass" // 49 - S_VOTEPASS +registersound "misc/vote/vote_fail" // 50 - S_VOTEFAIL +registersound "player/footsteps" 40 1 20 // 51 - S_FOOTSTEPS +registersound "player/crouch" 40 1 10 // 52 - S_FOOTSTEPSCROUCH +registersound "player/watersteps" 40 1 20 // 53 - S_WATERFOOTSTEPS +registersound "player/watercrouch" 40 1 10// 54 - S_WATERFOOTSTEPSCROUCH +registersound "player/crouch_in" 85 0 14 // 55 - S_CROUCH +registersound "player/crouch_out" 75 0 14 // 56 - S_UNCROUCH +registersound "misc/menu_click1" // 57 - S_MENUSELECT +registersound "misc/menu_click2" // 58 - S_MENUENTER +registersound "player/underwater" // 59 - S_UNDERWATER +registersound "misc/tinnitus" 2 // 60 - S_TINNITUS - // In-game voice coms -registersound "voicecom/affirmative" // 60 -registersound "voicecom/allrightsir" // 61 -registersound "voicecom/comeonmove" // 62 -registersound "voicecom/cominginwiththeflag" // 63 -registersound "voicecom/coverme" // 64 -registersound "voicecom/defendtheflag" // 65 -registersound "voicecom/enemydown" // 66 -registersound "voicecom/gogetemboys" // 67 -registersound "voicecom/goodjobteam" // 68 -registersound "voicecom/igotone" // 69 -registersound "voicecom/imadecontact" // 70 -registersound "voicecom/imattacking" // 71 -registersound "voicecom/imondefense" // 72 -registersound "voicecom/imonyourteamman" // 73 -registersound "voicecom/negative" // 74 -registersound "voicecom/nocando" // 75 -registersound "voicecom/recovertheflag" // 76 -registersound "voicecom/sorry" // 77 -registersound "voicecom/spreadout" // 78 -registersound "voicecom/stayhere" // 79 -registersound "voicecom/staytogether" // 80 -registersound "voicecom/theresnowaysir" // 81 -registersound "voicecom/wedidit" // 82 -registersound "voicecom/yes" // 83 -registersound "voicecom/niceshot" // 84 + // In-game voice coms +registersound "voicecom/affirmative" // 61 +registersound "voicecom/allrightsir" // 62 +registersound "voicecom/comeonmove" // 63 +registersound "voicecom/cominginwiththeflag" // 64 +registersound "voicecom/coverme" // 65 +registersound "voicecom/defendtheflag" // 66 +registersound "voicecom/enemydown" // 67 +registersound "voicecom/gogetemboys" // 68 +registersound "voicecom/goodjobteam" // 69 +registersound "voicecom/igotone" // 70 +registersound "voicecom/imadecontact" // 71 +registersound "voicecom/imattacking" // 72 +registersound "voicecom/imondefense" // 73 +registersound "voicecom/imonyourteamman" // 74 +registersound "voicecom/negative" // 75 +registersound "voicecom/nocando" // 76 +registersound "voicecom/recovertheflag" // 77 +registersound "voicecom/sorry" // 78 +registersound "voicecom/spreadout" // 79 +registersound "voicecom/stayhere" // 80 +registersound "voicecom/staytogether" // 81 +registersound "voicecom/theresnowaysir" // 82 +registersound "voicecom/wedidit" // 83 +registersound "voicecom/yes" // 84 +registersound "voicecom/niceshot" // 85 - // Music -registermusic "pingpong/03-pp-kamikadze" // M_FLAGGRAB -registermusic "pingpong/08-pp-headshot" // M_LASTMINUTE1 -registermusic "ac" // M_LASTMINUTE2 + // Music +registermusic "pingpong/03-pp-kamikadze" // M_FLAGGRAB +registermusic "pingpong/08-pp-headshot" // M_LASTMINUTE1 +registermusic "ac" // M_LASTMINUTE2 diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index e824f794..868dee24 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -24,6 +24,7 @@ playerent *player1 = newplayerent(); // our client vector players; // other clients int lastmillis = 0, totalmillis = 0; +int lasthit = 0; int curtime = 0; string clientmap; @@ -482,6 +483,7 @@ void respawnself() { showscores(false); setscope(false); + lasthit = 0; spawnplayer(player1); player1->lifesequence++; player1->weaponswitch(player1->primweap); @@ -511,6 +513,8 @@ bool tryrespawn() return false; } +VARP(hitsound, 0, 0, 1); + // damage arriving from the network, monsters, yourself, all ends up here. void dodamage(int damage, playerent *pl, playerent *actor, bool gib, bool local) @@ -518,6 +522,14 @@ void dodamage(int damage, playerent *pl, playerent *actor, bool gib, bool local) if(pl->state != CS_ALIVE || intermission) return; pl->respawnoffset = pl->lastpain = lastmillis; + + playerent *h = local ? player1 : updatefollowplayer(0); + if(actor==h && pl!=actor) + { + if(hitsound && lasthit != lastmillis) audiomgr.playsound(S_HITSOUND); + lasthit = lastmillis; + } + if(local) damage = pl->dodamage(damage); else if(actor==player1) return; @@ -718,6 +730,7 @@ void startmap(const char *name, bool reset) // called just after a map load preparectf(!m_flags); suicided = -1; spawncycle = -1; + lasthit = 0; if(m_valid(gamemode) && !m_mp(gamemode)) respawnself(); else findplayerstart(player1); diff --git a/source/src/sound.h b/source/src/sound.h index 834f897a..876b4a4c 100644 --- a/source/src/sound.h +++ b/source/src/sound.h @@ -21,6 +21,7 @@ enum S_FLAGDROP, S_FLAGPICKUP, S_FLAGRETURN, S_FLAGSCORE, S_GRENADEPULL, S_GRENADETHROW, S_GRENADEBOUNCE1, S_GRENADEBOUNCE2, S_RAKIMBO, S_GUNCHANGE, + S_HITSOUND, S_GIB, S_HEADSHOT, S_CALLVOTE, S_VOTEPASS, S_VOTEFAIL, S_FOOTSTEPS, S_FOOTSTEPSCROUCH, S_WATERFOOTSTEPS, S_WATERFOOTSTEPSCROUCH, diff --git a/source/src/weapon.cpp b/source/src/weapon.cpp index 734359e5..05faec6b 100644 --- a/source/src/weapon.cpp +++ b/source/src/weapon.cpp @@ -312,6 +312,14 @@ void hit(int damage, playerent *d, playerent *at, const vec &vel, int gun, bool { if(d==player1 || d->type==ENT_BOT || !m_mp(gamemode)) d->hitpush(damage, vel, at, gun); + if(at==player1 && d!=player1) + { + extern int hitsound; + extern int lasthit; + if(hitsound && lasthit != lastmillis) audiomgr.playsound(S_HITSOUND); + lasthit = lastmillis; + } + if(!m_mp(gamemode)) dodamage(damage, d, at, gib); else {