Не ищет текст в диалоге

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

markiz.desead

Потрачен
Автор темы
579
468
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Версия MoonLoader
.026-beta
Ку, начну с кода:
Lua:
local sampev           = require 'lib.samp.events'

function sampev.onShowDialog(id,s,t,b1,b2,text)
    sampAddChatMessage('DialogID{FFFFFF} = ' .. id, 0xff2b2b)
    local R1 = text:match('') -- если что, local R1 = text:find('') тоже не работает
    if R1 == '{FFB740}PayDay-RP' and sampIsDialogActive() then
        sampAddChatMessage('Текст найден', -1)
    else
        sampAddChatMessage('Ошибка', -1)
    end
end

Проблема в функции text:match. Она ищет текст, но не тот, что мне нужен.
Мне нужно найти определённый цветной текст в диалоге, а именно название сервера в диалоге регистрации, но он просто его не видит нихуяяяяя. Цвет я указывал точный, ничего нового, без цвета также.

Пробовал альтернативу и искал по названию сервера, НО ОН ДАЖЕ НАЗВАНИЕ СЕРВЕРА НЕ ВИДИТ.

Пожалуйста, подскажите в чём проблема.
 
Последнее редактирование:
Решение
Я написал, что не рассматриваю вариант с ИДом диалога. Планирую использовать это на разных серверах и ИД диалога тут не поможет

С просонья немного не догнал в чем проблема
Lua:
if text:find('PayDay%-RP') then
    print('Found')
end
Необходимо экранировать "-" в шаблоне поиска

Fott

Простреленный
3,431
2,386
Ку, начну с кода:
Lua:
local sampev           = require 'lib.samp.events'

function sampev.onShowDialog(id,s,t,b1,b2,text)
    sampAddChatMessage('DialogID{FFFFFF} = ' .. id, 0xff2b2b)
    local R1 = text:match('') -- если что, local R1 = text:find('') тоже не работает
    if R1 == '{FFB740}PayDay-RP' and sampIsDialogActive() then
        sampAddChatMessage('Текст найден', -1)
    else
        sampAddChatMessage('Ошибка', -1)
    end
end

Проблема в функции text:match. Она ищет текст, но не тот, что мне нужен.
Мне нужно найти определённый цветной текст в диалоге, а именно название сервера в диалоге регистрации, но он просто его не видит нихуяяяяя. Цвет я указывал точный, ничего нового, без цвета также.

Пробовал альтернативу и искал по названию сервера, НО ОН ДАЖЕ НАЗВАНИЕ СЕРВЕРА НЕ ВИДИТ.

Пожалуйста, подскажите в чём проблема.
Покажи скрин диалога
 

markiz.desead

Потрачен
Автор темы
579
468
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Покажи скрин диалога
Забыл написать, что вариант проверки через ИД диалога не рассматриваю.
Без проблем ищет надпись "Добро пожаловать на сервер", а вот "ПейДей-РП" он не ищет. Цвет получал через DialogEditor
oDG2UYIS.png
 

Neon3333

Известный
181
70
Ку, начну с кода:
Lua:
local sampev           = require 'lib.samp.events'

function sampev.onShowDialog(id,s,t,b1,b2,text)
    sampAddChatMessage('DialogID{FFFFFF} = ' .. id, 0xff2b2b)
    local R1 = text:match('') -- если что, local R1 = text:find('') тоже не работает
    if R1 == '{FFB740}PayDay-RP' and sampIsDialogActive() then
        sampAddChatMessage('Текст найден', -1)
    else
        sampAddChatMessage('Ошибка', -1)
    end
end

Проблема в функции text:match. Она ищет текст, но не тот, что мне нужен.
Мне нужно найти определённый цветной текст в диалоге, а именно название сервера в диалоге регистрации, но он просто его не видит нихуяяяяя. Цвет я указывал точный, ничего нового, без цвета также.

Пробовал альтернативу и искал по названию сервера, НО ОН ДАЖЕ НАЗВАНИЕ СЕРВЕРА НЕ ВИДИТ.

Пожалуйста, подскажите в чём проблема.
Lua:
if text:match('{FFB740}PayDay-R P') then
    --
end

Может, мне кажется, но на скрине видно, что между R и P есть пробел
Вообще выведи текст куда-то, например, в консоль, потом разберись, есть ли там пробел или другие отличия. Сайтов для проерки разницы в строках много
Чекер
 

Fott

