- 1
- 0
На аризоне рп вышло обновление в котором сделали удобную загрузку и разгрузку бочек. Я хочу сделать с помощью скрипта ещё эффективнее. Суть в том, что скрипт видит нужный ему диалог и нажимает туда, где нужно "Положить" бочку ну или "Забрать" бочку. Я в lua скриптах чайник, и максимум, что писал для себя это autoeat по сообщению в чате. Итого: проблема в том, что те самые слова, которые мне надо найти, а именно "Положить" и "Забрать" находятся во втором столбце и с помощью функции "sampGetListboxItemByText", я не могу увидеть эти слова (это функция может смотреть только первый столбик). Прошу помочь в решение и желательно с обьяснением. Буду очень благодарен, пока нашёл только это, но не могу связать со своим скриптом ТЫК
Прикладываю ниже скрин диалога и скрипт.
Диалог:
Скрипт:
UPD:
На данный момент сам нашёл решение.
Просто сделал другой подход:
P.s. код снизу не имеет общий смысл с моим скриптом, лишь взята сама рабочая часть.
Сейчас не могу найти как закрывать окно диалога, это единственное, что я бы хотел сделать в своем скрипте
Прикладываю ниже скрин диалога и скрипт.
Диалог:
Скрипт:
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
Последнее редактирование: