Поиск слов в диалоге

sdfy

Известный
Автор темы
348
229
Версия MoonLoader
.026-beta
Как сделать, чтобы скрипт находил нужное слово в диалоге и сам нажимал на строчку с ним.
На пример в диалоге ниже, чтобы скрипт нашел строчку с текстом "Игроки онлайн" и сам нажал на эту строчку.
2021-12-14-213513.png
 
  • Эм
Реакции: Lance Sterling
Решение
Я проверил скрипт,забыл сделать задержку)
диалог не успевал загрузится и скрипт уже отправляет)
Lua:
function ev.onShowDialog(id, s, t, btn1, btn2, text)
  lua_thread.create(function()
        if id == 228 then -- ид диалога
              wait(100) -- задержка
              stroka = sampGetListboxItemByText('Игроки онлайн')
              sampSendDialogResponse(id, 1, stroka, nil)
        end
  end)
end

function sampGetListboxItemByText(text, plain)
    if not sampIsDialogActive() then return -1 end
        plain = not (plain == false)
    for i = 0, sampGetListboxItemsCount() - 1 do
        if sampGetListboxItemText(i):find(text, 1, plain) then
            return i
        end
    end
    return -1
end
проверь, работает?

SomaGnoma

Известный
436
150
Как сделать, чтобы скрипт находил нужное слово в диалоге и сам нажимал на строчку с ним.
На пример в диалоге ниже, чтобы скрипт нашел строчку с текстом "Игроки онлайн" и сам нажал на эту строчку.
2021-12-14-213513.png

Lua:
function ev.onShowDialog(id, s, t, btn1, btn2, text)
      if id == 228 then -- ид диалога
            stroka = sampGetListboxItemByText('Игроки онлайн')
            sampSendDialogResponse(id, 1, stroka, nil)
      end
end

function sampGetListboxItemByText(text, plain)
    if not sampIsDialogActive() then return -1 end
        plain = not (plain == false)
    for i = 0, sampGetListboxItemsCount() - 1 do
        if sampGetListboxItemText(i):find(text, 1, plain) then
            return i
        end
    end
    return -1
end
 

sdfy

Известный
Автор темы
348
229
Lua:
function ev.onShowDialog(id, s, t, btn1, btn2, text)
      if id == 228 then -- ид диалога
            stroka = sampGetListboxItemByText('Игроки онлайн')
            sampSendDialogResponse(id, 1, stroka, nil)
      end
end

function sampGetListboxItemByText(text, plain)
    if not sampIsDialogActive() then return -1 end
        plain = not (plain == false)
    for i = 0, sampGetListboxItemsCount() - 1 do
        if sampGetListboxItemText(i):find(text, 1, plain) then
            return i
        end
    end
    return -1
end
Вставил код в скрипт, ввел нужный ид диалога - реакции от скрипта нет.
Ошибок в консоль не выводит, но и не работает
Делаю может что не так)
 

SomaGnoma

Известный
436
150
Я проверил скрипт,забыл сделать задержку)
диалог не успевал загрузится и скрипт уже отправляет)
Lua:
function ev.onShowDialog(id, s, t, btn1, btn2, text)
  lua_thread.create(function()
        if id == 228 then -- ид диалога
              wait(100) -- задержка
              stroka = sampGetListboxItemByText('Игроки онлайн')
              sampSendDialogResponse(id, 1, stroka, nil)
        end
  end)
end

function sampGetListboxItemByText(text, plain)
    if not sampIsDialogActive() then return -1 end
        plain = not (plain == false)
    for i = 0, sampGetListboxItemsCount() - 1 do
        if sampGetListboxItemText(i):find(text, 1, plain) then
            return i
        end
    end
    return -1
end
проверь, работает?
 
  • Нравится
Реакции: sdfy