Нубский вопрос по equali

ssx

Сообщения
272
Реакции
71
Наклепал на коленке функцию
Код:
public Cmd_Hook_Say()
{
    new message[256]
    read_args(message, 255)
    remove_quotes(message)

    if ( (equali(message, "/", 1)) || (equali(message, "rtv", 3)) || (equali(message, "кем", 3)) || (equali(message, ".", 1)) )
    {
        return PLUGIN_HANDLED
    }
    return PLUGIN_CONTINUE
}
Но скрывает только сообщения начинающийся с /
Подскажите почему не скрывает сообщения начинающийся на rtv, кем или точки ?
 
Сообщения
14
Реакции
6
Попробуй поставить этот плагин выше, чем плагин чата
+ вместо equali(message, "/", 1) (и точки), можешь использовать message[0] == '/'
 
  • Нравится
Реакции: ssx

ssx

Сообщения
272
Реакции
71
Phoix, Чат менеджеров и плагинов подменяющих чат нету (игра Half-Life)

Сделал вот так но работает как и прежде - скрывает только что со слэша начинается.
Код:
if ( (equali(message[0], "/")) || (equali(message[2], "rtv")) || (equali(message[2], "кем")) || (equali(message[0], ".")) )
UPD: отключил все плагины оставив только этот и теперь блокирует только конкретно / и .
Всё что начинается со сдэша или с точки не блокирует. Бред какой-то .. продолжаю методом тыка определять как блокировать..
 
Последнее редактирование:
Сообщения
3,256
Реакции
1,436
Помог
121 раз(а)
ssx, он сказал только для / и . используя скобки, ты сравниваешь конкретный символ
 
  • Нравится
Реакции: ssx
Сообщения
225
Реакции
90
Помог
1 раз(а)
contain/containi тут мне кажется удобнее использовать
 
  • Нравится
Реакции: ssx
Сообщения
191
Реакции
111
Помог
10 раз(а)
Возможно там еще какие то символы лишние есть, в консоль пробовал выводить message ?
Как вариант можно еще попробовать strfind наверное.
 
  • Нравится
Реакции: ssx
Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
Phoix, Чат менеджеров и плагинов подменяющих чат нету (игра Half-Life)

Сделал вот так но работает как и прежде - скрывает только что со слэша начинается.
Код:
if ( (equali(message[0], "/")) || (equali(message[2], "rtv")) || (equali(message[2], "кем")) || (equali(message[0], ".")) )
UPD: отключил все плагины оставив только этот и теперь блокирует только конкретно / и .
Всё что начинается со сдэша или с точки не блокирует. Бред какой-то .. продолжаю методом тыка определять как блокировать..
Ты сравниваешь "rtv" и "кем" с 3 символа.
 
Сообщения
645
Реакции
222
Помог
11 раз(а)
Не?
Код:
if(containi(message, "rtv") != -1 || containi(message, "кем") != -1))
    return PLUGIN_HANDLED;
 
  • Нравится
Реакции: ssx
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
native equali(const a[],const b[],c=0);

cNumber of characters to compare.

У тебя слово "кем" на русском язык, у него длинна будет 6, а не 3 а значит и сравнивать будет не верно, на слове "ке" уже будет обрезать.

Проверил, все работает, хз
Лучше запрещенные слова/символы вынести отдельно и циклом пройтись, я думаю

Код:
#include < amxmodx >

#pragma semicolon 1

public plugin_init( )
{
    register_clcmd( "say", "clcmd_Say" );
    register_clcmd( "say_team", "clcmd_Say" );
}

public clcmd_Say( const id )
{
    new sMessage[ 512 ];
 
    read_args( sMessage, charsmax( sMessage ) );
 
    remove_quotes( sMessage );
 
    trim( sMessage );
 
    if( sMessage[ 0 ] == EOS || sMessage[ 0 ] == '/' || sMessage[ 0 ] == '.' )
    {
        return PLUGIN_HANDLED;
    }
 
    if( equali( sMessage, "rtv", 3 ) || equali( sMessage, "кем", 6 ) )
    {
        return PLUGIN_HANDLED;
    }
 
    return PLUGIN_CONTINUE;
}
8 Апр 2021
ssx, а зачем все слова обрезать начинающие на кем? Если я напишу в чате "кем нибудь" тоже не выведет в чат, тут лучше просто
Код:
if( equali( sMessage, "rtv" ) || equali( sMessage, "кем" ) )
{
        return PLUGIN_HANDLED;
}
 
Последнее редактирование:
  • Нравится
Реакции: ssx

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

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