|
|
|
Игровой бот Небеса: уникальная игра! |
|
|
dimоn |
19.6.2015, 0:36
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Нет, по крайней мере у меня все норм. Хотя, не у всех все так сладко... Написал тут один, попросил ему помочь со скриптом. объяснил, что полный ноль. Закончилось все, неуспев начаться, как-то так. учитывая, что он гонял скрипты, типа рискну предположить, что не удивительно))) На самом деле, банька, это хорошо, но только когда с веником (IMG: style_emoticons/default/biggrin.gif) дожидаться я не стал и после последнего разговора, задался целью все-таки проверить эту теорию. И не зря. В глаза это все не бросается, но при малейшем изучении, даже человек, мало знакомый с компьютерной техникой, особо не напрягая мозг поймет, что если отвести мышку и поставить ее на тоже место, шанс кликнуть в тот же пиксель или хотя бы ближний к нему, так или иначе сводится к нулю.
|
|
|
|
guetajazz |
28.6.2015, 21:40
|
Registred
Сообщений: 5
Регистрация: 5.5.2014 Группа: Пользователи Наличность: 0
Пользователь №: 16.820
Возраст: 21
|
Тема близка и интересна))) Сам играю и часто пользуюсь пилотом. Но,т.к. я чайник,то и скрипты соответствующие у меня) Было бы хорошо,если бы автор указывал,что именно делает пилот при той или иной команде. Использую пилот для арены,куча лишних тыков,клики в одну и ту же область от не знания большинства команд. Вот пример скрипта- В чем мои косяки ? подскажите Код ___________________________________________________________________________ // проверка на наличие сундука в луте //
set $boss10 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\сундук2.bmp) %mob 2 50 1) if $boss10 > 0 wait 300 left 875, 447 wait 1200 left 939, 462 wait 1200 end_if
// собираем или продаем лут // set $boss4 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\лоскут.bmp) %mob 2 50 1) set $boss5 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\развед.bmp) %mob 2 50 1) set $boss6 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\страж.bmp) %mob 2 50 1) set $boss44 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец1.bmp) %mob 2 50 1) set $boss55 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец2.bmp) %mob 2 50 1) set $boss66 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец3.bmp) %mob 2 50 1) set $boss77 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец4.bmp) %mob 2 50 1) set $boss88 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец5.bmp) %mob 2 50 1) set $boss99 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец6.bmp) %mob 2 50 1) if $boss4 > 0 or $boss5 > 0 or $boss6 > 0 or $boss44 > 0 or $boss55 > 0 or $boss66 > 0 or $boss77 > 0 or $boss88 > 0 or $boss99 > 0 wait 300 left 875, 447 wait 1200 left 957, 447 left 957, 449 wait 1200 else left 912, 516 wait 200 left 972, 496 wait 200 left 1254, 521 end_if
// бьем моба // set $boss4 findimage (829, 180 902, 235 (C:\Users\123\Desktop\12\я.bmp) %mob 2 50 1) // бьем моба // if $boss4 > 0 wait 400 left 694, 662 wait 200 left 1005, 621 wait 300 left 689, 666 wait 300 left 797, 613 wait 300 left 907, 349 wait 300 left 687, 610 wait 200 left 763, 615 wait 200 left 940, 376 wait 2s end_if left 1222, 551
Сообщение отредактировал DarkMaster - 28.6.2015, 22:25
|
|
|
|
DarkMaster |
28.6.2015, 22:40
|
Модератор UOPilot
Сообщений: 9.573
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 28548
Пользователь №: 11.279
|
Первое в чем косяки - это читаемость скрипта: 1) Все переменные с поиском названы boss. 2) Отсутствие отступов внутри условий/циклов, например: Код if 1 < 2 log один log меньше log двух end_if 3) Используйте тег code на форуме. Теперь по коду: Цитата %mob 2 50 1) Очень низкий процент точности. Меньше 80, в крайнем случае 70 я бы не рекомендовал опускать. Возможно стоит задать deviation 1-3, чтобы избежать проблем с точностью определения изображения. Цитата set $boss4 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\лоскут.bmp) %mob 2 50 1) set $boss5 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\развед.bmp) %mob 2 50 1) set $boss6 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\страж.bmp) %mob 2 50 1) set $boss44 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец1.bmp) %mob 2 50 1) set $boss55 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец2.bmp) %mob 2 50 1) set $boss66 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец3.bmp) %mob 2 50 1) set $boss77 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец4.bmp) %mob 2 50 1) set $boss88 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец5.bmp) %mob 2 50 1) set $boss99 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец6.bmp) %mob 2 50 1) Все рисунки внести в шапку скрипта в массив. Все эти строки свернуть в for. Все wait'ы выкинуть заменив на: while_not x y color // ну либо на while, смотря что детектить. wait 10 end_while В шапку поместить задержку между строк равной нулю: Код Тело скрипта выполнять в блоке: Код Главное не используйте goto кроме как в описании выше. Из проблемных мест - wait в том виде, как они у вас. Первый лаг и будет сбой. По придиркам: Все координаты настоятельно рекомендую выносить в шапку и давать им подробные комментарии. Если придется что-то править, то вы одуреете потом. Сообщение отредактировал DarkMaster - 28.6.2015, 22:41
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
dimоn |
29.6.2015, 19:21
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Цитата(guetajazz @ 28.6.2015, 21:40) Было бы хорошо,если бы автор указывал,что именно делает пилот при той или иной команде.
Что именно не понятно? Все или конкретный кусок? По скриптам, есть мнение, на мой взгляд довольно правдивое, что статичные клики, сервер без проблем расценит, как работу сторонней программы. То есть, если поставить курсор в произвольную точку, при нажатии на ктрл+а, программа выдаст текущую позицию. А теперь отведи мышку и поставь на то же место. Какова вероятность того, что при нажатии на ктрл+а, курсор будет находиться на том же пикселе? В общем координаты клика постоянно должны отличаться. При чем, недавно проверили, поиск по картинкам тоже дает координаты, близкие к статичным. Цитата(DarkMaster @ 28.6.2015, 22:40) Все wait'ы выкинуть заменив на: while_not x y color // ну либо на while, смотря что детектить. wait 10 end_while
Вот этот момент довольно скользкий. Не вопрос, это быстро, просто, понятно, но не практично и не эффективно. Со временем перестает работать. При чем, по-разому, может через день, через неделю, а может и через час. Все поиски, по максимуму, лучше всего реализовать поиском по картинкам. имхо. Цитата Все координаты настоятельно рекомендую выносить в шапку и давать им подробные комментарии. Если придется что-то править, то вы одуреете потом. Вот это, в точку!!!
|
|
|
|
dimоn |
29.6.2015, 21:59
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Цитата(guetajazz @ 28.6.2015, 21:40) Использую пилот для арены,куча лишних тыков,клики в одну и ту же область от не знания большинства команд. Вот пример скрипта- В чем мои косяки ? подскажите Код ___________________________________________________________________________
// бьем моба // set $boss4 findimage (829, 180 902, 235 (C:\Users\123\Desktop\12\я.bmp) %mob 2 50 1) // бьем моба //
Вот эта команда что делает?? Куча холостых тыков происходит от того, что весь скрипт, по большому счету, это серия кликов, идущих один за другим, без каких-либо условий и ограничений. То есть, пилот не видит, что происходит на игровом поле, а серия тыков прописана. Код if $boss4 > 0 wait 400 left 694, 662 wait 200 left 1005, 621 wait 300 left 689, 666 wait 300 left 797, 613 wait 300 left 907, 349 wait 300 left 687, 610 wait 200 left 763, 615 wait 200 left 940, 376 wait 2s end_if left 1222, 551
|
|
|
|
guetajazz |
29.6.2015, 23:46
|
Registred
Сообщений: 5
Регистрация: 5.5.2014 Группа: Пользователи Наличность: 0
Пользователь №: 16.820
Возраст: 21
|
В общем- да! Я и не спорю. Сказал об этом сразу,что скрипт на цикле кликов. От того и *тормоза * видимо. Но,хочу сказать СПАСИБО всем откликнувшимся,учту ваши замечания,буду расти над собой.)) Для меня это дремучий лес,нет времени вникать,от того и обратился за помощью
[quote name='dimоn' date='29.6.2015, 22:59' post='214277'] Вот эта команда что делает??
Куча холостых тыков происходит от того, что весь скрипт, по большому счету, это серия кликов, идущих один за другим, без каких-либо условий и ограничений. То есть, пилот не видит, что происходит на игровом поле, а серия тыков прописана.
Это кусок из старого скрипта видимо)) В этом и заключается суть проблемы,что не знаю как заставить пилот *видеть*. Буду пытаться что-то слепить при помощи ваших примеров,рекомендаций и гугла ))
|
|
|
|
DarkMaster |
30.6.2015, 3:50
|
Модератор UOPilot
Сообщений: 9.573
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 28548
Пользователь №: 11.279
|
Цитата Не вопрос, это быстро, просто, понятно, но не практично и не эффективно. Со временем перестает работать. При чем, по-разому, может через день, через неделю, а может и через час. С какого перепугу? Это очень практично и очень эффективно. Подобные конструкции за 8 лет у меня не отвалились ни разу. Цитата Все поиски, по максимуму, лучше всего реализовать поиском по картинкам. имхо. Это не поиск, а ожидание. Делать ожидание на финдимидже? Это даже для меня какой-то нереальный перебор. Цитата Сказал об этом сразу,что скрипт на цикле кликов. От того и *тормоза * видимо. Неа. Клики мгновенные, тормоза от wait'ов. Решается по схеме выше через while. Цитата if then else А вот then в пилоте не пишется и это правильно (IMG: style_emoticons/default/smile.gif)
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
30.6.2015, 5:08
|
Модератор UOPilot
Сообщений: 9.573
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 28548
Пользователь №: 11.279
|
Например, нам необходимо кликнуть по предмету и выбрать в выпадающем меню какой-то пункт. Выпадающее меню появляется не сразу, а подгружается с сервера. В итоге нам необходимо добавить некоторую задержку. Вариантов тут несколько: Код Минус подобного подхода в том, что мы не контролируем фактическое появление выпадающего меню. Мы просто надеемся, что лага не будет или не он будет меньше 500мс. А если будет больше? Сбой? Чтобы повысить стабильность необходимо будет увеличивать данную задержку. А если таких кликов много? Каждый раз ждать неоправданно большое количество времени и иметь тормозной скрипт? Чтобы не ждать вслепую проще заставить пилот проверять появление этой менюшки либо обнаруживать исчезновение фона(перекрытие менюшкой). Соответственно конструкция становится следующей: Код left 1 1 while_not x y c // Пока не появится менюшка wait 10 end_while left 2 2
// Или left 1 1 while x y c // Пока фон не изменился wait 10 end_while left 2 2 Подобными конструкциями стараюсь заменить все wait'ы. Исключение разве что составляют лишь какие-то жесткие конструкции с явными задержками между парой событий. Либо случаи, когда необходимо выжать очень большую скорость работы и while с использованием цвета, занимающий 30мс, является слишком большой роскошью. Сообщение отредактировал DarkMaster - 30.6.2015, 5:08
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
dimоn |
30.6.2015, 14:27
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Цитата(veiron @ 30.6.2015, 8:41) А если в этот момент произошел разрыв с сервером, в этой игре это довольно частое явление. Или еще может игра слететь и будет только фон игры. Получается на этом while_not игра будет висеть вечно.
Значит while_not заменяется на while Код while x y color // цвет фона, до открытия менюшки. Цитата(veiron @ 30.6.2015, 11:14) И получится из 3 строк кода, код вырастит как минимум до 8. А если вайтов 100. Потом нужно будет обновить страницу с игрой и каким-то образом вернуться заново к этому действию.
Если требуется много задержек, что бы уйли от вайла, я пошел другим путем - решил прблему, увеличением общего межстрочного интервала.
|
|
|
|
veiron |
30.6.2015, 18:05
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 0 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(dimоn @ 30.6.2015, 14:27) Значит while_not заменяется на while
Не вариант, пробовал такое. Цитата(dimоn @ 30.6.2015, 14:27) Код while x y color // цвет фона, до открытия менюшки. И такое пробовал. Если делать на while это каждый ход получается с кучей проверок, игра довольна глючная. Я делал блоками, потом в каждом блоке если превышает интервал времени, обновлял браузер и возвращался в самое начало. Цитата(dimоn @ 30.6.2015, 14:27) Если требуется много задержек, что бы уйли от вайла, я пошел другим путем - решил прблему, увеличением общего межстрочного интервала.
А я еще проще поступил, нашел универсального бота который написан на каком-то программном языке и прикрутил его в пару с пилотом. И теперь все хорошо работает) Вот не могу понять, тот бот работает четко без сбоев, а вот пилот так написать не получается(
|
|
|
|
DarkMaster |
30.6.2015, 18:33
|
Модератор UOPilot
Сообщений: 9.573
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 28548
Пользователь №: 11.279
|
Цитата Если требуется много задержек, что бы уйли от вайла, я пошел другим путем - решил прблему, увеличением общего межстрочного интервала. И чем это отличается от wait'ов которые в самом обычном виде добавляли? Тем, что мы не просто ждем вслепую в проблемных местах, но еще и в тех местах, где ждать вообще не надо? Цитата Для этого в условие добавляется таймер. Именно так. Цитата И получится из 3 строк кода, код вырастит как минимум до 8. А если вайтов 100. То делается подпрограмма и в нее передается набор координат и цвет. Подпрограмма отрабатывает и при необходимости все перезапускает. Цитата Потом нужно будет обновить страницу с игрой и каким-то образом вернуться заново к этому действию. Вот это наиболее проблемный момент и очень сильно зависящий от конкретного приложения. Я эту проблему решал созданием масок по цветам и координатам на все случаи жизни, далее приводил бота к некоторому эталнному состоянию, после чего начинало работать основное тело скрипта. Смысл по сути в наборе блоков, которые отработают только в при определенной картинке на экране.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|