Вопросы по Stop the Bastards.

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
61
Реакции
24
Помог
1 раз(а)
Возникло несколько вопросов по плагину https://dev-cs.ru/threads/82/, первое, вдруг кто то уже занимался этим и есть решение, как выложено на первой странице, о настройке античитов для данной системы наказания, в теме самого плагина https://dev-cs.ru/threads/82/#post-2602 .
1. Причина наказания в худ. Кому нибудь удалось вывести Причину у наказанного игрока в худ, что бы следящие за ним сразу видели за что наказан человек? Пробовал вот так, ошибок нет, но и причины нет, я так понимаю все так легко не сработает, нужно информацию из sql подгружать, но такое к сожалению не умею. Может кто нибудь подсказать, реализуемо ли такое и помочь по коду?

Код:
#if defined OBSERVER_HUD_POSITION
public HookStartObserver(const id, const reason[])
{
    remove_task(OBSERVER_TASK_ID + id);
    set_task(1.0, "TaskObserver", OBSERVER_TASK_ID + id, .flags = "b");
}

public HookStarSpawn(const id, reason[])
{
    remove_task(OBSERVER_TASK_ID + id);
}

public TaskObserver(id, const reason[])
{
    id -= OBSERVER_TASK_ID;

    if (get_member(id, m_iObserverLastMode) != 4) {
        return PLUGIN_CONTINUE;
    }


    new player = get_member(id, m_hObserverTarget);
    if (!isPlayer(player) || !is_user_connected(player)) {
        return PLUGIN_CONTINUE;
    }

    if (!CheckBit(g_IsBlocked, player)) {
        return PLUGIN_CONTINUE;
    }

    set_hudmessage(255, 51, 204, OBSERVER_HUD_POSITION, 0, 1.0, 1.0);
    ShowSyncHudMsg(id, g_MsgHud, "ИГРОК НАКАЗАН. Причина: %s", reason);
    return PLUGIN_CONTINUE;
}
#endif

2. Кто нибудь пытался интегрировать данную систему наказания в тот же вотебан. По принципу, для каждой причины свои буквы. Так как нет например смысла блокировать стрельбу тому кто в микрофон флудит. А дабы не терять онлайн, банить таких тоже в последнее время стало совсем не выгодно. пусть бегает, стреляет и думает что у него мик пашет и его "бредни" кто то слышит. А в случае читера, уже можно выдавать любые буквы. В данном вопросе совсем не понимаю как в массив причин добавить еще и поле с буквами, точнее как с ними потом работать в меню и при наказании. На примере lite_voteban пытался. начало понятно, а дальше с менюшками, уже ужас какой то начинается.

Код:
enum _:DATA { reson[64], flag[32]}
new g_aBanReasons[][DATA] = 
{
    { "Оскорбление", "de" },
    { "Сервер 18+", "de" },
    { "Флуд в Микрофон", "de" },
    { "Реклама", "de" },
    { "Читер" "ade" },
    { "Скрипты" "bde" },
    { "Заблокировать игроку все!" "abcde" }
};
Но дальше во всех плагинах вотебанов что находил в которых есть возможность выбрать причину, начинается работа с причиной в меню, и дальше моих знаний не хватает, как в меню работать с такими данными.
Исходник одного из них, прикрепил.

С самим наказанием в целом тоже более менее понятно, Код наверное будет таким.
Код:
server_cmd("amx_sb #%d %s %d ^"%s^"", get_user_userid(g_iVictim), g_sBanReason[flag], VB_BANTIME, g_sBanReason[reson]);
Но с менюшками, и как эти данные правильно в плагине передавать с массива в меню игрока, потом в меню голосования и сохранять перед наказанием, не разобрался. Буду благодарен за Вашу помощь.
 

Вложения

Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Причина наказания в худ. Кому нибудь удалось вывести Причину у наказанного игрока в худ
OBSERVER_HUD_POSITION раскоментировали?
я так понимаю все так легко не сработает, нужно информацию из sql подгружать
Плагин не использует базу. Потому ничего из нее подгружать не надо. Честно говоря давно пора перевести на базу, но все как то лень
Кто нибудь пытался интегрировать данную систему наказания в тот же вотебан
Просто сделать при условии нормального вотебана. Все что нужно, это заменить команду наказания с amx_ban/fb_ban/etc на amx_sb
На примере lite_voteban пытался. начало понятно, а дальше с менюшками, уже ужас какой то начинается
Тут для поддержки stb нужно изменить половину кода
 
Сообщения
61
Реакции
24
Помог
1 раз(а)
OBSERVER_HUD_POSITION раскоментировали?
Да разумеется, надпись "ИГРОК НАКАЗАН. Причина:" выводит на экран. а вот саму причину с которой наказан игрок нет.Screenshot_1.jpg

Плагин не использует базу. Потому ничего из нее подгружать не надо. Честно говоряд авно пора перевести на базу, но все как то лень
Я не так выразился скорее. причину видимо нужно брать из nvault базы, а не из кода плагина который используется только в момент наказания или прощения игрока.

Просто сделать при условии нормального вотебана. Все что нужно, это заменить команду наказания с amx_ban/fb_ban/etc на amx_sb
Я это сделал, но не хватает очень функционала для разных причин разные флаги.

Тут для поддержки stb нужно изменить половину кода
Я так и подумал, так как довольно много где используется причина, а потом еще в новую переменную сохраняется.
 
Сообщения
61
Реакции
24
Помог
1 раз(а)
Народ знающий, может быть хотя бы по первому вопросу подскажет, куда копать что бы вывести причину в худ. Весь плагин, https://dev-cs.ru/threads/82/ работает с причиной именно в виде константы, но почему то подключив
Код:
public TaskObserver(id, const reason[])
и выведя в худ, как это сделано по аналогии везде, в тот же чат или логи например. Получаем пустую причину в худе.
Код:
ShowSyncHudMsg(id, g_MsgHud, "ИГРОК НАКАЗАН. Причина: %s", reason);
Screenshot_1.jpg
 
Сообщения
61
Реакции
24
Помог
1 раз(а)
fantom, работает, большое спасибо. Собственно ответ на первый вопрос, в предпоследнем сообщении. Тему можно закрывать я думаю. С вотебаном ничего не придумал, просто сделаю одну причину и стандартную строку наказания.
 
Статус
В этой теме нельзя размещать новые ответы.

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

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