Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Помощь в скриптах для различных заданий и квестов.

Автор: FREEON 14.2.2017, 13:10

Нужно осуществить поиск по иконке(есть свечение вокруг ее). Не подойдет поиск по цвету и координатам, так как она плавает меняется на протяжении дня. Как сделать поиск иконки Каменный рудник?
Изображение
Далее собираем камни в количестве 10 штук. И после того как камни собраны, нужно будет 5 из их разбить. Вот тут должна быть логика. Что бы скрипт выбирал лучший камень и разбивал. Ценность камней идет по возрастанию. Слева самые дешевые, справа дорогие и редкие.
http://savepic.ru/12916119.jpg
Изображение

Код

//тут должен быть скрипт по поиску иконки.
For #i 1 9      // Получить 9 камней
     while 1138, 582 1201343
         left 1138, 582          //получить один камень
     wait 1s
     end_while
     while_not 1138, 582 1201343 //ожидаем отката кнопки
         wait 5m
     end_while
end_for
//Прописываем эти строки на получения последнего камня так как кнопка не откатывается
while_not 1138, 582 1201343 //ожидаем отката кнопки
         wait 3s
     end_while
while 1138, 582 1201343
     left 1138, 582          //получить последний камень
     wait 1s
end_while
//тут должна быть логика по разбивке 5 камней.
end_script

Ниже идет список камней:
Код

left 444, 590  12173243  //Алунит,   самый дешовый
left 564, 598 1517833 //Аквамарин
left 673, 596 15377514  //Иолит
left 815, 587 16759038 //Родонит
left 934, 595 4612012 //Рубин, самый редкий и дорогой

left 750, 493 7772634 //Кнопка РАЗБИТЬ

Автор: cirus 14.2.2017, 13:47

Делаем картинку в формате bmp без свечения и ищем.

Код
set #a findimage (0 0 1920 1080 (C:\имякартинки.bmp) %a )
if #a  > 0                    // если картинка нашлась
    move %a [1 1] %a [1 2]    // навести на неё курсор
    end_script
end_if

Область поиска можно уменьшить. Также можно добавить параметры точность поиска и погрешность по цвету.
Цитата
Вот тут должна быть логика. Что бы скрипт выбирал лучший камень и разбивал. Ценность камней идет по возрастанию. Слева самые дешевые, справа дорогие и редкие.

Сомневаюсь что по скринам можно будет понять процесс.

Автор: FREEON 14.2.2017, 14:43

Цитата(cirus @ 14.2.2017, 14:47) *

Сомневаюсь что по скринам можно будет понять процесс.

Я не знаю но думаю можно сделать так...Скрины камней с 0...и значением 1-9(обычно выпадает максимум 6 камней дешевые остальные по 1-3)
Сделать условия:
-если есть Редкий со значением отличимым от 0 тогда выполняется скрипт по разбивке до тех пор пока значение не станет 0(проверка по сходной картинке со значением 0).
-если редкого камня нет и значение картинки 0 совпадает, то переходит к скану камня низшего ранга и т.д.
-Все 10 камней не открыть так как стоит ограничение в 5. Т.е этот параметр должен быть главным и выполнение поиска должно выполняться по этому параметру>>дальше идет скан и разбивка камней по значению разбивать более редкие>>Когда разбито 5 камней, то главное условие нарушается и становится ЛОЖНЫМ то скрипт закрывает окно.

Я пока еще не совсем понимаю как это грамотно сделать..что бы выполнялись параллельно условия на скан и условие 5 попыток потрачены завершить скрипт...Как это правильно сделать?
Код

условие ЕСТЬ БЕСПЛАТНЫЕ ПОПЫТКИ
     //параметры логики
     скан 5го камня
         значение не совподает с 0
             разбить камни пока данное значение не станет 0
         end        
         значение совподает
             переходим к скану 4го камня
         end
     end
     скан 4го камня
            значение не совподает с 0
             разбить камни пока данное значение не станет 0
         end
         значение совподает
             переходим к скану 3го камня
         end
     end
     скан 3го камня
            значение не совподает с 0
             разбить камни пока данное значение не станет 0
         end
         значение совподает
             переходим к скану 2го камня
         end
     end
     скан 2го камня
            значение не совподает с 0
             разбить камни пока данное значение не станет 0
         end
         значение совподает
             переходим к скану 1го камня
         end
     end
     скан 1го камня
            значение не совподает с 0
             разбить камни пока данное значение не станет 0
         end
         значение совподает
             закрываем окно //выполнение не возможно так как все 10 камней не открыть. Лимит 5 камней
         end
     end        
условие не совподает(потраченны 5 попыток)
     закрыть окно
end
конец скрипта

Нужно понимать что где скан камней идет сравнение картинок(5 камней - 5 картинок)

И как задавать ограничение зоны сканирования?

Автор: cirus 14.2.2017, 15:10

Цитата
что бы выполнялись параллельно условия на скан и условие 5 попыток потрачены завершить скрипт...Как это правильно сделать?

Самое простое добавить переменную счётчик.
Код
разбили камень
set #count #count + 1    // увеличили переменную на 1
if #count  = 5                // если переменная равна 5
    end_script                 // остановить скрипт
end_if

Цитата
И как задавать ограничение зоны сканирования?

Код
set #a findimage (0 0 1920 1080 (C:\имякартинки.bmp) %a )

0 0 - координаты левого верхнего угла области поиска.
1920 1080 - координаты правого нижнего угла области поиска.

Автор: FREEON 15.2.2017, 11:31

Вот еще вопрос. Почему в скрипте когда есть несколько условий If то первую скрипт обрабатывает как положено ждет пока не появится значение и приступает к выполнению когда есть она, а остальные условия if просто игнорирует. Как это лечится? dry.gif

Автор: cirus 15.2.2017, 11:45

Если нет больного, то и лечить не кого. Код где? smile.gif

Автор: FREEON 15.2.2017, 12:51

Код
set #x 1547
set #y 480
set #x0 595
set #y0 359
set #x1 546
set #y1 442
set #x2 1395
set #y2 461
set #x3 660
set #y3 321
set #x4 1134
set #y4 191
set #x5 618
set #y5 443

//ДЕЛАЕМ ЗАДАНИЯ ГИ НА 5 ЗВЕЗД
left #x #y
for #i 1 5
     if #x0 #y0 3133184      //проверка кнопки
         wait 1s
         left #x0 #y0  //Получить квест
     end_if
     while_not #x5 #y5 3394287    //Если нет 5 звезд, x5 y5 rgb5
         left #x #y //то отправить приглашение
         wait 5s
     end_while
     while #x5 #y5 3394287     //если есть 5 звезд, x5 y5 rgb5
         left  #x2 #y2 //выполнить задание
         wait 35s
     end_while
end_for
while #x3 #y3 65535 //Все задания выполнены rgb3
     left #x4 #y4 //закрыть окно заданий ГИ
     wait 3s
end_while
end_script

Вот этот участок не срабатывает:
Код
 if #x0 #y0 3133184      //проверка кнопки
         wait 1s
         left #x0 #y0  //Получить квест
     end_if

если делаю whili not и увеличиваю время в части while #x5 #y5 3394287 то вроде как работает. Но время выполнения может быть разным...и нужно ждать пока не появится кнопка где стоит условие if a ee скрипт пропускает почему-то не нажимает и не могу стабилизировать if
картинка1
Изображение

картинка2
Изображение

картинка3
Изображение

картинка4
Изображение

Автор: cirus 15.2.2017, 13:08

