Хелп с диалогами

Enterprise

Новичок
Автор темы
18
2
Версия MoonLoader
.026-beta
Пытаюсь переписать ахк код на луа, но столкнулся с проблемами
У меня есть 2 переменные, в которых содержатся ключевые слова, именно по ним скрипт должен искать строку
Вот код с пояснениями
Lua:
local worlds_one = "SIM|телефон|очки" --- 1 переменная с ключевым словами
local worlds_two = "мебель|транспорт|одежда" ---  2 переменная с ключевым словами
function sampev.onShowDialog(id, style, title, b1, b2, text)
    if title:match('.*Магазин') then
        lua_thread.create(function()
            for line in text:gmatch('.-\n') do
                if line:match('(.*)Не куплено') then -- если найдена строка Не куплено, значит работаем с ней
                    if line:match('.*' .. worlds_one .. '.*') then --- если в строке найдены ЛЮБЫЕ ключевые слова с переменной worlds_one
                        ans = "Купить" --- создаем переменную, по которой скрипт будет искать строку в след диалоге после нажатия
                            sampSendDialogResponse(id, style, line) --- нажимаем на нашедшую строку
                    end
                    if line:match('.*' .. worlds_two .. '.*') then ---
                        ans = "Продать"
                        sampSendDialogResponse(id, style, line)
                    end
                end
            end
        end)
    end
    if title:match('.*Действие') then
        lua_thread.create(function()
            for line in text:gmatch('.-\n') do wait(0)
                    if line:match('.*' .. ans .. '.*') then --- Если найдена строка Купить/Продать, то жмем ее
                        wait(500)
                        sampSendDialogResponse(id, style, line)
                    end
            end
        end)
    end
end
 
Последнее редактирование:

Enterprise

Новичок
Автор темы
18
2
Lua:
if line:match("SIM") or line:match("телефон") or line:match("очки") then
    --
end
по аналогии с worlds_two сделай
ну это как то не оч. вот в ахк если указать worlds_one = "SIM|телефон|очки", то при if line:match(worlds_one) он найдет ключевое слово в строке, а так будет миллион условий это геморно
 

wojciech?

Известный
Проверенный
349
230
ну это как то не оч. вот в ахк если указать worlds_one = "SIM|телефон|очки", то при if line:match(worlds_one) он найдет ключевое слово в строке, а так будет миллион условий это геморно
у регулярных выражений в луа нет "или/или". тебе нужно проверять каждое отдельное условие. единственное, ты можешь создать таблицу условий и в цикле проверять каждое из них
 
  • Грустно
Реакции: Enterprise