|
Бот-фарм В Grepolis, Помогите упростить скрипт |
|
|
Arome |
20.9.2011, 23:20
|
Registred
Сообщений: 3
Регистрация: 20.9.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.013
|
Есть такая браузерная игрушка. Это, примерно, аналог травиана и войны племен. (если кому интересно, напишите мне свое мыло, я сделаю вам приглашение - и вам проще будет и мне бонус (IMG: style_emoticons/default/biggrin.gif) ) В ней помимо накопления ресурсов через производственные постройки, которые производят определенное количество в час, есть возможность сбора ресов с нейтральных поселений, расположенных на одном с вашим городом острове и обозначенных особыми флажками. На сегодняшний день у меня скрипт настроен на кликание в эти поселения за счет фиксированных координат. Однако этот способ имеет некоторые минусы, в первую очередь, связанные с необходимостью постоянной и четкой оцентровки расположения необходимого изображения на экране. И зачастую происходят сбои и, как следствие, промахи кликов. Читая форум я уже понял, что можно использовать Findcolor, но тут возникает проблема: как я понял, это команда позволяет найти всего 1 объект в заданной области, в то время как у меня в этой области бывает до 8-ми объектов, и в каждый необходимо кликнуть по очереди (самая большая проблема заключается в том, что на каждом острове эти объекты расположены в самых различных позициях). Если я не прав и есть возможность найти и зафиксировать несколько объектов заданного цвета, так чтобы их можно было потом прокликать, подскажите как. Я так же нашел упоминание функции Findimage. Однако не нашел никакой инструкции по применению. Учитывая, что все необходимые мне объекты обозначены одинаковыми флажками, я предполагаю, что можно использовать изображения этих флажков для идентификации объектов.
|
|
|
|
Arome |
20.9.2011, 23:36
|
Registred
Сообщений: 3
Регистрация: 20.9.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.013
|
вот как выглядит скрипт: Grepolis_farm
left 84, 162 wait 1s left 620, 162 wait 2s left 179, 310 wait 2s left 76, 36 wait 2s
left 432, 668 //1 wait 2s left 432, 668 wait 2s call FARM
left 475, 517 //2 wait 2s left 475, 517 wait 2s call FARM
left 671, 455 //3 wait 2s left 671, 455 wait 2s call FARM
left 751, 451 //4 wait 2s left 751, 451 wait 2s call FARM
left 971, 581 //5 wait 2s left 971, 581 wait 2s call FARM
left 890, 603 //6 wait 2s left 890, 603 wait 2s call FARM
left 786, 674 //7 wait 2s left 786, 674 wait 2s call FARM
left 84, 162 wait 1s left 620, 162 wait 333 left 180, 263 wait 2s left 76, 36 wait 2s
left 574, 582 //1 wait 2s left 574, 582 wait 2s call FARM
left 621, 522 //2 wait 2s left 621, 522 wait 2s call FARM
left 672, 570 //3 wait 2s left 672, 570 wait 2s call FARM
left 777, 566 //4 wait 2s left 777, 566 wait 2s call FARM
left 896, 520 //5 wait 2s left 896, 520 wait 2s call FARM
left 950, 469 //6 wait 2s left 950, 469 wait 2s call FARM
left 483, 415 //7 wait 2s left 483, 415 wait 2s call FARM
left 84, 162 wait 1s left 620, 162 wait 333 left 182, 231 wait 2s left 76, 36 wait 2s
left 465, 568 //1 wait 2s left 465, 568 wait 2s call FARM
left 626, 638 //2 wait 2s left 626, 638 wait 2s call FARM
left 673, 735 //3 wait 2s left 673, 735 wait 2s call FARM
left 793, 753 //4 wait 2s left 793, 753 wait 2s call FARM
left 939, 568 //5 wait 2s left 939, 568 wait 2s call FARM
left 849, 512 //6 wait 2s left 849, 512 wait 2s call FARM
left 709, 483 //7 wait 2s left 709, 483 wait 2s call FARM
left 84, 162 wait 1s left 620, 162 wait 333 left 181, 343 wait 2s left 76, 36 wait 2s
left 457, 522 //1 wait 2s left 457, 522 wait 2s call FARM
left 454, 598 //2 wait 2s left 454, 598 wait 2s call FARM
left 569, 589 //3 wait 2s left 569, 589 wait 2s call FARM
left 707, 557 //4 wait 2s left 707, 557 wait 2s call FARM
left 815, 619 //5 wait 2s left 815, 619 wait 2s call FARM
left 851, 582 //6 wait 2s left 851, 582 wait 2s call FARM
left 967, 656 //7 wait 2s left 967, 656 wait 2s call FARM
left 84, 162 wait 1s left 179, 372 wait 2s left 76, 36 wait 2s
left 626, 640 //1 wait 2s left 626, 640 wait 2s call FARM
left 671, 735 //2 wait 2s left 671, 735 wait 2s call FARM
left 792, 751 //3 wait 2s left 792, 751 wait 2s call FARM
left 954, 627 //4 wait 2s left 954, 627 wait 2s call FARM
left 933, 568 //5 wait 2s left 933, 568 wait 2s call FARM
left 710, 483 //6 wait 2s left 710, 483 wait 2s call FARM
left 84, 162 wait 1s left 207, 345 wait 2s left 184, 405 wait 2s left 76, 36 wait 2s
left 629, 526 //1 wait 2s left 629, 526 wait 2s call FARM
left 676, 573 //2 wait 2s left 676, 573 wait 2s call FARM
left 777, 568 //3 wait 2s left 777, 568 wait 2s call FARM
left 955, 475 //4 wait 2s left 955, 475 wait 2s call FARM
left 546, 336 //5 wait 2s left 546, 336 wait 2s call FARM
left 488, 422 //6 wait 2s left 488, 422 wait 2s call FARM
left 84, 162 wait 1s left 620, 162 wait 200 left 183, 424 wait 2s left 76, 36 wait 2s
left 437, 603 //1 wait 2s left 437, 603 wait 2s call FARM
left 668, 629 //2 wait 2s left 668, 629 wait 2s call FARM
left 749, 707 //3 wait 2s left 749, 707 wait 2s call FARM
left 850, 675 //4 wait 2s left 850, 675 wait 2s call FARM
left 827, 625 //5 wait 2s left 827, 625 wait 2s call FARM
left 647, 422 //6 wait 2s left 647, 422 wait 2s call FARM
left 84, 162 wait 1s left_down 363, 413 //Прокрутка wait 1s left_up 363, 413 //Прокрутка wait 500 left 181, 221 wait 2s left 76, 36 wait 2s
left 439, 571 //1 wait 2s left 439, 571 wait 2s call FARM
left 488, 594 //2 wait 2s left 488, 594 wait 2s call FARM
left 586, 615 //3 wait 2s left 586, 615 wait 2s call FARM
left 665, 594 //4 wait 2s left 665, 594 wait 2s call FARM
left 749, 677 //5 wait 2s left 749, 677 wait 2s call FARM
left 850, 641 //6 wait 2s left 850, 641 wait 2s call FARM
left 823, 593 //7 wait 2s left 823, 593 wait 2s call FARM
left 696, 435 //8 wait 2s left 696, 435 wait 2s call FARM
left 84, 162 wait 1s left_down 363, 413 //Прокрутка wait 1s left_up 363, 413 //Прокрутка wait 500 left 181, 271 wait 2s left 76, 36 wait 2s
left 877, 524 //1 wait 2s left 877, 524 wait 2s call FARM
left 901, 429 //2 wait 2s left 901, 429 wait 2s call FARM
left 793, 420 //3 wait 2s left 793, 420 wait 2s call FARM
left 706, 429 //4 wait 2s left 706, 429 wait 2s call FARM
left 589, 380 //5 wait 2s left 589, 380 wait 2s call FARM
left 426, 470 //6 wait 2s left 426, 470 wait 2s call FARM
left 614, 600 //7 wait 2s left 614, 600 wait 2s call FARM
left 84, 162 wait 1s left_down 363, 413 //Прокрутка wait 1s left_up 363, 413 //Прокрутка wait 500 left 181, 286 wait 2s left 76, 36 wait 2s
left 836, 490 //1 wait 2s left 836, 490 wait 2s call FARM
left 750, 542 //2 wait 2s left 750, 542 wait 2s call FARM
left 606, 460 //3 wait 2s left 606, 460 wait 2s call FARM
left 504, 473 //4 wait 2s left 504, 473 wait 2s call FARM
left 399, 520 //5 wait 2s left 399, 520 wait 2s call FARM
left 400, 596 //6 wait 2s left 400, 596 wait 2s call FARM
left 365, 620 //7 wait 2s left 365, 620 wait 2s call FARM
left 84, 162 wait 1s left_down 363, 413 //Прокрутка wait 1s left_up 363, 413 //Прокрутка wait 500 left 182, 318 wait 2s left 76, 36 wait 2s
left 545, 462 //1 wait 2s left 545, 462 wait 2s call FARM
left 650, 401 //2 wait 2s left 650, 401 wait 2s call FARM
left 772, 485 //3 wait 2s left 772, 485 wait 2s call FARM
left 902, 508 //4 wait 2s left 902, 508 wait 2s call FARM
left 950, 587 //5 wait 2s left 950, 587 wait 2s call FARM
left 856, 634 //6 wait 2s left 856, 634 wait 2s call FARM
left 602, 676 //7 wait 2s left 602, 676 wait 2s call FARM
left 84, 162 wait 1s left_down 363, 413 //Прокрутка wait 1s left_up 363, 413 //Прокрутка wait 500 left 180, 350 wait 2s left 76, 36 wait 2s
left 936, 511 //1 wait 2s left 936, 511 wait 2s call FARM
left 958, 416 //2 wait 2s left 958, 416 wait 2s call FARM
left 859, 333 //3 wait 2s left 859, 333 wait 2s call FARM
left 851, 410 //4 wait 2s left 851, 410 wait 2s call FARM
left 764, 416 //5 wait 2s left 764, 416 wait 2s call FARM
left 670, 591 //6 wait 2s left 670, 591 wait 2s call FARM
left 550, 498 //7 wait 2s left 550, 498 wait 2s call FARM
left 484, 456 //8 wait 2s left 484, 456 wait 2s call FARM
left 84, 162 wait 1s left_down 363, 413 //Прокрутка wait 1s left_up 363, 413 //Прокрутка wait 500 left 182, 396 wait 2s left 76, 36 wait 2s
left 451, 663 //1 wait 2s left 451, 663 wait 2s call FARM
left 443, 568 //2 wait 2s left 443, 568 wait 2s call FARM
left 492, 508 //3 wait 2s left 492, 508 wait 2s call FARM
left 772, 448 //4 wait 2s left 772, 448 wait 2s call FARM
left 842, 471 //5 wait 2s left 842, 471 wait 2s call FARM
left 897, 533 //6 wait 2s left 897, 533 wait 2s call FARM
left 986, 575 //7 wait 2s left 986, 575 wait 2s call FARM
left 84, 162 wait 1s left_down 363, 413 //Прокрутка wait 1s left_up 363, 413 //Прокрутка wait 500 left 182, 412 wait 2s left 76, 36 wait 2s
left 506, 502 //1 wait 2s left 506, 502 wait 2s call FARM
left 557, 554 //2 wait 2s left 557, 554 wait 2s call FARM
left 621, 555 //3 wait 2s left 621, 555 wait 2s call FARM
left 614, 606 //4 wait 2s left 614, 606 wait 2s call FARM
left 574, 650 //5 wait 2s left 574, 650 wait 2s call FARM
left 575, 698 //6 wait 2s left 575, 698 wait 2s call FARM
proc FARM left 552, 165 wait 200 left 530, 669 wait 2s left 147, 336 wait 1s end_proc
И это хорошо еще, что я додумался использовать процедуру. А до этого у меня скрипт занимал в 2 раза больше места)) Если посчитаете, увидите, что фармить приходится 14 островов. И каждый остров приходится прописывать отдельно. Соответственно каждый следующий захваченный остров необходимо заносить в список. Хотелось бы оптимизировать скрипт так, чтобы для всех островов использовалась 1 универсальная процедура.
|
|
|
|
Arome |
21.9.2011, 18:04
|
Registred
Сообщений: 3
Регистрация: 20.9.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.013
|
Цитата(ламерок @ 21.9.2011, 8:44) call FARM -- что эта команда означает ? Какая функция ?
это я вызываю процедуру, которая прописана в конце скрипта и называется FARM
|
|
|
|
unixxx |
10.11.2011, 21:25
|
Registred
Сообщений: 6
Регистрация: 10.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.234
Возраст: 26
|
по поводу поиска цвета даже не думай, когда играл в уо сам видил пак в уо? так вот у меня был скрипт поиска цвета руды и логов, так сама выкладка и поиск занимало времени минут 10 наверное а то и больше так что я хз, стоит ли весь монитор детектить по цвету деревень да и не реаль практически. я делаю так!!!!! заноого :-) все еще актульно? :-) ладно напишу что я делаю :-) мой скрипт на каждый город отдельно, тоесть каждый твой город это новое окно во первый скрип меньше, ну и можно к каждому городу как у меня сделать отдельно окно со строительсвом армии или чего из сената. если чесно пишу чютка уставший так что если что то не понятно потом распишу :-) скрипт :start //окноо закрыть закрываем всякие окна которые могут быть в игре, если че подвисло move 882, 349 abs wait 1s left 882, 349 abs wait 2s repeat 2 move 925, 430 abs wait 1s left 925, 430 abs wait 1s end_repeat //окно закрыть //1 город ну тут все понятно пошли деревни :-) на острове move 340, 643 abs wait 1s repeat 2 left 340, 643 abs wait 3s end_repeat gosub op //2 город move 548, 542 abs wait 1s repeat 2 left 548, 542 abs wait 3s end_repeat gosub op //3 город move 955, 678 abs wait 1s repeat 2 left 955, 678 abs wait 3s end_repeat gosub op //4 город move 902, 728 abs wait 1s repeat 2 left 902, 728 abs wait 3s end_repeat gosub op //5 город move 782, 774 abs wait 1s repeat 2 left 782, 774 abs wait 3s end_repeat gosub op //6 город move 679, 779 abs wait 1s repeat 2 left 679, 779 abs wait 3s end_repeat gosub op //7 город move 628, 730 abs wait 1s repeat 2 left 628, 730 abs wait 3s end_repeat gosub op //8 город move 582, 792 abs wait 1s repeat 2 left 582, 792 abs wait 3s end_repeat gosub op тут мы ставим все подряд толи запуск другова скрипта толи пауза wait 205s gosub start (IMG: style_emoticons/default/ohmy.gif)p // процедура нажатия 5 минутного реса wait 1s move 537, 732 abs wait 1s left 537, 732 abs wait 3s left 533, 656 abs wait 1s return
|
|
|
|
unixxx |
10.11.2011, 21:50
|
Registred
Сообщений: 6
Регистрация: 10.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.234
Возраст: 26
|
так продолжим сори за запятые и все прочие :-) я как понимаю твой скрипт делает так! сначало собирает ресы с 8 деревень на одном острове, потом переходит в левый верхний угол и нажимает стрелку след. город? если так то то я предлогаб тебе сделать так. 0 окно скрипта тот же скрипт что и у меня (допустим) 1 окно (вспомогательный строительсто армии, отправка ресов или город стройка как написать сам знаеш) 2 окно это уже второй остров на который он переходит нажатием все той же кнопочки стрелочка на след. остров тут самое главное вот что на каждый город а тебе их надо как то для себя запомнить написать отделное окно и в начале скрипта сделать чтобы он выравнивал координаты в самой игре тоесть там где карта у нас в игре есть снизу координаты допустим у тебя они 555 555 ты нажимаеш перейти к этим координатам и скока бы ты их раз не вводил они не разу не собьются наверное не на пиксель, так вот тебе надо свой первый город определить по координатам тоесть чтобы остров был по середине экрана так сказать. потом не просто двигая мышкой смотреть координаты а менять их в ручную (потомучто мышка не точно показывает их в самой игре) тоесть забиваеш 556 554 и смотриш куда у тебя ушел остров, если криво пиши в игре 555 556, опять не попал и так далее пока остров не выровняется по центу, потом сохраняй эти координаты в самой игре я так делаю. тоесть там идет так 555 555 помто ярлык перейти к этим координатам а потом тот значек который нам нужен так вот сохрани на каждый свой город по 1 координате и когда скрипт будет переходить от города 1 к городу 2 он перейдет, но он должен будет нажать в координатах игры тоже город 2 и тогда у тебя все выровняется :-) зарание сенки за прочтение :-) если что не понятно пиши попытаюся обьяснить у меня лично вы забито один раз и не чего не сбивается конечно если откр. все в одном браузере и разширение экрана не меняется :-) Цитата(DarkMaster @ 10.11.2011, 21:40) findcolor и findimage анализируют весь экран за секунды даже на стареньком p4 1,8. Какие 10 минут? времена уже прошли - функционал совсем другой уже.
просто в уо использовал тогда findcolor тоесть указывал верхний левый угол пака и нижний правый угол пака в пикселях, и шаг был в 1 пиксель вроде и задержка была толи секунда толи больше, может от инета зависила, но серьезно пока он песь пак просканить мышкой пока найдет эту руду уходило от 10 минут. может че не так делал :-) просто мне интересно как щас идет сканирование всего экрана на цвет тоесть имено на поиск определеного цвета в браузере на секунды? если можно пример команды :-)
|
|
|
|
DarkMaster |
10.11.2011, 22:18
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27723
Пользователь №: 11.279
|
отныне 'findcolor' ищет во всем указанном диапазоне, а не 'до' конечной точки. 'set $a FindColor (10, 15 10, 15 1 1 84235 %arr)' будет искать цвет в одной точке
научил 'findcolor' искать по диапазону цветов и по отдельным каналам цвета. для поиска по диапазону параметры цвета задаются в круглых скобках. можно задавать сразу несколько параметров. ищет сразу по всем указанным параметрам. если цвет указан без скобок, то ищется точное совпадение цвета, как раньше 'set $a FindColor (StartX StartY EndX EndY ShiftX ShiftY (RequiredColor) ResultArray [type] [abs])' примеры задания 'RequiredColor': '84235' - точный цвет '84235-86027' - диапазон цветов 'R(11)' - значение красного канала = 11, остальные не проверяются 'G(73-80)' - диапазон значений зеленого канала, остальные не проверяются 'R(11)+G(73-80)+B(1)' - заданы значения по всем каналам '84235, R(0), R(11)+G(73-80)+B(1)' - комбинированное указание искомых цветов
добавил предельное количество точек для поиска в команде 'findcolor', в связи с этим слегка изменился синтаксис 'set $a FindColor (StartX StartY EndX EndY ShiftX ShiftY (RequiredColor) ResultArray [type [count]] [abs])'
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
AciD DrEaM |
28.3.2012, 1:07
|
Neophyte
Сообщений: 17
Регистрация: 28.3.2012 Группа: Пользователи Наличность: 0
Пользователь №: 14.807
Возраст: 27
|
Вот мой скрипт. К сожалению с поиском картинок не разобрался и сделал все по цветам и координатам. Добавил всевозможные проверки на лаги и баги так что скрипт работает без перебоев целыми днями. Для простоты понятия добавил описания. По принципу первой деревни разбираться и с остальными. Просьба к тому кто шарит в поиске по картинкам помочь упростить скрипт.
set #max 15 set #MaxChe 8
// Обновление страницы, закрытие окна ежедневного подарка и окна города :Reload set #Circ 0 set #Che 0 send f5 wait 3000 //Координаты и цвет обеих рамок(ежедневного подарка,окна города).Любая точка на рамке while_not 890, 192 2767173 or 863, 264 2371899 //Координаты и цвет точки на монетах на кнопке информации острова(Посреди острова кнопка его инфы,брать цвет и координаты именно с монет) If 931, 418 8223866 goto Vil1 end_if wait 1000 set #Circ #Circ + 1 if #Circ > #Max goto Reload end_if end_while set #Circ 0 //Закрыть окно подарка move 1081, 266 left 1081, 266 wait 1000 //ЗАкрыть окно города move 1212, 192 left 1212, 192 wait 1000
:Vil1 //Координаты и цвет флажка(готовности фарма) деревни if 734, 472 4353423 // клик по деревне move 725, 464 left 725, 464 wait 1000 //клик по фарм move 733, 474 left 733, 474 wait 500 //Проверка на лаг или баг странички. Координаты и цвет рамки фарма. Любая точка на рамке while_not 732, 532 3096653 wait 500 set #Che #Che + 1 if #Che > #MaxChe goto Reload end_if end_while set #Che 0 call Farm end_if
:Vil2 if 802, 499 4221835 move 781, 484 left 781, 484 wait 1000 move 788, 481 left 788, 481 wait 500 while_not 732, 532 3096653 wait 500 set #Che #Che + 1 if #Che > #MaxChe goto Reload end_if end_while set #Che 0 call Farm end_if
:Vil3 if 982, 521 3890295 move 964, 503 left 964, 503 wait 1000 move 962, 497 left 962, 497 wait 500 while_not 732, 532 3096653 wait 500 set #Che #Che + 1 if #Che > #MaxChe goto Reload end_if end_while set #Che 0 call Farm end_if
:Vil4 if 1080, 441 4285311 move 1065, 421 left 1065, 421 wait 1000 move 1073, 428 left 1073, 428 wait 500 while_not 732, 532 3096653 wait 500 set #Che #Che + 1 if #Che > #MaxChe goto Reload end_if end_while set #Che 0 call Farm end_if
:Vil5 if 1122, 494 4747406 move 1103, 475 left 1103, 475 wait 1000 move 1114, 483 left 1114, 483 wait 500 while_not 732, 532 3096653 wait 500 set #Che #Che + 1 if #Che > #MaxChe goto Reload end_if end_while set #Che 0 call Farm end_if
:Vil6 if 1046, 504 2769491 move 1028, 490 left 1028, 490 wait 1000 move 1037, 489 left 1037, 489 wait 500 while_not 732, 532 3096653 wait 500 set #Che #Che + 1 if #Che > #MaxChe goto Reload end_if end_while set #Che 0 call Farm end_if
//Ожидание до следующего фарма :Wait //Координаты и цвет флажков готовности фарма всех дерефушек while_not 739, 475 4351872 or 802, 499 4221835 or 978, 519 1847100 or 1081, 441 4747406 or 1121, 493 4087415 or 1045, 502 4748435 set #Circ #Circ + 1 if #Circ > #Max goto Reload end_if //Проверка на баг странички:Координаты и цвет точки флага готовности к фарму и точки на флаге не готовности к фарму(Если не то или не то-то баг) if_not 727, 491 4607061 or 738, 476 4747406 goto Reload end_if wait 10000 end_while set #Circ 0 goto Vil1
//Процедура фарма. Координаты кнопки фарма в окне фарма которая вам необходима.(5 минут итд...) proc Farm move 737, 569 Left 737, 569 wait 1000 end_proc end_script
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|