его там нет, но плагин кидает предупреждение за rtv, я даже пробовал в sm_acf_whitecommands прописывать, он всё равно кидает предупреждениеИнтересно даже стало, зачем "rtv" в censure лист добавлять?
почему тогда мне не кидает?его там нет, но плагин кидает предупреждение за rtv, я даже пробовал в sm_acf_whitecommands прописывать, он всё равно кидает предупреждение
без понятия.почему тогда мне не кидает?
Возможный конфликт? Разве что, что-то меняет аргумент "say"/"say_team" перед непосредственным вызовом форварда, т.к. далее данные пишутся в буфер и код работает именно с ним.@Skeriiz, потому что не учитываете возможные конфликты с другими плагинами, потому и глупо об этом говорить, не видя плагинлист как минимум.
есть вероятность что из-за переопределений в Material Admin?Разве что, что-то меняет аргумент "say"/"say_team"
Предупреждение выдается при выполнении нескольких обязательных условийесть вероятность что из-за переопределений в Material Admin?
вот скрин, написал просто rtv и выдал предупреждениеСкрины или демку детектов при написании "rtv" можно?
UTF8StrContains("rtv", ".tv", false) != -1
// Код валиден. Он тупо не учитывает точку.
// И StrContains... походу дело на уровне SM.
L 02/09/2019 - 00:42:02: [GameChatFilter.smx] Entered: rtv
L 02/09/2019 - 00:42:02: [GameChatFilter.smx] INPUT: PHRASE: rtv | LEN: 256
L 02/09/2019 - 00:42:02: [GameChatFilter.smx] PHRASE: rtv contain PHRASE: .tv
L 02/09/2019 - 00:42:02: [GameChatFilter.smx] Censure filter
L 02/09/2019 - 00:42:02: [GameChatFilter.smx] WARNS: 1 FOR Skeriiz
L 02/09/2019 - 00:42:02: [GameChatFilter.smx] INPUT: PHRASE: [ACF] Ай яй яй. Держи свое 1 предупреждение! | LEN: 256
if(UTF8StrContains(szPhrase, szRegex, false) != -1 \
|| ((iIndex = UTF8StrContains(szPhrase, szRegex[1], false)) != -1 && rfType == CENSURE))
{
if(rfType == CENSURE && szRegex[0] == '~'){
sPosCorrect(iIndex, szPhrase, szPhrase, iLen);
return UTF8StrEqual(szRegex[1], szPhrase, false);
}
return true;
}
в регексах точка обозначает 1 любой символrtv contain PHRASE: .tv
А причём здесь regex то?в регексах точка обозначает 1 любой символ
public void OnPluginStart()
{
char szBuffer[256] = "rtv";
char szRegex[100] = ".tv";
if(UTF8StrContains(szBuffer, szRegex, false) != -1){
LogMessage("UTF8: RTV contain .tv");
}
else{
LogMessage("UTF8: RTV !contain .tv"); // всегда будет это
}
if(StrContains(szBuffer, szRegex, false) != -1){
LogMessage("RTV contain .tv");
}
else{
LogMessage("RTV !contain .tv"); // всегда будет это
}
}
public void OnPluginStart()
{
if(IsBadPhrase(CENSURE, "rtv", 256)){
LogMessage("Bad phrase");
}
}
bool IsBadPhrase(REGEX_FILES rfType, char[] szPhrase, int iLen)
{
static int iIndex; char szRegex[100];
LogMessage("INPUT: PHRASE: %s | LEN: %i", szPhrase, iLen);
// INPUT: PHRASE: rtv | LEN: 256
for(int i; i < iLenArray[rfType]; i++)
{
RegexListArray[rfType].GetString(i, SZF(szRegex));
if(!szRegex[0]){
continue;
}
// 100% проходит первую проверку
if((iIndex = StrContains(szPhrase, szRegex, false)) != -1 \
|| ((iIndex = UTF8StrContains(szPhrase, szRegex[1], false)) != -1 && rfType == CENSURE))
{
if(rfType == CENSURE && szRegex[0] == '~'){ // не выполняется, как и должно
LogMessage("PHRASE: %s contain ~", szRegex);
sPosCorrect(iIndex, szPhrase, szPhrase, iLen);
return UTF8StrEqual(szRegex[1], szPhrase, false);
}
LogMessage("PHRASE: %s contain PHRASE: %s | INDEX: %i | szREGEX[0] : %c", szPhrase, szRegex, iIndex, szRegex[0]);
// ловим PHRASE: rtv contain PHRASE: .tv | INDEX: 1 | szREGEX[0] : .
return true;
}
}
return false;
}
// подгрузка списков и т.д.
// вместо
return true;
// возвращал
return !strcmp(szRegex[iIndex], szRegex, false);
// на что ловил такой бред
// PHRASE: tva contain PHRASE: .tv | INDEX: 0 | szREGEX[0] : .
// Censure filter
// WARNS: 1 FOR Skeriiz
а с чего оно должно выполняться, как было задумано? )if(rfType == CENSURE && szRegex[0] == '~'){ // не выполняется, как и должно
Пользователь Skeriiz разместил новый ресурс:
[CHAT] AnyWordsFilter - Блокирует трансляцию сообщения в чат с наличием указанных слов
Узнать больше об этом ресурсе...
- Последний релиз с гита. ( в нем был фикс проблемы от 9 февраля.)