#include #include #include #include new const PLUGIN[ ] = "[ZP] Addon: Adrenaline"; new const VERSION[ ] = "0.1"; new const AUTHOR[ ] = "Bos98"; const MAX_CLIENTS = 32; const ENERGY_MAX = 5; const Float: ENERGY_TIME_REMOVE = 15.0; new const g_ClassName[ ] = "ZombiesBox"; new const ZombiesBox_Model[ ] = "models/w_medkit.mdl"; new const ZombiesBox_Sound[ ] = "weapons/adrenaline.wav"; new const Float:DMGMULTI[ ] = { 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, }; new Float:g_VecOrigin[ MAX_CLIENTS + 1 ][ 3 ]; new g_DamageLevel[ MAX_CLIENTS + 1 ]; new g_Entity; public plugin_precache( ) { precache_model( ZombiesBox_Model ); precache_sound( ZombiesBox_Sound ); } public plugin_init( ) { register_plugin ( PLUGIN, VERSION, AUTHOR ); RegisterHam( Ham_Killed, "player", "CBasePlayer__Killed_Post", .Post = true ); RegisterHam( Ham_TakeDamage, "player", "CBasePlayer__TakeDamage_Pre", .Post = false ); RegisterHam( Ham_Touch, "info_target", "CBaseEntity__Touch_Pre", .Post = false ); } public client_disconnect( pPlayer ) { g_DamageLevel[ pPlayer ] = false; } public zp_user_infected_post( pPlayer, pInfector, pNemesis ) { g_DamageLevel[ pPlayer ] = false; } public zp_user_humanized_post ( pPlayer, pSurvivor ) { g_DamageLevel[ pPlayer ] = false; } public CBasePlayer__Killed_Post( pevVictim ) { if( UTIL_get_user_human( pevVictim ) ) { g_DamageLevel[ pevVictim ] = false; return HAM_IGNORED; } pev( pevVictim, pev_origin, g_VecOrigin[ pevVictim ] ); CreateBox( g_VecOrigin[ pevVictim ] ); return HAM_IGNORED; } public CBaseEntity__Touch_Pre( pEntity , pPlayer ) { if( !pev_valid( pEntity ) || !is_user_alive( pPlayer ) || !UTIL_get_user_human( pPlayer ) ) { return HAM_IGNORED; } static zsClassname[ 32 ]; pev( pEntity, pev_classname, zsClassname, charsmax( zsClassname ) ); if( !equal( zsClassname, g_ClassName ) ) { return HAM_IGNORED; } if( g_DamageLevel[ pPlayer ] >= ENERGY_MAX ) { return HAM_IGNORED; } g_DamageLevel[ pPlayer ]++ engfunc( EngFunc_EmitSound, pPlayer, CHAN_ITEM, ZombiesBox_Sound, 1.0, ATTN_NORM, 0, PITCH_NORM); engfunc( EngFunc_RemoveEntity , pEntity ); return HAM_IGNORED; } public CBasePlayer__TakeDamage_Pre( pevVictim, pevInflictor, pevAttacker, Float:flDamage, bitDamageType ) { if( !pevAttacker || pevVictim == pevAttacker ) { return HAM_IGNORED; } if( !UTIL_get_user_human( pevAttacker ) ) { return HAM_IGNORED; } SetHamParamFloat( 4, flDamage * DMGMULTI [ g_DamageLevel[ pevAttacker ] ] ); return HAM_IGNORED; } public CreateBox( Float:vOrigin[ 3 ] ) { g_Entity = engfunc( EngFunc_CreateNamedEntity , engfunc( EngFunc_AllocString,"info_target" ) ); if( !pev_valid( g_Entity ) ) { return; } set_pev( g_Entity, pev_classname, g_ClassName ); set_pev( g_Entity, pev_model, ZombiesBox_Model ); engfunc( EngFunc_SetModel, g_Entity, ZombiesBox_Model ); engfunc( EngFunc_SetSize, g_Entity, Float:{ -3.0, -3.0, -3.0}, Float:{ 3.0, 3.0, 3.0 }); engfunc( EngFunc_SetOrigin, g_Entity, vOrigin ); set_pev( g_Entity, pev_solid, SOLID_BBOX); set_pev( g_Entity, pev_movetype, MOVETYPE_TOSS); set_pev( g_Entity, pev_nextthink, get_gametime() + 0.2); set_task( ENERGY_TIME_REMOVE , "Ctask__RemoveEntity" ) } public Ctask__RemoveEntity( ) { if( pev_valid( g_Entity ) ) engfunc( EngFunc_RemoveEntity , g_Entity ); } stock UTIL_get_user_human( pPlayer ) { return ( !zp_get_user_zombie( pPlayer ) && !zp_get_user_nemesis( pPlayer ) && !zp_get_user_survivor( pPlayer ) ) } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par } */