|
приоритет, findimage |
|
|
cskull |
27.11.2016, 19:10
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Уважаемый cirus , а как тогда присвоить номер 9 картинке EXIT2 в последней строчке ? Код 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 // пока картинка не найдена 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 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 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)
Если я её добавляю вверху , она у меня попадает в патч , а надо чтоб отдельно (там другие действия с ней ). А вот в таком варианте , несмотря на то что она находится как бы во второй очереди , её ищет первую ,т.е.почему то у неё приоритет ((
|
|
|
|
cskull |
27.11.2016, 20:07
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
[quote name='cirus' date='27.11.2016, 19:38' post='224773'] Код if $a = 0 goto metka1 wait 1s end_if Если 8-я картинка не будет найдена, то переменная $a будет равна 0, т. е. переход к метке1. Наверное, не так задумывалось. Нужно чтобы переход был если не нашлась ни одна из 8 картинок? И надо ли в метке1 перебирать снова все картинки или только exit2? Задумывалось следующим образом (оно в принципе работает ) : ищет картинки 1-8 при условии что нет картинки EXIT ,когда некие действия с картинками 1-8 произведены , ищет EXIT и выходит. Но иногда EXIT появляется нечаянно , в процессе действий с 1-8. А в метке1 я перебираю из-за того ,что вдруг EXIT появился , а с картинками 1-8 не произвело действий и я пытаюсь вернутся на начало скрипта
|
|
|
|
cskull |
27.11.2016, 20:45
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Чёт я не то навставляла (( Почему то выдаёт ошибку вообще в не той строке название
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] EXIT2
set #size1 size(%image) - 1 // всего картинок - 1 hint Всего картинок #size
:metka
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size1 // будет перебирать 8 картинок, хотя в массиве их 9 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 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 end_while
wait 3000 // ждать 3 секунды goto metka
:metka1
set $a 0 while $a = 0 // пока картинка не найдена for #i 1 #size1 // цикл для поиска картинок set $a findimage (1154, 36 1359, 242 (%image[9].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
вот в этой последней пишет : 20:42:52 19 (, 153): set - (153): Символ не распознан (pos:1 '#x - 1333') хотя до изменения вот в этом коде ошибки нет код
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 // пока картинка не найдена 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 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 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) // модуль числа, чтобы разница не была отрицательной
|
|
|
|
cirus |
27.11.2016, 21:22
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26540
Пользователь №: 16.971
Возраст: 29
|
Код уберите под спойлер: Код [spoiler=название] текст [/spoiler] Если я правильно понял и нигде не накосячил, то получается так. код
Код 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 // если картинки не найдены // тут действия которые нужно сделать если картинка EXIT2 найдена, а другие нет else // иначе goto metka // переход к метке, т.е. к началу скрипта end_if end_if end_if end_while
|
|
|
|
cskull |
27.11.2016, 22:01
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(cirus @ 27.11.2016, 21:22) Код уберите под спойлер: Код [spoiler=название] текст [/spoiler] Если я правильно понял и нигде не накосячил, то получается так. код
Код 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 // если картинки не найдены // тут действия которые нужно сделать если картинка EXIT2 найдена, а другие нет else // иначе goto metka // переход к метке, т.е. к началу скрипта end_if end_if end_if end_while а первые действия после первого break или после end_for ?
|
|
|
|
cskull |
28.11.2016, 19:41
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
и так и сяк лепила , ничего не вышло (( картинки 1-8 ищет , а EXIT вообще не видит ничо не получилось
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 // если картинки не найдены 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 секунды else // иначе goto metka // переход к метке, т.е. к началу скрипта end_if end_if 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 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 секунды
вот рабочий код , но с EXIT в приоритете оригинал
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 // пока картинка не найдена 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 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 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
|
|
|
|
cskull |
28.11.2016, 23:24
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(DarkMaster @ 28.11.2016, 23:04) cskull, если просто сделать поиск этой картинки без циклов, то она будет найдена успешно? Не используй goto. Используй подпрограммы и их вызов через gosub.
(IMG: style_emoticons/default/unsure.gif) ну cirus мне помогал написать этот код вот тут https://forum.uokit.com/index.php?showtopic=29896 , всё в итоге замечательно получилось , но в процессе появилась надобность отрегулировать...
|
|
|
|
cskull |
29.11.2016, 0:09
|
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158
|
Цитата(DarkMaster @ 28.11.2016, 23:40) это все замечательно (IMG: style_emoticons/default/smile.gif) Но если просто сделать поиск этой картинки без циклов, то она будет найдена успешно? Просто одиночную картинку находит? Код желательно, для себя самой в первую очередь, привести в надлежащий вид и перестроить на gosub. Будет проще с ним работать. картинку находит ,чего ж её не находить...там цикл не ищет , а перс к ней идёт кнопками. А как gosub поможет понизить приоритет одной из картинок ?
|
|
|
|
cirus |
29.11.2016, 2:22
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26540
Пользователь №: 16.971
Возраст: 29
|
Код if #flag = 1 // если картинки не найдены 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 Как минимум вместо end_while end_if, точнее end_while тоже нужен. В скрипте перепутаны end_if, стоят не правильно. if $a = 0 - это зачем? Специально сделана переменная-флаг означающая нашлись картинки или нет. Получается, ищем картинки. Первая не нашлась, переменная $a будет = 0 Вторая нашлась, переменная $a будет больше 0 Ставится флаг что картинка найдена, прерывается цикл поиска и что получаем: Код if #flag = 1 // если картинки не найдены, да тут всё нормально if $a = 0 // а вот тут нет, т. к. переменная $a не равна 0
|
|
|
|
cirus |
29.11.2016, 2:41
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26540
Пользователь №: 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] 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 строку дописать нужные действия.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|