HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4.  
  5. const GIB_ALWAYS = 2;
  6. const m_iTrain = 350;
  7.  
  8. new g_iMaxplayers;
  9. new g_iMsgDeathMsg;
  10.  
  11. public plugin_init( ) {
  12. register_plugin( "Vehicle Real Killer", "1.0", "xPaw" );
  13.  
  14. register_cvar( "vehicle_real_killer", "1.0", FCVAR_SERVER | FCVAR_SPONLY );
  15.  
  16. if( engfunc( EngFunc_FindEntityByString, -1, "classname", "func_vehicle" ) ) {
  17. g_iMaxplayers = get_maxplayers( );
  18. g_iMsgDeathMsg = get_user_msgid( "DeathMsg" );
  19.  
  20. register_message( g_iMsgDeathMsg, "MsgDeathMsg" );
  21.  
  22. RegisterHam( Ham_Killed, "player", "FwdHamPlayerKilled" );
  23. RegisterHam( Ham_Use, "func_vehicle", "FwdHamVehicleUse" );
  24. }
  25. }
  26.  
  27. public MsgDeathMsg( ) {
  28. new szWeapon[ 8 ];
  29. get_msg_arg_string( 4, szWeapon, 7 );
  30.  
  31. if( equal( szWeapon, "vehicle" ) )
  32. return PLUGIN_HANDLED;
  33.  
  34. return PLUGIN_CONTINUE;
  35. }
  36.  
  37. public FwdHamVehicleUse( iEntity, id, iActivator, iUseType, Float:flValue ) {
  38. if( !is_user_alive( id ) || iUseType != 2 || flValue != 1.0 )
  39. return HAM_IGNORED;
  40.  
  41. set_pev( iEntity, pev_iuser4, id );
  42.  
  43. return HAM_IGNORED;
  44. }
  45.  
  46. public FwdHamPlayerKilled( id, iAttacker, iShouldGib ) {
  47. if( 1 <= iAttacker <= g_iMaxplayers )
  48. return HAM_IGNORED;
  49.  
  50. if( pev_valid( iAttacker ) ) {
  51. new szClassname[ 32 ];
  52. pev( iAttacker, pev_classname, szClassname, charsmax( szClassname ) );
  53.  
  54. if( !equal( szClassname, "func_vehicle" ) )
  55. return HAM_IGNORED;
  56.  
  57. new iOwner = pev( iAttacker, pev_iuser4 );
  58.  
  59. if( !is_user_connected( iOwner ) || !get_pdata_int( iOwner, m_iTrain ) ) {
  60. SetHamParamInteger( 3, GIB_ALWAYS );
  61.  
  62. ShowDeathMessage( id, id );
  63.  
  64. return HAM_IGNORED;
  65. }
  66.  
  67. ExecuteHamB( Ham_Killed, id, iOwner, GIB_ALWAYS );
  68.  
  69. ShowDeathMessage( id, iOwner );
  70.  
  71. return HAM_SUPERCEDE;
  72. }
  73.  
  74. return HAM_IGNORED;
  75. }
  76.  
  77. ShowDeathMessage( iVictim, iKiller ) {
  78. message_begin( MSG_BROADCAST, g_iMsgDeathMsg );
  79. write_byte( iKiller );
  80. write_byte( iVictim );
  81. write_byte( 0 );
  82. write_string( "tracktrain" );
  83. message_end( );
  84. }