View Single Post
fatal_nl
Member
Join Date: Apr 2017
Old 05-22-2019 , 05:40   Re: Monthly log file instead of writing to log_to_file
Reply With Quote #7

Below is my code with another update (writing logs in seperate folder). I don't know exactly what I can move to plugin_init and what should be kept in client_connect. Keeping in mind that the server can be started on the last day of the month and a player connects on the first day of a new month. Then it should write to a new log file.

Code:
#include <amxmodx> #include <amxmisc> #include <geoip> new szName[32], szIP[17], szID[25], szCountry[41] public plugin_init() {     register_plugin("AllinfoIP", "1.12b", "fatal") } public client_connect(id) {     new AmxxLogsDir[20], LogFilesDir[28], LogFileName[28], LogFile[56]         get_localinfo("amxx_logs", AmxxLogsDir, charsmax(AmxxLogsDir))         formatex(LogFilesDir, charsmax(LogFilesDir), "%s/allinfo", AmxxLogsDir)         if(!dir_exists(LogFilesDir))         mkdir(LogFilesDir)         get_time("allinfo_players_%m_%Y.txt", LogFileName, charsmax(LogFileName))         formatex(LogFile, charsmax(LogFile), "%s/%s", LogFilesDir, LogFileName)         get_user_name(id, szName, charsmax(szName))     get_user_authid(id, szID, charsmax(szID))     get_user_ip(id, szIP, charsmax(szIP), 1)     geoip_country(szIP, szCountry, charsmax(szCountry))         if (!is_user_bot(id))     {         log_to_file(LogFile, "     %s  |  %s  |  %s  |  %s", szName, szIP, szID, szCountry)     }         return PLUGIN_HANDLED }

And this is the complete code with some of your suggestion implemented if I understood what you meant. I need confirmation from a more experienced coder if I did this right:

Code:
#include <amxmodx> #include <amxmisc> #include <geoip> #define ADMIN ADMIN_LEVEL_G     // Custom admin level new AmxxLogsDir[20], LogFilesDir[28], LogFileName[28], LogFile[56], iPlayers[32], iPlayerNum, szName[32], szIP[17], szID[25], szCountry[41] public plugin_init() {     register_plugin("AllinfoIP", "1.12b", "fatal")     register_concmd("amx_allinfo", "cmd_allinfo", ADMIN, "- All info..")         get_localinfo("amxx_logs", AmxxLogsDir, charsmax(AmxxLogsDir))         formatex(LogFilesDir, charsmax(LogFilesDir), "%s/allinfo", AmxxLogsDir)         if(!dir_exists(LogFilesDir))         mkdir(LogFilesDir) } public client_connect(id) {     get_time("allinfo_players_%m_%Y.txt", LogFileName, charsmax(LogFileName))         formatex(LogFile, charsmax(LogFile), "%s/%s", LogFilesDir, LogFileName)         get_user_name(id, szName, charsmax(szName))     get_user_authid(id, szID, charsmax(szID))     get_user_ip(id, szIP, charsmax(szIP), 1)     geoip_country(szIP, szCountry, charsmax(szCountry))         if (!is_user_bot(id))     {         log_to_file(LogFile, "     %s  |  %s  |  %s  |  %s", szName, szIP, szID, szCountry)     }         get_players(iPlayers, iPlayerNum)         for (new i = 0; i < iPlayerNum; i++)     {         if (access(iPlayers[i], ADMIN))         {             if (!is_user_bot(id))             {                 client_print(iPlayers[i], print_chat, "%s connected :  %s : %s : %s", szName, szID, szIP, szCountry)             }             else             {                 client_print(iPlayers[i], print_chat, "%s connected :  %s", szName, szID)             }         }     }         return PLUGIN_HANDLED } public client_disconnect(id) {     get_user_name(id, szName, charsmax(szName))     get_user_authid(id, szID, charsmax(szID))     get_user_ip(id, szIP, charsmax(szIP), 1)     get_players(iPlayers, iPlayerNum)         for (new i = 0; i < iPlayerNum; i++)     {         if (access(iPlayers[i], ADMIN))         {             if (!is_user_bot(id))             {                 client_print(iPlayers[i], print_chat, "%s disconnected :  %s : %s", szName, szID, szIP)             }             else             {                 client_print(iPlayers[i], print_chat, "%s disconnected :  %s", szName, szID)             }         }     }         return PLUGIN_HANDLED } public cmd_allinfo(id, level, cid) {     if (!cmd_access(id, level, cid, 1))     {         console_print(id, "You have no access to this command!")                 return PLUGIN_HANDLED     }         get_players(iPlayers, iPlayerNum, "ch")         for (new i = 0; i < iPlayerNum; i++)     {         get_user_name(iPlayers[i], szName, charsmax(szName))         get_user_ip(iPlayers[i], szIP, charsmax(szIP), 1)         get_user_authid(iPlayers[i], szID, charsmax(szID))         geoip_country(szIP, szCountry, charsmax(szCountry))                 console_print(id, "%s  |  %s  |  %s  |  %s", szName, szIP, szID, szCountry)     }         return PLUGIN_HANDLED }

Last edited by fatal_nl; 05-22-2019 at 06:11. Reason: Adding additional code
fatal_nl is offline