HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*
  2. - Disconnect Reason -
  3. by bugsy
  4.   Magyarositas by: Bence98007
  5. */
  6.  
  7. #include <amxmodx>
  8. #include <amxmisc>
  9. #include <orpheu>
  10.  
  11. new const Version[] = "0.5";
  12.  
  13. enum ReasonCodes
  14. {
  15. DR_TIMEDOUT,
  16. DR_DROPPED,
  17. DR_KICKED,
  18. DR_OTHER
  19. }
  20. new const DisconnectMessages[ ReasonCodes ][] =
  21. {
  22. "NET kapcsolat nem valaszolt",
  23. "Lekapcsolodott",
  24. "Kicked",
  25. ""
  26. };
  27. enum DisconnectData
  28. {
  29. ReasonCode,
  30. ReasonMessage[ 32 ]
  31. }
  32.  
  33. new g_pEnabled , bool:g_bEnabled , g_szName[ 33 ][ 33 ] , g_DisconnectInfo[ DisconnectData ] , g_iFwdDisconnect;
  34.  
  35. public plugin_init()
  36. {
  37. register_plugin( "Disconnect Reason" , Version , "bugsy" );
  38.  
  39. g_pEnabled = register_cvar( "dr_enabled" , "1" );
  40. register_cvar( "disconnectreason_version" , Version , ( FCVAR_SERVER | FCVAR_SPONLY ) );
  41.  
  42. OrpheuRegisterHook( OrpheuGetFunction( "SV_DropClient" ) , "SV_DropClient" );
  43.  
  44. register_message( get_user_msgid( "TextMsg" ) , "fw_MsgTextMsg" );
  45.  
  46. g_iFwdDisconnect = CreateMultiForward( "client_disconnect_reason", ET_CONTINUE , FP_CELL , FP_CELL , FP_STRING );
  47. }
  48.  
  49. public client_putinserver( id )
  50. {
  51. get_user_name( id , g_szName[ id ] , charsmax( g_szName[] ) );
  52. }
  53.  
  54. public OrpheuHookReturn:SV_DropClient( a , b , const szMessage[] )
  55. {
  56. if ( ( g_bEnabled = bool:!!get_pcvar_num( g_pEnabled ) ) )
  57. {
  58. copy( g_DisconnectInfo[ ReasonMessage ] , charsmax( g_DisconnectInfo[ ReasonMessage ] ) , szMessage );
  59.  
  60. new ReasonCodes:rcReason;
  61. for ( rcReason = DR_TIMEDOUT ; rcReason < ReasonCodes ; rcReason++ )
  62. {
  63. if ( equal( szMessage , DisconnectMessages[ rcReason ] ) )
  64. break;
  65. }
  66.  
  67. g_DisconnectInfo[ ReasonCode ] = _:rcReason;
  68. }
  69. }
  70.  
  71. public client_disconnect( id )
  72. {
  73. new iReturn;
  74. ExecuteForward( g_iFwdDisconnect , iReturn , id , g_DisconnectInfo[ ReasonCode ] , g_DisconnectInfo[ ReasonMessage ] );
  75.  
  76. if ( g_bEnabled )
  77. {
  78. console_print( 0 , "* %s lecsatlakozott - Indok: [ %s ]" , g_szName[ id ] , g_DisconnectInfo[ ReasonMessage ] );
  79. ChatNotify( id );
  80. }
  81. }
  82.  
  83. public fw_MsgTextMsg( iMsgID , iMsgDest , iMsgArgs )
  84. {
  85. static szMessage[ 19 ];
  86. return ( g_bEnabled && get_msg_arg_string( 2 , szMessage , charsmax( szMessage ) ) && equal( szMessage , "#Game_disconnected" ) ) ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
  87. }
  88.  
  89. ChatNotify( iDisconnectID )
  90. {
  91. static szMessage[ 100 ] , iMsgSayText;
  92. formatex( szMessage , charsmax( szMessage ) , "^1*^3 %s ^1lecsatlakozott - Indok: [^4 %s ^1]" , g_szName[ iDisconnectID ] , g_DisconnectInfo[ ReasonMessage ] );
  93.  
  94. emessage_begin( MSG_BROADCAST , iMsgSayText ? iMsgSayText : ( iMsgSayText = get_user_msgid( "SayText" ) ) , _ , 0 );
  95. ewrite_byte( iDisconnectID );
  96. ewrite_string( szMessage );
  97. emessage_end();
  98. }