|
|
|
Научить пилот логике в игре Небеса |
|
|
veiron |
6.1.2013, 21:00
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 0 Из: Белоруссии
Пользователь №: 14.972
|
Можно как то сделать, у меня в окне есть 4 вида кнопок, я их нахожу, кликаю по ним , но иногда может появится 5 кнопка, или еще пилот может что то не прочитать и цикл While стоновится бесконечным, гоняет его постоянно. что надо сделать, что бы когда, что то пошло не так, завершить цикл While.
|
|
|
|
xolost |
6.1.2013, 23:21
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(veiron @ 6.1.2013, 22:00) Можно как то сделать, у меня в окне есть 4 вида кнопок, я их нахожу, кликаю по ним , но иногда может появится 5 кнопка, или еще пилот может что то не прочитать и цикл While стоновится бесконечным, гоняет его постоянно. что надо сделать, что бы когда, что то пошло не так, завершить цикл While.
Код set timer // обнуляем таймер while 1 = 1 if timer > 5000 // если таймер больше 5 секунд, что-нибудь делаем break // например выходим end_if end_while
|
|
|
|
чебуратор 2 |
16.1.2013, 23:40
|
Neophyte
Сообщений: 15
Регистрация: 16.1.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.678
Возраст: 40
|
Цитата(veiron @ 16.1.2013, 22:24) Не всем и это сделать легко))
нет самый лучший пока не выбирает сначала ищет на 5 их 40 потом 4 ходит 1 попавшуюся их 120 вроде если нет ищет 3 их 232
|
|
|
|
BSW_rama |
29.1.2013, 16:04
|
Apprentice
Сообщений: 188
Регистрация: 28.1.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.728
Возраст: 32
|
ха, да это же клон "линий"... таже байда над чем я щас и работаю. скрип предельно прост (пример для моего случая "какой-то там часовщик" Код :a set #c 0 // задание нулевой точки отсчёта set #d 161 set #e 161 // определение смещения каждого элемента для максимального значения в команде for set #f #e + 54 * 8 set #g #d + 54 * 5 for #b #e #f 54 for #a #d #g 54 set #a1 #a + 54 set #a2 #a + 108 set #a3 #a + 162 // проверка одной из комбинаций if #a, #b 3315756 13369223 and #a1, #b 3315756 13369223 and #a3, #b 3315756 13369223 left #a3, #b left #a2, #b end_if // проверка другой комбинации if #a, #b 3315756 13369223 and #a2, #b 3315756 13369223 and #a3, #b 3315756 13369223 left #a, #b left #a1, #b end_if end_for end_for goto a end_script
это только 2 комбинации одного типа изображения, а их может быть для линий из трёх предметов порядка 20 штук... и если бы пилот на каждую строчку тратил 1 мс, то всё было бы нормально, но пилот тратит на каждую команду if примерно 0,1 сек, из-за чего скрипт проходит поле 9х9 за 20 сек. а это капец как долго. я запускал 8 пилотов, каждый сканировал 3-5 комбинации, причём парно, и то только 1 тип изображеня, в результате за 2 минуты пилот делал 3-8 своих хода, всё остальное приходилось кликать мне... да небольшая помощ была. вобщем вопрос упирается в быстродействие пилота.
|
|
|
|
DarkMaster |
29.1.2013, 16:27
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27707
Пользователь №: 11.279
|
Цитата if примерно 0,1 сек 30 проверок в секунду вполне реально даже с linedelay больше нуля и в реальных условиях. Цитата из-за чего скрипт проходит поле 9х9 за 20 сек Скрипт так долго работает потому, что вы микроскопом гвозди забиваете. Финдимдж вполне успешно может искать подобные сигнатуры. Так же можно использовать финдколор. Цитата я запускал 8 пилотов, каждый сканировал 3-5 комбинации, Если у вас не 40 ядер, то вы делали ерунду. Пилот при linedelay 0 полностью загружает одно ядро одной вкладкой. Цитата запускал 8 пилотов Есть вкладки. Зачем извращаться с 8 пилотами? От этого только проблем будет больше. Цитата вопрос упирается в быстродействие пилота Есть действительно задачи для которых не хватает быстродействия. Вот только это совсем другие масштабы. Например искать врагов и контролить отдачу оружия в стрелялке будет сложновато. Вот только с вашим случаем это не имеет ничего общего даже близко. Вы даже на 10% не использовали возможности обработки. На практике я еще не встречался с случаем, когда не смог бы реализовать идею из-за проблем с производительностью после ввода финдимиджа и финдколора. Сообщение отредактировал DarkMaster - 29.1.2013, 16:40
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
FREEON |
16.5.2018, 18:11
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1320
Пользователь №: 18.346
Возраст: 25
|
Извиняюсь за вопрос но как можно объявить переменные координат относительно картинки более простым способом? Хочу немного облегчить работу так как через какой-то период приходиться снимать новые координаты так как меню смещается Код //Сперва ищем картинку(меню) которое меняется в вероятной области смещения: set #toch findimage (343, 230 373, 431 (D:\_UOPilot\Image\botn\toch.bmp) %crds 2 80) if #toch > 0 set %a [1] (%crds[1 1] + 100) (%crds[1 2] + 100) // Задаем координаты точек относительно картинки(левого верхнего угла) set %a [2] (%crds[1 1] + 200) (%crds[1 2] + 100) set %a [3] (%crds[1 1] + 300) (%crds[1 2] + 185) //и другие else Msg Переменные не заданы :(( end_if
Можно ли так сделать или нужно прописывать Х Y отдельно? Как сделать проще При такой структуре построения координат: Цитата set %a [1] (%crds[1 1] + 100) (%crds[1 2] + 100) выдает в лог: Цитата (351 + 100) (378 + 100) А на строке действия выдвет ошибку синтаксиса.Тоесть механизм частично работает....теретически если сложить то что в скобках и будет X и Y. Вопрос в том почэму нельзя прописать структуру одной строкой ведь set %a [1] 451 478 он читает как координаты и проблем нет, а то что в скобках не считает... Забавно если прописываю: Цитата set %a [1 1] [1 2] (%crds[1 1] + 100) (%crds[1 2] + 100) то в лог выбивает вот это Цитата 1 2] (351 + 100) (378 + 100) [1 2] и делает клик в левый левый верхний угол окна, но не картинку и не в точку смещени...Интересно чо он там счытает (IMG: style_emoticons/default/tongue.gif) (IMG: style_emoticons/default/dry.gif)
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|