Advertisement
ejdrienxd

Untitled

Jan 2nd, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. /**
  2. * Team Flash Blocker
  3. * Written by GwynBleidD
  4. * based on Connor's Team Flash Punish v1.1.1
  5. */
  6.  
  7. #include <amxmodx>
  8. #include <cstrike>
  9. #include <fakemeta>
  10. #include <hamsandwich>
  11.  
  12. #define VERSION "1.0"
  13.  
  14. const MAX_PLAYERS = 32
  15.  
  16. new g_iMaxPlayers
  17. #define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers )
  18.  
  19. new g_bitGonnaExplode[64]
  20. #define SetGrenadeExplode(%1) g_bitGonnaExplode[%1>>5] |= 1<<(%1 & 31)
  21. #define ClearGrenadeExplode(%1) g_bitGonnaExplode[%1>>5] &= ~( 1 << (%1 & 31) )
  22. #define WillGrenadeExplode(%1) g_bitGonnaExplode[%1>>5] & 1<<(%1 & 31)
  23.  
  24. new Float:g_flCurrentGameTime, g_iCurrentFlasher
  25.  
  26. new g_msgScreenFade;
  27.  
  28. public plugin_init()
  29. {
  30. register_plugin("Team Flash Blocker", VERSION, "GwynBleidD")
  31. register_event("ScreenFade", "Event_ScreenFade", "be", "4=255", "5=255", "6=255", "7>199")
  32. RegisterHam(Ham_Think, "grenade", "CGrenade_Think")
  33.  
  34. g_iMaxPlayers = get_maxplayers()
  35. g_msgScreenFade = get_user_msgid("ScreenFade")
  36. }
  37.  
  38. public CGrenade_Think( iEnt )
  39. {
  40. static Float:flGameTime, Float:flDmgTime, iOwner
  41. flGameTime = get_gametime()
  42. pev(iEnt, pev_dmgtime, flDmgTime)
  43. const XO_GRENADE = 5
  44. if( flDmgTime <= flGameTime
  45. // VEN's way on how to detect grenade type
  46. // http://forums.alliedmods.net/showthread.php?p=401189#post401189
  47. && get_pdata_int(iEnt, 114, XO_GRENADE) == 0 // has a bit when is HE or SMOKE
  48. && !(get_pdata_int(iEnt, 96, XO_GRENADE) & (1<<8)) // has this bit when is c4
  49. && IsPlayer( (iOwner = pev(iEnt, pev_owner)) ) ) // if no owner (3rd 'after dmgtime' frame), grenade gonna be removed from world
  50. {
  51. if( ~WillGrenadeExplode(iEnt) ) // grenade gonna explode on next think
  52. {
  53. SetGrenadeExplode( iEnt )
  54. }
  55. else
  56. {
  57. ClearGrenadeExplode( iEnt )
  58. g_flCurrentGameTime = flGameTime
  59. g_iCurrentFlasher = iOwner
  60. }
  61. }
  62. }
  63.  
  64. public Event_ScreenFade(id)
  65. {
  66. new Float:flGameTime = get_gametime()
  67. if( id != g_iCurrentFlasher
  68. && g_flCurrentGameTime == flGameTime
  69. && cs_get_user_team(id) == cs_get_user_team(g_iCurrentFlasher)
  70. && is_user_connected(id)) // edit by Filip, bez tego wyskakiwały error logi
  71. {
  72. message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id)
  73. write_short(1)
  74. write_short(1)
  75. write_short(1)
  76. write_byte(0)
  77. write_byte(0)
  78. write_byte(0)
  79. write_byte(255)
  80. message_end()
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement