как брать первое знасение из диалога

coldplugg.

Участник
Автор темы
180
22
Версия MoonLoader
.026-beta
есть диалог, в нем много строк, мне нужно брать самую верхнню, как реализовать
 

qdIbp

Автор темы
Проверенный
1,451
1,190
Lua:
require('lib.samp.events').onShowDialog = function(dialogId, style, title, button1, button2, text)
    print(text:match('^%C+'))
end
Метод полное дерьмище, но для примера пойдет надеюсь

Статья если что

а если мне надо по определенноу тексту искать

именно одну строку первую похожую сверху
 

coldplugg.

Участник
Автор темы
180
22
Lua:
require('lib.samp.events').onShowDialog = function(dialogId, style, title, button1, button2, text)
    print(text:match('^%C+'))
end
Метод полное дерьмище, но для примера пойдет надеюсь

Статья если что


а понятнее можно, я дупло епани
 

teresen

Участник
29
18
а понятнее можно, я дупло епани
Данный код используется для поиска самой верхней строки диалога. Он использует функцию onShowDialog, которая вызывается каждый раз, когда появляется диалоговое окно. Она принимает параметры, такие как идентификатор диалога, стиль, заголовок, кнопки и текст. Затем функция использует функцию match для поиска самой верхней строки диалога. Эта функция ищет текст, который начинается с указанного символа. В данном случае это символ является символом возврата каретки, поэтому функция возвращает самую верхнюю строку диалога.
Почитали бы статью, не были бы:
Ибо там всё про это есть.
 
  • Нравится
Реакции: Nestle и qdIbp

qdIbp

Автор темы
Проверенный
1,451
1,190
Если ты про https://www.blast.hk/threads/108935/
то на читай

Lua:
function sampGetListboxItemByText(text, plain) -- функция принимает два арг*хуй знает зач 2*
    if not sampIsDialogActive() then return -1 end -- если диалог не открыт, идешь нахуй
    plain = not (plain == false) -- если 2 арг пустой то будет знач True
    for i = 0, sampGetListboxItemsCount() - 1 do -- цикл проходит от нуля до того кол-во листов которое у тя в диалоге
        if sampGetListboxItemText(i):find(text, 1, plain) then --[[ он ищет лист по тексту который ты вбил, и тут я понимаю зач 2 арг нужен
                                                                    - если указано производится поиск подстроки как есть. Необязательный параметр.]]
            sampSendDialogResponse(162,1, i,nil) -- это выбирает нужный лист *можно убрать*
            return i -- возращает номер листа
        end -- конец ветвление
    end -- конец цикла
    return -1 -- иначе идешь нахуй
end -- конец функции

local index = sampGetListboxItemByText('Mountain') --  просто пример использ
local index = sampGetListboxItemByText('%Mountain.-%a+', false) -- просто пример использ

вродь все описал
 
Последнее редактирование:

coldplugg.

Участник
Автор темы
180
22
Если ты про https://www.blast.hk/threads/108935/
то на читай

Lua:
function sampGetListboxItemByText(text, plain) -- функция принимает два арг*хуй знает зач 2*
    if not sampIsDialogActive() then return -1 end -- если диалог не открыт, идешь нахуй
    plain = not (plain == false) -- если 2 арг пустой то будет знач True
    for i = 0, sampGetListboxItemsCount() - 1 do -- цикл проходит от нуля до того кол-во листов которое у тя в диалоге
        if sampGetListboxItemText(i):find(text, 1, plain) then --[[ он ищет лист по тексту который ты вбил, и тут я понимаю зач 2 арг нужен
                                                                    - если указано производится поиск подстроки как есть. Необязательный параметр.]]
            sampSendDialogResponse(162,1, i,nil) -- это выбирает нужный лист *можно убрать*
            return i -- возращает номер листа
        end -- конец ветвление
    end -- конец цикла
    return -1 -- иначе идешь нахуй
end -- конец функции

local index = sampGetListboxItemByText('Mountain') --  просто пример использ
local index = sampGetListboxItemByText('%Mountain.-%a+', false) -- просто пример использ

вродь все описал
1670362634494.png

из такого диалога
 

qdIbp

Автор темы
Проверенный
1,451
1,190
а как мне самую первую строку похожую брать?
всм, вот код, он выводит то что находится самые первые слова до \n
Lua:
require('lib.samp.events').onShowDialog = function(dialogId, style, title, button1, button2, text)
    print(text:match('^%C+'))
end
Метод полное дерьмище, но для примера пойдет надеюсь

Если записать в переменную то

Lua:
local warn
require('lib.samp.events').onShowDialog = function(dialogId, style, title, button1, button2, text)
    warn = text:match('^(%C+)')
end