Помощь - Поиск - Пользователи - Календарь
Полная версия: Нужна помощь с написанием скрипта
UoKit.com Форумы > Кликер > UO Pilot
ARTGNOMKA
Подскажите, возможно ли написать такую автоматику для игры ла2.
Скрипт по заточке одно типа предмета.
инвентарь на 11*10 ячеек.
Чтобы точило до 15 и останавливалось.
файл инвентаря прилагаю, с каждой модификацией вещь меняется.
cirus
Если kleft будет кликать, то можно.
ARTGNOMKA
Цитата(cirus @ 17.3.2020, 2:31) *

Если kleft будет кликать, то можно.


Работает
cirus
код
Код
--lua
-- привязка к нужному окну Ctrl+A
-- версия пилота 2.41
local x, y = 11, 10   -- размеры поля
local deltaX, deltaY = 36, 36  -- расстояние между клетками
local startX, startY = 117, 125   -- координаты центра левого верхнего предмета

local color_empty = 1250583  -- цвет пустой клетки
local deviation = 5   -- 5% - отклонение в цвете, подобрать значение

log "clear"  log "mode compact"
log "open 0 0 400 300"

for j = 0, y-1 do
    for i = 0, x-1 do
        local X, Y = startX + i * deltaX, startY + j * deltaY  -- считаем координаты предмета
        move (X, Y)   -- навести курсор, можно убрать
        wait (200)    -- можно убрать
        for k = 1, 15 do  -- повторить 15 раз
            -- тут нужные действия для заточки вещи


            -- проверяем пустая клетка или нет
            local a = findcolor(X-5, Y-5, X+5, Y+5, 1, 1, "(" .. color_empty .. ")", "%arr", 2, -1, deviation)
            if a and a > 100 then
                log("Вещь сломалась, точим следующую вещь")
                break
            end
        end
    end
end
ARTGNOMKA
Цитата(cirus @ 28.3.2020, 11:53) *

код
Код
--lua
-- привязка к нужному окну Ctrl+A
-- версия пилота 2.41
local x, y = 11, 10   -- размеры поля
local deltaX, deltaY = 36, 36  -- расстояние между клетками
local startX, startY = 117, 125   -- координаты центра левого верхнего предмета

local color_empty = 1250583  -- цвет пустой клетки
local deviation = 5   -- 5% - отклонение в цвете, подобрать значение

log "clear"  log "mode compact"
log "open 0 0 400 300"

for j = 0, y-1 do
    for i = 0, x-1 do
        local X, Y = startX + i * deltaX, startY + j * deltaY  -- считаем координаты предмета
        move (X, Y)   -- навести курсор, можно убрать
        wait (200)    -- можно убрать
        for k = 1, 15 do  -- повторить 15 раз
            -- тут нужные действия для заточки вещи
            -- проверяем пустая клетка или нет
            local a = findcolor(X-5, Y-5, X+5, Y+5, 1, 1, "(" .. color_empty .. ")", "%arr", 2, -1, deviation)
            if a and a > 100 then
                log("Вещь сломалась, точим следующую вещь")
                break
            end
        end
    end
end



Подскажи а можно как то сделать перебор по картинке.
Суть такова, у меня задача заточить вещь на +15.
По типу Если нашло вещи картинка +0 то точить на +1 и потом опять ищет картинки+0.
И так пока все не переточит на +1, и потом новый цикл только теперь точим +1 на +2.
cirus
Проще проверять пустая клетка или нет, чем искать картинки вещей.
ARTGNOMKA
Цитата(cirus @ 21.4.2020, 23:41) *

Проще проверять пустая клетка или нет, чем искать картинки вещей.

а в том то и дело, мне все равно нужно проверить, есть ли такая вещь. Чтоб ее дальше не точило
cirus
Делайте картинку и ищите через findimage.
ARTGNOMKA
Цитата(cirus @ 22.4.2020, 0:48) *

Делайте картинку и ищите через findimage.


--lua
-- привязка к нужному окну Ctrl+A
-- поиск нескольких одинаковых изображений
-- если будет найдено больше 110 поиск прекратится, точность 100%, отклонение в цвете 5%
local slot_ench_x, slot_ench_y = 1011, 414 -- коорлинаты х и у ячейки, для переноса вещи в слот заточки
local slot_start_x, slot_start_y = 901, 586 -- координаты х и у ячейки, кнопки СТАРТ
local slot_scroll_ech = F1 -- Свиток лежит в кнопке F1
local slot_close_x, slot_close_y = 994, 582 -- координаты х и у ячейки, кнопки ЗАКРЫТЬ

