|
приоритет, findimage |
|
|
cskull |
29.11.2016, 8:50
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(DarkMaster @ 29.11.2016, 0:55) Код set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) после этих строк вствьте log exit2 $a Так же хочу обратить внимание, что непосредственно "exit" нигде не фигурирует, только "exit2". результаты в логе : 1.при отсутствии картинки 2.при наличии картинки 8:41:07 19 (измерение15.txt, 95): exit2 0 8:46:59 19 (измерение15.txt, 95): exit2 98 Ну да , первый EXIT я криво обрезала и просто создавая новую картинку дописала "2" , а так то это картинка выхода
|
|
|
|
cskull |
29.11.2016, 8:50
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(DarkMaster @ 29.11.2016, 0:55) Код set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) после этих строк вствьте log exit2 $a Так же хочу обратить внимание, что непосредственно "exit" нигде не фигурирует, только "exit2". результаты в логе : 1.при отсутствии картинки 2.при наличии картинки 8:41:07 19 (измерение15.txt, 95): exit2 0 8:46:59 19 (измерение15.txt, 95): exit2 98 Ну да , первый EXIT я криво обрезала и просто создавая новую картинку дописала "2" , а так то это картинка выхода
|
|
|
|
cskull |
29.11.2016, 13:26
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(cirus @ 29.11.2016, 2:41) как-то так
Код set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya // имя изображения set %image [2] bashnya_c_prava set %image [3] bashnya_v_nizy set %image [4] bashnya_v_verxy set %image [5] bashnya_c_leva set %image [6] bashnya_niz_pravo set %image [7] verx_levo_ygol set %image [8] basnya_verx_pravo
set #size size(%image) // всего картинок hint Всего картинок #size
:metka
set $a 0 while $a = 0 // пока картинка не найдена set #flag 0 // флаг что картинки найдены for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 7 break end_if set #flag 1 // картинки не найдены end_for if #flag = 1 // если ни одна из картинок не найдена // ищем картинку EXIT2 set #b findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr1 2 90 20 5) if #b > 0 // если найдена EXIT2 for #i 1 #size 1 // снова перебираем картинки set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #flag 0 // картинка найдена break // прервать поиск end_if end_for
if #flag = 1 // если картинки не найдены log Картинка Exit2 найдена // тут действия которые нужно сделать если картинка EXIT2 найдена, а другие нет else // иначе goto metka // переход к метке, т.е. к началу скрипта end_if end_if 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 7 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет break // если дошёл, выход из цикла end_if end_if end_while
wait 3000 // ждать 3 секунды goto metka В 43 строку дописать нужные действия. дописала в 43ю и в 27ю , получилось следущее kod
set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya // имя изображения set %image [2] bashnya_c_prava set %image [3] bashnya_v_nizy set %image [4] bashnya_v_verxy set %image [5] bashnya_c_leva set %image [6] bashnya_niz_pravo set %image [7] verx_levo_ygol set %image [8] basnya_verx_pravo
set #size size(%image) // всего картинок hint Всего картинок #size
:metka
set $a 0 while $a = 0 // пока картинка не найдена set #flag 0 // флаг что картинки найдены for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 7 break end_if set #flag 1 // картинки не найдены end_for if $a = 0 goto metka1 wait 1s 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 7 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if
:metka1 if #flag = 1 // если ни одна из картинок не найдена // ищем картинку EXIT2 set #b findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr1 2 90 20 5) if #b > 0 // если найдена EXIT2 for #i 1 #size 1 // снова перебираем картинки set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #flag 0 // картинка найдена break // прервать поиск end_if end_for
if #flag = 1 // если картинки не найдены log Картинка Exit2 найдена left 634, 46 wait 6s move 634, 46 wait 3s move 641, 92 wait 3s Send_down {down} wait 800 Send_up {down} wait 1500 else // иначе goto metka // переход к метке, т.е. к началу скрипта end_if end_if 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 7 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет break // если дошёл, выход из цикла end_if end_if end_while
wait 3000 // ждать 3 секунды goto metka
но снова вылазит ошибка в логе 13:20:49 19 (, 97): Картинка Exit2 найдена 13:21:08 19 (, 69): set - (69): Символ не распознан (pos:1 '#x - 1323')
|
|
|
|
cskull |
29.11.2016, 14:29
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(cirus @ 29.11.2016, 14:01) И зачем что-то менять в 27 строке, вы убираете нужный кусок кода, после чего, как и следовало ожидать, получаете ошибку.
ну я не убираю , я вставляла действия для рисунков 1-8 ,а то ж потерялись в процессе... а ошибка вообще не там где что-либо менялось ,а в стравнении координад
|
|
|
|
cirus |
29.11.2016, 14:47
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
Цитата я вставляла действия для рисунков 1-8 Они же и так есть, зачем их по 2 раза писать. Цитата а ошибка вообще не там где что-либо менялось ,а в стравнении координад Ошибка из-за того что картинки не нашлись, т. е. переменная #x не существует, а т. к. вы убрали часть кода и не дописали действия, для того случая когда нашлась картинка exit, то получили ошибку. Возьмите мой код и допишите после этой строки: log Картинка Exit2 найдена: Код В metka1 пишите что делать, когда нашлась картинка exit. Вообще, надо весь код через gosub делать. http://uopilot.tati.pro/index.php?title=Gosub 2й пример.
|
|
|
|
cskull |
29.11.2016, 18:37
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(cirus @ 29.11.2016, 14:47) В metka1 пишите что делать, когда нашлась картинка exit. Вообще, надо весь код через gosub делать. http://uopilot.tati.pro/index.php?title=Gosub 2й пример. сделала , но ничего не работает (( вообще (( картинки ищет ,но не производит с ними ни единого действия kod
set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya // имя изображения set %image [2] bashnya_c_prava set %image [3] bashnya_v_nizy set %image [4] bashnya_v_verxy set %image [5] bashnya_c_leva set %image [6] bashnya_niz_pravo set %image [7] verx_levo_ygol set %image [8] basnya_verx_pravo
set #size size(%image) // всего картинок hint Всего картинок #size
:metka
set $a 0 while $a = 0 // пока картинка не найдена set #flag 0 // флаг что картинки найдены for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 7 break end_if set #flag 1 // картинки не найдены end_for
if #flag = 1 // если ни одна из картинок не найдена // ищем картинку EXIT2 set #b findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr1 2 90 20 5) if #b > 0 // если найдена EXIT2 for #i 1 #size 1 // снова перебираем картинки set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #flag 0 // картинка найдена break // прервать поиск end_if end_for
if #flag = 1 // если картинки не найдены log Картинка Exit2 найдена goto metka1 else // иначе goto metka // переход к метке, т.е. к началу скрипта end_if end_if 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 7 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет break // если дошёл, выход из цикла end_if end_if end_while
wait 3000 // ждать 3 секунды goto metka
: metka1 set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 6 break end_if end_for if $a = 0 left 634, 46 wait 6s move 634, 46 wait 3s move 641, 92 wait 3s Send_down {down} wait 800 Send_up {down} wait 1500 goto metka //-------------------------------------------- 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 10 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 6000 // ждать 3 секунды goto metka
попробую всё переписать сначала с gotsub , хотя не понимаю зачем ,ведь у меня по сути всего 2 подпрограммы в исходнике ?
|
|
|
|
cskull |
29.11.2016, 20:33
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(cirus @ 29.11.2016, 14:47) Вообще, надо весь код через gosub делать. http://uopilot.tati.pro/index.php?title=Gosub 2й пример. переписала с gotsub ,но там в середине кода 2 goto , ибо я перенаправляю с середины подпрограммы ...мож как-то иначе надо ? исходник с gosub
set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya // имя изображения set %image [2] bashnya_c_prava // имя второго изображения set %image [3] bashnya_v_nizy // третьего set %image [4] bashnya_v_verxy set %image [5] bashnya_c_leva set %image [6] bashnya_niz_pravo set %image [7] verx_levo_ygol set %image [8] basnya_verx_pravo set %image [9] башня_низ_лево
set #size size(%image) // всего картинок hint Всего картинок #size
while 1 = 1 gosub poisk_bashni gosub poisk_exit
end_while
:poisk_bashni
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 7 break end_if end_for if $a = 0 goto poisk_exit wait 1s 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 7 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 3000 // ждать 3 секунды return
:poisk_exit
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 6 break end_if end_for if $a = 0 left 634, 46 wait 6s move 634, 46 wait 3s move 641, 92 wait 3s Send_down {down} wait 800 Send_up {down} wait 1500 goto poisk_bashni //-------------------------------------------- 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 10 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 6000 // ждать 3 секунды return
может я ранее невнятно выразила идею... Задача следующая - если на экране одновременно существуют картинки с патча и картинка EXIT2 , то мне надо заблокировать метку :poisk_exit и сделать так чтоб работала только подпрограмма с меткой :poisk_bashni Но findimage не умеет как findcolor выполнить нечто подобное if 1142, 121 1380722 and 1129, 225 3291971
|
|
|
|
cskull |
30.11.2016, 19:31
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
написала , но не удачно , и от goto не знаю как избавится... выдаёт ошибку в 103 и 104 строке
set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya // имя изображения set %image [2] bashnya_c_prava // имя второго изображения set %image [3] bashnya_v_nizy // третьего set %image [4] bashnya_v_verxy set %image [5] bashnya_c_leva set %image [6] bashnya_niz_pravo set %image [7] verx_levo_ygol set %image [8] basnya_verx_pravo set %image [9] башня_низ_лево
set #size size(%image) // всего картинок hint Всего картинок #size
while 1 = 1 gosub poisk_bashni gosub poisk_exit
end_while
:poisk_bashni
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 7 break end_if end_for if $a = 0 return wait 1s 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 7 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 3000 // ждать 3 секунды return
:poisk_exit
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) set $b findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 and $b = 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 6 break end_if end_for if $a = 0 left 634, 46 wait 6s move 634, 46 wait 3s move 641, 92 wait 3s Send_down {down} wait 800 Send_up {down} wait 1500 return //-------------------------------------------- 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 10 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 6000 // ждать 3 секунды return
а этот не выдаёт , но и не блокирует EXIT при наличии картинок 1-9 безполезный
set $path "C:\Users\Пользователь\Desktop\рисунки для пилота\" // путь к картинкам set %image [1] bashya // имя изображения set %image [2] bashnya_c_prava // имя второго изображения set %image [3] bashnya_v_nizy // третьего set %image [4] bashnya_v_verxy set %image [5] bashnya_c_leva set %image [6] bashnya_niz_pravo set %image [7] verx_levo_ygol set %image [8] basnya_verx_pravo set %image [9] башня_низ_лево
set #size size(%image) // всего картинок hint Всего картинок #size
set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) set $b findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 and $b = 0 goto poisk_exit end_if
set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) set $b findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 and $b > 0 goto poisk_bashni end_if
while 1 = 1 gosub poisk_bashni gosub poisk_exit
end_while
:poisk_bashni
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 7 break end_if end_for if $a = 0 goto poisk_exit wait 1s 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 7 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 3000 // ждать 3 секунды return
:poisk_exit
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size 1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) if $a > 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 6 break end_if end_for if $a = 0 left 634, 46 wait 6s move 634, 46 wait 3s move 641, 92 wait 3s Send_down {down} wait 800 Send_up {down} wait 1500 goto poisk_bashni //-------------------------------------------- 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 200 Send_up {right} wait 1s end_if
if #x1 > #x Send_down {left} wait 200 Send_up {left} wait 1s end_if
if #y1 < #y Send_down {down} wait 200 Send_up {down} wait 1s end_if
if #y1 > #y Send_down {up} wait 200 Send_up {up} wait 1s end_if
set #x2 #x - #x1 // разница координат #x и #x1 set #x2 abs(#x2) // модуль числа, чтобы разница не была отрицательной set #y2 #y - #y1 // разница координат #y и #y1 set #y2 abs(#y2) // модуль числа set #const 10 // подобрать нужное значение if #x2 < #const and #y2 < #const // проверка что перс у нужной точки break end_if if #x = #x1 and #y = #y1 // проверка дошёл перс до нужных координат или нет // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой break // если дошёл, выход из цикла end_if end_if end_while
wait 6000 // ждать 3 секунды return
|
|
|
|
cskull |
2.12.2016, 12:49
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(cirus @ 1.12.2016, 2:38) Код set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\EXIT2.bmp) %arr 2 90 20 5) set $b findimage (1147, 32 1363, 249 ($path%image[#i].bmp) %arr 2 90 20 5 ) if $a > 0 and $b = 0 set #x %arr [1 1] + 7 set #y %arr [1 2] + 6 Результаты поиска записываются в один и тот же массив - %arr, по сути перезаписываются. Используйте разные имена, например: %arr и %arr1 или %arr и %brr. cпасибо огромное ! вот так стало работать !
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|