HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*
  2. ----------------------------------------------
  3.  
  4. Script: Jump Sound Blocker
  5. Author: hornet
  6. Version: 1.0.1
  7.  
  8. NOTE: This plugin was inspired by and based on a script written by "lazarev" / Juice"
  9. of the AlliedMods forums
  10.  
  11. ----------------------------------------------
  12. */
  13.  
  14. #include <amxmodx>
  15. #include <orpheu_stocks>
  16. #include <hlsdk_const>
  17.  
  18. #define PLUGIN "Jump Sound Blocker"
  19. #define VERSION "1.0.1"
  20. #define AUTHOR "hornet"
  21.  
  22. enum
  23. {
  24.  
  25. STEP_CONCRETE,
  26. STEP_METAL,
  27. STEP_DIRT,
  28. STEP_VENT,
  29. STEP_GRATE,
  30. STEP_TILE,
  31. STEP_SLOSH,
  32. STEP_WADE,
  33. STEP_LADDER,
  34. STEP_SNOW,
  35. STEP_GRASS
  36. }
  37.  
  38. new OrpheuStruct:g_ppmove;
  39.  
  40. new g_iBlockStep[ 33 ];
  41. new g_pBlockTeam;
  42.  
  43. public plugin_init()
  44. {
  45. register_plugin( PLUGIN, VERSION, AUTHOR );
  46.  
  47. OrpheuRegisterHook( OrpheuGetDLLFunction( "pfnPM_Move", "PM_Move" ), "OnPM_Move" );
  48. OrpheuRegisterHook( OrpheuGetFunction( "PM_PlayStepSound" ), "OnPM_PlayStepSound" );
  49.  
  50. g_pBlockTeam = register_cvar( "jsb_team", "0" );
  51.  
  52. server_cmd( "mp_footsteps 0" );
  53. }
  54.  
  55. public OrpheuHookReturn:OnPM_Move( OrpheuStruct:ppmove, server )
  56. {
  57. g_ppmove = ppmove;
  58.  
  59. new iTeam = get_pcvar_num( g_pBlockTeam );
  60. new iPlayer = OrpheuGetStructMember( ppmove, "player_index" ) + 1;
  61.  
  62. if( !iTeam || get_user_team( iPlayer ) == iTeam )
  63. {
  64. if( ( OrpheuGetStructMember( OrpheuStruct:OrpheuGetStructMember( ppmove, "cmd" ), "buttons" ) & IN_JUMP )
  65. &&( !( OrpheuGetStructMember( ppmove, "oldbuttons" ) & IN_JUMP ) )
  66. &&( OrpheuGetStructMember( ppmove, "onground" ) != -1 ) )
  67. g_iBlockStep[ iPlayer ] = 1;
  68. }
  69. }
  70.  
  71. public OrpheuHookReturn:OnPM_PlayStepSound( iStep, Float:flVol )
  72. {
  73. new iPlayer = OrpheuGetStructMember( g_ppmove, "player_index" ) + 1;
  74.  
  75. switch( g_iBlockStep[ iPlayer ] )
  76. {
  77. case 1:
  78. {
  79. g_iBlockStep[ iPlayer ] = 2;
  80. return OrpheuSupercede;
  81. }
  82.  
  83. case 2:
  84. {
  85. g_iBlockStep[ iPlayer ] = 0;
  86. return OrpheuSupercede;
  87. }
  88. }
  89.  
  90. new iRand = random_num( 0, 3 );
  91.  
  92. switch ( iStep )
  93. {
  94. case STEP_METAL:
  95. {
  96. switch( iRand )
  97. {
  98. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  99. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  100. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  101. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_metal4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  102. }
  103.  
  104. }
  105.  
  106. case STEP_DIRT:
  107. {
  108. switch( iRand )
  109. {
  110. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  111. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  112. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  113. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_dirt4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  114. }
  115. }
  116.  
  117. case STEP_VENT:
  118. {
  119. switch( iRand )
  120. {
  121. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  122. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  123. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  124. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_duct4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  125. }
  126. }
  127.  
  128. case STEP_GRATE:
  129. {
  130. switch( iRand )
  131. {
  132. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  133. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  134. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  135. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_grate4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  136. }
  137.  
  138. }
  139.  
  140. case STEP_TILE:
  141. {
  142. switch( iRand )
  143. {
  144. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  145. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  146. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  147. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_tile4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  148. }
  149. }
  150.  
  151. case STEP_SLOSH:
  152. {
  153. switch( iRand )
  154. {
  155. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  156. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  157. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  158. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_slosh4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  159. }
  160. }
  161.  
  162. case STEP_WADE:
  163. {
  164. switch( iRand )
  165. {
  166. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  167. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  168. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  169. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_wade4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  170. }
  171. }
  172.  
  173. case STEP_LADDER:
  174. {
  175. switch( iRand )
  176. {
  177. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  178. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  179. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  180. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_ladder4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  181. }
  182. }
  183.  
  184. default:
  185. {
  186. switch( iRand )
  187. {
  188. case 0: emit_sound( iPlayer, CHAN_BODY, "player/pl_step1.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  189. case 1: emit_sound( iPlayer, CHAN_BODY, "player/pl_step3.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  190. case 2: emit_sound( iPlayer, CHAN_BODY, "player/pl_step2.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  191. case 3: emit_sound( iPlayer, CHAN_BODY, "player/pl_step4.wav", flVol, ATTN_NORM, 0, PITCH_NORM );
  192. }
  193. }
  194. }
  195.  
  196. return OrpheuIgnored;
  197. }
  198.