[ANY] GameChatFilter

[ANY] GameChatFilter v1.7.0.3

Нет прав для скачивания

Grey83

похухоль
Сообщения
2,962
Реакции
1,648
@Крузяра, у Skeriiz, в данном случае, всё равно задействована внешняя переменная g_iWarnCount[client], так что менять всё равно придётся.
Если уж делать такое, то делать библиотеку функций, вроде smlib.
 
Сообщения
73
Реакции
5
Не знаю чем считать, то-ли багом, то-ли фичей. Если уже есть мут и продолжаешь в чат писать, то выдаются предупреждения и по окончанию обновляет действующий мут. Поэтому всё же баг, так как можно получить мут за маты и тем самым сбить предыдущий.
 

wAries

Окоп-копальщик
Сообщения
534
Реакции
302
Не знаю чем считать, то-ли багом, то-ли фичей. Если уже есть мут и продолжаешь в чат писать, то выдаются предупреждения и по окончанию обновляет действующий мут. Поэтому всё же баг, так как можно получить мут за маты и тем самым сбить предыдущий.
мут и гаг - разные вещи, зачем мутить, если игрок в чате пишет?
 
Сообщения
73
Реакции
5
Также если имеется к примеру перманентный мут, и получаешь гаг от плагина, то перманентный мут переходит в перманентное отключение чата и микро.
--------------------
Данный баг скорее всё же относиться к МА.
 
Последнее редактирование:

wAries

Окоп-копальщик
Сообщения
534
Реакции
302
Пользователь Skeriiz обновил ресурс [CHAT] AnyChatFilter новой записью:

Update 1.6

  • В архиве залиты билды под MA, SB++ и Basecomm/ban со стд. настройками.
  • Добавил режимы отлова слов (решение для: [CHAT] AnyChatFilter). Смотрим описание или гит или меня спрашиваем.
  • Добавил решение для: [CHAT] AnyChatFilter . Удаляем старый конфиг с сервера (cfg/anychatfilter.cfg)
  • Много чего нужно настраивать в...
Узнать больше об этом обновлении...
 

wAries

Окоп-копальщик
Сообщения
534
Реакции
302
Последнее редактирование:

Kruzya

Хам и грубиян
Супермодератор
Сообщения
7,664
Реакции
5,919
@Skeriiz, сделай по-человечески для людей. tryinclude + if defined вместе с LibraryExists() прямо в функциях + в AskPluginLoad2() - MarkNativeAsOptional().
 

wAries

Окоп-копальщик
Сообщения
534
Реакции
302
Пользователь Skeriiz обновил ресурс [CHAT] AnyChatFilter новой записью:

Upd 1.6.3

  • Ничего не нужно настраивать в исходе, т.е. сделано по - человечески
  • Все фразы плагина залиты в транслятор (translations).
  • Конфиг генится автоматически, после подгрузки плагина(для тех, кто изменял значения кваров в исходе)
  • Добавлен colors.inc, большего, думаю, не нужно.
  • Жду фидбека...
P.s. Те, кто уже имеет настроенные конфиги, достаточно просто закинуть бинарник с фразами переводов.
Узнать больше об этом обновлении...
 

Kruzya

Хам и грубиян
Супермодератор
Сообщения
7,664
Реакции
5,919
Дошли руки посмотреть исходник.
PHP:
ConVar cvar;

(cvar = CreateConVar("sm_acf_ipfilter", "1", "Фильтр IP в чате", _, true, 0.0, true, 1.0)).AddChangeHook(IsIPBlock);
За такое пора убивать уже. Из плагина в плагин мигрирует. Уже достало.
Это не оптимизация ни капли, и производительность не повышает. Скорее наоборот, ухудшает, ибо при создании cvar, он ещё зануляется сразу же. В итоге лишний вызов.

PHP:
(cvar = CreateConVar("sm_acf_ipfilter", "1", "Фильтр IP в чате", _, true, 0.0, true, 1.0)).AddChangeHook(IsIPBlock);
CONVARHOOK(IsIPBlock, cvar);
Вызов хука лишён смысла сразу после создания переменной. Особенно до AutoExecConfig().
С конфигами, кстати, веселье при старте плагина. Довольно часто наблюдаю картину, что сервер попросту не вызывает хуки переменных при первоначальном чтении конфига...

PHP:
public void OnLibraryAdded(const char[] name)
{
	if(!StrEqual(name, "materialadmin") && !StrEqual(name, "sourcecomms") && !StrEqual(name, "sourcebans")){
		return;
	}

	g_srSystem = UpdateSystem();
}

public void OnLibraryRemoved(const char[] name)
{
	if(!StrEqual(name, "materialadmin") && !StrEqual(name, "sourcecomms") && !StrEqual(name, "sourcebans")){
		return;
	}

	g_srSystem = UpdateSystem();
}
Вот тут уже можно сделать "мнимую" оптимизацию, создав отдельную функцию, и вызывая её. DRY, в общем.

PHP:
g_Enabled = (!g_bEnabledFilter[IP_LIST] && !g_bEnabledFilter[CENSURE] && !g_bEnabledFilter[SERVMSG]) ? false : true;
Возможно, я сейчас тайну года открою, но результаты подобных if-выражений всегда возвращают boolean, и зачем тернарный оператор здесь применяется - неясно.
Можно сократить до:
PHP:
g_Enabled = !(!g_bEnabledFilter[IP_LIST] && !g_bEnabledFilter[CENSURE] && !g_bEnabledFilter[SERVMSG]);
PHP:
public void OnClientPutInServer(int iClient)
{
	if(!iClient || !IsClientInGame(iClient) || IsFakeClient(iClient)){
		return;
	}
Такое я вижу впервые. В частности, чтобы после захода игрока, его индекс был невалидным, или он был не в игре.
Про Fake молчу, ибо ок.

PHP:
public Action OnClientSayCommand(int client, const char[] command, const char[] sArgs)
{
	if(!g_Enabled || !client || !IsClientInGame(client) || IsAlreadeChatMuted(client))	{
		//LogMessage("NOT ENABLED");
		return Plugin_Continue;
	}
Тоже самое, что и выше.
Если ещё отрицательный индекс можно допустить (в чат написали по ркону или с консоли сервера), то чтобы игрок писал в чат, не находясь на нём - нет.
 

wAries

Окоп-копальщик
Сообщения
534
Реакции
302
@Крузяра, не задавался вопросом оптимизации кода, на самом деле, там горазда больше моментов, которые стоит изменить, но ... to be continued.
 
Сверху