Na most elvileg az amx_loginhoz is jó!
Sma:
Kód:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#define ACCESS ADMIN_KICK   
//====================================================================
//      Variables
//====================================================================
// Thanks to Xellath
new g_szSpecialChars[ ][ ] =
{
    "/",
    "\",
    ":",
    "*",
    "?",
    ">", 
    "<",
    "|",
    ";"
};
new logfile[200],string[500],configsdir[200]
new cvar_log,cvar_save_direct,cvar_save_name,cvar_zp,cvar_admin,cvar_amxx,cvar_file;
public plugin_init()
{
   register_plugin("AdminLogs", "1.2", "pirvu")
//====================================================================
//      Cvars
//====================================================================
   cvar_log = register_cvar("log_steam","3")
   cvar_save_direct = register_cvar("log_direct","0")
   cvar_save_name=register_cvar("log_name","1")
   cvar_zp=register_cvar("log_zp","1");
   cvar_admin= register_cvar("log_admin","1");
   cvar_amxx=register_cvar("log_amxx","1");
   cvar_file= register_cvar("log_usefile", "1");
   
}
//====================================================================
//     Hook player command
//====================================================================
public client_command(id)
{
   if (get_user_flags(id) & ACCESS) 
   {
      
//====================================================================
//   Read arguments
//====================================================================
      new bigarg[64], arg[7][65];
      read_args(bigarg,charsmax( bigarg ) );
      new iStringSize = charsmax( arg);
      parse(bigarg, 
      arg[0], iStringSize , 
      arg[1], iStringSize ,  
      arg[2], iStringSize ,
      arg[3], iStringSize ,
      arg[4], iStringSize ,
      arg[5], iStringSize ,
      arg[6], iStringSize );
      get_configsdir(configsdir,199)
   
//====================================================================
//      If the command contains amx_
//====================================================================
      if( ( containi(arg[0], "amx_") != -1  && get_pcvar_num(cvar_amxx) ) || ( containi(arg[0], "zp_") != -1  && get_pcvar_num(cvar_zp) ) || ( containi(arg[0], "admin_") != -1  && get_pcvar_num(cvar_admin) ) )
      {
//====================================================================
//   Get player name , steam , ip
//====================================================================
   
         new name[32], ip[32],steam[32];
         get_user_name(id,name,31)
         if (get_pcvar_num(cvar_save_name)) 
         {
            for( new i = 0; i < sizeof( g_szSpecialChars ); i++ )
                    if( contain( name, g_szSpecialChars[ i ] ) )
                          replace_all( name, charsmax( name ), g_szSpecialChars[ i ], "" );
    
               trim( name); // remove spaces
            //thanks to Xellath
         }
         get_user_ip(id,ip,31,1)
         get_user_authid(id,steam,31)
         
//====================================================================
//   Get current date & time
//====================================================================
         static s_Time[ 16 ], s_Date[ 16 ];
         get_time ( "%m%d", s_Date, charsmax ( s_Date ) );
            get_time ( "%H:%M:%S", s_Time, charsmax ( s_Time ) );   
//====================================================================
//    Make the /adminlogs folder
//====================================================================
         add(configsdir, charsmax(configsdir),"/adminlogs");
         if(!dir_exists(configsdir))   mkdir(configsdir)
         add(configsdir, charsmax(configsdir),"/");
//====================================================================
//    Make the second folder
//====================================================================
         switch (get_pcvar_num(cvar_save_direct))
         {
             case 1: add(configsdir,charsmax(configsdir),ip);
             case 2: add(configsdir,charsmax(configsdir),steam)
             default : add(configsdir, charsmax(configsdir),s_Date);
         }
   
         if(!dir_exists(configsdir))  mkdir(configsdir)
//====================================================================
//    Make the log file name
//====================================================================
         
         if (get_pcvar_num(cvar_file))
         {
            
            new iFile = fopen("/addons/amxmodx/configs/amx_login/loginusers.ini","r");
            new Buffer[256];
            while(!feof(iFile))
            {
               fgets(iFile,Buffer,255);
               
                  
               if ( containi (Buffer , ip ) !=-1 )
               {
                  formatex(logfile,199,"%s/%s.log",configsdir,ip)   
                  switch (get_pcvar_num(cvar_log))
                  {
                     case 1:  formatex(string,499,"[%s] Ip [%s] used command %s %s %s %s %s %s %s",s_Time,ip,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
                     case 2:  formatex(string,499,"[%s] SteamID [%s] used command %s %s %s %s %s %s %s",s_Time,steam,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
                     case 3:  formatex(string,499,"[%s] Ip[%s] SteamID [%s] used command %s %s %s %s %s %s %s",s_Time,ip,steam,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6])
                     default: formatex(string,499,"[%s] used command %s %s %s %s %s %s %s",s_Time,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
                  }
   
                  write_file(logfile,string,-1)
                  fclose(iFile);
                  return PLUGIN_CONTINUE
               }
               else if ( containi (Buffer , steam ) !=-1 )
               {
                  formatex(logfile,199,"%s/%s.log",configsdir,steam)   
                  switch (get_pcvar_num(cvar_log))
                  {
                     case 1:  formatex(string,499,"[%s] Ip [%s] used command %s %s %s %s %s %s %s",s_Time,ip,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
                     case 2:  formatex(string,499,"[%s] SteamID [%s] used command %s %s %s %s %s %s %s",s_Time,steam,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
                     case 3:  formatex(string,499,"[%s] Ip[%s] SteamID [%s] used command %s %s %s %s %s %s %s",s_Time,ip,steam,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6])
                     default: formatex(string,499,"[%s] used command %s %s %s %s %s %s %s",s_Time,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
                  }
   
                  write_file(logfile,string,-1)
                  fclose(iFile);
                  return PLUGIN_CONTINUE
               }
            }
         }
               
         if (get_pcvar_num(cvar_save_name))   formatex(logfile,199,"%s/%s.log",configsdir,name)
         else formatex(logfile,199,"%s/%s.log",configsdir,s_Date)
//====================================================================
//   Log the command 
//====================================================================
   
         switch (get_pcvar_num(cvar_log))
         {
            case 1:  formatex(string,499,"[%s] Ip [%s] used command %s %s %s %s %s %s %s",s_Time,ip,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
            case 2:  formatex(string,499,"[%s] SteamID [%s] used command %s %s %s %s %s %s %s",s_Time,steam,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
            case 3:  formatex(string,499,"[%s] Ip[%s] SteamID [%s] used command %s %s %s %s %s %s %s",s_Time,ip,steam,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6])
            default: formatex(string,499,"[%s] used command %s %s %s %s %s %s %s",s_Time,arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
         }
   
         write_file(logfile,string,-1)
      }
   }
   return PLUGIN_CONTINUE
}