Stop the Bastards

Stop the Bastards 1.7.0

Нет прав для скачивания
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Пользователь fantom разместил новый ресурс:

Stop the Bastards - Наказание читеров и неадекватных игроков

Плагин позволяет наказать читеров и неадекватных игроков на сервере путём блокировки основных функций: запрещает наносить урон, писать в чат и говорить в микрофон. Присутствуют мультиязычность, удобное меню для админов и сохранение наказания при реконнекте игрока.



Плагин остаётся незаметным для наказанного игрока:
• эмулируется чат: игрок видит свои сообщения, но остальные его сообщений не видят. работает как с Chat Manager от...
Узнать больше об этом ресурсе...
 
Сообщения
160
Реакции
170
Помог
1 раз(а)
VoiceTranscoder обязателен?,интересует работоспособность на стим сервере.
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
mr_CHikAZ, нужен. используеться только для блокировки звукового чата
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
fantom, по коду вижу, что если даже его нет, ничего страшного, просто функционал блокировки голоса не сработает. Не так ли?
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
wopox1337, да ты прав. Блокировка голоса не будет работать
 
Сообщения
223
Реакции
146
Помог
4 раз(а)
поддержка revoice имеется?
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
DimaS, нет. там нету API! Хотя хотелось бы
 
Сообщения
263
Реакции
335
Помог
4 раз(а)
fantom, Хочу stop_the_bastards.ini + stop_the_bastards.txt :acute:
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Пользователь fantom обновил ресурс Stop the Bastards новой записью:

Обновление до версии 1.6.6

  • Добавлена возможность снимать наказания оффлайн
  • Добавлен худ-информер при наблюдении за наказанным игроком
  • Добавлена возможность настраивать отступ перед меню #define MENU_TAB
  • Добавлен #define TAKEDMG_HOOK - раскомментируйте, если хотите чтобы урон от гранат наказанных игроков блокировался
  • Обновлен конфиг плагина, подробности во вкладке "настройки"
Узнать больше об этом обновлении...
 
Сообщения
124
Реакции
92
Помог
1 раз(а)
Пример использования и настройки.

В конфиге плагина ставим
Код:
block_damage = 100
block_timeout = 100


В конфиге rechecker'а
Код:
"../opengl32.dll"                 UNKNOWN     "amx_sb [userid] ade 1w Opengl" BREAK


В reaimdetector'е меняем строки наказания на
Код:
server_cmd("amx_sb #%d abde %d ^"%s^"", get_user_userid(index), CFG_BAN_TIME_AIMBOT, CFG_REASON_AIMBOT);

и
Код:
server_cmd("amx_sb #%d abde %d ^"%s^"", get_user_userid(index), CFG_BAN_TIME_NOSPREAD, CFG_REASON_NOSPREAD);

Время наказания нужно указывать в кавычках, пример:
Код:
#define CFG_BAN_TIME_AIMBOT               "1w"


В исходнике плагина добавляем игнорирование проверки реаимдетектора для наказанных игроков.

В начале добавляем
Код:
#include <reaimdetector>

Screenshot_5.png

Ищем строку 1342, выше добавляем
Код:
ad_set_client(player, AimCheck, 0);
ad_set_client(player, NoSpreadCheck, 0);

Screenshot_6.png

Ищем строку 1480, выше добавляем
Код:
ad_set_client(id, AimCheck, 0);
ad_set_client(id, NoSpreadCheck, 0);

Screenshot_7.png

Что получаем в итоге:
  • Читеры с вх получают наказание от речекера, флаги "ade" - они не могут наносить урон, им заблокирован чат и микрофон
  • Читеры с аимботом получают наказание от реаимдетектора, флаги "abde" - как и в случае с вх, только еще не могут стрелять в игроков
  • Если игрок наказан, то reaimdetector не делает лишних проверок
