GameChat Filter [Удалено]

Статус
В этой теме нельзя размещать новые ответы.

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Почистил и оптимизировал немного код
Должно корректно перехватывать сообщения на старом движке
Заодно перевёл инклюд на новый синтаксис (ну и добавил функцию инвертирования регистра :cool:)

P.S. Да, мне снова было нечем заняться и страдал фигнёй переписывая AnyChatFilter v1.5.0.1 (кстати, нумерация такого вида обычно только в версиях SM, в плагинах чаще вида x.x или x.x.x)
--- Добавлено позже ---
Если кому интересно, то вот плагин, на котором я тестировал конвертацию регистра:
 

Вложения

  • UTF-8-string.inc
    7.4 КБ · Просмотры: 4
  • case_convert_test.sp
    799 байт · Просмотры: 8
  • AnyChatFilter 1.5.1.sp
    9.4 КБ · Просмотры: 11

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #82
@Grey83, нумерация из четырёх цифр более удобная, если для себя обозначить, что означает какая цифра.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Крузяра, ну меня только на 3 хватает: 1 - глобальные изменения в коде, 2 - серьёзные нововведения (ну или смена синтаксиса), 3 - мелкие изменения и фиксы
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Почистил и оптимизировал немного код

Ну манипуляции с фигурными скобками(а точнее их отсутствие) больше снижает читабельность кода, нежели нечто большее(На текущее время написано множество статей/книг по такому поводу) =>
Код не чистит оптимизации не дает.
Новый синт. из этой же истории
PHP:
if(!iArgs) for(int i; i < 3; i++) LoadFiles(g_szPaths[i], view_as<REGEX_FILES>(i));

При таком раскладе, всегда будет -1 или же будет индекс, но разделения не произойдет.
Тем более наличие "случайного дублирования" символа приведет к ложному форматированию. Не доглядел..
PHP:
public void whiteCommands(ConVar cv, const char[] oldV, const char[] newV)
{
    char szBuffer[PLATFORM_MAX_PATH];
    cv.GetString(SZF(szBuffer));    TrimString(szBuffer);

    if(FindSlashPos(szBuffer) != -1)
        ExplodeString(szBuffer, "|", SZF(g_szWhiteCom), sizeof(g_szWhiteCom[]));
    else strcopy(g_szWhiteCom[0], sizeof(g_szWhiteCom[]), szBuffer);
}

stock int FindSlashPos(const char[] str)
{
    int i;
    while(str[i]) if(str[i] == '/') return i;
    return -1;
}

кстати, нумерация такого вида обычно только в версиях SM, в плагинах чаще вида x.x или x.x.x
На самом деле никогда не задумывался на этот счет, какой-либо конкретной привязки нет, что дает автору право выбора...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Ну манипуляции с фигурными скобками(а точнее их отсутствие) больше снижает читабельность кода
мне больше всего ухудшает читаемость наличие ненужных скобок и расположение открывающей в конце строки :dntknw:
При таком раскладе, всегда будет -1 или же будет индекс, но разделения не произойдет.
почему ты так решил?
 

Rezder

Участник
Сообщения
153
Реакции
8
Почему он наказывает за слово например апдаун т.е если в слове есть другое слово, таких же будет много слов и просто так муты будет выдавать.
Можно сделать чтобы он чисто за слово наказывал если оно точь в точь совпадает?
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Почему он наказывает за слово например апдаун т.е если в слове есть другое слово, таких же будет много слов и просто так муты будет выдавать.
Можно сделать чтобы он чисто за слово наказывал если оно точь в точь совпадает?
В след. обнове...
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #89
@Skeriiz, там хуже будет.
SM просто вырубит плагин. Это бесконечный цикл без результата.

PHP:
stock int FindSlashPos(const char[] str)
{
    int i = -1;
    while(str[++i]) if(str[i] == '/') return i;
    return -1;
}
Вот так будет с результатом, если уж экономить на строчках.
 
Последнее редактирование:

asd& [BLR]

Участник
Сообщения
136
Реакции
20
Css v34 SM 1.9.0.6190.
Плагин работает чудесно до первого наказания. После первого мута начинает просто выдавать предупреждения и по концовке их обнуляет, но никакого мута не дает.
В логах ошибок никаких нету.
После перезагрузки плагина опять таки выдает 1 мут и больше не хочет.

Также неполноценно работает с VIP чатом (проверял на випке от wS). Выдает предупреждения, но в чате не блокирует само сообщение.
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Крузяра, ага, увеличение счётчика забыл добавить.

Исправил исходник в том сообщении
--- Добавлено позже ---
@Skeriiz, в функцию RestrictPlayer() нет необходимости передавать значение квара sm_acf_command в качестве одного из параметров, т.к. можно и так это значение в функции получить:
PHP:
void RestrictPlayer(int client)
{
    char sUID[24], buffer[128];
    FormatEx(SZF(sUID), "#%i", GetClientUserId(client));
    strcopy(SZF(buffer), g_szCommand);
    ReplaceString(SZF(buffer), "{UID}", sUID, true);
    ServerCommand(buffer);
    g_iWarnCount[client] = 0;
}
 
Последнее редактирование:

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
@Skeriiz, в функцию RestrictPlayer() нет необходимости передавать значение квара sm_acf_command в качестве одного из параметров, т.к. можно и так это значение в функции получить:
PHP:
void RestrictPlayer(int client)
{
    char sUID[24], buffer[128];
    FormatEx(SZF(sUID), "#%i", GetClientUserId(client));
    strcopy(SZF(buffer), g_szCommand);
    ReplaceString(SZF(buffer), "{UID}", sUID, true);
    ServerCommand(buffer);
    g_iWarnCount[client] = 0;
}
Что так, что сяк, значение пишется в локальный буфер и функция работает с ним.
Единственный плюс от передачи значения аргументом, в данной ситуации - адекватный стектрейс (или же нет... на ваш вкус и цвет)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #95
А как по мне, если оставить передачу аргументом, то можно оставить гибкость функции. Нет привязки к конкретной глобальной переменной. В любой другой момент можно передать другую строку, и оно просто будет работать.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Крузяра, вот только другая переменная должна будет являться строковой и содержать (ну или не содержать) в себе вот эти символы "{UID}"
А также иметь отношение к счётчику предупреждений (g_iWarnCount[client] = 0;)
--- Добавлено позже ---
Да и вообще создавать отдельную функцию не было никакой необходимости, т.к. на неё ссылаются всего 1 раз в коде плагина
Обычно какие-либо действия выводить в отдельную функцию имеет смысл тогда, когда одна и та же последовательность действий используется несколько раз в коде.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #97
@Grey83, необязательно.
Иногда вынести в отдельную функцию полезно, если планируется её использовать в других плагинах. Чтобы просто скопировать, и вставить в другом месте.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Крузяра, а что мешает просто скопировать и вставить не вынося в отдельную функцию?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@Grey83, как раз таки привязка к внешним дополнительным глобальным переменным.
Нет привязки - нет проблем при банальном копировании, ибо ничего не меняешь, а на компиляции не ловишь непонятных ошибок вроде "undefined variable".
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу