HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include < amxmodx >
  2. #include < fakemeta >
  3. #include < hamsandwich >
  4.  
  5. #define VERSION "2.0"
  6.  
  7. const m_fBombStatus = 96;
  8. const m_usEvent = 114;
  9.  
  10. const fBombPlanted = 1 << 8;
  11. const fExploEvent = 1 << 0;
  12. const fSmokeEvent = 1 << 1;
  13.  
  14. new pCvar_TimeHe, pCvar_TimeFlash, pCvar_TimeSmoke;
  15. new HamHook: SmokeThink;
  16.  
  17. public plugin_init( )
  18. {
  19. register_plugin("Grenade explosion TIME",VERSION,"BboY GruN");
  20.  
  21. register_cvar( "Grenade_Explosion_Time",VERSION,FCVAR_SERVER | FCVAR_SPONLY );
  22. set_cvar_string( "Grenade_Explosion_Time", VERSION );
  23.  
  24. pCvar_TimeHe = register_cvar( "Grenade_TIME_HE", "3.0" );
  25. pCvar_TimeFlash = register_cvar( "Grenade_TIME_FL", "2.0" );
  26. pCvar_TimeSmoke = register_cvar( "Grenade_TIME_SK", "4.0" );
  27.  
  28. register_event( "HLTV", "roundBegin", "a", "1=0", "2=0" );
  29. register_forward( FM_SetModel, "Fw_NadeModel", 1 );
  30.  
  31. if( get_pcvar_float( pCvar_TimeSmoke ) > 0.0 )
  32. {
  33. SmokeThink = RegisterHam( Ham_Think, "grenade", "Fw_NadeThink" );
  34. }
  35.  
  36. roundBegin( );
  37. }
  38.  
  39. public roundBegin( )
  40. {
  41. if( get_pcvar_float( pCvar_TimeSmoke ) <= 0.0 )
  42. {
  43. if( SmokeThink )
  44. {
  45. DisableHamForward( SmokeThink );
  46. }
  47. }
  48. else
  49. {
  50. if( SmokeThink )
  51. {
  52. EnableHamForward( SmokeThink );
  53. }
  54. else
  55. {
  56. SmokeThink = RegisterHam( Ham_Think, "grenade", "Fw_NadeThink" );
  57. }
  58. }
  59. }
  60.  
  61. public Fw_NadeModel( const nade, const NadeModel[ ] )
  62. {
  63. if( pev_valid( nade ) )
  64. {
  65. static nade_ID;
  66. nade_ID = grenade_type( nade, 1 );
  67.  
  68. if( nade_ID ) // nem HE - FLASH - SMOKE gránát
  69. {
  70. new Float: nadeCvar;
  71.  
  72. switch( nade_ID )
  73. {
  74. case CSW_HEGRENADE:
  75. {
  76. nadeCvar = get_pcvar_float( pCvar_TimeHe );
  77.  
  78. if( nadeCvar )
  79. {
  80. set_pev( nade, pev_dmgtime, get_gametime( ) + nadeCvar )
  81. }
  82. }
  83. case CSW_FLASHBANG:
  84. {
  85. nadeCvar = get_pcvar_float( pCvar_TimeFlash );
  86.  
  87. if( nadeCvar )
  88. {
  89. set_pev( nade, pev_dmgtime, get_gametime( ) + nadeCvar )
  90. }
  91. }
  92. case CSW_SMOKEGRENADE:
  93. {
  94. nadeCvar = get_pcvar_float( pCvar_TimeSmoke );
  95.  
  96. if( nadeCvar )
  97. {
  98. set_pev( nade, pev_dmgtime, get_gametime( ) + nadeCvar )
  99. }
  100. }
  101. }
  102. }
  103. }
  104. }
  105.  
  106.  
  107. public Fw_NadeThink( const nade )
  108. {
  109. if( pev_valid( nade ) && grenade_type( nade ) == CSW_SMOKEGRENADE )
  110. {
  111. set_pev( nade, pev_flags, FL_ONGROUND )
  112. }
  113. }
  114. stock grenade_type( const index, const checkClassName = 0 )
  115. {
  116. static classname[ 9 ]
  117.  
  118. if( checkClassName )
  119. {
  120. pev( index, pev_classname, classname, 8 )
  121. if ( !equal( classname, "grenade") )
  122. {
  123. return 0;
  124. }
  125. }
  126.  
  127. if( get_pdata_int( index, m_fBombStatus ) & fBombPlanted )
  128. {
  129. return 0;
  130. }
  131.  
  132. static bits; bits = get_pdata_int( index, m_usEvent )
  133.  
  134. if ( bits & fExploEvent )
  135. {
  136. return CSW_HEGRENADE;
  137. }
  138.  
  139. else if( !bits )
  140. {
  141. return CSW_FLASHBANG;
  142. }
  143.  
  144. else if( bits & fSmokeEvent )
  145. {
  146. return CSW_SMOKEGRENADE;
  147. }
  148.  
  149. return 0;
  150. }
  151. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  152. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  153. */
  154.