Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

BadNames Detector

, Ограничивает игроков со стандартными никами мониторингов.
Статус пользователя wopox3
сообщение 30.11.2016, 10:53
Сообщение #1


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

BadNames Detector




Версия: 0.0.3a
Автор: wopox1337
Описание: Плагин ограничит в общении игроков, имеющих стандартный никнейм (Strikes, etc...). Список никнеймов указыввется в конфигурационном файле, BadNames.ini. Лёгок в работе.
[ GitHub ]

Скачать: 0.0.3a Прикрепленный файл  BadName_Detector.sma ( 5,25 килобайт ) Кол-во скачиваний: 50

Исходный код плагина:

Код:

/*
Плагин: Bad Name Detector
Автор: wopox1337
Описание: Игрокам с не допустимыми именами блокируется чат и микрофон.
Имена берутся из файла '/amxmodx/configs/BadNames.ini"

Квары: badname_punishtype [a|b|ab]
a - блокировать микрофон;
b - блокировать чат;
*/

new const BADNAME_CONFIG[] = "/BadNames.ini";

#include <amxmodx>
#include <engine>

new const VERSION[] = "0.0.3a";

#if AMXX_VERSION_NUM < 183
const MAX_NAME_LENGTH = 32;
#endif

new Array:g_aBadNames, g_iBadNamesSize;
new g_bitBlockFlags;

enum
{
BLOCK_VOICE = (1<<0),
BLOCK_CHAT = (1<<1)
}

new g_bPunishedChatPlayers;

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

//Thanks to Vaqtincha for this macros
#define ContainWord(%1,%2) (containi(%1,%2) != -1)

new g_iMsgId_SendAudio;

