Fresh Bans

Fresh Bans 1.4.8

Нет прав для скачивания
Сообщения
459
Реакции
272
Помог
9 раз(а)
Комплектация архива при скачивании не соответствует указанной, просим поправить
 
Сообщения
1
Реакции
0
В архиве плагинов нет sma файла только библиотека почему? И можете ли вы загрузить файл sma в плагин. Заранее спасибо!
22 Июн 2022
В архиве плагинов нет sma файла только библиотека почему? И можете ли вы загрузить файл sma в плагин. Заранее спасибо!
 
Сообщения
78
Реакции
40
Помог
4 раз(а)
Будет ли форвард оффлайн бана?

По типу fbans_player_banned_post, в качестве аргументов можно передавать стим игрока и бан айди. Используя субплагины можно будет как-то кешировать метки заходящих игроков и в случае оффбана подтягивать их по тому же стим айди.
 
Сообщения
3,251
Реакции
1,856
Помог
86 раз(а)
CSBishop,
Код:
#pragma semicolon 1

#define TABLE_NAME "amx_offline_bans"
#define LOG_PREFIX "Offline Bans"
#define BAN_CMD "fb_ban %d #%d ^"%s^""
#define MAX_REASON_LENGTH 32
#define LOAD_TIMEOUT 15.0
#define IGNORE_FLAG (ADMIN_BAN | ADMIN_LEVEL_H)

#include <amxmodx>
#include <sqlx>

#if !defined MAX_PLAYERS
#define MAX_PLAYERS 32
#endif
#if !defined MAX_NAME_LENGTH
#define MAX_NAME_LENGTH 32
#endif

forward fbans_sql_connected(Handle:sqlTuple);

new Handle:g_DBTuple;
new bool:g_Loaded = false;

enum _: BAN_DATA {
    BAN_ID,
    BAN_LENGTH,
    BAN_REASON[MAX_REASON_LENGTH]
}

new Trie:g_BanList;

public plugin_init()
{
    register_plugin("Offline Bans", "1.0.1", "F@nt0M");

    register_concmd("amx_reloadofflinebans", "cmdReload", ADMIN_CFG);
}

public plugin_end()
{
    if (g_BanList != Invalid_Trie) {
        TrieDestroy(g_BanList);
    }
}

public client_putinserver(id)
{
    if (g_Loaded && !is_user_bot(id) && !is_user_hltv(id)) {
        CheckPlayer(id);
    }
}

public cmdReload(id, level)
{
    if (~get_user_flags(id) & level) {
        console_print(id, "You have no access to that command");
        return PLUGIN_HANDLED;
    }

    DbLoad();

    new name[MAX_NAME_LENGTH], authid[22], ip[16];
    get_user_name(id, name, charsmax(name));
    get_user_authid(id, authid, charsmax(authid));
    get_user_ip(id, ip, charsmax(ip), 1);

    log_amx("[%s] Admin <%s><%s><%s> run reload bans", LOG_PREFIX, name, authid, ip);

    console_print(id, "[%s] Offline bans reloaded successfully", LOG_PREFIX);

    return PLUGIN_HANDLED;
}

public fbans_sql_connected(Handle:sqlTuple)
{
    g_Loaded = false;
    g_DBTuple = sqlTuple;
    #if defined LOAD_TIMEOUT
    set_task(LOAD_TIMEOUT, "DbLoad");
    #else
    DbLoad();
    #endif
}

public DbLoad()
{
    if (g_DBTuple != Empty_Handle) {
        new pquery[512];
        formatex(pquery, charsmax(pquery), "SELECT id, authid, length,  CONVERT(reason, BINARY) reason FROM %s WHERE banned != 1", TABLE_NAME);
        SQL_ThreadQuery(g_DBTuple, "DBLoadPost", pquery);
    } else {
        log_amx("[%s] Bad tuple", LOG_PREFIX);
    }
}

public DBLoadPost(failstate, Handle:query, const error[], errornum, const data[], size, Float:querytime)
{
    if (failstate) {
        SQL_Error(query, error, errornum, failstate);
    } else if (SQL_NumResults(query) > 0) {
        if (g_BanList == Invalid_Trie) {
            g_BanList = TrieCreate();
        } else {
            TrieClear(g_BanList);
        }

        new authid[22];
        new banData[BAN_DATA];

        new num;
        while (SQL_MoreResults(query)) {
            setc(banData[BAN_REASON], sizeof banData[BAN_REASON], 0);

            banData[BAN_ID] = SQL_ReadResult(query, 0);
            SQL_ReadResult(query, 1, authid, charsmax(authid));
            banData[BAN_LENGTH] = SQL_ReadResult(query, 2);
            SQL_ReadResult(query, 3, banData[BAN_REASON], charsmax(banData[BAN_REASON]));

            TrieSetArray(g_BanList, authid, banData, sizeof banData);

            SQL_NextRow(query);
            num++;
        }

        log_amx("[%s] Load %d bans", LOG_PREFIX, num);

        CheckPlayers();
        g_Loaded = true;
    } else {
        log_amx("[%s] Load 0 bans", LOG_PREFIX);
    }

    SQL_FreeHandle(query);
}