local path = [[C:\pilot\puzo_light\puzol0.bmp]] -- путь к картинкам
local arr, a = findimage (0, 0, 1920, 1080, {path}, 2, 100, 110, 5) -- поиск картинки, должна быть в папке с пилотом
hint (a) -- результат поиска, подсказка в правом нижнем углу
if arr then -- если найдена
log ("Найдено картинок: " .. #arr)
for i=1, #arr do
-- send slot_scroll_ech
-- заточка
end
end

Подскажи, как назначить нажатие(вызов) кнопки F1
cirus
Цитата
Подскажи, как назначить нажатие(вызов) кнопки F1

Код
--lua
send('F1')

Код
--lua
local slot_scroll_ech = 'F1' -- Свиток лежит в кнопке F1
send(slot_scroll_ech)
ARTGNOMKA
Цитата(cirus @ 22.4.2020, 21:24) *

Код
--lua
send('F1')

Код
--lua
local slot_scroll_ech = 'F1' -- Свиток лежит в кнопке F1
send(slot_scroll_ech)



Подскажи еще, я не особо силен в кодинге.
Но мой скрипт к примеру сканирует 1 раз картинки, и дальше их точит. Но бывает пропускает штук 10 картинок (именно не отрабатывает зажатие и перетаскивание).
Меня интересует вопрос, что нужно дописать, чтобы он заново отработал процедуру заточки?
cirus
Цитата
Но бывает пропускает штук 10 картинок (именно не отрабатывает зажатие и перетаскивание).

Возможно окно с инвентарём теряет фокус и поэтому перетаскивание не всегда срабатывает. Для начала попробуйте добавить клик по нему, чтобы окно получило фокус, а уже потом перетаскивать. Также можно попробовать наводить курсор на вещь, а потом уже перетаскивать и ещё можно использовать move_smooth, он более плавно перетаскивает.
Цитата
что нужно дописать, чтобы он заново отработал процедуру заточки?

Код
--lua
log 'clear' log 'mode compact'

for j = 1, 2 do  -- выполнить 2 раза
    log('j = ' .. tostring(j))

    for  i = 1, 3 do    -- тут допустим код для заточки
        log('   i = ' .. tostring(i))
    end
end

ARTGNOMKA
Код

--lua
-- привязка к нужному окну Ctrl+A
-- поиск нескольких одинаковых изображений
-- если будет найдено больше 110 поиск прекратится, точность 100%, отклонение в цвете 5%
local slot_ench_x, slot_ench_y = 1011, 414  -- коорлинаты х и у ячейки, для переноса вещи в слот заточки
local slot_start_x, slot_start_y = 901, 586  -- координаты х и у ячейки, кнопки СТАРТ
local slot_scroll_ench = 'F1'  -- Свиток лежит на панели, кнопка F1
local slot_close_x, slot_close_y = 994, 582  -- координаты х и у ячейки, кнопки ЗАКРЫТЬ
local armor0 = [[C:\pilot\puzo_light\puzol0.bmp]]                    -- путь к картинкам

log 'clear' log 'mode compact'


for j = 1, 2 do  -- выполнить 2 раза
    log('j = ' .. tostring(j))

    local arr, a = findimage (0, 0, 1920, 1080, {armor0}, 2, 100, 110, 5)  -- поиск картинки, должна быть в папке с пилотом
    hint (a)     -- результат поиска, подсказка в правом нижнем углу
    if arr then  -- если найдена
        log ("Найдено шмота +0: " .. #arr)
        for i=1, #arr do
-- заточка
        end
    end
end


Прости, не отрабатывает повторно. Теперь не отрабатывает заточка вообще.
ARTGNOMKA
Все нашел ошибку) примитивная была)
Окно игры было не привязано.


Подскажи теперь другой вопрос.
Я теперь хочу добавить новый поиск картинки. То есть заточил +0 на +1. Теперь хочу заново начать поиск картинки и начать заточку. Подскажи после какой строчки продублировать код заточки заново
cirus
Цитата
Окно игры было не привязано.

