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

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


**

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



Добрый вечер !
Нужна Ваша помощь ))
В игре есть миникарта , на которой видно перса и объекты к которым он идёт с помощью клавиш верх-низ-право-лево .Перс это кружок , объекты белые квадраты .Вот как это выглядит в начале :

Прикрепленное изображение

Я написала следующий код :
Код
set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\bashya.bmp) %arr 2 90 20 5)\\  BASHNYA
if $a > 0
//
set #x %arr [1 1] + 5  
set #y %arr [1 2] + 9
move #x, #y              \\ мышка на башню
wait  100
  get mouse_pos #x #y
   set $p findcolor(1154, 36 1359, 242 56831  %arr 2) \\ PERS
   if $p > 0
    //
    set #x1 %arr [1 1] + 0  
    set #y1 %arr [1 2] - 0
    move #x1, #y1              \\ мышка на перса
    wait  1s
    get mouse_pos #x1 #y1
    
       if #x1 < #x
       Send_down {right}
       wait 100
       Send_up {right}
       set timer
       wait 1s
       end_if
      
       if #x1 > #x
       Send_down {left}
       wait 100
       Send_up {left}
       set timer
       wait 1s
       end_if
      
       if #y1 < #y
       Send_down {down}
       wait 100
       Send_up {down}
       set timer
       wait 1s
       end_if
      
       if #y1 > #y
       Send_down {up}
       wait 100
       Send_up {up}
       set timer
       wait 1s
       end_if
   end_if
wait 1s

end_if


Перс доходит до квадрата , но не наступает на него ,а стоит рядом :Прикрепленное изображение
Поскажите , какую команду надо использовать , чтобы он дошёл до найденых координат , или может я вообще не так сделала ((
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.10.2016, 21:14
Сообщение #2


***********

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



Цитата
set #x %arr [1 1] + 5
set #y %arr [1 2] + 9
move #x, #y \\ мышка на башню
wait 100

Странный кусок. Что за прибавка координат? Смещение к центру квадрата? Зачем?
get mouse_pos #x #y - зачем? мы только что передвинули мышку в известные нам координаты.
Цитата
set #x1 %arr [1 1] + 0
set #y1 %arr [1 2] - 0

От прибавки/вычитания нуля еще не одно число не изменилось =)
Цитата
set timer

выкинуть. Зачем его обнулять, если он нигде не используется?

вообще напрашивается некоторое смещение координат из-за которого происходит данное поведение. У вас скорее всего точка находимая финдколором не совпадает с координатой левого верхнего пикселя искомого квадрата, если их поставить в одну координату.


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


**

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



Цитата(DarkMaster @ 27.10.2016, 21:14) *

Странный кусок. Что за прибавка координат? Смещение к центру квадрата? Зачем?
get mouse_pos #x #y - зачем? мы только что передвинули мышку в известные нам координаты.


совершенно верно , я специально добавила ибо курсор показывает левее и выше квадрата
не видит по другой причине ,квадрат после того как я к нему подошла не такой как на findimage.
вот мой скрин для кода :
Прикрепленный файл  bashya.bmp ( 758 байт ) Кол-во скачиваний: 276

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


***********

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



Цитата
и вот вопрос в том чтобы как то запомнить сразу координаты мышки на центре квадрата

А зачем вообще мышка нужна в центре квадрата?
Цитата
не видит по другой причине ,квадрат после того как я к нему подошла не такой как на findimage.

Сделайте дополнительный рисунок или снизьте точность поиска.


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


**

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



Цитата(DarkMaster @ 27.10.2016, 22:46) *

А зачем вообще мышка нужна в центре квадрата?



я таким образом узнаю координаты центра квадрата...Можно как то упростить ? Или запомнить типа раз и навсегда , пока не дойдёт до этой точки ?

Цитата(DarkMaster @ 27.10.2016, 22:46) *


Сделайте дополнительный рисунок или снизьте точность поиска.


если я снижаю точность поиска , то ищет не только квадрат в черном окружении , но и ту белую тропинку которая открывается при ходьбе (( я наоборот выставила 90% ,потому что 80% не всегда работают
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.10.2016, 1:03
Сообщение #6


***********

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



Цитата
я таким образом узнаю координаты центра квадрата...Можно как то упростить ?

Цитата
move #x, #y \\ мышка на башню
wait 100
get mouse_pos #x #y

Вы в код всмотритесь. Если вы выкинете get mouse_pos, то у вас ничего не изменится. У вас уже есть эти координаты в этих же переменных.


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


**********

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



Цитата
и вот вопрос в том чтобы как то запомнить сразу координаты мышки на центре квадрата , и чтоб потом к нему непрерывно шло

Можно как-то так:
Код
set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\bashya.bmp) %arr 2 90 20 5)\\  BASHNYA
if  $a > 0
    set #x %arr [1 1] + 5
    set #y %arr [1 2] + 9
    while 1 = 1      // бесконечный цикл
        set $p findcolor(1154, 36 1359, 242 56831  %arr 2) \\ PERS
        if  $p > 0
            // ходы
        end_if

        if  #x = #x1 and #y = #y1    // проверка дошёл перс до нужных координат или нет
                                     // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой
            break   // если дошёл, выход из цикла
        end_if
    end_while
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 28.10.2016, 10:25
Сообщение #8


**

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



Цитата(DarkMaster @ 28.10.2016, 1:03) *

Если вы выкинете get mouse_pos, то у вас ничего не изменится. У вас уже есть эти координаты в этих же переменных.


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


**

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



Цитата(cirus @ 28.10.2016, 2:23) *


// координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой



Спасибо , даже совпадает ! Но теперь при нападении на башню (картинка меняется ) выскакивает лог с ошибкой :
Прикрепленное изображение
и Пилот останавливается ((
Добавила
set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\bashya.bmp) %arr 2 80 20 5)\\ BASHNYA
if $a < 0 \\ думала , что при нападении на башню будет ждать 30 сек
wait 30s
end_if
if $a > 0
set #x %arr [1 1] + 5
set #y %arr [1 2] + 9 ................
игнорирует отсутствие финдимиджа и делает по старому с if $a > 0
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.10.2016, 11:06
Сообщение #10


**********

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



Цитата
if $a < 0 \\ думала , что при нападении на башню будет ждать 30 сек

Если картинка не найдена, то возвращается 0. Число меньше нуля возвращается в случае ошибки поиска.
Код
set $a findimage
if  $a > 0               // если картинка найдена
    set #x %arr [1 1] + 5
    set #y %arr [1 2] + 9
else                     // иначе, т. е. не найдена
    wait 30s          // ждать 30 секунд
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 28.10.2016, 11:29
Сообщение #11


**

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



с else вообще не работает ((всё перестало видеть
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.10.2016, 11:46
Сообщение #12


**********

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



Картинка хоть находится?
Добавьте после findimage:
Код
log $a
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 28.10.2016, 12:00
Сообщение #13


**

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



вот куда записала , теперь ждёт 30 сек , но потом снова та ошибка
while 1 = 1 // бесконечный цикл
set $p findcolor(1154, 36 1359, 242 56831 %arr 2) \\ PERS
if $p < 1
wait 30s
end_if
if $p > 0
set #x1 %arr [1 1]
set #y1 %arr [1 2]
wait 1s
Цитата(cirus @ 28.10.2016, 11:46) *

Картинка хоть находится?
Добавьте после findimage:
Код
log $a


походу нет
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.10.2016, 12:25
Сообщение #14


**********

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



Скачайте 2.38. В 2.32 были проблемы с поиском.
На скрине end_if написан с ошибкой, комментарий пишется //, а не \\
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 28.10.2016, 13:17
Сообщение #15


**

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



Цитата(cirus @ 28.10.2016, 12:25) *

Скачайте 2.38. В 2.32 были проблемы с поиском.


Спасибо , скачала , ошибка исчезла .
Другая проблема - после нападения на картинку квадрата (картинка 30 сек другая ) , начинает ходить по кругу (правильнее по квадрату ) лево-вниз-право-верх-лево и тд.После остановки скрипта и включения снова идёт нормально (( И 30 сек не ждёт ,просто в холостую мотается , ну и метка не работает
Может метку поставить перед финдимиджем типа :
: poisk_bashnya
set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\bashya.bmp) %arr 2 85 20 5)// BASHNYA

if $a > 0
set #x %arr [1 1] + 5
set #y %arr [1 2] + 9
else // иначе, т. е. не найдена
wait 30s // ждать 30 секунд
goto poisk_bashnya
end_if
while 1 = 1 // бесконечный цикл
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.10.2016, 14:23
Сообщение #16


**********

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



Если картинка не найдена, то надо ждать 30 сек?
Код
set $a 0
while $a = 0             // пока картинка не найдена
    set $a findimage
    if  $a > 0
        set #x %arr [1 1] + 5
        set #y %arr [1 2] + 9
    else
        wait 30s
    end_if
end_while
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cskull
сообщение 28.10.2016, 15:38
Сообщение #17


**

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



Цитата(cirus @ 28.10.2016, 14:23) *

Если картинка не найдена, то надо ждать 30 сек?


да...
я наверное запуталась и что-то не туда вставила
Код

set $a 0
while $a = 0             // пока картинка не найдена
      set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\bashya.bmp) %arr 2 85 20 5)
      if  $a > 0
        set #x %arr [1 1] + 5
        set #y %arr [1 2] + 9
    else
        wait 30s
    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
        end_if

        if  #x = #x1 and #y = #y1    // проверка дошёл перс до нужных координат или нет
                                     // координаты, скорее всего, не совпадут, лучше сравнивать разницу координат с какой-то константой
            break   // если дошёл, выход из цикла
        end_if

    end_while

end_if


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


***********

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



Цитата
не хочет оно ждать 30 сек , просто бегает скрипт как если ничего не найдено ((

если какая из картинок не найдена?


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


**********

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



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


**

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



Цитата(DarkMaster @ 28.10.2016, 22:30) *

если какая из картинок не найдена?

Доброе утро )
вот эта
set $a findimage (1154, 36 1359, 242 (C:\Users\Пользователь\Desktop\рисунки для пилота\bashya.bmp) %arr 2 85 20 5)

Цитата(cirus @ 29.10.2016, 2:10) *

Уберите лишние end_if. Скрипт --> форматировать.
Выводите в лог нужные переменные. Смотрите что нашлось или не нашлось, в каких координатах.


Доброе утро )
вот тут лишяя энд_иф ?
if #y1 > #y
Send_down {up}
wait 100
Send_up {up}
wait 1s
end_if
end_if
убрала ,вроде видит паузу...
А что такое "форматировать и зачем? И куда вставить эту стрелочку ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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