|
хождение между точками, хождение между точками |
|
|
cskull |
27.10.2016, 19:33
|
 
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 Перс доходит до квадрата , но не наступает на него ,а стоит рядом :  Поскажите , какую команду надо использовать , чтобы он дошёл до найденых координат , или может я вообще не так сделала ((
|
|
|
|
DarkMaster |
27.10.2016, 21:14
|
          
Модератор 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____
|
|
|
|
cskull |
27.10.2016, 21:31
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата(DarkMaster @ 27.10.2016, 21:14)  Странный кусок. Что за прибавка координат? Смещение к центру квадрата? Зачем? get mouse_pos #x #y - зачем? мы только что передвинули мышку в известные нам координаты.
совершенно верно , я специально добавила ибо курсор показывает левее и выше квадрата не видит по другой причине ,квадрат после того как я к нему подошла не такой как на findimage. вот мой скрин для кода :
bashya.bmp ( 758 байт )
Кол-во скачиваний: 276 а когда я подхожу , то черная рамка с одной стороны становится белой (( и вот вопрос в том чтобы как то запомнить сразу координаты мышки на центре квадрата , и чтоб потом к нему непрерывно шло
|
|
|
|
cskull |
27.10.2016, 23:18
|
 
Neophyte
Сообщений: 38
Регистрация: 22.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.158

|
Цитата(DarkMaster @ 27.10.2016, 22:46)  А зачем вообще мышка нужна в центре квадрата?
я таким образом узнаю координаты центра квадрата...Можно как то упростить ? Или запомнить типа раз и навсегда , пока не дойдёт до этой точки ? Цитата(DarkMaster @ 27.10.2016, 22:46) 
Сделайте дополнительный рисунок или снизьте точность поиска.
если я снижаю точность поиска , то ищет не только квадрат в черном окружении , но и ту белую тропинку которая открывается при ходьбе (( я наоборот выставила 90% ,потому что 80% не всегда работают
|
|
|
|
cirus |
28.10.2016, 2:23
|

         
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
|
|
|
|
cskull |
28.10.2016, 10:36
|
 
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
|
|
|
|
cskull |
28.10.2016, 12:00
|
 
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: Код походу нет 
|
|
|
|
cskull |
28.10.2016, 13:17
|
 
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 // бесконечный цикл
|
|
|
|
cskull |
28.10.2016, 15:38
|
 
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 сек , просто бегает скрипт как если ничего не найдено ((
|
|
|
|
cskull |
29.10.2016, 9:22
|
 
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 убрала ,вроде видит паузу... А что такое "форматировать и зачем? И куда вставить эту стрелочку ?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|