|
|
  |
хождение между точками, хождение между точками |
|
|
| cskull |
29.10.2016, 16:17
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
cirus DarkMaster Ребята , огромное Вам спасибо ! Вот рабочий вариант : Код set $a 0 while $a = 0 // пока картинка не найдена set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\bashya.bmp) %arr 2 90 20 5) if $a > 0 set #x %arr [1 1] + 5 set #y %arr [1 2] + 9 else wait 35s end_if end_while
end_if while 1 = 1 // бесконечный цикл set $p findcolor(1154, 36 1359, 242 56831 %arr 2) // PERS
if $p > 0 set #x1 %arr [1 1] set #y1 %arr [1 2] wait 1s
if #x1 < #x Send_down {right} wait 100 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 100 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 100 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 100 Send_up {up} wait 1s end_if
if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if
end_while
end_if
|
|
|
|
|
|
| cskull |
29.10.2016, 19:50
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата(cirus @ 29.10.2016, 19:16)  Лишний end_if так и не убран в 11 строке. Последний end_if неправильно стоит. Если вкратце, то у вас оно так: Код А должно быть: Код уже убрала )) спасибки ))
|
|
|
|
|
|
| cskull |
30.10.2016, 15:35
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
И снова здравствуйте ) Я дописала поиск нескольких картинок , hint их видит в переменных , а потом стоит на моей паузе в 45 сек , как будто их нет (( Код set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya.bmp // имя изображения set %image [2] bashnya_c_prava.bmp // имя второго изображения set %image [3] bashnya_v_nizy.bmp // третьего set %image [4] EXIT.bmp
set #size size(%image) // всего картинок hint Всего картинок #size
:metka for #i 1 #size 1 // цикл для поиска картинок set $a 0 while $a = 0 // пока картинка не найдена
set $a findimage (1154, 36 1359, 242 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 5 set #y %arr [1 2] + 9 else wait 45s end_if end_while
while 1 = 1 // бесконечный цикл set $p findcolor(1154, 36 1359, 242 56831 %arr 2) // PERS
if $p > 0 set #x1 %arr [1 1] set #y1 %arr [1 2] wait 1s
if #x1 < #x Send_down {right} wait 100 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 100 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 100 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 100 Send_up {up} wait 1s end_if
if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if
end_while
end_if end_for wait 3000 // ждать 3 секунды goto metka
|
|
|
|
|
|
| cirus |
30.10.2016, 15:57
|

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

|
Нужно чтобы искало 1 из 4 картинок и если какая-нибудь из них найдена, то продолжить скрипт? Сейчас получается чтобы найти 4ю картинку, ищется первая, т. к. она на нашлась ждать 45 сек, ищется 2я, ждать 45 и т. д. Последний end_if так и не исправили, он должен быть перед end_while. Код set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" set %image [1] bashya.bmp ($path%image[#i].bmp) В таком виде получится путь: C:\Users\Пользователь\Desktop\рисунки для пилота\bashya .bmp.bmp Нужно убрать расширение: Или из findimage, т. е Код set %image [1] bashya.bmp findimage ($path%image[#i]) // не указывать .bmp Или из имени картинки, тогда Код set %image [1] bashya // не указывать .bmp findimage ($path%image[#i].bmp)
|
|
|
|
|
|
| cskull |
30.10.2016, 16:14
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата(cirus @ 30.10.2016, 15:57)  Нужно чтобы искало 1 из 4 картинок и если какая-нибудь из них найдена, то продолжить скрипт? Сейчас получается чтобы найти 4ю картинку, ищется первая, т. к. она на нашлась ждать 45 сек, ищется 2я, ждать 45 и т. д. Последний end_if так и не исправили, он должен быть перед end_while. Код set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" set %image [1] bashya.bmp ($path%image[#i].bmp) В таком виде получится путь: C:\Users\Пользователь\Desktop\рисунки для пилота\bashya .bmp.bmp Нужно убрать расширение: Или из findimage, т. е Код set %image [1] bashya.bmp findimage ($path%image[#i]) // не указывать .bmp Или из имени картинки, тогда Код set %image [1] bashya // не указывать .bmp findimage ($path%image[#i].bmp) надо чтоб любую из четырёх искало. возпользовалась третьим вариантом ,убрала .bmp из названия картинки
|
|
|
|
|
|
| cirus |
30.10.2016, 16:33
|

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

|
По идее так: код
Код set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya // имя изображения set %image [2] bashnya_c_prava // имя второго изображения set %image [3] bashnya_v_nizy // третьего set %image [4] EXIT
set #size size(%image) // всего картинок hint Всего картинок #size
:metka
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 5 set #y %arr [1 2] + 9 break end_if end_for if $a = 0 wait 45s end_if end_while
while 1 = 1 // бесконечный цикл set $p findcolor(1154, 36 1359, 242 56831 %arr 2) // PERS
if $p > 0 set #x1 %arr [1 1] set #y1 %arr [1 2] wait 1s
if #x1 < #x Send_down {right} wait 100 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 100 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 100 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 100 Send_up {up} wait 1s end_if
if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 3000 // ждать 3 секунды goto metka Искать 4 картинки, если ни одна не найдена, ждать 45 сек. Потом снова искать. Немного подправил скрипт.
|
|
|
|
|
|
| cskull |
30.10.2016, 19:54
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата Немного подправил скрипт. тот первый не работал , как и у меня останавливался на паузе в 45 сек подправленый видит картинку , реагирует так сказать , только идёт куда то не туда - или в другую сторону , или начинает бродить по кругу... останавливаю и запускаю , вроде туда идёт куда надо... а какая команда останавливает и запускает потом ? типа stop_script и сразу start_script ? p.s. а если я вырежу картинку не прямоугольной формы , а произвольной это имеет значение ?
|
|
|
|
|
|
| cirus |
30.10.2016, 20:04
|

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

|
Цитата тот первый не работал , как и у меня останавливался на паузе в 45 сек Там был косяк, который потом исправил. Цитата а какая команда останавливает и запускает потом ? типа stop_script и сразу start_script ? Так не получится. Можно остановить скрипт. Запустить можно из другой вкладки, указав номер скрипта. Код // это в основном скрипте start_script 1 // запустить скрипт 1 stop_script // остановить текущий скрипт Код // В скрипте 1: wait 100 start_script 0 // запустить скрипт 0 stop_script // остановить текущий скрипт Цитата подправленый видит картинку , реагирует так сказать , только идёт куда то не туда - или в другую сторону , или начинает бродить по кругу... Я уже предлагал выводить в лог значения переменных и смотреть где и что не так работает. Также внизу пилота есть галка пошаговое выполнение скрипта. Цитата p.s. а если я вырежу картинку не прямоугольной формы , а произвольной это имеет значение ? Любой формы, размером больше 1 пикселя.
|
|
|
|
|
|
| cskull |
30.10.2016, 20:28
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата Я уже предлагал выводить в лог значения переменных и смотреть где и что не так работает
ну я сегодня уже не могу проверить все картинки , там только одна осталась EXIT.bmp вот реакция в логе : 19:17:12 17 (измерение_17.txt, 5): $a 19:18:57 17 (измерение_17.txt, 15): 0 19:18:57 17 (измерение_17.txt, 15): 0 19:18:58 17 (измерение_17.txt, 15): 0 19:18:58 17 (измерение_17.txt, 15): 100 после запуска всё прекрасно видит , идёт куда надо , но после изменения общеэкранной картинки (нападает по дороге на моба , пауза 45 сек , потом картинка старая ) идёт куда вздумается или ходит по кругу (( вот по такой траектории ходит ,скажем так ,нормально а вот если не обновлять 
|
|
|
|
|
|
| cskull |
30.10.2016, 21:39
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата(cirus @ 30.10.2016, 21:02)  Я даже не сомневаюсь что из цикла с ходами не выходит, т. к. координаты не совпадают. Выводите в лог переменные: Код Пока они не совпадут картинки снова искаться не будут. вот что вышло : 19:18:57 17 (измерение_17.txt, 15): 0 19:18:57 17 (измерение_17.txt, 15): 0 19:18:58 17 (измерение_17.txt, 15): 0 19:18:58 17 (измерение_17.txt, 15): 100 20:37:40 17 (измерение_17.txt, 33): 1230 = 1273 and 189 = 206 20:37:44 17 (измерение_17.txt, 33): 1230 = 1263 and 189 = 196 20:37:48 17 (измерение_17.txt, 33): 1230 = 1253 and 189 = 186 20:37:51 17 (измерение_17.txt, 33): 1230 = 1243 and 189 = 196 20:37:56 17 (измерение_17.txt, 33): 1230 = 1233 and 189 = 56 20:38:00 17 (измерение_17.txt, 33): 1230 = 1233 and 189 = 56 20:38:04 17 (измерение_17.txt, 33): 1230 = 1233 and 189 = 66 20:38:07 17 (измерение_17.txt, 33): 1230 = 1223 and 189 = 86 20:38:12 17 (измерение_17.txt, 33): 1230 = 1223 and 189 = 86 20:38:15 17 (измерение_17.txt, 33): 1230 = 1233 and 189 = 96 20:38:19 17 (измерение_17.txt, 33): 1230 = 1223 and 189 = 106 20:38:23 17 (измерение_17.txt, 33): 1230 = 1233 and 189 = 116 20:38:26 17 (измерение_17.txt, 33): 1230 = 1223 and 189 = 126 20:38:30 17 (измерение_17.txt, 33): 1230 = 1233 and 189 = 136
|
|
|
|
|
|
| cskull |
30.10.2016, 22:54
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата(cirus @ 30.10.2016, 22:07)  Получится что из цикла будет выходить когда перс находится рядом с нужной точкой. В данном примере в пределах 10 пикселей. Скорее всего, ещё потребуется проверка что перс не упёрся в какую-то преграду.
сейчас перс наступает на эту точку , что хорошо. А будет останавливатся рядом с картинкой ? А этот код вставить после финдимиджа и внести в лог ?
|
|
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|