SQL_Error(Handle:query, const error[], errornum, failstate)
{
    if (failstate == TQUERY_CONNECT_FAILED) {
        log_amx("[%s] QueryConnection failed!", LOG_PREFIX);
        log_amx("[%s] QueryMessage: %s (%d)", LOG_PREFIX, error, errornum);
    } else if (failstate == TQUERY_QUERY_FAILED) {
        new qstring[1024];
        SQL_GetQueryString(query, qstring, 1023);
        log_amx("[%s] Query failed!", LOG_PREFIX);
        log_amx("[%s] QueryMessage: %s (%d)", LOG_PREFIX, error, errornum);
        log_amx("[%s] QueryQuery statement: %s", LOG_PREFIX, qstring);
    }
}

CheckPlayers()
{
    new players[MAX_PLAYERS], num;
    get_players(players, num, "ch");
    for (new i = 0; i < num; i++) {
        CheckPlayer(players[i]);
    }
}

CheckPlayer(id)
{
    if (g_BanList == Invalid_Trie) {
        return 0;
    }

    #if defined IGNORE_FLAG
    if ((get_user_flags(id) & IGNORE_FLAG) == IGNORE_FLAG) {
        return 0;
    }
    #endif

    new authid[22];
    get_user_authid(id, authid, charsmax(authid));

    if (!TrieKeyExists(g_BanList, authid)) {
        return 0;
    }

    new banData[BAN_DATA];
    TrieGetArray(g_BanList, authid, banData, sizeof banData);

    BanPlayer(id, banData[BAN_ID], banData[BAN_LENGTH], banData[BAN_REASON]);

    return 1;
}

BanPlayer(const id, const banId, const length, const reason[])
{
    server_cmd(BAN_CMD, length, get_user_userid(id), reason);

    if (g_DBTuple != Empty_Handle) {
        new pquery[512];
        formatex(pquery, charsmax(pquery), "UPDATE %s SET banned = 1 WHERE id = %d LIMIT 1", TABLE_NAME, banId);
        SQL_ThreadQuery(g_DBTuple, "QueryIngnoredHandle", pquery);
    } else {
        log_amx("[%s] Bad tuple", LOG_PREFIX);
    }
}

public QueryIngnoredHandle(failstate, Handle:query, const error[], errornum, const data[], size, Float:querytime)
{
    if (failstate) {
        SQL_Error(query, error, errornum, failstate);
    }

    SQL_FreeHandle(query);
}
 
Сообщения
3,251
Реакции
1,856
Помог
86 раз(а)
CSBishop, тогда тебе надо упомять ник маздана тут, чтобы он увидел твоё послание
 
Сообщения
28
Реакции
13
Помог
2 раз(а)
Будет ли форвард оффлайн бана?

По типу fbans_player_banned_post, в качестве аргументов можно передавать стим игрока и бан айди. Используя субплагины можно будет как-то кешировать метки заходящих игроков и в случае оффбана подтягивать их по тому же стим айди.
mazdan
 
Сообщения
78
Реакции
110
Помог
4 раз(а)
По типу fbans_player_banned_post, в качестве аргументов можно передавать стим игрока и бан айди. Используя субплагины можно будет как-то кешировать метки заходящих игроков и в случае оффбана подтягивать их по тому же стим айди.
fbans_player_banned_post при оффлайн бане вроде тоже вызывается, разве нет? не с прошлой карты правда, но это что-то совсем сложно, если чтобы ещё и с прошлой карты и с перезагрузки и т.п., fbans_player_banned_pre_f вызывается всегда, там есть стим и всё что нужно, можно оттуда брать и прикапывать.
 
Сообщения
278
Реакции
2
Неверный раздел форума
L 07/15/2022 - 23:52:35: Couldn't write file "cstrike/a0/fb/oldmap_players.txt"
L 07/15/2022 - 23:52:35: [AMXX] Run time error 10 (plugin "fresh_bans.amxx") (native "write_file") - debug not enabled!
L 07/15/2022 - 23:52:35: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
 
Сообщения
351
Реакции
74
Предупреждения
16
Помог
10 раз(а)
Сообщения
678
Реакции
57
Помог
16 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
mazdan, Фиксани менюху fb_unban т.к. криво) Версия ласт 1.4.6
На 1.9.* и на 1.10.* амх такое.
1658315711486.png
 
Сообщения
94
Реакции
64
Помог
5 раз(а)
mazdan можно добавить форвард для оффлайн бана через меню или вызвать уже существующий fbans_player_banned_pre? мне это нужно для того, чтобы убирать забаненных игроков со статистики, так как топ статы идет по скиллу и туда часто попадают типочки с аимом.
 
Сообщения
78
Реакции
110
Помог
4 раз(а)
Dager, привет, а разве он не вызывается? там просто id игрока 0 по идее.
15 Авг 2022
XyLiGaN, я погляжу, спасибо
 
Сообщения
94
Реакции
64
Помог
5 раз(а)
mazdan, может он и вызывается, но проблема в том как мне получить стимид игрока, если id = 0 и 3й параметр в fbans_player_banned_pre приходит пустой
 
Сообщения
78
Реакции
110
Помог
4 раз(а)
Dager, вот этот вот форвард fbans_player_banned_pre_f, там не должно быть пустого стимайди, разве только он у вас и БД пустой вставляется.
 
Сообщения
678
Реакции
57
Помог
16 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
mazdan, Менюха работает, всё отлично, спасибо, только сделай отступ после цифры 7)))
1660594978459.png
 
Сообщения
55
Реакции
5
Помог
1 раз(а)
@XyLiGaN,да вроде всё норм работает и отступ есть
 

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

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