Скриптер
Участник
Пользователь
- Сообщения
- 673
- Реакции
- 242
- Помог
- 11 раз(а)
Добрый день!
Прошу вашей содействие, попытался сделать следующие, сохранить каждое слово через RegEx, полученный результат фильтровать через Array
Проблема в том что с конфигурационного файла Pattern(RegEx) берет последний слова на файле,
Знающие люди подскажите как правильно занести данные в патерн и сделать возможность сверка слов через Array
Другими словами чего бы я не написал из трех слов, то вернет только последние слово, т.е.
Прошу вашей содействие, попытался сделать следующие, сохранить каждое слово через RegEx, полученный результат фильтровать через Array
Проблема в том что с конфигурационного файла Pattern(RegEx) берет последний слова на файле,
Знающие люди подскажите как правильно занести данные в патерн и сделать возможность сверка слов через Array
Код:
#include < amxmodx >
#include < amxmisc >
#include < regex >
new Regex:g_pPattern = REGEX_PATTERN_FAIL;
new Regex:g_pPatternFlags;
new Array:g_aTest;
new g_aTestSize;
enum _:DATA_COSTUMES_PRECACHE
{
MODEL_NAME[32],
SUB_MODEL[4]
}
public plugin_cfg()
{
new szCfgDir[64], szCfgFile[128];
get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
formatex(szCfgFile, charsmax(szCfgFile), "%s/pattern_test.ini", szCfgDir);
if(file_exists(szCfgFile))
{
new aDataTestPatternArray[DATA_COSTUMES_PRECACHE], szBuffer[256], iLine, iLen;
g_aTest = ArrayCreate(DATA_COSTUMES_PRECACHE);
new iReturn;
new szFlags[ 5 ];
while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
{
if(!iLen || szBuffer[0] == ';') continue;
parse
(
szBuffer,
aDataTestPatternArray[MODEL_NAME], charsmax(aDataTestPatternArray[MODEL_NAME]),
aDataTestPatternArray[SUB_MODEL], charsmax(aDataTestPatternArray[SUB_MODEL])
);
if( regex_match_c( aDataTestPatternArray[MODEL_NAME], g_pPatternFlags, iReturn ) > 0 )
{
regex_substr( g_pPatternFlags, 1, aDataTestPatternArray[MODEL_NAME], charsmax( aDataTestPatternArray[MODEL_NAME] ) );
regex_substr( g_pPatternFlags, 2, szFlags, charsmax( szFlags ) );
}
new szError[ 128 ];
g_pPattern = regex_compile( aDataTestPatternArray[MODEL_NAME], iReturn, szError, charsmax( szError ), szFlags );
if( g_pPattern == REGEX_PATTERN_FAIL )
{
server_print("Error with pattern: %s", szError );
}
else
{
ArrayPushArray(g_aTest, aDataTestPatternArray);
}
}
g_aTestSize = ArraySize(g_aTest);
}
}
public plugin_init( )
{
new iReturn, szError[ 128 ];
g_pPatternFlags = regex_compile( "^^\/(.*)\/([imsx]*)$", iReturn, szError, charsmax( szError ) );
if( g_pPatternFlags == REGEX_PATTERN_FAIL )
{
log_amx( "Error creating pattern for patterns: %s", szError );
}
register_clcmd("say","HookSay");
register_clcmd("say_team","HookSay");
}
public HookSay(iPlayer)
{
new szData[ 256 ];
read_args( szData, charsmax( szData ) );
trim( szData );
remove_quotes( szData );
new iReturn;
if( regex_match_c( szData, g_pPattern, iReturn ) != -2 )
{
console_print( iPlayer, "%d matches", iReturn );
for( new i = 0; i < iReturn; i++ )
{
regex_substr( g_pPattern, i, szData, charsmax( szData ) );
new aDataTestPatternArray[DATA_COSTUMES_PRECACHE]
for (new i = 0; i < g_aTestSize; i++)
{
ArrayGetArray(g_aTest, i, aDataTestPatternArray)
if(equal(szData, aDataTestPatternArray[MODEL_NAME]))
{
server_print("Pattern Found: %s | %d", aDataTestPatternArray[MODEL_NAME], aDataTestPatternArray[SUB_MODEL]);
break;
}
}
}
}
}
Код:
"Test1" "1"
"Desk1" "1"
"Pesk1" "2"
15 Янв 2021
"Pesk1" "2"