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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> приоритет, findimage
cskull
сообщение 27.11.2016, 13:15
Сообщение #1


**

Neophyte
Сообщений: 38
Регистрация: 22.10.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.158



Добрый день !
Подскажите пожалуйста , возможно ли картинкам присвоить какой либо приоритет ?
Проблема - существует несколько видов картинок , на один тип надо кликать в первую очередь , на одну ТОЛЬКО в последнюю очередь .
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 27.11.2016, 13:42
Сообщение #2


**********

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



Самое просто изначально записать картинки в нужном приоритете.
Код
set %image [1] имя_первой_картинки    // (первой по приоритету)
set %image [2] имя_второй_картинки
set %image [3] имя_третьей_картинки

Картинки в цикле ищутся по очереди, если найдётся первая картинка, по ней и будет клик.

Либо искать все картинки, записывать результаты поиска в отдельный массив и сортировать его.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 27.11.2016, 17:05
Сообщение #3


**

Neophyte
Сообщений: 38
Регистрация: 22.10.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.158



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


**********

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



Цитата
в квадратных скобках просто порядковый номер ,а ищет от верхнего левого угла...

Вообще, оно так и есть.
Просто картинки ищутся не все разом, а по очереди.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 27.11.2016, 19:10
Сообщение #5


**

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)


Если я её добавляю вверху , она у меня попадает в патч , а надо чтоб отдельно (там другие действия с ней ).
А вот в таком варианте , несмотря на то что она находится как бы во второй очереди , её ищет первую ,т.е.почему то у неё приоритет ((
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 27.11.2016, 19:38
Сообщение #6


**********

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



Код
if  $a = 0
    goto metka1
    wait 1s
end_if

Если 8-я картинка не будет найдена, то переменная $a будет равна 0, т. е. переход к метке1. Наверное, не так задумывалось. Нужно чтобы переход был если не нашлась ни одна из 8 картинок? И надо ли в метке1 перебирать снова все картинки или только exit2?
Да и ничто не мешает в первом цикле перебирать на 1 картинку меньше:
Код
set %image [9] EXIT2
set #size1 size(%image) - 1      // всего картинок - 1

for #i 1 #size1   // будет перебирать 8 картинок, хотя в массиве их 9
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 27.11.2016, 20:07
Сообщение #7


**

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


**

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


**********

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


**

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


**********

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



Цитата
а первые действия после первого break или после end_for ?

break прерывает цикл поиска картинок. Скрипт продолжает работу после end_for. А действия после end_while.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 28.11.2016, 19:41
Сообщение #12


**

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


***********

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



cskull, если просто сделать поиск этой картинки без циклов, то она будет найдена успешно?
Не используй goto. Используй подпрограммы и их вызов через gosub.


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


**

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
, всё в итоге замечательно получилось , но в процессе появилась надобность отрегулировать...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.11.2016, 23:40
Сообщение #15


***********

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



это все замечательно (IMG:style_emoticons/default/smile.gif)
Но если просто сделать поиск этой картинки без циклов, то она будет найдена успешно? Просто одиночную картинку находит?

Код желательно, для себя самой в первую очередь, привести в надлежащий вид и перестроить на gosub. Будет проще с ним работать.


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


**

Neophyte
Сообщений: 38
Регистрация: 22.10.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.158



Цитата(DarkMaster @ 28.11.2016, 23:40) *

это все замечательно (IMG:style_emoticons/default/smile.gif)
Но если просто сделать поиск этой картинки без циклов, то она будет найдена успешно? Просто одиночную картинку находит?

Код желательно, для себя самой в первую очередь, привести в надлежащий вид и перестроить на gosub. Будет проще с ним работать.

картинку находит ,чего ж её не находить...там цикл не ищет , а перс к ней идёт кнопками.
А как gosub поможет понизить приоритет одной из картинок ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.11.2016, 0:33
Сообщение #17


***********

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



Цитата
А как gosub поможет понизить приоритет одной из картинок ?

Госаб поможет не ломать голову и глаза в попытках понять, как устроен скрипт и что выполняется в каком порядке. Это структурирование. Если будет желание, почитайте http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htm . Мне показалось достаточно интересным и невероятно актуальным даже спустя 50 лет.
Пошел ломать голову с кодом вашим.

Сообщение отредактировал DarkMaster - 29.11.2016, 0:33


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


***********

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



Код
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".


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


**********

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


**********

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

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

 

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