Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Team Flash Blocker
- * Written by GwynBleidD
- * based on Connor's Team Flash Punish v1.1.1
- */
- #include <amxmodx>
- #include <cstrike>
- #include <fakemeta>
- #include <hamsandwich>
- #define VERSION "1.0"
- const MAX_PLAYERS = 32
- new g_iMaxPlayers
- #define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers )
- new g_bitGonnaExplode[64]
- #define SetGrenadeExplode(%1) g_bitGonnaExplode[%1>>5] |= 1<<(%1 & 31)
- #define ClearGrenadeExplode(%1) g_bitGonnaExplode[%1>>5] &= ~( 1 << (%1 & 31) )
- #define WillGrenadeExplode(%1) g_bitGonnaExplode[%1>>5] & 1<<(%1 & 31)
- new Float:g_flCurrentGameTime, g_iCurrentFlasher
- new g_msgScreenFade;
- public plugin_init()
- {
- register_plugin("Team Flash Blocker", VERSION, "GwynBleidD")
- register_event("ScreenFade", "Event_ScreenFade", "be", "4=255", "5=255", "6=255", "7>199")
- RegisterHam(Ham_Think, "grenade", "CGrenade_Think")
- g_iMaxPlayers = get_maxplayers()
- g_msgScreenFade = get_user_msgid("ScreenFade")
- }
- public CGrenade_Think( iEnt )
- {
- static Float:flGameTime, Float:flDmgTime, iOwner
- flGameTime = get_gametime()
- pev(iEnt, pev_dmgtime, flDmgTime)
- const XO_GRENADE = 5
- if( flDmgTime <= flGameTime
- // VEN's way on how to detect grenade type
- // http://forums.alliedmods.net/showthread.php?p=401189#post401189
- && get_pdata_int(iEnt, 114, XO_GRENADE) == 0 // has a bit when is HE or SMOKE
- && !(get_pdata_int(iEnt, 96, XO_GRENADE) & (1<<8)) // has this bit when is c4
- && IsPlayer( (iOwner = pev(iEnt, pev_owner)) ) ) // if no owner (3rd 'after dmgtime' frame), grenade gonna be removed from world
- {
- if( ~WillGrenadeExplode(iEnt) ) // grenade gonna explode on next think
- {
- SetGrenadeExplode( iEnt )
- }
- else
- {
- ClearGrenadeExplode( iEnt )
- g_flCurrentGameTime = flGameTime
- g_iCurrentFlasher = iOwner
- }
- }
- }
- public Event_ScreenFade(id)
- {
- new Float:flGameTime = get_gametime()
- if( id != g_iCurrentFlasher
- && g_flCurrentGameTime == flGameTime
- && cs_get_user_team(id) == cs_get_user_team(g_iCurrentFlasher)
- && is_user_connected(id)) // edit by Filip, bez tego wyskakiwały error logi
- {
- message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id)
- write_short(1)
- write_short(1)
- write_short(1)
- write_byte(0)
- write_byte(0)
- write_byte(0)
- write_byte(255)
- message_end()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement