#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
const GIB_ALWAYS = 2;
const m_iTrain = 350;
new g_iMaxplayers;
new g_iMsgDeathMsg;
public plugin_init( ) {
register_plugin( "Vehicle Real Killer", "1.0", "xPaw" );
register_cvar( "vehicle_real_killer", "1.0", FCVAR_SERVER | FCVAR_SPONLY );
if( engfunc( EngFunc_FindEntityByString, -1, "classname", "func_vehicle" ) ) {
g_iMaxplayers = get_maxplayers( );
g_iMsgDeathMsg = get_user_msgid( "DeathMsg" );
register_message( g_iMsgDeathMsg, "MsgDeathMsg" );
RegisterHam( Ham_Killed, "player", "FwdHamPlayerKilled" );
RegisterHam( Ham_Use, "func_vehicle", "FwdHamVehicleUse" );
}
}
public MsgDeathMsg( ) {
new szWeapon[ 8 ];
get_msg_arg_string( 4, szWeapon, 7 );
if( equal( szWeapon, "vehicle" ) )
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public FwdHamVehicleUse( iEntity, id, iActivator, iUseType, Float:flValue ) {
if( !is_user_alive( id ) || iUseType != 2 || flValue != 1.0 )
return HAM_IGNORED;
set_pev( iEntity, pev_iuser4, id );
return HAM_IGNORED;
}
public FwdHamPlayerKilled( id, iAttacker, iShouldGib ) {
if( 1 <= iAttacker <= g_iMaxplayers )
return HAM_IGNORED;
if( pev_valid( iAttacker ) ) {
new szClassname[ 32 ];
pev( iAttacker, pev_classname, szClassname, charsmax( szClassname ) );
if( !equal( szClassname, "func_vehicle" ) )
return HAM_IGNORED;
new iOwner = pev( iAttacker, pev_iuser4 );
if( !is_user_connected( iOwner ) || !get_pdata_int( iOwner, m_iTrain ) ) {
SetHamParamInteger( 3, GIB_ALWAYS );
ShowDeathMessage( id, id );
return HAM_IGNORED;
}
ExecuteHamB( Ham_Killed, id, iOwner, GIB_ALWAYS );
ShowDeathMessage( id, iOwner );
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
ShowDeathMessage( iVictim, iKiller ) {
message_begin( MSG_BROADCAST, g_iMsgDeathMsg );
write_byte( iKiller );
write_byte( iVictim );
write_byte( 0 );
write_string( "tracktrain" );
message_end( );
}