Відповісти

Увага: ця гілка була неактивною принаймні 365 днів!
Будь ласка, подумайте про створення нової гілки, якщо ви не впевнені абсолютно, що хочете відновити обговорення тут.
Ім’я:
Електронна пошта:
Тема:
Іконка:

Код перевірки:
Будь ласка, введіть символи, вказані на малюнку
прослухати / Спробувати інший малюнок

Будь ласка, введіть символи, вказані на малюнку:

скорочення: alt+s — надіслати допис, alt+p — попередній перегляд


Стислий вміст гілки

Автор: v.2.1
« : 2014-05-08 01:36:52 »

deleted
Автор: v.2.1
« : 2014-04-29 19:22:02 »

Прибрав усе. Не думаю, що в цьому маленькому скрипті помилився.
Глюк скоріше за все у програмі.
Цитата
if exists (Pattern("health.png")):        
    click ("attack.png")
else:
    popup ("yabooo!")


Малюнки різні. Зелена лінія здоров’я і сіра:


скриншот гри -

health.png згаданий у скрипті -



Опція Match preview їх не ідентифікує як подібні.
Але коли працює скрипт, вони чомусь стають подібними і виконується click ("atack.png")
Автор: kisil
« : 2014-04-29 10:54:03 »

Підкажіть, будь ласка!
Як зробити, щоб якщо не виконується 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 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 »

Розібрався.
Скрипт працює  ;D

Є тільки проблема в цьому моменті:

    while exists (Pattern("heal.png").similar(0.81).targetOffset(5,7)):
        click ("attack.png"); wait (2)
    if exists ("win.png"):
        click ("map_button.png")

Коли смуга здоров’я стає з зеленої на сіру, то герой повинен припинити атакувати.
Але цього не стається чи через занадто швидкий пошук нового об’єкту, або через те, що програма не достатньо чутлива на зміну кольору у визначеній області.

Відбалансувати чутливістю це не вдаєтсья.
В одному випадку програма не бачить зеленої смужки здоров’я і помилково припиняє атаку,
В иншому навпаки не бачить, що смужка стала сірою і атакує далі.

Можливо, якось можна прописати реакцію на зелений, або сірий колір в певній області. Але я поки до цього не дійшов.
Автор: v.2.1
« : 2014-04-28 00:21:50 »

Хочу написати скрипт для sikuli.org, (автоклікер, який розуміє Python).

Для дуже простої гри на Андроїді.
Графіка статична.
Картинка оновлюється тільки після дії користувача,
а значить можна прописати послідовність дій - next, next.

Так виглядає скрипт у інтерфейсі програми:

Цитата
while exists ("puthon_symbol.png"):
    if exists ("grand_elf.png"):  
        click ("grand_elf.png")
        sleep (1)
    if exists ("elf.png"):
        click ("elf.png")
        sleep (1)
        while exists ("attack.png"):
               click ("attack.png")
               sleep (1)
    if exists ("you_win.png"):
        click ("map_button.png")

Перед атакою треба зробити перевірку сірої смужки біля літер Health і якщо вона існує - змінити алгоритм дій

find ("health.png"): #скрин з пошкодженим здоров’ям
PageDown,
clickA,
clickB,
click ("map.png")
click (ворог)
else click ("attack.png") # якщо зі доров’ям все добре тиснемо атакувати

і продовжуємо скрипт далі.

Але я поки не можу зрозуміти, як на Python використати else (чи щось инше?) і скомандувати програмі переключитися на виконання окремого відрізку скрипту, а потім повернутися назад.