Простреленный
3,431
2,386
Забыл написать, что вариант проверки через ИД диалога не рассматриваю.
Без проблем ищет надпись "Добро пожаловать на сервер", а вот "ПейДей-РП" он не ищет. Цвет получал через DialogEditor
oDG2UYIS.png
ИП сервера в ЛС напиши, чекну чё оно не читает
 

markiz.desead

Потрачен
Автор темы
579
468
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
if text:match('{FFB740}PayDay-R P') then
    --
end

Может, мне кажется, но на скрине видно, что между R и P есть пробел
Вообще выведи текст куда-то, например, в консоль, потом разберись, есть ли там пробел или другие отличия. Сайтов для проерки разницы в строках много
Чекер
Так тоже, к сожалению не ищет. И с пробелом, и без
 

Neon3333

Известный
181
70
Так тоже, к сожалению не ищет. И с пробелом, и без
Я дописал в пред. сообщении, как выявить проблему, так же еще может быть проблема в кодировке файла, об этом тоже не стоит забывать.
 

markiz.desead

Потрачен
Автор темы
579
468
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

wulfandr

Известный
635
259
Ку, начну с кода:
Lua:
local sampev           = require 'lib.samp.events'

function sampev.onShowDialog(id,s,t,b1,b2,text)
    sampAddChatMessage('DialogID{FFFFFF} = ' .. id, 0xff2b2b)
    local R1 = text:match('') -- если что, local R1 = text:find('') тоже не работает
    if R1 == '{FFB740}PayDay-RP' and sampIsDialogActive() then
        sampAddChatMessage('Текст найден', -1)
    else
        sampAddChatMessage('Ошибка', -1)
    end
end

Проблема в функции text:match. Она ищет текст, но не тот, что мне нужен.
Мне нужно найти определённый цветной текст в диалоге, а именно название сервера в диалоге регистрации, но он просто его не видит нихуяяяяя. Цвет я указывал точный, ничего нового, без цвета также.

Пробовал альтернативу и искал по названию сервера, НО ОН ДАЖЕ НАЗВАНИЕ СЕРВЕРА НЕ ВИДИТ.

Пожалуйста, подскажите в чём проблема.
а зачем тебе это? нельзя просто использовать if id == 1 then ? зачем велосипед изобретать


Lua:
local sampev           = require 'lib.samp.events'

function sampev.onShowDialog(id,s,t,b1,b2,text)
    if id == 1 then -- если активно окно регистрации, тогда
   
    end
end
 

markiz.desead

Потрачен
Автор темы
579
468
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а зачем тебе это? нельзя просто использовать if id == 1 then ? зачем велосипед изобретать
Я написал, что не рассматриваю вариант с ИДом диалога. Планирую использовать это на разных серверах и ИД диалога тут не поможет
 

Hatiko

Известный
Проверенный
1,531
639
Вы не забывайте, что дефис является служебным символом и его экранировать необходимо.
Lua:
local sampev  = require 'lib.samp.events'

function sampev.onShowDialog(id,s,t,b1,b2,text)
    sampAddChatMessage('DialogID{FFFFFF} = ' .. id, 0xff2b2b)
    
    if t:find("{FFB740}PayDay%-RP") then
        sampAddChatMessage('Текст найден', -1)
    else
        sampAddChatMessage('Ошибка', -1)
    end
end
 
  • Нравится
Реакции: yung milonov

wulfandr

Известный
635
259
Lua:
local sampev           = require 'lib.samp.events'

function sampev.onShowDialog(id,s,t,b1,b2,text)
    sampAddChatMessage('DialogID{FFFFFF} = ' .. id, 0xff2b2b)
    for server in text:gmatch("[^\n]+") do
        if server:find('Добро пожаловать на сервер .+') then
            local name = server:match('Добро пожаловать на сервер (.+)')
            sampAddChatMessage(name, -1)
        end
     end
end
 
  • Нравится
Реакции: Ivkide

Neon3333

Известный
181
70
Я написал, что не рассматриваю вариант с ИДом диалога. Планирую использовать это на разных серверах и ИД диалога тут не поможет

С просонья немного не догнал в чем проблема
Lua:
if text:find('PayDay%-RP') then
    print('Found')
end
Необходимо экранировать "-" в шаблоне поиска
 
  • Нравится
Реакции: markiz.desead

markiz.desead

Потрачен
Автор темы
579
468
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
С просонья немного не догнал в чем проблема
Lua:
if text:find('PayDay%-RP') then
    print('Found')
end
Необходимо экранировать "-" в шаблоне поиска
Спасибо большое, это решило мою проблему.
Тема закрыта
 
Статус
В этой теме нельзя размещать новые ответы.