Автор: v.2.1
« : 2014-05-08 01:36:52 »deleted
Автор: v.2.1« : 2014-05-08 01:36:52 »deleted
Автор: v.2.1« : 2014-04-29 19:22:02 »Прибрав усе. Не думаю, що в цьому маленькому скрипті помилився.
Глюк скоріше за все у програмі. Цитата if exists (Pattern("health.png")): Малюнки різні. Зелена лінія здоров’я і сіра: скриншот гри - ![]() ≠ health.png згаданий у скрипті - ![]() Опція Match preview їх не ідентифікує як подібні. Але коли працює скрипт, вони чомусь стають подібними і виконується click ("atack.png") Автор: kisil« : 2014-04-29 10:54:03 »Підкажіть, будь ласка!Ось тут почитайте Автор: v.2.1« : 2014-04-29 09:44:07 »Я так ф планував,, щоб лише до половини код доходив.
Далі моб помирає і атакувати вже не потрібно. Але пауза прописана слідом за атакою працює, що не потрібно. Автор: peinguin« : 2014-04-29 09:12:37 »пройдіться дебагером. Навряд чи він дійсно працює.
Автор: v.2.1« : 2014-04-29 08:28:24 »Підкажіть, будь ласка!
Як зробити, щоб якщо не виконується click то і не виконувався wait? Бо ряд команд виконується десь до половини, далі не відповідає умові if, але wait працює. if exists (Pattern("green_gray.png").similar(0.75)): click ("attack.png"); wait (2) if exists ("Health.png"): click ("Health-1.png"); wait (2) if exists (Pattern("green_gray-1.png").similar(0.75)): click ("attack-1.png"); wait (2) if exists ("Health.png"): click ("Health-1.png"); wait (2) if exists (Pattern("green_gray-2.png").similar(0.75)): click ("attack-2.png"); wait (2) Автор: v.2.1« : 2014-04-29 08:21:16 »Розібрався у чому була проблема.
Поки гра оновлює сторінку, sikuli уже біжить навипередки тицяти на графічний об’єкт, якого на новій сторінці уже може і не бути. wait (5) чи sleep (5) не допомагають, таке враження, що вона цілиться заздалегідь, і її ніяк неможливо змусити спати перед пошуком нового графічного об’єкта. (Можливо я просто не знаю). Тому, я прописав click (лівий об’єкт) щоб потім sikuli новим поглядом могла ідентифікувати справжню ціль. Инакце ніяк, таймаути не допомагають. Автор: v.2.1« : 2014-04-28 22:07:58 »Розібрався.
Скрипт працює ![]() Є тільки проблема в цьому моменті: while exists (Pattern("heal.png").similar(0.81).targetOffset(5,7)): click ("attack.png"); wait (2) if exists ("win.png"): click ("map_button.png") Коли смуга здоров’я стає з зеленої на сіру, то герой повинен припинити атакувати. Але цього не стається чи через занадто швидкий пошук нового об’єкту, або через те, що програма не достатньо чутлива на зміну кольору у визначеній області. Відбалансувати чутливістю це не вдаєтсья. В одному випадку програма не бачить зеленої смужки здоров’я і помилково припиняє атаку, В иншому навпаки не бачить, що смужка стала сірою і атакує далі. Можливо, якось можна прописати реакцію на зелений, або сірий колір в певній області. Але я поки до цього не дійшов. Автор: peinguin« : 2014-04-28 10:27:53 »Автор: v.2.1« : 2014-04-28 00:21:50 »Хочу написати скрипт для sikuli.org, (автоклікер, який розуміє Python).
Для дуже простої гри на Андроїді. Графіка статична. Картинка оновлюється тільки після дії користувача, а значить можна прописати послідовність дій - next, next. Так виглядає скрипт у інтерфейсі програми: ![]() ![]() Цитата while exists ("puthon_symbol.png"): Перед атакою треба зробити перевірку сірої смужки біля літер Health і якщо вона існує - змінити алгоритм дій find ("health.png"): #скрин з пошкодженим здоров’ям PageDown, clickA, clickB, click ("map.png") click (ворог) else click ("attack.png") # якщо зі доров’ям все добре тиснемо атакувати і продовжуємо скрипт далі. Але я поки не можу зрозуміти, як на Python використати else (чи щось инше?) і скомандувати програмі переключитися на виконання окремого відрізку скрипту, а потім повернутися назад. |