Не срабатывает и не нажимает это не одно и тоже.

Код
get color #color #x0 #y0
log Цвет в точке #color     // должен совпадать с тем что в if указан
if #x0 #y0 3133184      //проверка кнопки
    log !!!!!                  // если напишет в лог значит if сработал
     wait 1s
     left #x0 #y0  //Получить квест
     wait 100        // добавить паузу
end_if

Если кнопка подсвечивается читаем это: http://uopilot.tati.pro/index.php?title=Определение_цвета_в_подсвечивающихся_объектах_(Ctrl_%2B_B)

Автор: FREEON 15.2.2017, 16:03

Log срабатывал. Но проблему я решил заменив условие. Так работает идеально:

Готовый код

Код

//Для получения данных x0 y0 rgb0 нужно навести курсор в центр буквы О (должен быть черный цвет)
//Данные x1 y1 rgb1 нужно брать тогда - когда получены все 5 звезд!!!
set #x XXX //Вместо XXX вставить значение x
set #y XXX //Вместо XXX вставить значение y
set #x0 XXX //Вместо XXX вставить значение x0
set #y0 XXX //Вместо XXX вставить значение x0
set #x1 XXX //Вместо XXX вставить значение x1
set #y1 XXX //Вместо XXX вставить значение y1
set #x2 XXX //Вместо XXX вставить значение x2
set #y2 XXX //Вместо XXX вставить значение y2
set #x3 XXX //Вместо XXX вставить значение x3
set #y3 XXX //Вместо XXX вставить значение y3
set #x4 XXX //Вместо XXX вставить значение x4
set #y4 XXX //Вместо XXX вставить значение y4


//ДЕЛАЕМ ЗАДАНИЯ ГИ НА 5 ЗВЕЗД
left #x #y       //Получить
for #i 1 5
     while_not #x0 #y0 XXX // Вместо XXX вставить значение rgb0
         wait 1s
    end_while
     while #x0 #y0 XXX   //Вместо XXX вставить значение rgb0
         wait 1s
         left #x0 #y0  //Получить квест
     end_while
     while_not #x1 #y1 XXX  //Вместо XXX вставить значение rgb1.Если нет 5 звезд.
         left #x #y //то отправить приглашение
         wait 5s
     end_while
     while #x1 #y1 XXX  //Вместо XXX вставить значение rgb1.Eсли есть 5 звезд.
         left  #x2 #y2 //выполнить задание
         wait 30s
     end_while
end_for
while #x3 #y3 XXX //Вместо XXX вставить значение rgb3. Все задания выполнены.
     left #x4 #y4 //закрыть окно заданий ГИ
     wait 3s
end_while
end_script


А можно также делать ярлыки как на координаты с переменной set только на цвет? например что бы потом их привязывать.
Код

set #x
set #y
set #color

Автор: cirus 16.2.2017, 2:16

Цитата
А можно также делать ярлыки как на координаты с переменной set только на цвет? например что бы потом их привязывать.

Можно:
Код
set #x 100
set #y 200
set #color 6172673
if #x #y #color
    log +++
end_if

Но проще через init_arr:
Код
init_arr %a (1) 100 200 6172673     // координаты и цвет
if %a [1 1] %a [1 2] %a [1 3]
    log +++
end_if

Автор: FREEON 16.2.2017, 3:15

Благодарю но, с Colorом разобрался уже))

Цитата(cirus @ 16.2.2017, 3:16) *

if %a [1 1] %a [1 2] %a [1 3]

Немного не понимаю что за цифры и к чему они привязываться и что обозначают. Если бы одна цифра было то был бы ярлык...но тут их по две...откуда берется вторая? ohmy.gif blink.gif

Автор: cirus 16.2.2017, 3:46

Цитата
Немного не понимаю что за цифры и к чему они привязываться и что обозначают. Если бы одна цифра было то был бы ярлык...но тут их по две...откуда берется вторая?

%a [1 1] - первая цифра номер строки массива, вторая номер столбца.
http://uopilot.tati.pro/index.php?title=Init_arr
Можно и так, если понятнее:
Код
set %a [1 1] 100
set %a [1 2] 200
set %a [1 3] 6172673
log %a [1 1]    %a [1 2]    %a [1 3]
end_script

Это тоже самое, только значения присваиваются пачкой.
Код
init_arr %a (1) 100 200 6172673
log %a [1 1]    %a [1 2]    %a [1 3]
end_script

Автор: FREEON 17.2.2017, 0:01

Можно ли сделать 2скрипта в одно окно скрипта? Определенное время повторялся один цикл действий...а после 45...делал 2 часть 1 раз...затем снова цикл в время huh.gif

Код

//1 часть
Время 45с
         клик
     пауза 3с
     клик
     пауза 2с
конец
//2 часть
клик
пауза 1с
клик
//цикл

Автор: cirus 17.2.2017, 2:21

Код
set #timeout timer + 5000         // 5000 = 5 секунд
while #timeout > timer
     log Первая часть
     wait 1000
end_while
log     Вторая часть

Автор: FREEON 17.2.2017, 12:25

Отлично rolleyes.gif smile.gif

Автор: FREEON 9.3.2017, 21:31

Как сделать что бы пилот клацал по найденной картинке или по картинке по заданным координатам?Прикрепленное изображение .
Например для одного изображения но в разных точках должен быть произведен клик. Точки клика отмечены красным цветом:
Изображение
В SikuliX это реализовано так там можно задавать точку клика перемещая крестик. А в пилоте через координаты скорее всего...

SikuliX
Изображение

Код

set #a findimage (0 0 0 0 (C:\имя.png) %a )
if #a  > 0                    // если картинка нашлась
    move %a [1 1] %a [1 2]    // навести на неё курсор
        left %a [1 1] %a [1 2]  //сделать клик
    end_script
end_if

Как сделать что бы клик был не в левый верхний угол, а в центр или другие координаты?
И как прописать процент совпадения? Это нужно писать 4 значения %arr 0 80 0 0???
И можно ли заменить set #a findimage для нескольких картинок массивом Init arr???

Автор: cirus 10.3.2017, 2:20

Цитата
где можно посмотреть координаты?

log %a [1 1] %a [1 2]
Цитата
а как сделать в центр

Если совсем по простому:
Код
set #a findimage (0 0 1920 1080 (C:\имякартинки.bmp) %a )
if #a  > 0                    // если картинка нашлась
    set #x %a [1 1]  + 10    // прибавить 10 пикселей к координате X
    set #y %a [1 2]  + 20    // прибавить 20 пикселей к координате Y
    move  #x #y
    end_script
end_if

Можно сделать рандом:
Код
set #x %a [1 1] + 5 + random(15)   // прибавить 5 пикселей + рандомно от 0 до 14 пикселей

Или так:
Код
move %a [1 1] %a [1 2] 10 15      // прибавить к координате X от 0 до 9 пикселей и к Y от 0 до 14

Переместит курсор точно в центр картинки:
Код
set #a findimage (0 0 1920 1080 (C:\имякартинки.bmp) %a )
if #a  > 0                    // если картинка нашлась
    set #x (%a [1 1] + %a [1 3]) / 2
    set #y (%a [1 2] + %a [1 4]) / 2
    move #x #y
end_script
end_if

Автор: FREEON 10.3.2017, 2:48

Цитата(FREEON @ 9.3.2017, 21:31) *

И как прописать процент совпадения? Это нужно писать 4 значения %arr 0 80 0 0???
И можно ли заменить set #a findimage для нескольких картинок массивом Init arr???


