Оптимизация работы с диалогами

Rice.

Известный
Автор темы
Модератор
1,756
1,623
Версия MoonLoader
.026-beta
Lua:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 16235 then
        if text:find('    {47AB3F}%d%.Pasirinkimas') then
            local index = text:match('    {47AB3F}(%d)%.Pasirinkimas')
            if tonumber(index) == 1 then
                sampSendDialogResponse(dialogId, 1, 3, _)
            elseif tonumber(index) == 2 then
                sampSendDialogResponse(dialogId, 1, 4, _)
            elseif tonumber(index) == 3 then
                sampSendDialogResponse(dialogId, 1, 5, _)
            elseif tonumber(index) == 4 then
                sampSendDialogResponse(dialogId, 1, 6, _)
            end
        end
        return false
    end
end

Как можно оптимизировать данный код? Суть такая, что каждый раз меняется цвет строчки в диалоге, которую нужно выбрать.
1634231897309.png
1634231919560.png
1634231940381.png
 
Решение
Допустим, каждые 10 секунд появляется диалог, в котором нужно нажать зелёную строчку (как на скриншоте), я сделал код для нахождения данной строчки. Мой вопрос - "можно ли оптимизировать данный код?"


Можно пример циклов, пожалуйста? А то представить не могу реализацию.
если так, то конечно можно
Lua:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 16235 then
        if text:find('    {47AB3F}%d%.Pasirinkimas') then
            local index = text:match('    {47AB3F}(%d)%.Pasirinkimas')
            if tonumber(index) >= 1 then
                 sampSendDialogResponse(dialogId, 1, index + 2, _)
            end
        end 
        return false
    end
end
...

Rice.

Известный
Автор темы
Модератор
1,756
1,623
Ты имеешь ввиду что при выборе строки и нажатия энтер цвет меняется?
Допустим, каждые 10 секунд появляется диалог, в котором нужно нажать зелёную строчку (как на скриншоте), я сделал код для нахождения данной строчки. Мой вопрос - "можно ли оптимизировать данный код?"

вместе множества ифов использовать цикл
Можно пример цикла, пожалуйста? А то представить не могу реализацию.
 

leekyrave

Известный
419
226
Допустим, каждые 10 секунд появляется диалог, в котором нужно нажать зелёную строчку (как на скриншоте), я сделал код для нахождения данной строчки. Мой вопрос - "можно ли оптимизировать данный код?"


Можно пример циклов, пожалуйста? А то представить не могу реализацию.
если так, то конечно можно
Lua:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 16235 then
        if text:find('    {47AB3F}%d%.Pasirinkimas') then
            local index = text:match('    {47AB3F}(%d)%.Pasirinkimas')
            if tonumber(index) >= 1 then
                 sampSendDialogResponse(dialogId, 1, index + 2, _)
            end
        end 
        return false
    end
end

Lua:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 16235 then
        local index = text:find('    {47AB3F}(%d)%.Pasirinkimas')
        if index then
           sampSendDialogResponse(dialogId, 1, index + 2, _)
        end
        return false
    end
end

или так
 
Последнее редактирование:
  • Нравится
Реакции: Rice.