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

3 страниц V < 1 2 3 >  
Ответить в эту темуОткрыть новую тему
> хождение между точками, хождение между точками
cirus
сообщение 29.10.2016, 9:33
Сообщение #21


**********

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



Цитата
А что такое "форматировать и зачем? И куда вставить эту стрелочку ?

Слева сверху нажать скрипт, откроется меню, там нажать форматировать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.10.2016, 9:49
Сообщение #22


***********

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



Цитата
А что такое "форматировать и зачем? И куда вставить эту стрелочку ?

Это в шапке пилота нажать скрипт/форматирование. Позволяет избежать подобных ошибок, а так же приводит скрипт в читабельный вид.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 29.10.2016, 15:32
Сообщение #23


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



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


**

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


**********

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



Лишний end_if так и не убран в 11 строке.
Последний end_if неправильно стоит. Если вкратце, то у вас оно так:
Код
while
     if
     end_while
end_if

А должно быть:
Код
while
     if
     end_if
end_while
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 29.10.2016, 19:50
Сообщение #26


**

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



Цитата(cirus @ 29.10.2016, 19:16) *

Лишний end_if так и не убран в 11 строке.
Последний end_if неправильно стоит. Если вкратце, то у вас оно так:
Код
while
     if
     end_while
end_if

А должно быть:
Код
while
     if
     end_if
end_while


уже убрала )) спасибки ))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 30.10.2016, 15:35
Сообщение #27


**

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


**********

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


**

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


**********

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 сек. Потом снова искать.

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


**

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



Цитата
Немного подправил скрипт.

тот первый не работал , как и у меня останавливался на паузе в 45 сек
подправленый видит картинку , реагирует так сказать , только идёт куда то не туда - или в другую сторону , или начинает бродить по кругу...
останавливаю и запускаю , вроде туда идёт куда надо...
а какая команда останавливает и запускает потом ? типа stop_script и сразу start_script ?

p.s. а если я вырежу картинку не прямоугольной формы , а произвольной это имеет значение ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 30.10.2016, 20:04
Сообщение #32


**********

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


**

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 сек , потом картинка старая ) идёт куда вздумается или ходит по кругу ((
вот по такой траектории ходит ,скажем так ,нормально
Прикрепленное изображение
а вот если не обновлять
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 30.10.2016, 21:02
Сообщение #34


**********

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



Я даже не сомневаюсь что из цикла с ходами не выходит, т. к. координаты не совпадают.
Выводите в лог переменные:
Код
#x = #x1 and #y = #y1

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


**

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



Цитата(cirus @ 30.10.2016, 21:02) *

Я даже не сомневаюсь что из цикла с ходами не выходит, т. к. координаты не совпадают.
Выводите в лог переменные:
Код
#x = #x1 and #y = #y1

Пока они не совпадут картинки снова искаться не будут.

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


**********

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



Сравнивать надо разницу координат с константой, которую нужно подобрать.
Код
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

Примерно так. Получится что из цикла будет выходить когда перс находится рядом с нужной точкой. В данном примере в пределах 10 пикселей.
Скорее всего, ещё потребуется проверка что перс не упёрся в какую-то преграду.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 30.10.2016, 22:54
Сообщение #37


**

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



Цитата(cirus @ 30.10.2016, 22:07) *

Получится что из цикла будет выходить когда перс находится рядом с нужной точкой. В данном примере в пределах 10 пикселей.
Скорее всего, ещё потребуется проверка что перс не упёрся в какую-то преграду.

сейчас перс наступает на эту точку , что хорошо.
А будет останавливатся рядом с картинкой ?
А этот код вставить после финдимиджа и внести в лог ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 30.10.2016, 23:22
Сообщение #38


**********

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



Цитата
А будет останавливатся рядом с картинкой ?

Сколько константу укажите, так и будет останавливаться.
Цитата
А этот код вставить после финдимиджа и внести в лог ?

Перед проверкой дошёл перс до нужной точки или нет.
В лог можно выводить сначала, чтобы понять правильно работает скрипт или нет. Потом можно убрать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 31.10.2016, 3:26
Сообщение #39


***********

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



Цитата
Так не получится. Можно остановить скрипт. Запустить можно из другой вкладки, указав номер скрипта.

https://redmine.uokit.com/issues/15


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.10.2016, 11:08
Сообщение #40


**********

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



Цитата

Не плохо бы указывать, что это работает только в бета версии пилота, о существовании которой почти никто не знает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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