public plugin_init()
{
register_plugin("Bad Name Detector", VERSION, "wopox1337");
register_cvar("badname_detector", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

register_cvar("badname_punishtype", "ab");

new szCvarString[3];
get_cvar_string("badname_punishtype", szCvarString, charsmax(szCvarString))

if(ContainWord(szCvarString, "a"))
{
g_bitBlockFlags |= BLOCK_VOICE
}
if(ContainWord(szCvarString, "b"))
{
g_bitBlockFlags |= BLOCK_CHAT

register_clcmd("say", "hCommand_Say");
register_clcmd("say_team", "hCommand_Say");

g_iMsgId_SendAudio = get_user_msgid("SendAudio");
}

if(!g_bitBlockFlags)
{
new szMsg[64];
formatex(szMsg, charsmax(szMsg), "CVar badname_punishtype = '' (empty), plugin stopped!");
set_fail_state(szMsg);
}

g_aBadNames = ArrayCreate(MAX_NAME_LENGTH);
}

public plugin_cfg()
{
new szFileName[128], iFilePointer;
get_localinfo("amxx_configsdir", szFileName, charsmax(szFileName));
add(szFileName, charsmax(szFileName), BADNAME_CONFIG);

iFilePointer = fopen(szFileName, "rt");
if(!iFilePointer)
{
new szMsg[64];
formatex(szMsg, charsmax(szMsg), "Config file '%s' not loaded!", szFileName);
set_fail_state(szMsg);
}

new szLine[32];
while(!feof(iFilePointer))
{
fgets(iFilePointer, szLine, charsmax(szLine));
trim(szLine);

if(!szLine[0] || szLine[0] == ';')
{
continue;
}

ArrayPushString(g_aBadNames, szLine);
}
fclose(iFilePointer);

g_iBadNamesSize = ArraySize(g_aBadNames);
if(!g_iBadNamesSize)
{
new szMsg[64];
formatex(szMsg, charsmax(szMsg), "Names are not found in the file '%s'!", szFileName);
set_fail_state(szMsg);
}
}

public client_infochanged(pPlayerId)
{
if(!is_user_connected(pPlayerId) || is_user_bot(pPlayerId) || is_user_hltv(pPlayerId))
{
return PLUGIN_CONTINUE;
}

CheckNickname(pPlayerId);

return PLUGIN_CONTINUE;
}

public CheckNickname(pPlayerId)
{
new szNewName[MAX_NAME_LENGTH], szOldName[MAX_NAME_LENGTH];
get_user_name(pPlayerId, szOldName, charsmax(szOldName));
get_user_info(pPlayerId, "name", szNewName, charsmax(szNewName));

if(equal(szNewName, szOldName))
{
return PLUGIN_CONTINUE;
}

for(new i, szSuspectedName[charsmax(szNewName)]; i < g_iBadNamesSize; i++)
{
ArrayGetString(g_aBadNames, i, szSuspectedName, charsmax(szSuspectedName));

//if(equali(szNewName,szSuspectedName))
if(ContainWord(szNewName,szSuspectedName))
{
Get_PunishPlayer(pPlayerId, szNewName);

return PLUGIN_CONTINUE;
}
}

Reset_PunishBits(pPlayerId);

return PLUGIN_CONTINUE;
}

public client_disconnect(pPlayerId)
{
reset_bit(g_bPunishedChatPlayers, pPlayerId);
}

public hCommand_Say(pPlayerId)
{
if(get_bit(g_bPunishedChatPlayers, pPlayerId))
{
client_print(pPlayerId, print_chat, "[BLOCKED] Ваш чат заблокирован! Смените ник со стандартного для разблокировки чата!");
SendAudio(pPlayerId, "sound/buttons/blip1.wav");

return PLUGIN_HANDLED;
}

return PLUGIN_CONTINUE;
}

public Get_PunishPlayer(pPlayerId, const szPlayerName[])
{
if(g_bitBlockFlags & BLOCK_VOICE)
{
set_speak(pPlayerId, SPEAK_MUTED);
}
if(g_bitBlockFlags & BLOCK_CHAT)
{
set_bit(g_bPunishedChatPlayers, pPlayerId);
}

set_task(5.0, "task_ShowMessage", pPlayerId);

// Логирование (temp)
log_to_file("BadNames_Detected.log", "Player: '%s'", szPlayerName);
}

public task_ShowMessage(pPlayerId)
{
if(!is_user_connected(pPlayerId))
{
return PLUGIN_HANDLED;
}

set_hudmessage(.red = 255, .x = 0.4, .y = -1.0, .effects = 1, .fxtime = 3.0, .holdtime = 5.0);
show_hudmessage(pPlayerId, "Вам заблокирован доступ к чату^nсмените ник для разблокировки!");

return PLUGIN_CONTINUE;
}

public plugin_end()
{
ArrayDestroy(g_aBadNames);
}

Reset_PunishBits(pPlayerId)
{
reset_bit(g_bPunishedChatPlayers, pPlayerId);
set_speak(pPlayerId, SPEAK_ALL);
}

stock SendAudio(pPlayerId, const szDirSound[])
{
message_begin(MSG_ONE_UNRELIABLE, g_iMsgId_SendAudio, .player = pPlayerId);
write_byte(pPlayerId);
write_string(szDirSound);
write_short(PITCH_NORM);
message_end();
}



Прошлые версии:

Github or wait


Отредактировал: wopox3, - 30.11.2016, 17:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 7 раз
   Цитировать сообщение
Статус пользователя mOdest
сообщение 30.11.2016, 10:57
Сообщение #2


Стаж: 7 лет 8 месяцев

Сообщений: 1255
Благодарностей: 255
Полезность: 79

На ReHLDS будет работать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 30.11.2016, 11:16
Сообщение #3


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

Цитата(mOdest @ 30.11.2016, 11:57) *
На ReHLDS будет работать?

Да. Ограничений в работе плагина не имеется.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 30.11.2016, 12:29
Сообщение #4
Стаж: 9 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

wopox3, client_infochanged вызывается не только при смене имени игрока, не стоит просто так гонять цикл.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 30.11.2016, 12:34
Сообщение #5


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

Цитата(Algalon @ 30.11.2016, 13:29) *
wopox3, client_infochanged вызывается не только при смене имени игрока, не стоит просто так гонять цикл.


Спасибо, это уже мне сообщили, принялся за исправления.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mistrick
сообщение 30.11.2016, 12:50
Сообщение #6


Стаж: 11 лет

Сообщений: 543
Благодарностей: 426
Полезность: 1034

wopox3, достаточно проверить был ли изменен ник, перед проверкой на плохой ник.
И зачем воспроизводить звук через client_cmd(), eсли можно использовать SendAudio?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 30.11.2016, 13:07
Сообщение #7


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

Цитата(Mistrick @ 30.11.2016, 13:50) *
wopox3, достаточно проверить был ли изменен ник, перед проверкой на плохой ник.
И зачем воспроизводить звук через client_cmd(), eсли можно использовать SendAudio?

Ок, оставлю только проверку в infochanged, раз он отсылается при коннекте.
Про SendAudio спасибо, напомнил. good.gif

Отредактировал: wopox3, - 30.11.2016, 13:17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 30.11.2016, 14:17
Сообщение #8


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902



Плагин обновлён до версии 0.0.3.


Изменения: [GIT #8eaa631]
• Оптимизация проверок;
• Корректировка оповещения;
• Исправление ошибок.

Благодарности за поддержку: Algalon, Mistrick.

Отредактировал: wopox3, - 30.11.2016, 14:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mistrick
сообщение 30.11.2016, 15:32
Сообщение #9


Стаж: 11 лет

Сообщений: 543
Благодарностей: 426
Полезность: 1034

Код:
SendAudio(pPlayerId, "spk buttons/blip1.wav");

->
Код:
SendAudio(pPlayerId, "sound/buttons/blip1.wav");

Там полный пусть указывается.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя IAMHARD
сообщение 30.11.2016, 15:47
Сообщение #10
Стаж: 9 лет 7 месяцев

Сообщений: 194
Благодарностей: 57
Полезность: 234

Перед компилированием, если качали исходник, нужно преобразовать кодировку в UTF-8 без BOM
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fake`
сообщение 30.11.2016, 16:08
Сообщение #11


Стаж: 11 лет

Сообщений: 1524
Благодарностей: 320
Полезность: 457

А зачем звук?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя r1nk0
сообщение 30.11.2016, 16:25
Сообщение #12


Стаж: 10 лет

Сообщений: 1417
Благодарностей: 705
Полезность: 349

Цитата(Fake` @ 30.11.2016, 17:08) *
А зачем звук?


оповещение в чат идет


Создание и редактирование карт ($) - vk.com/id476857873
Настройка и техническое обслуживание ваших игровых серверов - vk.com/id476857873
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 30.11.2016, 16:27
Сообщение #13


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

Цитата(Fake` @ 30.11.2016, 17:08) *
А зачем звук?

В качестве уведомления, при попытке написать в чат, когда заблокирован.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
byxou
сообщение 30.11.2016, 19:05
Сообщение #14
Стаж: 8 лет 2 месяца

Сообщений: 318
Благодарностей: 55
Полезность: < 0

дайте базу BadNames.ini хДДДДДДДД
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 30.11.2016, 21:39
Сообщение #15


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

Цитата(byxou @ 30.11.2016, 20:05) *
дайте базу BadNames.ini хДДДДДДДД

повписывай популярные ники)

Strikes
HardPlayer
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fake`
сообщение 30.11.2016, 22:01
Сообщение #16


Стаж: 11 лет

Сообщений: 1524
Благодарностей: 320
Полезность: 457

Цитата(byxou @ 30.11.2016, 20:05) *
дайте базу BadNames.ini хДДДДДДДД

По темам раскруток полазай, с каждой темы наберешь кок раз базу.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
danisimus
сообщение 1.12.2016, 1:52
Сообщение #17
Стаж: 15 лет

Сообщений: 1324
Благодарностей: 376
Полезность: 172

Плагин конечно хороший, но можно получить бан на мониторингах за призыв сменить ник.

Отредактировал: danisimus, - 1.12.2016, 1:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
EvilSMS
сообщение 1.12.2016, 2:30
Сообщение #18
Стаж: 8 лет 6 месяцев

Сообщений: 1801
Благодарностей: 410
Полезность: < 0

danisimus, не думаю, не кто не запрещает блокировать чат и микро, ну если брать админа кс-страйк.нет, то тут уже другой разговор crazy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DOMVZORVU
сообщение 1.12.2016, 3:49
Сообщение #19
Стаж: 9 лет 2 месяца

Сообщений: 186
Благодарностей: 84
Полезность: 237

Цитата(danisimus @ 1.12.2016, 2:52) *
Плагин конечно хороший, но можно получить бан на мониторингах за призыв сменить ник.

Не согласен, вы делаете ограничение на пользованием голосового чать, а не запрещаете играть на сервере.
Не путайте одно с другим.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 1.12.2016, 7:42
Сообщение #20


Стаж: 11 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

Цитата(IAMHARD @ 30.11.2016, 16:47) *
Перед компилированием, если качали исходник, нужно преобразовать кодировку в UTF-8 без BOM

Исправлено.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: