Здравствуйте, гость Вход | Регистрация
Наши новости:
|
| Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
|---|---|---|---|---|---|
| 21.3.2011, 3:09 | Гранатой в голову | GrenadeTouchDmg Код #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> // COMMENT THIS LINE IF YOU DONT WANT TO USE LANG FILE AND SEE HUD MESSAGES #define HUD_MESSAGES new Float:g_flLastTouch[ 33 ]; new g_Pointer_FriendlyFire; new g_iMsg_DeathMsg; new g_iHookedDeathMsg; new g_Cvar_Enabled; new g_iMaxplayers; #define ERROR 0 #define HEGRENADE 1 #define FLASHBANG 2 #define SMOKENADE 3 new g_szGrenadeNames[ ][ ] = { "", // ERROR "weapon_hegrenade", "weapon_flashbang", "weapon_smokegrenade" }; public plugin_init() { register_plugin( "Grenade Touch Damage", "1.3", "xPaw" ); #if defined HUD_MESSAGES register_dictionary( "grenadetouchdmg.txt" ); #endif g_Cvar_Enabled = register_cvar( "grenade_touch_dmg", "1", FCVAR_SERVER ); g_iMaxplayers = get_maxplayers( ); g_iMsg_DeathMsg = get_user_msgid( "DeathMsg" ); if( cstrike_running( ) ) { g_Pointer_FriendlyFire = get_cvar_pointer( "mp_friendlyfire" ); RegisterHam( Ham_Touch, "grenade", "FwdHamTouch_Grenade" ); } else set_fail_state( "Only Counter-Strike Mod allowed!" ); } public MsgDeathMsg( ) { set_msg_arg_int( 3, ARG_BYTE, 1 ); set_msg_arg_string( 4, "grenade" ); return PLUGIN_CONTINUE; } public FwdHamTouch_Grenade( iEntity, iTouched ) { if( !get_pcvar_num( g_Cvar_Enabled ) ) return HAM_IGNORED; if( !( 1 <= iTouched <= g_iMaxplayers ) ) return HAM_IGNORED; static Float:flGmTime; flGmTime = get_gametime(); if( g_flLastTouch[iTouched] < flGmTime ) { new iOwner = pev( iEntity, pev_owner ); if( iOwner == iTouched ) return HAM_IGNORED; if( is_user_connected( iOwner ) ) { if( !get_pcvar_num( g_Pointer_FriendlyFire ) && ( get_user_team( iTouched ) == get_user_team( iOwner ) ) ) return HAM_IGNORED; if( pev( iTouched, pev_takedamage ) == DAMAGE_NO ) return HAM_IGNORED; new Float:flVelocity[ 3 ]; pev( iEntity, pev_velocity, flVelocity ); new Float:flSpeed = vector_length( flVelocity ); new Float:flDamage = ( flSpeed * 0.15 ) / 13.0; if( flSpeed > 100.0 ) { // anti grenade stuck bug damage fix g_iHookedDeathMsg = register_message( g_iMsg_DeathMsg, "MsgDeathMsg" ); new iType = GetGrenadeType( iEntity ); if( iType != ERROR ) set_pev( iEntity, pev_classname, g_szGrenadeNames[ iType ] ); ExecuteHamB( Ham_TakeDamage, iTouched, iEntity, iOwner, flDamage, DMG_GENERIC ); if( g_iHookedDeathMsg ) { unregister_message( g_iMsg_DeathMsg, g_iHookedDeathMsg ); g_iHookedDeathMsg = 0; } if( iType != ERROR ) set_pev( iEntity, pev_classname, "grenade" ); #if defined HUD_MESSAGES new iReceivedDamage = pev( iTouched, pev_dmg_take ); new szName[ 32 ], szNameOwner[ 32 ]; get_user_name( iTouched, szName, 31 ); get_user_name( iOwner, szNameOwner, 31 ); set_hudmessage( 250, 150, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.4, 4 ); if( !is_user_alive( iTouched ) ) { show_hudmessage( iOwner, "%L", iOwner, "GTD_KILLED", szName ); show_hudmessage( iTouched, "%L", iTouched, "GTD_KILLED2", szNameOwner ); } else { show_hudmessage( iOwner, "%L", iOwner, "GTD_MADEDMG", szName, iReceivedDamage ); show_hudmessage( iTouched, "%L", iTouched, "GTD_LOSTHP", szNameOwner, iReceivedDamage ); } #endif } } g_flLastTouch[iTouched] = flGmTime + 0.4; } return HAM_IGNORED; } stock GetGrenadeType( iEntity ) { if( !pev_valid( iEntity ) ) return ERROR; new szModel[ 32 ]; pev( iEntity, pev_model, szModel, charsmax( szModel ) ); if( szModel[ 7 ] != 'w' && szModel[ 8 ] != '_' ) return ERROR; switch( szModel[ 9 ] ) { case 'h': return HEGRENADE; case 'f': return FLASHBANG; case 's': return SMOKENADE; default : return ERROR; } return ERROR; } |
Teemz | ||