Использую данную систему на своем сервере. Значительно сократил количество банов за примитивные читы.
За более солидные софтины можно банить, как по старинке.
За инфу по использованию апи reaimdetector'а спасибо Adidasman
 
Последнее редактирование:
Сообщения
80
Реакции
54
Помог
1 раз(а)
В настройках не указано, для чего нужен этот макрос
Код:
#define FWD_DISCONNECT

Чтобы избавиться от отступов, нужно оставить значение в ковычках пустым?
Код:
#define MENU_TAB ""

Я так понимаю, что закомментировать нельзя.
20 Мар 2017
Bullseye, напиши, пожалуйста, поподробнее, куда нужно вставлять строки в плагине?
Вот, например, как только ты вставляешь 2 строчки перед 1341 строкой, то 1476 строка (перед которой тоже надо потом что-то вставить), съезжает минимум на 2 строки (если пустых строк не оставлять).
Я вставил вот так:
Код:
PunishPlayer(const admin, const player, const reason[], time, flags)
{
ad_set_client(player, AimCheck, 0);
ad_set_client(player, NoSpreadCheck, 0);

SetBit(g_IsBlocked, player);

if (flags & BLOCK_ATTACK) {
SetBit(g_IsAttackBlocked, player);
}

if (flags & BLOCK_TIMEOUT) {
SetBit(g_IsAttackTimeout, player);
}

if (flags & BLOCK_MOVE) {
SetBit(g_IsMoveBlocked, player);
}

if (flags & BLOCK_CHAT) {
SetBit(g_IsChatBlocked, player);
}

if (flags & BLOCK_MICRO) {
SetBit(g_IsMicroBlocked, player);
if (has_vtc()) {
VTC_MuteClient(player);
}
}

new now = get_systime();
g_PlayersData[player][PLAYER_BLOCK_EXPIRED] = now + (time * 60);

if (PunishFowrward(admin, player, time, flags, reason)) {
PunishNotify(admin, player, time, reason);
PunishLog(admin, player, time, flags, reason);

if (!g_Enabled) {
SetHooksEnable(true);
}

if (g_BanSystem != NONE && flags & BLOCK_BAN) {
InsertBan(admin, player, reason, time);
} else if (g_BlockList != INVALID_HANDLE) {
new data[256];
formatex(data, charsmax(data), "%d %d %d ^"%s^"", now, time, flags, reason);
nvault_set(g_BlockList, g_PlayersData[player][PLAYER_AUTHID], data);
}
} else {
//
}
}
Код:
CheckPlayer(id)
{
if (g_BlockList == INVALID_HANDLE) {
CheckFowrward(false, id);
return 0;
}

new data[256], timestamp;
if (!nvault_lookup(g_BlockList, g_PlayersData[id][PLAYER_AUTHID], data, charsmax(data), timestamp)) {
CheckFowrward(false, id);
return 0;
}

new createdStr[32], timeStr[32], flagsStr[32], reason[64];
#if AMXX_VERSION_NUM < 183
new pos = strbreak(data, createdStr, charsmax(createdStr), data, charsmax(data));
if (pos != -1) {
pos = strbreak(data, timeStr, charsmax(timeStr), data, charsmax(data));
}
if (pos != -1) {
pos = strbreak(data, flagsStr, charsmax(flagsStr), data, charsmax(data));
}
if (pos != -1) {
copy(reason, charsmax(reason), data);
}
#else
new pos;
pos = argparse(data, pos, createdStr, charsmax(createdStr));
if (pos != -1) {
pos = argparse(data, pos, timeStr, charsmax(timeStr));
}
if (pos != -1) {
pos = argparse(data, pos, flagsStr, charsmax(flagsStr));
}
if (pos != -1) {
copy(reason, charsmax(reason), data[pos]);
}
#endif

trim(createdStr);
trim(timeStr);
trim(flagsStr);
trim(reason);
remove_quotes(createdStr);
remove_quotes(timeStr);
remove_quotes(flagsStr);
remove_quotes(reason);

new created = str_to_num(createdStr);
new time = str_to_num(timeStr);
new expired = time > 0 ? created + (time * 60) : 0;

if (expired == 0 || expired > get_systime()) {

new flags = str_to_num(flagsStr);

ad_set_client(id, AimCheck, 0);
ad_set_client(id, NoSpreadCheck, 0);

SetBit(g_IsBlocked, id);

if (flags & BLOCK_ATTACK) {
SetBit(g_IsAttackBlocked, id);
}

if (flags & BLOCK_MOVE) {
SetBit(g_IsMoveBlocked, id);
}

if (flags & BLOCK_TIMEOUT) {
SetBit(g_IsAttackTimeout, id);
}

if (flags & BLOCK_CHAT) {
SetBit(g_IsChatBlocked, id);
}

if (flags & BLOCK_MICRO) {
SetBit(g_IsMicroBlocked, id);
if (has_vtc()) {
VTC_MuteClient(id);
}
}

g_PlayersData[id][PLAYER_BLOCK_EXPIRED] = expired;

new left = time > 0 ? expired - get_systime() : 0;
CheckNotify(id, time, left, reason);
CheckLog(id, created, time, left, flags, reason);
CheckFowrward(true, id);

if (!g_Enabled) {
SetHooksEnable(true);
}
} else {
nvault_remove(g_BlockList, g_PlayersData[id][PLAYER_AUTHID]);
CheckFowrward(false, id);
}

return 1;
}
Правильно ли?
К стати, исходник реаимдетектора можно отредактировать немного элегантнее, не удаляя макросы с причинами и временем.
Код:
server_cmd("amx_sb #%d abde 1w Aimbot", get_user_userid(index));