Автор: cirus 10.3.2017, 3:02

Цитата
И как прописать процент совпадения? Это нужно писать 4 значения %arr 0 80 0 0???

Тип поиска не может быть 0. Можно не указывать не нужные параметры начиная с конца.
Код
set #a findimage (0 0 1920 1080 (C:\имякартинки.bmp) %a 2 80)

Код
И можно ли заменить set #a findimage для нескольких картинок массивом Init arr???

Нет. Что конкретно требуется?

Автор: DarkMaster 10.3.2017, 10:37

Цитата
Тип поиска не может быть 0. Можно не указывать не нужные параметры начиная с конца.

Формально вроде 0 - это константный хендл рабочего стола. Т.е. поиск будет происходить, как если бы был указан хендл, но тут могут быть варианты.

Автор: WKnight 10.3.2017, 10:44

0=2

Автор: FREEON 10.3.2017, 20:49

Как правильно работать с командой While для картинки??? Нужно ожидать появления заданной картинки.

Код

init_arr %pol (1) 1544, 408
set delimiter ' '
set #a findimage (0 0 1920 1080 (D:\_PILOT\1489166708086.png) %a )
left %pol [1]       //Получить
while_not #a  > 0
    wait 10
end_while
if #a  > 0                    // если картинка нашлась
    set #x (%a [1 1] + %a [1 3]) / 2
    set #y (%a [1 2] + %a [1 4]) / 2
    move #x #y
    left #x #y //атака(взять)
end_script
end_if
end_script

Автор: cirus 11.3.2017, 2:04

Код
set #a 0
while #a = 0     // пока не нашлась картинка
    set #a findimage (0 0 1920 1080 (D:\_PILOT\1489166708086.png) %a )
    wait 10
end_while

Автор: FREEON 19.3.2017, 0:34

МужЫки...Слышал, что есть способ, делать проверку(поиск) по нескольким точкам вместо картинки blink.gif huh.gif Это и в правду можно делать? И если можно то как? dry.gif

Автор: cirus 19.3.2017, 0:50

Искать нужно статичный объект или меняющийся?

Автор: FREEON 19.3.2017, 11:22

Цитата(cirus @ 19.3.2017, 0:50) *

Искать нужно статичный объект или меняющийся?

Статический. Но но нужно что бы без привязки координат. Т.к. Там статуя и нужно нажимать на нее много раз пока не закончится таймер обратного отсчета в игре. Загвоздка в том что нажав на нее ГГ(главный герой) смещается и координаты будут другие. А с изображением скорость поиска не высокая. А потери даже в сотню миллисекунд может привести к поражению
А скрипт должен решать такие задачи: зайти в ивент > переместиться к статуи>поиск статуи(постоянная атака на нее пока идет таймер>Атака по списку если есть противники(постоянная атака и затем пропуск боя)> если нет противников атака Защитника статуи.
Вот возникает проблема в очень быстром поиске статуи
Изображение

Автор: cirus 19.3.2017, 12:14

Сколько кликов вы сможете сделать вручную за секунду? Ну максимум 7-10. За секунду пилот найдёт картинку и кликнет по ней не меньше 10 раз. Особенно, если не искать картинку размером на пол экрана с большим отклонением по цвету. Не нужно делать картинку всей статуи, достаточно небольшого кусочка. Уменьшите область поиска, если статуя появляется не во всех местах на экране.
Проверять несколько точек выйдет дольше, чем искать с помощью findimage.

Код
if X Y Color - 16мсек
if X Y Color and X1 Y1 Color - 32 мсек
if X Y Color and X1 Y1 Color and X2 Y2 Color2 - 48 мсек

На win7 с темой аэро умножайте время на 2.

Ускорить поиск картинки можно, если использовать тип поиска с привязкой к окну.
Код
set #handle findwindow(имя окна)    
set #a findimage (0 0 1920 1080 (D:\_PILOT\1489166708086.png) %a #handle)





Автор: FREEON 2.4.2017, 23:22

Вот... еще, что нужно автоматизировать.
Необходимо что бы персонаж перемещался по локации и собирал одни предметы и обходил другие. Трудность заключается в том что препятствия появляются рандомно(в начале и затем остаются неподвижными) и нужные предметы так же падают случайно. Еще трудность заключается в том что персонаж перемещается на одну клетку(вверх, вниз, влево, вправо).
Нужно что бы скрипт собирал 7 цепей и убил 11 монстров, попутно собирая сундуки. Затем после сбора замков и убийства монстров открываются блоки и нужно убить в правом верхнем углу основного непися.

Локация сбора и зачистки

Обычный вид:
Изображение
Масштаб всего поля:
Изображение

Может кто делал подобные скрипты, то подскажите, как это лучше сделать?!

Автор: cirus 3.4.2017, 0:33

1. Найти координаты персонажа.
2. Найти ближайший к персу предмет.
3. Найти ближайший к предмету оранжевый квадрат.
4. На этот квадрат сделать ход.
Повторять действия 1-4 пока перс не окажется на определённом расстоянии от предмета.
5. Собрать предмет.
Повторять действия 1-5.
http://uopilot.tati.pro/index.php?title=Point_distance - расстояние между двумя точками.

Автор: FREEON 3.4.2017, 15:03

Цитата(cirus @ 3.4.2017, 0:33) *

1. Найти координаты персонажа.
2. Найти ближайший к персу предмет.
3. Найти ближайший к предмету оранжевый квадрат.
4. На этот квадрат сделать ход.
Повторять действия 1-4 пока перс не окажется на определённом расстоянии от предмета.
5. Собрать предмет.
Повторять действия 1-5.
http://uopilot.tati.pro/index.php?title=Point_distance - расстояние между двумя точками.

Как говориться: "Кто начал - тот пол дела уже сделал" laugh.gif
Вот набросал часть кода для поиска ГГ(главного героя), мобов и предметов.
Код

Код

//Определяем координаты Главного героя
set #gg findimage (0 50 1598 790 (D:\_PILOT\PNS\gg.bmp) %arr 2 80)  
set #w size (%arr) // получим число найденных картинок
log Найден ГГ: #w
for #i 1 #w
   set #x %arr [#i 1]
   set #y %arr [#i 2]
   log ГГ находится в координатах: #x #y
end_for
//Сундук
set #syndyk findimage (0 50 1598 790 (D:\_PILOT\PNS\syndyk.bmp) %arr 2 80)  
set #z size (%arr) // получим число найденных картинок
log Найдено сундуков: #z
for #i 1 #z
   set #x1 %arr [#i 1]
   set #y1 %arr [#i 2]
   log Сундук находится в координатах: #x1 #y1
end_for
//Моб
set #mob findimage (0 50 1598 790 (D:\_PILOT\PNS\mob.png) %arr 2 80)  
set #m size (%arr) // получим число найденных картинок
log Найдено Мобов: #m
for #i 1 #m
   set #x2 %arr [#i 1]
   set #y2 %arr [#i 2]
   log Моб находится в координатах: #x2 #y2
end_for
//Цепь
set #cep findimage (0 50 1598 790 (D:\_PILOT\PNS\cep.bmp) %arr 2 80)  
set #c size (%arr) // получим число найденных картинок
log Найдено Цепей: #c
for #i 1 #c
   set #x3 %arr [#i 1]
   set #y3 %arr [#i 2]
   log Цепей находится в координатах: #x3 #y3
end_for


Лог поиска

3
14:50:58 3 (, 3): Найден ГГ: 0
14:50:59 3 (, 12): Найдено сундуков: 1
14:50:59 3 (, 16): Сундук находится в координатах: 697 542
14:51:00 3 (, 21): Найдено Мобов: 0
14:51:00 3 (, 30): Найдено Цепей: 1
14:51:01 3 (, 34): Цепей находится в координатах: 779 438
14:52:33 3 (, 3): Найден ГГ: 0
14:52:33 3 (, 12): Найдено сундуков: 1
14:52:34 3 (, 16): Сундук находится в координатах: 697 542
14:52:34 3 (, 21): Найдено Мобов: 0
14:52:35 3 (, 30): Найдено Цепей: 1
14:52:35 3 (, 34): Цепей находится в координатах: 779 438
14:52:40 3 (, 3): Найден ГГ: 0
14:52:40 3 (, 12): Найдено сундуков: 1
14:52:41 3 (, 16): Сундук находится в координатах: 697 542
14:52:41 3 (, 21): Найдено Мобов: 0
14:52:42 3 (, 30): Найдено Цепей: 1
14:52:42 3 (, 34): Цепей находится в координатах: 779 438
14:52:46 3 (, 3): Найден ГГ: 1
14:52:46 3 (, 7): ГГ находится в координатах: 39 455
14:52:47 3 (, 12): Найдено сундуков: 1
14:52:47 3 (, 16): Сундук находится в координатах: 697 542
14:52:48 3 (, 21): Найдено Мобов: 0
14:52:49 3 (, 30): Найдено Цепей: 1
14:52:49 3 (, 34): Цепей находится в координатах: 779 438
14:53:36 3 (, 3): Найден ГГ: 0
14:53:36 3 (, 12): Найдено сундуков: 1
14:53:37 3 (, 16): Сундук находится в координатах: 697 542
14:53:37 3 (, 21): Найдено Мобов: 1
14:53:38 3 (, 25): Моб находится в координатах: 1130 329
14:53:38 3 (, 30): Найдено Цепей: 1
14:53:39 3 (, 34): Цепей находится в координатах: 779 438



И тут сразу нашлось несколько подводных камней. ГГ и моб являются анимацией и не сразу находятся(лишь через несколько повторных сканов)

По Point_distance немного не понятно чо к чему(замудренно написано в справке), хотелось бы увидеть пару примеров.
И как реализовать перемещение по оранжевым квадратам, ведь не все 4 направления видны часть из их перекрывает ГГ. mellow.gif
Прикрепленный файл  gg.bmp ( 2,48 килобайт ) Кол-во скачиваний: 272

Прикрепленный файл  syndyk.bmp ( 1,94 килобайт ) Кол-во скачиваний: 242

Прикрепленное изображение моб в пнг так как где они стоят квадратики отличаются по цвету(шахматное поле)
Прикрепленный файл  cep.bmp ( 1,39 килобайт ) Кол-во скачиваний: 296

Автор: cirus 3.4.2017, 15:26

По умолчанию findimage ищет 1 картинку и поиск останавливается. Нужно указать максимальное число картинок или искать все.

Код
set #syndyk findimage (0 50 1598 790 (D:\_PILOT\PNS\syndyk.bmp) %arr 2 80 -1)  // -1 искать все картинки 

Цитата
ГГ и моб являются анимацией и не сразу находятся(лишь через несколько повторных сканов)

Для начала уменьшить точность поиска и добавить погрешность оттенка. Если совсем не находит, то можно искать этим: https://forum.uokit.com/index.php?showtopic=30108
Цитата
И как реализовать перемещение по оранжевым квадратам, ведь не все 4 направления видны часть из их перекрывает ГГ.

Если искать не со 100% точностью, то часть перекрытых пикселей не помеха.
Цитата
По Point_distance немного не понятно чо к чему(замудренно написано в справке), хотелось бы увидеть пару примеров.

Код
set #dist round(point_distance(100 100 500 500))   // расстояние между координатами 100 100 и 500 500
log #dist
end_script



Автор: FREEON 3.4.2017, 16:08

Цитата(cirus @ 3.4.2017, 15:26) *

Для начала уменьшить точность поиска и добавить погрешность оттенка. Если совсем не находит, то можно искать этим: https://forum.uokit.com/index.php?showtopic=30108

Есть еще проблемка. У гг две анимации, два положения...одно положение если гг cделал ход вверх влево или право и другое положение когда сделал ход вниз или влево. Как быть???
Прикрепленное изображение
можно ли по простому замутить в поиcк картинки гг без подгрузки папки.
Например: set #gg findimage (0 50 1598 790 (D:\_PILOT\PNS\gg1.bmp) %arr 2 80) or (0 50 1598 790 (D:\_PILOT\PNS\gg2.bmp) %arr 2 80)


Цитата(cirus @ 3.4.2017, 15:26) *
set #dist round(point_distance(100 100 500 500)) // расстояние между координатами 100 100 и 500 500

Тут все просто, а мне нужно извлекать и привязываться к переменным(ярлыкам поиска) так как все точки неизвестны...

Автор: cirus 4.4.2017, 2:30

Примерно так.

код
Код
set #z 0
set size(%itemarray)    // массив, в который будут сохраняться координаты мобов и итемов

set #gg findimage (0 50 1598 790 (D:\_PILOT\PNS\gg1.bmp) %pers 2 80)
if  #gg = 0     // если не найден в одном положении, ищем во втором
    set #gg findimage (0 50 1598 790 (D:\_PILOT\PNS\gg2.bmp) %pers 2 80)
end_if

if  #gg > 0     // если перс найден
    log Перс найден

    // поиск сундуков
    set #syndyk findimage (0 50 1598 790 (D:\_PILOT\PNS\syndyk.bmp) %sunduk 2 80 -1 7)
    log Нашлось сундуков size(%sunduk)
    if  #syndyk > 0
        for #i 1 size(%sunduk)
            set #z #z + 1
            init_arr %itemarray (#z) %sunduk [#i 1] %sunduk [#i 2]    // записываем в массив координаты всех сундуков
        end_for
    end_if

    // поиск цепей
    set #cep findimage (0 50 1598 790 (D:\_PILOT\PNS\cep.bmp) %cep 2 80 -1 7)
    log Нашлось цепей size(%cep)
    if  #cep > 0
        for #i 1 size(%cep)
            set #z #z + 1
            init_arr %itemarray (#z) %cep [#i 1] %cep [#i 2]    // записываем в массив координаты всех цепей
        end_for
    end_if

    // дописать поиск мобов, принцип тот же


    // теперь, в массиве %itemarray содержатся координаты всех итемов и мобов
    save_array %itemarray C:\item.txt    // сохранить массив, можно посмотреть что в нём сохранилось, потом можно убрать

    // нужно найти ближайшего к персу моба или предмет
    if  size(%itemarray) > 0   // если массив не пустой
        set #min 9999999
        set #minNum -1
        for #i 1 size(%itemarray)
            set #dist round(point_distance(%pers[1 1] %pers [1 2] %itemarray [#i 1] %itemarray [#i 2]))
            if  #dist < #min
                set #min #dist
                set #minNum #i
            end_if
        end_for
    end_if
    if  #minNum > 0
        hint Ближайшая точка #minNum, расстояние = #min
        move %itemarray[#minNum 1]  %itemarray [#minNum 2]    // переместить курсор к ближайшей точке
    end_if

    // %itemarray[#minNum 1]  %itemarray [#minNum 2] - координаты ближайшего к персу моба или итема
    // дальше поиск ближайшего оранжевого квадрата

end_if
end_script

Автор: FREEON 31.3.2018, 11:13

Вот решил вернуться к этой теме и так сказать с новыми идеями. А точнее можно ли решить эту задачу при помощи Алгоритма A?
по сути задача аналогична поиску выхода из лабиринта...
Оригинал карта:
http://www.imageup.ru/img2/3030447/screenshot_1.jpg
Упрощенный вариант:
http://www.imageup.ru/img2/3030449/screenshot_2.png.html
Перемещение по клеткам - без диагонали!

Автор: cirus 31.3.2018, 11:46

Цитата
http://www.imageup.ru/img2/3030447/screenshot_1.jpg

Ссылка не рабочая.

Алгоритму вообще всё-равно где искать путь, хоть в лабиринте, хоть в графе.
Главное создать карту, это двумерный массив с обозначением препятствий и доступных для хода клеток.

Автор: FREEON 31.3.2018, 11:58

Цитата(cirus @ 31.3.2018, 11:46) *

Ссылка не рабочая.

Алгоритму вообще всё-равно где искать путь, хоть в лабиринте, хоть в графе.
Главное создать карту, это двумерный массив с обозначением препятствий и доступных для хода клеток.

Проверил - открывает (но вот всякий пожарный выложу сюда)
Графика
Изображение

Ну да главное научиться делать это..

Автор: cirus 31.3.2018, 12:03

К сообщению картинку прикрепите.

Автор: FREEON 31.3.2018, 12:12

Цитата(cirus @ 31.3.2018, 12:03) *

К сообщению картинку прикрепите.

Я ее в спойлер вставил...но чо-то ее сервис преобразовал в jpg файл а на пк не осталось...могу аналогичную выложить но с другой расстановкой

Автор: cirus 31.3.2018, 12:30

Толку от ссылки в спойлере, которая у меня не открывается.
Когда пишите сообщение, чуть ниже 'Прикрепление файлов', выберите файл и добавьте в сообщение.

Автор: FREEON 31.3.2018, 13:14

Набросал заново по быстрому smile.gif
Прикрепленный файл  Screenshot_1.bmp ( 2,82 мегабайт ) Кол-во скачиваний: 254
Прикрепленный файл  Screenshot_2.bmp ( 369,15 килобайт ) Кол-во скачиваний: 254

Автор: cirus 31.3.2018, 20:50

Одна картинка 32 бита, вторая 8. А потом пишут findimage не находит картинки smile.gif
В архиве видео и скрипт. Прикрепленный файл  Astar.zip ( 659,41 килобайт ) Кол-во скачиваний: 184


Автор: FREEON 1.4.2018, 2:03

Цитата(cirus @ 31.3.2018, 20:50) *

Одна картинка 32 бита, вторая 8. А потом пишут findimage не находит картинки smile.gif
В архиве видео и скрипт. Прикрепленный файл  Astar.zip ( 659,41 килобайт ) Кол-во скачиваний: 184


Классно! Смотрю - смотрю и насмотреться никак не могу laugh.gif
Буду голову ломать, как это быстро скриптом рисовать карту и затем обратно запихивать в игру ohmy.gif
Кстати, чем видео записывал? чо оно такое маленькое?)

Автор: cirus 1.4.2018, 2:10

Цитата
Кстати, чем видео записывал? чо оно такое маленькое?)

Без разницы чем записывать, видео изначально было больше 1ггб. Конвертировал Any Video Converter, формат avi, кодек x264.

Автор: FREEON 1.4.2018, 2:14

А чо если сразу работать с окном игры. к примеру...брать клетки препятствия обозначить вместо точек...нуно попробовать запихнуть)) а чо пиксель масштабом с клетку... только еще получается направления переиначить, то есть вместо влево вправо вниз вверх заменить только движением по диагонали (это для человеческого глаза ось вниз-вверх, а для пилота диагональ...плоскость видения)
Прикрепленный файл  Screenshot_1__2_.bmp ( 2,11 мегабайт ) Кол-во скачиваний: 208

Изображение

Автор: XaЛBa 20.4.2019, 18:25

Написан скрипт на прохождение ПГ. но вся бяка, что он ни как не делает 6 проходов, а гоняет до бесконечности пока не остановить. Через For также не вышло, не уж-то делать счетчик циклов

//типа уже пати собрано
left 1000, 97 // подхожу
wait 2500 // ближе
left 388, 266 // к
wait 2500 // НПС
left 429, 616 //клик на НПС
left 429, 616 //вызвать окно с кнопкой Вызов
repeat 6
while 1024, 617 1202119 //кнопка Вызов
left 1025, 618 //клик Вызов
if 1231, 846 727077 //если не красная АФК
left 1229, 849 //активировать АФК
end_if
while_not 1024, 617 1202119
left 429, 616 //вызвать окно с кнопкой Вызов
left 1025, 618 //клик Вызов
end_while
end_while
end_repeat
end_script

Автор: cirus 20.4.2019, 19:15

Цитата
а гоняет до бесконечности пока не остановить.

2 цикла с проверкой цвета, в одном из них и крутится, т. к. условие не выполняется.
Выводите в лог действия, тогда будет понятно где зацикливается.
К примеру:
Код
left 1025, 618 //клик Вызов
log Клик1
if 1231, 846 727077 //если не красная АФК
    log Цвет найден
    left 1229, 849 //активировать АФК
   log Клик2
end_if
end_script


Автор: FREEON 20.4.2019, 20:14

В ручную подвести или(оставлять окола непися) героя. Окно пати(команды переместить из цента в бок) Координаты клика атаки НПС делать с помощью findimage. по поводу количества проходов..тут уже могут быть варианты..если кого-то водить то счетчик, если для себя то надежней через findimage.

Автор: XaЛBa 21.4.2019, 0:35

плин, про логи забыл совсем. в итоге исправил на
......// подготовка к задаче
repeat 6
left 1025, 618 //клик Вызов
wait
if 1231, 865 1319214 //если не красная АФК
left 1228, 846 //активировать АФК
end_if
while_not 1024, 617 1202119
left 425, 587 //вызвать окно с кнопкой Вызов
end_while
end_repeat
.......//закрыть все и выйти
все оказалось проще, спасибки

Цитата(FREEON @ 20.4.2019, 20:14) *

В ручную подвести или(оставлять окола непися) героя. Окно пати(команды переместить из цента в бок) Координаты клика атаки НПС делать с помощью findimage. по поводу количества проходов..тут уже могут быть варианты..если кого-то водить то счетчик, если для себя то надежней через findimage.

FREEON, да ты и сам знаеш чо они не статичны а малек динамичны, а с диапозонами цвета не хотелось возиться, Да и findImage у меня чтото не сработал ( делал на название неписюна ), и фон затирал, вощем не прокатило, а так клацает себе и хватает на 6 попыток. Хотя щас писал ответы, и наверно понял что делал ошибку когда затирал фон, надо было верхний левый пиксель не затирать. По любасу спасибки

Автор: FREEON 21.4.2019, 9:55

Цитата(XaЛBa @ 21.4.2019, 0:35) *

FREEON, да ты и сам знаеш чо они не статичны а малек динамичны

Проще не значит надежней.
Код для слива попыток в ПГ

Нужно сделать 4 картинки:
1) картинка имени моба на котором будем сливать попытки(только имя, закрашенный фон)
2) картинка салатовый угол окна создать отряд (10 пикселей хватит с головой)
3) картинка Ника главного героя (закрашенный фон)
4) картинка когда у героя осталось 0 попыток
https://ibb.co/mBJyRcK
В коде менять только те строки которые в комментариях отмечены звездочками ***
Код

//Перемещаем окно с попытками в бок(вправо)
set #so findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %so 2 80) //***картинка окна Создать отряд(верхняя левая салатовая точка)
while #so = 0     // пока не нашлась картинка c окном Создать отряд(собранное пати)
    set #so findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %so 2 80) //***дублируем картинку Создать отряд(только путь и имя,координаты)
    wait 500
end_while
set #s findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %s 2 80) //***дублируем картинку Создать отряд(только путь и имя,координаты)
if  #s > 0
    left_down %s[1 1] %s[1 2] //зажать мышку на окне
    wait 200
    left_up XXX YYY //***вставить свои координаты куда будем перетаскивать окно
end_if
while 0 = 0
    set #nps findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-моба.bmp) %nps 2 70) //***картинка моба-подземелья на котором будем сливать попытки(только его имя с закрашеным фоном)
    if  #nps > 0
        set #x (%nps [1 1] + %nps [1 3]) / 2
        set #y (%nps [1 2] + %nps [1 4]) / 2 + 60 //***
        wait 100
        move #x #y //навести мышку на моба которого будем бить
        //left #x #y //*Атака моба
        wait 1s
    end_if
    if  1024, 617 1202119 //***кнопка Начать вызов (сделать проверку цвета Ctrl+B)
        left 1025, 618 //***клик Вызов
    else
        log Не могу найти кнопку НАЧАТЬ ВЫЗОВ //***
    end_if
    if  1231, 846 727077 //***если не красная АФК
        left 1229, 849 //***активировать АФК
    end_if
    set #ger findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-ник.bmp) %ger 2 70) //***картинка ника твоего персанажа в окне Создать отряд(с закр.фон)
    if #ger > 0 //Ищем героя в отряде и проверяем...
        set #ger findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-ник.bmp) %ger 2 70) //***дублируем картинку ника
        set #StartX %ger [1 1]
        set #StartY %ger [1 2]
        set #EndX %ger [1 1] + 150 //***
        set #EndY %ger [1 2] + 150 //***
        set #p findimage (#StartX #StartY #EndX #EndY (C:\путь\имя-картинки-ноль.bmp) %p 2 70) //***картинка когда у твоего персанажа 0 попыток(с закр.фон)
        if #p > 0 //Если мы главному герою слили все попытки, то..
             set #X %ger [1 1] + 210 //***
             set #Y %ger [1 2] + 15  //***
             left #X #Y //распустить отряд
             //left//***выйти из подземелья
             //*** свое действие
             end_script //остановить скрипт
        end_if
    end_if
end_while


Автор: XaЛBa 21.4.2019, 12:13

Цитата(FREEON @ 21.4.2019, 9:55) *

Проще не значит надежней.

Респект, сильно, изучаю, СПасибки. Так глубоко не думал писать скрипт. Правда не люблю команду Мув и всячески не хочу её применять как на Гобах так и на Лигере.

Автор: FREEON 21.4.2019, 13:02

Цитата(XaЛBa @ 21.4.2019, 12:13) *

Не люблю команду Мув и всячески не хочу её применять как на Гобах так и на Лигере.

move нужно для тестового режима, что бы убедиться в том что мы будем кликать в нужном для нас месте, а в рабочей версии эту команду без проблем можно заменить на клики.
Но в данном скрипте нужно подсветить непися при помощи move тогда атака будет удачной, а без подсветки будет мазать. Так же нужно сделать несколько правок..повысить точность поиска попыток и поменять очередность, первой сделать проверку на остаток попыток.
Исправил в коде и теперь все должно шуршать как часики.
Код

//Перемещаем окно с попытками в бок(вправо)
set #so findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %so 2 80) //***картинка окна Создать отряд(верхняя левая салатовая точка)
while #so = 0     // пока не нашлась картинка c окном Создать отряд(собранное пати)
    set #so findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %so 2 80) //***дублируем картинку Создать отряд(только путь и имя,координаты)
    wait 500
end_while
set #s findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %s 2 80) //***дублируем картинку Создать отряд(только путь и имя,координаты)
if  #s > 0
    left_down %s[1 1] %s[1 2] //зажать мышку на окне
    wait 200
    left_up XXX YYY //***вставить свои координаты куда будем перетаскивать окно
end_if
while 0 = 0
    set #ger findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-ник.bmp) %ger 2 70) //***картинка ника твоего персанажа в окне Создать отряд(с закр.фон)
    if  #ger > 0 //Ищем героя в отряде и проверяем...
        set #ger findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-ник.bmp) %ger 2 70) //***дублируем картинку ника
        set #StartX %ger [1 1]
        set #StartY %ger [1 2]
        set #EndX %ger [1 1] + 150 //***
        set #EndY %ger [1 2] + 150 //***
        set #p findimage (#StartX #StartY #EndX #EndY (C:\путь\имя-картинки-ноль.bmp) %p 2 80) //***картинка когда у твоего персанажа 0 попыток(с закр.фон)
        if  #p > 0 //Если мы главному герою слили все попытки, то..
            set #X %ger [1 1] + 210 //***
            set #Y %ger [1 2] + 15  //***
            move #X #Y //навести на кнопку распустить
            left #X #Y //распустить отряд
            //left//***выйти из подземелья
            //*** свое действие
            end_script //остановить скрипт
        else
            set #nps findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-моба.bmp) %nps 2 70) //***картинка моба-подземелья на котором будем сливать попытки(только его имя с закрашеным фоном)
            if  #nps > 0
                set #x (%nps [1 1] + %nps [1 3]) / 2
                set #y (%nps [1 2] + %nps [1 4]) / 2 + 60 //***
                wait 100
                move #x #y //навести мышку на моба(подсветить) которого будем бить
                wait 500
                left #x #y //*Атака моба
                wait 1s
            end_if
            if  1024, 617 1202119 //***кнопка Начать вызов (сделать проверку цвета Ctrl+B)
                left 1025, 618 //***клик Вызов
            else
                log Не могу найти кнопку НАЧАТЬ ВЫЗОВ //***
            end_if
        end_if
    end_if
    if  1231, 846 727077 //***если не красная АФК
        left 1229, 849 //***активировать АФК
    end_if
    wait 100
end_while

Автор: XaЛBa 21.4.2019, 14:25

Цитата(FREEON @ 21.4.2019, 9:55) *

Проще не значит надежней.
Код для слива попыток в ПГ

Нужно сделать 4 картинки:
1) картинка имени моба на котором будем сливать попытки(только имя, закрашенный фон)
2) картинка салатовый угол окна создать отряд (10 пикселей хватит с головой)
3) картинка Ника главного героя (закрашенный фон)
4) картинка когда у героя осталось 0 попыток
https://ibb.co/mBJyRcK
В коде менять только те строки которые в комментариях отмечены звездочками ***
Код

//Перемещаем окно с попытками в бок(вправо)
set #so findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %so 2 80) //***картинка окна Создать отряд(верхняя левая салатовая точка)
while #so = 0     // пока не нашлась картинка c окном Создать отряд(собранное пати)
    set #so findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %so 2 80) //***дублируем картинку Создать отряд(только путь и имя,координаты)
    wait 500
end_while
set #s findimage (0, 0 1920, 1080 (C:\путь\имя-картинки.bmp) %s 2 80) //***дублируем картинку Создать отряд(только путь и имя,координаты)
if  #s > 0
    left_down %s[1 1] %s[1 2] //зажать мышку на окне
    wait 200
    left_up XXX YYY //***вставить свои координаты куда будем перетаскивать окно
end_if
while 0 = 0
    set #nps findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-моба.bmp) %nps 2 70) //***картинка моба-подземелья на котором будем сливать попытки(только его имя с закрашеным фоном)
    if  #nps > 0
        set #x (%nps [1 1] + %nps [1 3]) / 2
        set #y (%nps [1 2] + %nps [1 4]) / 2 + 60 //***
        wait 100
        move #x #y //навести мышку на моба которого будем бить
        //left #x #y //*Атака моба
        wait 1s
    end_if
    if  1024, 617 1202119 //***кнопка Начать вызов (сделать проверку цвета Ctrl+B)
        left 1025, 618 //***клик Вызов
    else
        log Не могу найти кнопку НАЧАТЬ ВЫЗОВ //***
    end_if
    if  1231, 846 727077 //***если не красная АФК
        left 1229, 849 //***активировать АФК
    end_if
    set #ger findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-ник.bmp) %ger 2 70) //***картинка ника твоего персанажа в окне Создать отряд(с закр.фон)
    if #ger > 0 //Ищем героя в отряде и проверяем...
        set #ger findimage (0, 0 1920, 1080 (C:\путь\имя-картинки-ник.bmp) %ger 2 70) //***дублируем картинку ника
        set #StartX %ger [1 1]
        set #StartY %ger [1 2]
        set #EndX %ger [1 1] + 150 //***
        set #EndY %ger [1 2] + 150 //***
        set #p findimage (#StartX #StartY #EndX #EndY (C:\путь\имя-картинки-ноль.bmp) %p 2 70) //***картинка когда у твоего персанажа 0 попыток(с закр.фон)
        if #p > 0 //Если мы главному герою слили все попытки, то..
             set #X %ger [1 1] + 210 //***
             set #Y %ger [1 2] + 15  //***
             left #X #Y //распустить отряд
             //left//***выйти из подземелья
             //*** свое действие
             end_script //остановить скрипт
        end_if
    end_if
end_while



и сразу вопрос, а для чего в некоторых местах нам необходимо делать Дублирование картинки, а когда не надо

Автор: FREEON 21.4.2019, 14:40

Цитата(XaЛBa @ 21.4.2019, 14:25) *

и сразу вопрос, а для чего в некоторых местах нам необходимо делать Дублирование картинки, а когда не надо

в вили делать нужно обязательно так как может выдавать ошибку, ну и когда к примеру как мы делаем поле поиска для плавающих кнопок(то есть снимаем координаты объекта в текущий момент).

Автор: XaЛBa 22.4.2019, 3:28

Цитата(FREEON @ 21.4.2019, 14:40) *

в вили делать нужно обязательно так как может выдавать ошибку, ну и когда к примеру как мы делаем поле поиска для плавающих кнопок(то есть снимаем координаты объекта в текущий момент).

Интуитивно догадывался. терь учту, И такой же финт с перетаскиванием окна пробну сделать на Зведочках Задания ГИ. Прикольно, спасибки. оч помогаеш. Щас постепенно буду изучать дальше.

Автор: XaЛBa 22.4.2019, 6:20


Интуитивно догадывался. терь учту, И такой же финт с перетаскиванием окна пробну сделать на Зведочках Задания ГИ. Прикольно, спасибки. оч помогаеш. Щас постепенно буду изучать дальше. Здорого тем что не надо запускать Вэйт на минуту, и сразу под контролем будеут кнопки и на раздачу и на помощь и сами звездочки.

Автор: XaЛBa 23.4.2019, 23:20

И ещо вопрос назрел, Ни как не выходит найти findimage текст в чате, как ни пыжился, так и не выходи, на слова типа Помочь или Алхимия/ И закрашивал и не закрашивал, и если наводить мышака то начинает подсвечиыаться, то избавлялся от подсветки. И смотрел уже другие посты на эту тему, и скриптами проганял, и ни как, а в Логе выдает Нолик, значит не нашло.


Прикрепленные файлы
Прикрепленный файл  Help..bmp ( 38,12 килобайт ) Кол-во скачиваний: 101

Автор: FREEON 23.4.2019, 23:40

Цитата(XaЛBa @ 23.4.2019, 23:20) *

И ещо вопрос назрел, Ни как не выходит найти findimage текст в чате, как ни пыжился, так и не выходи, на слова типа Помочь или Алхимия/ И закрашивал и не закрашивал, и если наводить мышака то начинает подсвечиыаться, то избавлялся от подсветки. И смотрел уже другие посты на эту тему, и скриптами проганял, и ни как, а в Логе выдает Нолик, значит не нашло.

закрашивать нужно слово ПОМОЧЬ
Прикрепленный файл  Help..bmp ( 714 байт ) Кол-во скачиваний: 153

Автор: XaЛBa 23.4.2019, 23:53

Цитата(FREEON @ 23.4.2019, 23:40) *

закрашивать нужно слово ПОМОЧЬ
Прикрепленный файл  Help..bmp ( 714 байт ) Кол-во скачиваний: 153


И что не так????


Прикрепленные файлы
Прикрепленный файл  Алхимия.bmp ( 2,91 килобайт ) Кол-во скачиваний: 108

Автор: FREEON 24.4.2019, 0:14

Цитата(XaЛBa @ 23.4.2019, 23:53) *

И что не так????

Первая картинка и вторая не бьются по размеру(размер окна при поиске должен быть таким же когда снимали скрин).
Левый верхний пиксель он же пиксель фона по цвету(цветовой гамме) не должен совпадать с цветами искомого объекта. У вас получилось так что вместо текста вы искали другой объект.
Вот прочтите статью как правильно подготавливать картинку к поиску.
https://uopilot.tati.pro/index.php?title=Подготовка_картинки_для_Findimage
Прикрепленный файл  1.bmp ( 1,04 килобайт ) Кол-во скачиваний: 150

Автор: XaЛBa 24.4.2019, 12:25

Цитата(FREEON @ 24.4.2019, 0:14) *

Первая картинка и вторая не бьются по размеру(размер окна при поиске должен быть таким же когда снимали скрин).
Левый верхний пиксель он же пиксель фона по цвету(цветовой гамме) не должен совпадать с цветами искомого объекта. У вас получилось так что вместо текста вы искали другой объект.
Вот прочтите статью как правильно подготавливать картинку к поиску.
https://uopilot.tati.pro/index.php?title=Подготовка_картинки_для_Findimage
Прикрепленный файл  1.bmp ( 1,04 килобайт ) Кол-во скачиваний: 150


ну, руки пока не набил и вооще, живут отдельно от головы. Да и потом заметил. что если мышак находиться на окне Пилота, то надпись подсвечиваеться, вот он и не находил. Да и в боте на ПГ , чтобы включить АФКу, надо делать "от противного", тогда сработает всегда, ( if_not ........ // конда она красная), иначе она подсвечивается, не сразу заметил

Автор: XaЛBa 25.4.2019, 19:30

написал скрипт на гобов
while ( hour >= 14 and min >= 00 and sec >= 04 ) and ( hour <= 19 and min <= 30 and sec <= 20 )
........// и пошол прыгать по локе
начало старта в 14,00,04 и финиш в 19,30,20
там разница моего времени и игрового в 4 сек, ну это не так важно
когда запускаю, все идет нормально, смиренно дожидаеться начала старта и весело работает, но вчером после 18,00 начинает жить сам по себе, перестает работать и все. стоит заменить на while_not - начинает работать, в чем прикол, так и не понял, может я крышей поехал уже. Тут нет перехода через 24 часа, и конечное время больше начального, И если даже заменю While на if - все точно также, постаdлю if_not - работает. До этого работал в течении недели - проблем небыло, как куранты, тока время задержки проверять надо.


Автор: cirus 26.4.2019, 1:54

Цитата
while ( hour >= 14 and min >= 00 and sec >= 04 ) and ( hour <= 19 and min <= 30 and sec <= 20 )

Скобки не нужны, везде стоит and, а значит они не имеют смысла. Каждое условие должно быть истиной. К примеру, секунды sec >= 04 и sec <= 20, т. е. цикл будет работать только с 4 по 20 секунду, а потом не будет, тоже самое с минутами и часами.
Для размышления:
Код
set #hour 16
set #min 20
set #sec 30
// 16 часов 20 минут 30 секунд
// условие не выполнится потому что sec <= 20 не истина
if #hour >= 14 and #min >= 00 and #sec >= 04 and #hour <= 19 and #min <= 30 and #sec <= 20
    log +++
else
    log ---
end_if
end_script

Автор: XaЛBa 26.4.2019, 10:30

Цитата(cirus @ 26.4.2019, 1:54) *

Скобки не нужны, везде стоит and, а значит они не имеют смысла. Каждое условие должно быть истиной. К примеру, секунды sec >= 04 и sec <= 20, т. е. цикл будет работать только с 4 по 20 секунду, а потом не будет, тоже самое с минутами и часами.
Для размышления:
Код
set #hour 16
set #min 20
set #sec 30
// 16 часов 20 минут 30 секунд
// условие не выполнится потому что sec <= 20 не истина
if #hour >= 14 and #min >= 00 and #sec >= 04 and #hour <= 19 and #min <= 30 and #sec <= 20
    log +++
else
    log ---
end_if
end_script


терь то все понятно, вот как раз то и думал, что скобки приведит время в единое значение, т.е превратят в 14:00:04 и 19:30:20

Автор: cirus 26.4.2019, 11:28

Можно так сделать:

Код
set #start_time TimeStamp (14:00:04)   // с 14:00:04
set #end_time TimeStamp (19:30:20)  // до 19:30:20

set #t TimeStamp (18:50:30)   // для теста, потом убрать и раскомментировать строку ниже
//set #t TimeStamp (TimeNow)   // таймштамп текущего времени
if  #t > #start_time and #t < #end_time
    log +++
else
    log ---
end_if
end_script

Автор: XaЛBa 26.4.2019, 11:47

Цитата(cirus @ 26.4.2019, 11:28) *

Можно так сделать:
Код
set #start_time TimeStamp (14:00:04)   // с 14:00:04
set #end_time TimeStamp (19:30:20)  // до 19:30:20

set #t TimeStamp (18:50:30)   // для теста, потом убрать и раскомментировать строку ниже
//set #t TimeStamp (TimeNow)   // таймштамп текущего времени
if  #t > #start_time and #t < #end_time
    log +++
else
    log ---
end_if
end_script


пока так глубоко ещо не изучил все, только месяц начал с этим работать, ещо не знаю что такое таймштамп,
вощем малость понял что неверно написал изначальное условие в while и уже потом нашол, как раз ты и пишеш про это на примере что временем можно оперировать как числом
set $a 08:00
while 1 = 1
set #t timestamp (timenow) / 1000
set #a timestamp ($a) / 1000
hint (20 clPurple 500 500 -1 -1 (#t #a))
wait 1
// #a и #t можно сравнивать
end_while
end_script
т.е при таком while hour >= 9 and min >= 55 and sec >= 04 and hour <= 19 and min <= 36 and sec <= 04
он уже не стартанет т.к. 55 минут больше изначально чем 36 мин, не смотря на то что час старта 9 меньше окончания 19, я верно понимаю
вощем спасибки, далее изучаю мат часть

Автор: XaЛBa 13.5.2019, 17:17

Цитата(XaЛBa @ 26.4.2019, 11:47) *

пока так глубоко ещо не изучил все, только месяц начал с этим работать, ещо не знаю что такое таймштамп,
вощем малость понял что неверно написал изначальное условие в while и уже потом нашол, как раз ты и пишеш про это на примере что временем можно оперировать как числом
set $a 08:00
while 1 = 1
set #t timestamp (timenow) / 1000
set #a timestamp ($a) / 1000
hint (20 clPurple 500 500 -1 -1 (#t #a))
wait 1
// #a и #t можно сравнивать
end_while
end_script
т.е при таком while hour >= 9 and min >= 55 and sec >= 04 and hour <= 19 and min <= 36 and sec <= 04
он уже не стартанет т.к. 55 минут больше изначально чем 36 мин, не смотря на то что час старта 9 меньше окончания 19, я верно понимаю
вощем спасибки, далее изучаю мат часть

создал тако йскрипт
set #x1 474 //первый
set #y1 454 // НПС
set #x2 969 //второй
set #y2 541 // НПС
set #x3 1651 //первая
set #y3 463 //кнопка
set #x4 1650 //вторая
set #y4 490 //кнопка
set #start_time TimeStamp (13:00:10)// с 13:00:11
set #end_time TimeStamp (19:30:15) // до 19:30:31
set #t TimeStamp (TimeNow)
if #t > #start_time and #t < #end_time
if min = 0 and sec = 9 or min = 30 and sec = 9
//мои телодвижения
end_if
if #t > #end_time or #t < #start_time
end_script
end_if
Одного не пойму, почему он постоянно трассирует мои SET, а не циклиться в первом ИФ

Автор: XaЛBa 13.5.2019, 22:40

Цитата(XaЛBa @ 13.5.2019, 17:17) *

создал тако йскрипт
set #x1 474 //первый
set #y1 454 // НПС
set #x2 969 //второй
set #y2 541 // НПС
set #x3 1651 //первая
set #y3 463 //кнопка
set #x4 1650 //вторая
set #y4 490 //кнопка
set #start_time TimeStamp (13:00:10)// с 13:00:11
set #end_time TimeStamp (19:30:15) // до 19:30:31
set #t TimeStamp (TimeNow)
if #t > #start_time and #t < #end_time
if min = 0 and sec = 9 or min = 30 and sec = 9
//мои телодвижения
end_if
if #t > #end_time or #t < #start_time
end_script
end_if
Одного не пойму, почему он постоянно трассирует мои SET, а не циклиться в первом ИФ

cтупил. надо while cделать, каюсь исправлюсь

Автор: @rbwebstore 4.10.2021, 23:15

Привет друзья!

Я хотел бы помочь написать сценарий для выполнения следующей задачи:

double_right %arr[1 1] %arr[1 2]
wait 500

Как показано на изображениях, я хочу, чтобы указанная выше задача была выполнена, когда я найду следующее изображение.

Привет друзья!

Я хотел бы помочь написать сценарий для выполнения следующей задачи:

double_right %arr[1 1] %arr[1 2]
wait 500

Как показано на изображениях, я хочу, чтобы указанная выше задача была выполнена, когда я найду следующее изображение.


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение

Прикрепленные файлы
Прикрепленный файл  dino.bmp ( 4,24 килобайт ) Кол-во скачиваний: 83
Прикрепленный файл  def.bmp ( 5,21 килобайт ) Кол-во скачиваний: 94

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)