Помогите, пожалуйста, проблемы с поиском текста. onShowDialog

saradaken

Участник
Автор темы
41
6
Версия MoonLoader
.026-beta
Здравствуйте
У меня проблема с поиском текста. Поиск идет не только по этому каналу. Поиск идет по всем.

1730722457422.png


Я хочу найти только текст после -Промо-код: (Не использован), но он также находит и другие части. Как мне это исправить?
I just want to find (Не использован).

Lua:
local Promocode = {
    'Промо%-код:%s*%b{}([%aА-Яа-яЁё%s]+)
}

Lua:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if text:find(u8:decode(Promocode[1])) then Promo_Status = text:match(u8:decode(Promocode[1])) end  
        sampAddChatMessage(string.format('%s ' ,Promo_Status))
end
 
Последнее редактирование:

kyrtion

Известный
902
321
Lua:
-- onShowDialog
text = text:gsub('{%x%x%x%x%x%x}', '') -- убираем цветные hex, рекомендую для парса

-- ..
local string_find_listitem = '^%[%d+%] Промо%-код: (.+)$'

-- .. в процессе цикла для чтение в каждой строке диалога
-- param string_listitem - строка в диалоге, не массивная, а одна без переноса
if string_listitem:find(string_find_listitem) then
    local promocode = string_listitem:match(string_find_listitem)
    if promocode == 'Не использован' then
        sampAddChatMessage('Пока ничего не юзали промо, потерпим...')
    else
        local fmt = string.format('Опа, новый промок: %s', promocode)
        sampAddChatMessage(fmt, -1)
    end
end

Я заметил что ты пишешь скрипт в UTF-8, но это нестандартно.
Кодировка в GTA-SA - ANSI (Windows-1251)
Поэтому поправь, буду рад))
 
Последнее редактирование:
  • Влюблен
Реакции: saradaken

saradaken

Участник
Автор темы
41
6
Lua:
-- onShowDialog
text = text:gsub('{%x%x%x%x%x%x}', '') -- убираем цветные hex, рекомендую для парса

-- ..
local string_find_listitem = '^%[%d+%] Промо%-код: (.+)$'

-- .. в процессе цикла для чтение в каждой строке диалога
-- param string_listitem - строка в диалоге, не массивная, а одна без переноса
if string_listitem:find(string_find_listitem) then
    local promocode = string_listitem:match(string_find_listitem)
    if promocode == 'Не использован' then
        sampAddChatMessage('Пока ничего не юзали промо, потерпим...')
    else
        local fmt = string.format('Опа, новый промок: %s', promocode)
        sampAddChatMessage(fmt, -1)
    end
end

Я заметил что ты пишешь скрипт в UTF-8, но это нестандартно.
Кодировка в GTA-SA - ANSI (Windows-1251)
Поэтому поправь, буду рад))
Здравствуйте, мне нужно использовать utf8, потому что он поддерживает мой язык. Я конвертировал из win1251 в игре в utf8.
 
  • Нравится
Реакции: kyrtion

kyrtion

Известный
902
321
  • Нравится
Реакции: saradaken