Поиск Admin Commands Log

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
213
Реакции
71
Помог
2 раз(а)
I need a simple plugin, which can log provided commands or just log amx_ key word (of Admins), I had mentioned defined flags many but you can add two or three too, if it is convenient and easy (Kick, Ban, Cvar)
#define ADMIN_BAN
#define ADMIN_KICK
#define ADMIN_CVAR
#define ADMIN_SLAY
#define ADMIN_RCON
#define ADMIN_VOTE
#define ADMIN_MAP
#define ADMIN_MENU
#define ADMIN_LEVEL_A
#define ADMIN_CFG
#define ADMIN_LEVEL_C
addons/amxmodx/configs/AdmCmdsLogs/AdmCmdsLogs.txt
amx_map
amx_vote
amx_votemap
amx_votekick
amx_voteban
amx_cancelvote
amx_cvar
amx_nick
amx_rcon
amx_gag
amx_ungag
amx_addgag
amx_setlang
amx_addrounds
amx_fakeping
amx_exec
amx_mexec
amx_teleportmenu
amx_restrict
amx_restmenu
amx_statscfg
amx_statscfgmenu
amx_addadmin
amx_pause
cm_set_prefix
amx_plugincvarmenu
amx_advertisebet
amx_on
amx_off
amx_cvarmenu
amx_pausecfg
amx_pausecfgmenu
amx_cmdmenu
amx_clcmdmenu
amx_cfgmenu
amx_speechmenu
amx_teammenu
amx_perm_msg
amxmodmenu
mk47killer
OR LET JUST KEY WORD amx_ to be record
Help would be appreciated !!!

Thanks !!
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
(For Russians) Для русских: плагин отслеживает введённые команды, при TYPE_CMDS_LOG 1 будет отслеживать команды начинающиеся с amx_ а при TYPE_CMDS_LOG 2 все команды что находятся в g_szCmds

addons/amxmodx/configs/AdmCmdsLogs/AdmCmdsLogs.txt
In my opinion, all logs should be in the /logs/ folder. You can try to use this one for AMXX >= 1.9.0.5229

Код:
#include <amxmodx>

// EN: 1 - loging all cmds "amx_"
// RU: 1 - логируем команды начинающиеся с "amx_"
// ------------------------------------------------------
// EN: 2 - loging all cmds from g_szCmds
// RU: 2 - логируем все команды из g_szCmds
#define TYPE_CMDS_LOG 1

// RU: Если не закомментировано то логирует только если у игрока есть один из флагов
// EN: If it's not commented, it will log only if a player has one of the specified flags
#define LOG_BY_FLAGS (ADMIN_BAN|ADMIN_CFG)

#if TYPE_CMDS_LOG == 2
new const g_szCmds[][] =
{
    "amx_map",
    "amx_vote",
    "amx_votemap",
    "amx_votekick",
    "amx_voteban",
    "amx_cancelvote",
    "amx_cvar",
    "amx_nick",
    "amx_rcon",
    "amx_gag",
    "amx_ungag",
    "amx_addgag",
    "amx_exec",
    "amx_teleportmenu",
    "amx_restrict",
    "amx_restmenu",
    "amx_statscfg",
    "amx_statscfgmenu",
    "amx_addadmin",
    "amx_pause",
    "cm_set_prefix",
    "amx_plugincvarmenu",
    "amx_advertisebet",
    "amx_on",
    "amx_off",
    "amx_cvarmenu",
    "amx_pausecfg",
    "amx_pausecfgmenu",
    "amx_cmdmenu",
    "amx_clcmdmenu",
    "amx_cfgmenu",
    "amx_speechmenu",
    "amx_teammenu",
    "amxmodmenu"
}
#endif

new const g_szLogFile[] = "addons/amxmodx/logs/admin_commands.log";

public plugin_init()
{
    register_plugin("Admin Commands Log", "13.10.2018", "w0w");
}

public client_command(id)
{
#if defined LOG_BY_FLAGS
    // The player doesn't have any flag from LOG_BY_FLAGS
    if(get_user_flags(id) & LOG_BY_FLAGS)
    {
#endif

    new szCommand[64]; read_argv(0, szCommand, charsmax(szCommand));

#if TYPE_CMDS_LOG == 1
    // If do not start with amx_ or it's not any symbol after amx_
    if(containi(szCommand, "amx_") == -1 || !szCommand[4])
        return PLUGIN_CONTINUE;
#endif
#if TYPE_CMDS_LOG == 2
    new bool:bNotFound;

    for(new i; i < sizeof(g_szCmds); i++)
    {
        if(containi(szCommand, g_szCmds[i]) == -1)
        {
            bNotFound = true;
            continue;
        }
        bNotFound = false;
        break;
    }

    if(bNotFound) return PLUGIN_CONTINUE;
#endif

    new szArgs[64]; read_args(szArgs, charsmax(szArgs));

    if(szArgs[0])
        func_LogToFile(id, szCommand, szArgs);
    else func_LogToFile(id, szCommand);
#if defined LOG_BY_FLAGS
    }
#endif

    return PLUGIN_CONTINUE;
}

func_LogToFile(id, szCommand[], szArgs[] = "")
{
    new szAuthID[MAX_AUTHID_LENGTH]; get_user_authid(id, szAuthID, charsmax(szAuthID));
    new szIP[MAX_IP_LENGTH]; get_user_ip(id, szIP, charsmax(szIP));

    if(szArgs[0])
        log_to_file(g_szLogFile, "%n (<%s> <%s>) used %s %s", id, szAuthID, szIP, szCommand, szArgs);
    else log_to_file(g_szLogFile, "%n (<%s> <%s>) used %s", id, szAuthID, szIP, szCommand);
}
 

Вложения

Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу