Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  1 2 3 > »   
Ответить в эту темуОткрыть новую тему
> Помощь в скриптах для различных заданий и квестов., Игра Dragon Knight
FREEON
сообщение 14.2.2017, 13:10
Сообщение #1


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Нужно осуществить поиск по иконке(есть свечение вокруг ее). Не подойдет поиск по цвету и координатам, так как она плавает меняется на протяжении дня. Как сделать поиск иконки Каменный рудник?
(IMG:http://savepic.ru/12954014.jpg)
Далее собираем камни в количестве 10 штук. И после того как камни собраны, нужно будет 5 из их разбить. Вот тут должна быть логика. Что бы скрипт выбирал лучший камень и разбивал. Ценность камней идет по возрастанию. Слева самые дешевые, справа дорогие и редкие.
http://savepic.ru/12916119.jpg
(IMG:http://savepic.ru/12934550.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 //Кнопка РАЗБИТЬ
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 14.2.2017, 13:47
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Делаем картинку в формате 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

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

Сомневаюсь что по скринам можно будет понять процесс.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 14.2.2017, 14:43
Сообщение #3


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(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 картинок)

И как задавать ограничение зоны сканирования?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 14.2.2017, 15:10
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
что бы выполнялись параллельно условия на скан и условие 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 - координаты правого нижнего угла области поиска.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 15.2.2017, 11:31
Сообщение #5


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Вот еще вопрос. Почему в скрипте когда есть несколько условий If то первую скрипт обрабатывает как положено ждет пока не появится значение и приступает к выполнению когда есть она, а остальные условия if просто игнорирует. Как это лечится? (IMG:style_emoticons/default/dry.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 15.2.2017, 11:45
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Если нет больного, то и лечить не кого. Код где? (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 15.2.2017, 12:51
Сообщение #7


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Код
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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 15.2.2017, 13:08
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



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

Если кнопка подсвечивается читаем это: Цвет на подсвечивающихся объектах
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 15.2.2017, 16:03
Сообщение #9


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 16.2.2017, 2:16
Сообщение #10


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
А можно также делать ярлыки как на координаты с переменной 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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 16.2.2017, 3:15
Сообщение #11


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



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

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

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

Немного не понимаю что за цифры и к чему они привязываться и что обозначают. Если бы одна цифра было то был бы ярлык...но тут их по две...откуда берется вторая? (IMG:style_emoticons/default/ohmy.gif) (IMG:style_emoticons/default/blink.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 16.2.2017, 3:46
Сообщение #12


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



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

%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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 17.2.2017, 0:01
Сообщение #13


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Можно ли сделать 2скрипта в одно окно скрипта? Определенное время повторялся один цикл действий...а после 45...делал 2 часть 1 раз...затем снова цикл в время (IMG:style_emoticons/default/huh.gif)
Код

//1 часть
Время 45с
         клик
     пауза 3с
     клик
     пауза 2с
конец
//2 часть
клик
пауза 1с
клик
//цикл
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.2.2017, 2:21
Сообщение #14


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
set #timeout timer + 5000         // 5000 = 5 секунд
while #timeout > timer
     log Первая часть
     wait 1000
end_while
log     Вторая часть
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 17.2.2017, 12:25
Сообщение #15


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Отлично (IMG:style_emoticons/default/rolleyes.gif) (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 9.3.2017, 21:31
Сообщение #16


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Как сделать что бы пилот клацал по найденной картинке или по картинке по заданным координатам?Прикрепленное изображение .
Например для одного изображения но в разных точках должен быть произведен клик. Точки клика отмечены красным цветом:
(IMG:http://savepic.ru/13173944.jpg)
В 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???
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.3.2017, 2:20
Сообщение #17


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



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

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 10.3.2017, 2:48
Сообщение #18


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



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

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

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.3.2017, 3:02
Сообщение #19


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



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

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

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

Нет. Что конкретно требуется?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 10.3.2017, 10:37
Сообщение #20


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



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

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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

4 страниц V  1 2 3 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 19:14
Designed by Nickostyle