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

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


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



0=2
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 10.3.2017, 20:49
Сообщение #22


*****

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



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


**********

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



Код
set #a 0
while #a = 0     // пока не нашлась картинка
    set #a findimage (0 0 1920 1080 (D:\_PILOT\1489166708086.png) %a )
    wait 10
end_while
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 19.3.2017, 0:34
Сообщение #24


*****

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



МужЫки...Слышал, что есть способ, делать проверку(поиск) по нескольким точкам вместо картинки (IMG:style_emoticons/default/blink.gif) (IMG:style_emoticons/default/huh.gif) Это и в правду можно делать? И если можно то как? (IMG:style_emoticons/default/dry.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.3.2017, 0:50
Сообщение #25


**********

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



Искать нужно статичный объект или меняющийся?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 19.3.2017, 11:22
Сообщение #26


*****

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



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

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

Статический. Но но нужно что бы без привязки координат. Т.к. Там статуя и нужно нажимать на нее много раз пока не закончится таймер обратного отсчета в игре. Загвоздка в том что нажав на нее ГГ(главный герой) смещается и координаты будут другие. А с изображением скорость поиска не высокая. А потери даже в сотню миллисекунд может привести к поражению
А скрипт должен решать такие задачи: зайти в ивент > переместиться к статуи>поиск статуи(постоянная атака на нее пока идет таймер>Атака по списку если есть противники(постоянная атака и затем пропуск боя)> если нет противников атака Защитника статуи.
Вот возникает проблема в очень быстром поиске статуи
(IMG:http://savepic.ru/13244126.png)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.3.2017, 12:14
Сообщение #27


**********

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



Сколько кликов вы сможете сделать вручную за секунду? Ну максимум 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)




Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 2.4.2017, 23:22
Сообщение #28


*****

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



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

Обычный вид:
(IMG:http://savepic.ru/13438302.png)
Масштаб всего поля:
(IMG:http://savepic.ru/13477201.png)

Может кто делал подобные скрипты, то подскажите, как это лучше сделать?!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.4.2017, 0:33
Сообщение #29


**********

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



1. Найти координаты персонажа.
2. Найти ближайший к персу предмет.
3. Найти ближайший к предмету оранжевый квадрат.
4. На этот квадрат сделать ход.
Повторять действия 1-4 пока перс не окажется на определённом расстоянии от предмета.
5. Собрать предмет.
Повторять действия 1-5.
Point_distance - расстояние между двумя точками.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.4.2017, 15:03
Сообщение #30


*****

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



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

1. Найти координаты персонажа.
2. Найти ближайший к персу предмет.
3. Найти ближайший к предмету оранжевый квадрат.
4. На этот квадрат сделать ход.
Повторять действия 1-4 пока перс не окажется на определённом расстоянии от предмета.
5. Собрать предмет.
Повторять действия 1-5.
Point_distance - расстояние между двумя точками.

Как говориться: "Кто начал - тот пол дела уже сделал" (IMG:style_emoticons/default/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 направления видны часть из их перекрывает ГГ. (IMG:style_emoticons/default/mellow.gif)
Прикрепленный файл  gg.bmp ( 2,48 килобайт ) Кол-во скачиваний: 272

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

Прикрепленное изображение моб в пнг так как где они стоят квадратики отличаются по цвету(шахматное поле)
Прикрепленный файл  cep.bmp ( 1,39 килобайт ) Кол-во скачиваний: 295
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.4.2017, 15:26
Сообщение #31


**********

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



По умолчанию findimage ищет 1 картинку и поиск останавливается. Нужно указать максимальное число картинок или искать все.
Код
set #syndyk findimage (0 50 1598 790 (D:\_PILOT\PNS\syndyk.bmp) %arr 2 80 -1)  // -1 искать все картинки 

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

Для начала уменьшить точность поиска и добавить погрешность оттенка. Если совсем не находит, то можно искать этим: Поиск скученности пикселей
Цитата
И как реализовать перемещение по оранжевым квадратам, ведь не все 4 направления видны часть из их перекрывает ГГ.

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

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


Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.4.2017, 16:08
Сообщение #32


*****

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



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

Для начала уменьшить точность поиска и добавить погрешность оттенка. Если совсем не находит, то можно искать этим: Поиск скученности пикселей

Есть еще проблемка. У гг две анимации, два положения...одно положение если гг 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

Тут все просто, а мне нужно извлекать и привязываться к переменным(ярлыкам поиска) так как все точки неизвестны...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 4.4.2017, 2:30
Сообщение #33


**********

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



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


*****

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



Вот решил вернуться к этой теме и так сказать с новыми идеями. А точнее можно ли решить эту задачу при помощи Алгоритма A?
по сути задача аналогична поиску выхода из лабиринта...
Оригинал карта:
http://www.imageup.ru/img2/3030447/screenshot_1.jpg
Упрощенный вариант:
(IMG:http://www.imageup.ru/img2/thumb/screenshot_23030449.jpg)
Перемещение по клеткам - без диагонали!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.3.2018, 11:46
Сообщение #35


**********

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



Цитата

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

Алгоритму вообще всё-равно где искать путь, хоть в лабиринте, хоть в графе.
Главное создать карту, это двумерный массив с обозначением препятствий и доступных для хода клеток.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 31.3.2018, 11:58
Сообщение #36


*****

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



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

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

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

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

Ну да главное научиться делать это..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.3.2018, 12:03
Сообщение #37


**********

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



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


*****

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



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

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

Я ее в спойлер вставил...но чо-то ее сервис преобразовал в jpg файл а на пк не осталось...могу аналогичную выложить но с другой расстановкой
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.3.2018, 12:30
Сообщение #39


**********

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



Толку от ссылки в спойлере, которая у меня не открывается.
Когда пишите сообщение, чуть ниже 'Прикрепление файлов', выберите файл и добавьте в сообщение.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 31.3.2018, 13:14
Сообщение #40


*****

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



Набросал заново по быстрому (IMG:style_emoticons/default/smile.gif)
Прикрепленный файл  Screenshot_1.bmp ( 2,82 мегабайт ) Кол-во скачиваний: 249
Прикрепленный файл  Screenshot_2.bmp ( 369,15 килобайт ) Кол-во скачиваний: 253
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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