SA:MP Помощь по скрипту

Pan

Новичок
Автор темы
1
0
На аризоне рп вышло обновление в котором сделали удобную загрузку и разгрузку бочек. Я хочу сделать с помощью скрипта ещё эффективнее. Суть в том, что скрипт видит нужный ему диалог и нажимает туда, где нужно "Положить" бочку ну или "Забрать" бочку. Я в lua скриптах чайник, и максимум, что писал для себя это autoeat по сообщению в чате. Итого: проблема в том, что те самые слова, которые мне надо найти, а именно "Положить" и "Забрать" находятся во втором столбце и с помощью функции "sampGetListboxItemByText", я не могу увидеть эти слова (это функция может смотреть только первый столбик). Прошу помочь в решение и желательно с обьяснением. Буду очень благодарен, пока нашёл только это, но не могу связать со своим скриптом ТЫК
Прикладываю ниже скрин диалога и скрипт.
Диалог:
Снимок экрана 2024-11-06 201626.png

Скрипт:
Lua:
ev = require("lib.samp.events")
local active = false
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage("{ffffff}[Nef] {33EA0D}Загружен {FFFFFF}| by {20B2AA}Orlenok", -1)
    sampRegisterChatCommand('nef', neff)
end
function neff()
    active = not active
    sampAddChatMessage(active and 'Включен' or 'Выключен', -1)
end
function ev.onShowDialog(id, s, t, btn1, btn2, text)
  lua_thread.create(function()
        if id == 26120 then -- ид диалога
              wait(100) -- задержка
              if active then
                  --stroka = sampGetListboxItemByText('Слот')
                  --sampSendDialogResponse(id, 1, stroka, nil)
                  sampSendDialogResponse(id, 1, 0, nil)
              end
        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


UPD:
На данный момент сам нашёл решение.
Просто сделал другой подход:
P.s. код снизу не имеет общий смысл с моим скриптом, лишь взята сама рабочая часть.

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

function ev.onShowDialog(id, st, tit, b1, b2, tx)
    local count = 0
    for line in tx:gmatch("[^\n\r]+") do
        if line:find("Жаренное мясо") then
            print("Жаренное мясо в пункте: "..count)
        end
        count = count + 1
    end
end
Сейчас не могу найти как закрывать окно диалога, это единственное, что я бы хотел сделать в своем скрипте
 
Последнее редактирование: