HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. //#define USE_AMX
  2.  
  3. #if defined USE_AMX
  4. #include <amxmod>
  5. #include <VexdUM>
  6. #else
  7. #include <amxmodx>
  8. #include <engine>
  9. #endif
  10.  
  11. new gMsgScreenShake , gMsgScreenFade;
  12.  
  13. #define CVAR_STATUS "he_damage_effect"
  14.  
  15. public plugin_init() {
  16. register_plugin("HE damage effect" , "0.2" , "v3x");
  17. register_event("Damage" , "event_Damage" , "b" , "2>0");
  18. register_cvar(CVAR_STATUS , "1");
  19. gMsgScreenShake = get_user_msgid("ScreenShake");
  20. gMsgScreenFade = get_user_msgid("ScreenFade");
  21. }
  22.  
  23. #if defined USE_AMX
  24. #define DEFAULT_VOLUME 0.8
  25. #endif
  26.  
  27. #define PA_LOW 25.0
  28. #define PA_HIGH 50.0
  29.  
  30. #if !defined USE_AMX
  31. new Float:gVolume[33];
  32.  
  33. public client_connect(id) {
  34. if(!is_user_bot(id)) {
  35. query_client_cvar(id , "volume" , "cvar_result");
  36. }
  37. }
  38.  
  39. public cvar_result(id, const cvar[] , const value[]) {
  40. gVolume[id] = str_to_float(value);
  41. }
  42. #endif
  43.  
  44. public event_Damage(id) {
  45. if(get_cvar_num(CVAR_STATUS) <= 0
  46. || !is_user_connected(id)
  47. || !is_user_alive(id)
  48. || is_user_bot(id)) return;
  49. new iWeapID, attacker = get_user_attacker(id , iWeapID);
  50. if(!is_user_connected(attacker)) return;
  51. if(iWeapID == 4) {
  52. client_cmd(id , "volume 0");
  53. set_task(0.5 , "volume_up_1" , id);
  54. new Float:fVec[3];
  55. fVec[0] = random_float(PA_LOW , PA_HIGH);
  56. fVec[1] = random_float(PA_LOW , PA_HIGH);
  57. fVec[2] = random_float(PA_LOW , PA_HIGH);
  58. entity_set_vector(id , EV_VEC_punchangle , fVec);
  59. message_begin(MSG_ONE , gMsgScreenShake , {0,0,0} ,id)
  60. write_short( 1<<14 );
  61. write_short( 1<<14 );
  62. write_short( 1<<14 );
  63. message_end();
  64.  
  65. message_begin(MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id);
  66. write_short( 1<<10 );
  67. write_short( 1<<10 );
  68. write_short( 1<<12 );
  69. write_byte( 225 );
  70. write_byte( 0 );
  71. write_byte( 0 );
  72. write_byte( 125 );
  73. message_end();
  74. }
  75. }
  76.  
  77. public volume_up_1(id) {
  78. client_cmd(id , "volume 0.1");
  79. set_task(0.2 , "volume_up_2" , id);
  80. }
  81.  
  82. public volume_up_2(id) {
  83. client_cmd(id , "volume 0.2");
  84. set_task(0.2 , "volume_up_3" , id);
  85. }
  86.  
  87. public volume_up_3(id) {
  88. client_cmd(id , "volume 0.3");
  89. set_task(0.2 , "volume_up_4" , id);
  90. }
  91.  
  92. public volume_up_4(id) {
  93. client_cmd(id , "volume 0.4");
  94. set_task(0.2 , "volume_up_5" , id);
  95. }
  96.  
  97. public volume_up_5(id) {
  98. client_cmd(id , "volume 0.5");
  99. set_task(0.2 , "volume_up_6" , id);
  100. }
  101.  
  102. public volume_up_6(id) {
  103. client_cmd(id , "volume 0.6");
  104. set_task(0.2 , "volume_up_7" , id);
  105. }
  106.  
  107. public volume_up_7(id) {
  108. client_cmd(id , "volume 0.7");
  109. set_task(0.2 , "volume_up_8" , id);
  110. }
  111.  
  112. public volume_up_8(id) {
  113. #if !defined USE_AMX
  114. client_cmd(id , "volume %f" , gVolume[id]);
  115. #else
  116. client_cmd(id , "volume %f" , float(DEFAULT_VOLUME));
  117. #endif
  118. }