Эту строку в начало скрипта:
Код
if workwindow() == 0 then log('Не сделана привязка') stop_script() end

Цитата
То есть заточил +0 на +1. Теперь хочу заново начать поиск картинки и начать заточку.

Код
--lua
log 'clear'  log 'mode compact'

-- массив с именами картинок
local armor = {
    [[C:\pilot\puzo_light\puzol0.bmp]],   -- дописать остальные через запятую
    [[C:\pilot\puzo_light\puzol1.bmp]],
    [[C:\pilot\puzo_light\puzol2.bmp]]
    }


hint ("Всего картинок для поиска " .. #armor)
for k=1, #armor do                     -- цикл для поиска картинок
    log('Поиск картинки: ' .. armor[k])
    for j = 1, 2 do  -- выполнить 2 раза
        log('j = ' .. tostring(j))

        local arr, a = findimage (0, 0, 1920, 1080, {armor[k]}, 2, 100, 110, 5)  -- поиск картинок
        if  arr then
            for i=1, #arr do
                -- тут код для заточки
                move (arr[i][1], arr[i][2])    -- переместить курсор на найденную картинку (можно убрать)
                wait (500)                     -- ждать 0,5 секунды
            end
        end
    end
end
ARTGNOMKA
Подскажи а как на lua забиньдить(send 'Alt+B') нажатие Альт + В
cirus
Цитата
нажатие Альт + В

Код
--lua
wait(3000)  -- переключиться на окно

-- сработает только для активного окна
sendex ('@{B}')    -- нажать Alt+B
sendex()   -- отпустить клавиши модификаторы

ARTGNOMKA
Кстати, вопросик еще

Находил здесь код "Пример поиска картинки в перекрытом(не свёрнутом) окне"

Если я правильно понял, то оно будет искать и кликать в свернутой игре???
cirus
Цитата
Если я правильно понял, то оно будет искать и кликать в свернутой игре???

В свёрнутом нет. В перекрытом, за пределами экрана или на другом рабочем столе возможно, зависит от приложения. Но только если используются клики без приставки 'k' и нажатия send.
ARTGNOMKA
Код
--lua
log 'clear' log 'mode compact'
-- привязка к нужному окну Ctrl+A
-- поиск нескольких одинаковых изображений
-- если будет найдено больше 110 поиск прекратится, точность 100%, отклонение в цвете 5%

local null = [[C:\pilot\puzo_light\null.bmp]]                    -- путь к картинкам
local magazine = [[C:\pilot\magazine.bmp]]                    -- путь к картинкам


local arr, a = findimage (0, 0, 1920, 1080, {null}, 2, 100, 110, 5)  -- поиск картинки, должна быть в папке с пилотом
if #arr>90 then
    log ("Найдено пустых слотов: " .. #arr)
    wait(3000)
    sendex ('@{B}')    -- нажать Alt+B
    wait(3000)
    local arr1, b = findimage (0, 0, 1920, 1080, {magazine}, 2, 100, 1, 5)  -- поиск картинки, должна быть в папке с пилотом
    if arr1 then  -- если найдена
       log ("Найден Магазин: " .. #arr1)
       kleft (arr1[i][1], arr1[i][2])
    end
else
    log ("Точим " .. #arr)
end



Вопрос по вложенности, так можно объявлять поиск новой картинки?
Код
local arr1, b

и следующий вопрос:
Код
log ("Найден Магазин: " .. #arr1)

это отрабатывает нормально, но как только добавлю
Код
kleft (arr1[i][1], arr1[i][2]) 

то пишет "a runtime error. 23: attempt to index a nil value" тоесть я не правильно ссылаюсь на координаты?
cirus
Цитата
так можно объявлять поиск новой картинки?

Да.
Цитата
kleft (arr1[i][1], arr1[i][2])
то пишет "a runtime error. 23: attempt to index a nil value" тоесть я не правильно ссылаюсь на координаты?

Переменной i нет в скрипте.
Код
kleft (arr1[0][1], arr1[0][2]) 

ARTGNOMKA
Спасибо, понял в чем проблема.
Скажи а ты кодишь в чем? в notepad++? чтобы все подсвечивало и отступы были
cirus
Цитата
чтобы все подсвечивало и отступы были

ZeroBrane Studio.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.