Cвязать плагин LocalBans с [Discord] Admin Log

pur4s

Участник
Сообщения
367
Реакции
92
Насколько возможно связать этот плагин LocalBans с [Discord] Admin Log ? (Чтобы логи банов через локал банс шли в дискорд).?
ответ по типу:
Добавить где-нибудь здесь вызов функции LogAction().
не принимается

Где-нибудь здесь и собственно целую таблицу мне выделяете. Как я должен понять "где-нибудь где" мне вписать эту строчку?
Во первых её альтернатива есть в виде:
void UTIL_CreateBan(int iAdmin = 0, int iTarget = 0, const char[] szSourceAuth = "", const char[] szSourceName = "", const char[] szSourceIp = "", int iLength, const char[] szSourceReason, int iType = 0)
И я могу постараться заменить её, но какие именно переменные нужно менять, я понятия не имею.
Но вы, повторюсь, написали "Добавить" так где мне её добавить, я могу её добавить где угодно, но от этого ничего не заработает. Уточните!
@Kruzya , данная тема вас устраивает?
 

Вложения

  • 1611026374100.png
    1611026374100.png
    73.2 КБ · Просмотры: 33

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #2
Я уже умолчу о том, что ещё этот пост был продублирован в тему модуля для SB (за что есть отдельный вид наказания, но я пост потёр, так что никто не увидит его уже, и не выдаст баллы). А вот язвить могли бы и поменьше.

ответ по типу:
не принимается
Извините, конечно, но Вы создаёте тему в разделе общих вопросов по CS:GO. В этом разделе помощь по скриптингу не оказывается, для него существует отдельный раздел, в описании которого прямо прописано то, что Вам и нужно:
1611033901931.png

В этот раз тему сам переместил в нужный раздел.

Где-нибудь здесь и собственно целую таблицу мне выделяете.
Не таблицу, а функцию.

Как я должен понять "где-нибудь где" мне вписать эту строчку?
Ну, обычно, вписывают логгирование подобных административных действий ближе к месту, где оно, собственно, осуществляется. В Вашем случае можно вставить прямо под конец функции, после вызова функции Database.Query().
Лучше просто посмотреть, как тут сделано: куда вставлено. И продублировать у себя. Движок форумный немного неправильно распарсил вставленный внутри код, и выдал дичь.
C-подобный:
void UTIL_CreateBan(int iAdmin = 0, int iTarget = 0, const char[] szSourceAuth = "", const char[] szSourceName = "", const char[] szSourceIp = "", int iLength, const char[] szSourceReason, int iType = 0)
{
    DebugMessage("%N (%i) UTIL_CreateBan -> %i (%s), (%s)", iAdmin, iAdmin, iTarget, szSourceAuth, szSourceName)

    char szName[MAX_NAME_LENGTH*2+1], szIp[16], szQuery[512], szAuth[32], szAdminName[MAX_NAME_LENGTH*2+1], szAdminAuth[32];
    int iAdminUserID = strlen(szSourceReason)*2+1;
    char[] szReason = new char[iAdminUserID];
    g_hDatabase.Escape(szSourceReason, szReason, iAdminUserID);

    int iTargetUserID;
    if(iAdmin)
    {
        iAdminUserID = UID(iAdmin);
        GetClientName(iAdmin, szQuery, MAX_NAME_LENGTH);
        g_hDatabase.Escape(szQuery, szAdminName, sizeof(szAdminName));
        GetClientAuthId(iAdmin, AuthId_Engine, szAdminAuth, sizeof(szAdminAuth));
    }
    else
    {
        iAdminUserID = 0;
        strcopy(szAdminName, sizeof(szAdminName), "CONSOLE");
        strcopy(szAdminAuth, sizeof(szAdminAuth), "STEAM_ID_SERVER");
    }

    if(iTarget)
    {
        iTargetUserID = UID(iTarget);
        GetClientAuthId(iTarget, AuthId_Engine, szAuth, sizeof(szAuth));
        GetClientName(iTarget, szQuery, MAX_NAME_LENGTH);
        g_hDatabase.Escape(szQuery, szName, sizeof(szName));
        GetClientIP(iTarget, szIp, sizeof(szIp));
    }
    else
    {
        iTargetUserID = 0;
        if(szSourceAuth[0])
        {
            strcopy(szAuth, sizeof(szAuth), szSourceAuth);
        }
        else
        {
            strcopy(szAuth, sizeof(szAuth), "unknown");
        }
        g_hDatabase.Escape(szSourceName, szName, sizeof(szName));
        if(szSourceIp[0])
        {
            strcopy(szIp, sizeof(szIp), szSourceIp);
        }
        else
        {
            strcopy(szIp, sizeof(szIp), "unknown");
        }
    }
   
    Handle hDataPack = CreateDataPack();
    WritePackCell(hDataPack, iAdminUserID);
    WritePackCell(hDataPack, iTargetUserID);

    FormatEx(szQuery, sizeof(szQuery), "INSERT INTO [ICODE]table_bans[/ICODE] ([ICODE]auth[/ICODE], [ICODE]ip[/ICODE], [ICODE]name[/ICODE], [ICODE]ban_time[/ICODE], [ICODE]length[/ICODE], [ICODE]reason[/ICODE], [ICODE]admin_auth[/ICODE], [ICODE]admin_name[/ICODE], [ICODE]ban_type[/ICODE]) VALUES ( '%s', '%s', '%s', %i, %i, '%s', '%s', '%s', '%i');", szAuth, szIp, szName, GetTime(), iLength, szReason, szAdminAuth, szAdminName, iType);
    DebugMessage("szQuery: '%s'", szQuery)
    g_hDatabase.Query(SQL_Callback_InsertBan, szQuery, hDataPack);
    LogAction(iAdmin, iTarget, "Performed ban operation on %L. Reason: \"%s\".", iTarget, szReason);
}

так где мне её добавить, я могу её добавить где угодно, но от этого ничего не заработает
А Вы пытались? Только честно.
Тут оно не заработает только если внутрь блоков условий поместить, или вообще за пределами функции. Но если в первом случае оно скомпилируется и будет просто "молчать", то во втором компилятор сразу ругнётся.

@Kruzya , данная тема вас устраивает?
Вы не мне должны пытаться угодить, и не администрации форума, а другим пользователям.
Правильно составленная тема, без лишнего мусора, и размещённая в правильном разделе, может помочь быстро решить проблему.
Мы лишь присматриваем за порядком в этом плане, ничего более.
 

pur4s

Участник
Сообщения
367
Реакции
92
Но если в первом случае оно скомпилируется и будет просто "молчать", то во втором компилятор сразу ругнётся.
После редактирования функции скрипт нужно компилировать отдельно? Не понял зачем, когда он изначально лежал без связанного с ним smx. Я попытался - абортед.
 

Вложения

  • 1611067353406.png
    1611067353406.png
    10.5 КБ · Просмотры: 19

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #4
@dimens, Вам компилировать нужно основной исходник, не util.sp. Он подключится по ходу сборки основного исходника.
 
Сверху Снизу