------>
Код:
server_cmd("amx_sb #%d abde %d ^"%s^"", get_user_userid(index), CFG_BAN_TIME_AIMBOT, CFG_REASON_AIMBOT);

+
Код:
server_cmd("amx_sb #%d abde 1w NoSpread", get_user_userid(index));

------>
Код:
server_cmd("amx_sb #%d a %d ^"%s^"", get_user_userid(index), CFG_BAN_TIME_NOSPREAD, CFG_REASON_NOSPREAD);

+
В настройках времени останется поставить "1w" (обязательно в ковычках)
 
Сообщения
124
Реакции
92
Помог
1 раз(а)
Leshiy, извиняюсь что поздно ответил.
Пост с инструкцией поправил с учетом смещения строк. Добавил скриншоты для наглядности. Также добавил инфу по правильной настройке причины и времени.
 
Сообщения
80
Реакции
54
Помог
1 раз(а)
Bullseye, я уже заметил изменения и уточнения. Спасибо. Открытым для меня остался только 1 вопрос
Чтобы избавиться от отступов, нужно оставить значение в ковычках пустым?
#define MENU_TAB ""
 
Сообщения
23
Реакции
2
fantom, если говорить об обычном функционале плагина, то было бы прекрасно, если был бы квар с выбором в меню не только того что Включить/Отключить, а и изменения самих значений:

reserved_slots =
block_damage =
block_move =
block_timeout =

Будет удобней наказывать всех по разному, а не под одну гребенку. Или я упустил из виду, и это есть?
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
best101, есть только шаблоны на разные виды наказаний (флаги), но индивидуальные параметры для каждого типа наказания на каждый шаблон не имеются, разве этот функционал действительно востребован?
 
Сообщения
23
Реакции
2
wopox1337,
Почему бы нет? Ведь эта будет тонкая детальная настройка наказания прямо через игру.

К примеру есть подозрения на Verm....n (да и валом их стало), и дабы не дать игроку сидеть с улыбкой на лице, наказать его по всем параметрам стрельбы на 10-20%.
Ну это так, для самоуспокоения скорее.
Просто даже любопытно посмотреть за таким игроком, и на его реакцию.
 

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

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