Author Topic: Помогите написать сценарий.  (Read 4413 times)

0 Members and 3 Guests are viewing this topic.

Sergey67

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Помогите написать сценарий.
« on: December 14, 2016, 01:14:27 PM »
По сути это бот.
Как начать и закончить в основном понятно, а средняя фаза вводит в ступор.
Имеется экранные кнопки А, В, С и Х.
В неактивном состояние - они потухшие (затемненные значки), при активации загораются каждый своим символом.
Последовательность сценария следующая.
фаза1. Надо найти активную в этот момент кнопку А, В или С и прожимать ее пока не потухнет.
фаза2. Надо проверить не активировалась ли кнопка Х, если активна жмем 2 сек и вуаля.
фаза3(самая продолжительная). Кнопка Х не активна и надо продолжать фазу1 - многократно.

Премного буду благодарен за помощь!

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите написать сценарий.
« Reply #1 on: December 14, 2016, 01:35:57 PM »
В чём сложность сделать скрины активных А, В, С и искать. Нашёл - тушить.
Это если подсвечен именно символ. Если подсвечена сама кнопка и они одинаковые, может можно искать всего одну картинку общего подсвеченного участка.

фаза2. то же самое. жмём или ждём? и непонятна команда "вуаля"  ;D
фаза3. вообще не фаза, а порядок работы 1 и 2.

Не из чего непонятно X может загорется в любой момент и нужно всё бросать и бежать тушить? Или он проверяется между моментами "убивания" А, В, С?
Например, избиваем A, и только когда добили смотрим менты не приехали X не загорелась. Такие действия?


Sergey67

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Помогите написать сценарий.
« Reply #2 on: December 14, 2016, 02:28:31 PM »
В чём сложность сделать скрины активных А, В, С и искать. Нашёл - тушить.
Это если подсвечен именно символ. Если подсвечена сама кнопка и они одинаковые, может можно искать всего одну картинку общего подсвеченного участка.

фаза2. то же самое. жмём или ждём? и непонятна команда "вуаля"  ;D
фаза3. вообще не фаза, а порядок работы 1 и 2.

Не из чего непонятно X может загорется в любой момент и нужно всё бросать и бежать тушить? Или он проверяется между моментами "убивания" А, В, С?
Например, избиваем A, и только когда добили смотрим менты не приехали X не загорелась. Такие действия?

фаза2. ....... "вуаля" - сценарий закончен :-)

Х в первый раз никогда неактивна, сначала активируются А, В или С.
А вот затем уже может загореться и Х ( а может и нет, и скорее всего нет :-) )
И вот тут надо проверять  АВС и гасить нужную, постоянно перепроверяя Х .
Как-то так. И да картинки все разные.
непонятно какие операторы в какие моменты ставить :-)
 P.S. в первый раз пытаюсь писать... но логика присутствует, отсутствуют более развернутые знания:-)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите написать сценарий.
« Reply #3 on: December 14, 2016, 02:57:48 PM »
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "X.bmp")
    LCLICK($_return1+5,$_return2+5)
    WAIT(2000)
    HALT // вуаля
END_IF

IF_PICTURE_IN(0,0,$_xmax,$_ymax, "A.bmp")
    LCLICK($_return1+5,$_return2+5)
    WAITMS(200)
ELSE
    IF_PICTURE_IN(0,0,$_xmax,$_ymax, "B.bmp")
        LCLICK($_return1+5,$_return2+5)
        WAITMS(200)
    ELSE
        IF_PICTURE_IN(0,0,$_xmax,$_ymax, "C.bmp")
            LCLICK($_return1+5,$_return2+5)
            WAITMS(200)
        END_IF
    END_IF
END_IF

Для каждой кнопки лучше задать область поиска.
Подобрать нужную задержку после клика (вместо WAITMS(200)).
Поставить своё смещение для клика вместо 5. Зависит от размеров заготовок и места их вырезания.

жмем 2 сек
всё таки жМём или жДём? Или и то и другое?

Анекдот:
[spoiler]Прапорщик:
- При взрыве температура поднимается 1000 градусов.
Солдат:
- По Фаренгейту или Цельсию?
Прапорщик:
- Мммм. Сначала по одному, потом по другому.
[/spoiler]
« Last Edit: December 14, 2016, 03:26:20 PM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите написать сценарий.
« Reply #4 on: December 14, 2016, 04:20:57 PM »
Зачем искать картинки? Достаточно просто анализировать цвет кнопок функцией IF_PIXEL_IN

Sergey67

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Помогите написать сценарий.
« Reply #5 on: December 14, 2016, 04:31:30 PM »
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "X.bmp")
    LCLICK($_return1+5,$_return2+5)
    WAIT(2000)
    HALT // вуаля
END_IF

IF_PICTURE_IN(0,0,$_xmax,$_ymax, "A.bmp")
    LCLICK($_return1+5,$_return2+5)
    WAITMS(200)
ELSE
    IF_PICTURE_IN(0,0,$_xmax,$_ymax, "B.bmp")
        LCLICK($_return1+5,$_return2+5)
        WAITMS(200)
    ELSE
        IF_PICTURE_IN(0,0,$_xmax,$_ymax, "C.bmp")
            LCLICK($_return1+5,$_return2+5)
            WAITMS(200)
        END_IF
    END_IF
END_IF

Для каждой кнопки лучше задать область поиска.
Подобрать нужную задержку после клика (вместо WAITMS(200)).
Поставить своё смещение для клика вместо 5. Зависит от размеров заготовок и места их вырезания.

жмем 2 сек
всё таки жМём или жДём? Или и то и другое?

Анекдот:
[spoiler]Прапорщик:
- При взрыве температура поднимается 1000 градусов.
Солдат:
- По Фаренгейту или Цельсию?
Прапорщик:
- Мммм. Сначала по одному, потом по другому.
[/spoiler]

Вот спасибочки добрый человек, дай бог тебе здоровья :-)
Вечерком дома потестирую.
P.S. И да игра в полный экран, и панель с кнопочками неподвижна - только мигает или подмигивает  ;). Я думал использовать изменение цвета в области кнопки .

ну и ответочка  ;)

[spoiler]"Командир танкового полка (КП) на совещании объявляет:
Сегодня нам на доукомплектование прибыло 28 танков. Их нужно распределить по 7 ротам. Я посчитал, на каждую роту получается по 13 танков. К утру должны быть распределены. Всем понятно?
Встаёт лейтенант (командир роты) и говорит: Товарищ полковник, мне что-то непонятно. Как 28 танков распределить на 7 рот по 13 в каждую? У меня что-то не сходится.
КП: Ладно, лейтенант, тебе простительно, ты недавно из училища, считать не умеешь. Сейчас научу. 28 делим на 7. 8 разделить на 7, 1 и 1 в остатке. Пишем "1". осталось 21. 21:7 = 3. Пишем "3". Видишь, получается 13.
Л: А у меня почему-то не получается.
КП: Потому что тебя плохо учили. Давай проверим. Деление проверяется умножением. 1*7=7, 3*7=21. 21+7=28. Вот, всё правильно.
Лейтенант потыкал, потыкал в калькулятор, и опять: Товарищ полковник, ну никак у меня не получается.
КП: Хорошо. Чем ещё можно проверить деление? Сложением.
Считаем: 1+1+1+1+1+1+1=7. 3+3+3+3+3+3+3=21. 7+21=28. Что тебе ещё непонятно?
Лейтенант подумал-подумал и смирился.
КП: К утру доложить о том, что танки распределены.
Л: Товарищ полковник, ну, допустим, получу я 13 танков. Как я их по 3 взводам распределю?
КП: Да что же ты такой тупой, лейтенант? Начальник штаба, объясни этому тупому лейтенанту, как распределить танки.
НШ: Смотри лейтенант, ты получаешь 13 танков. 3 танка отдаёшь в 3 взвода, а 1 остаётся тебе. Всё.
[/spoiler]

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите написать сценарий.
« Reply #6 on: December 14, 2016, 04:34:03 PM »
Зачем искать картинки? Достаточно просто анализировать цвет кнопок функцией IF_PIXEL_IN
Не принципиально. Это пример.
При нестабильности изображения гораздо проще применить COLORMODE и %, чем подбирать цвет. Нужно ещё научить человека это делать.

Анекдот:
[spoiler]
Code: [Select]
- Мне без разницы, что есть: черную икру или черный хлеб.
- Но я смотрю, ты все же ешь черную икру, а не хлеб?
- А какая разница?
[/spoiler]
« Last Edit: December 14, 2016, 05:00:00 PM by Vint »


Sergey67

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Помогите написать сценарий.
« Reply #7 on: January 16, 2017, 03:05:09 PM »
Месяц выдался тяжелый, возвращаемся к теме рыбалки, тут она уже подымалась :)

Читал все темы не совсем въехал, и так вот что получилось
Code: (clickermann) [Select]
getscreen
colormode(6)
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "X.bmp")
LCLICK //насаживаем наживку
WAITMS(500)
HALT
END_IF

getscreen
colormode(6)
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "y.bmp")
RCLICK //закидываем удочку
WAITMS(500)
HALT
END_IF

// проверяем наличие активной кнопки или активность всех трех одновременно, как это сделать??

IF_PICTURE_IN(0,0,$_xmax,$_ymax, "A.bmp")
    KEYDOWN (81)
    WAITMS(500)                //нужно ждать когда кнопка потухнет,
//и время бывает разное как организовать?
//вместо WAIT нужно что то дркгое
ELSE
    IF_PICTURE_IN(0,0,$_xmax,$_ymax, "B.bmp")
        KEYDOWN (69)
        WAITMS(500)
ELSE
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "C.bmp")
        KEYDOWN (82)
        WAITMS(500)
        END_IF
    END_IF
END_IF



Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите написать сценарий.
« Reply #8 on: January 16, 2017, 03:18:33 PM »
Ты подробней распиши что делать должны.
А то речь про три
Quote
// проверяем наличие активной кнопки или активность всех трех одновременно
и тут же про одну
Quote
//нужно ждать когда кнопка потухнет
А остальные что в этот момент? Вот чую следующий вопрос: а если во время "ждать когда кнопка потухнет" загорится другая кнопка...
Потому как в большинстве случаев так и бывает. Выдают инфу пошагово.

Quote
//нужно ждать когда кнопка потухнет
Ну всё то же самое, те же бараны тот же поиск. В чём проблема с поиском?


Sergey67

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Помогите написать сценарий.
« Reply #9 on: January 16, 2017, 04:15:43 PM »
Я вставлю скрины 4-х вариантов, для наглядности
[spoiler]

[/spoiler]
На 1ом скрине все три кнопки активны и надо прожимать любую пока процесс ловли не завершится, как на 4-ом, где кнопочкой"1" вытягиваем улов.
На остальных, кнопки загораются по одной в произвольном порядке.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите написать сценарий.
« Reply #10 on: January 16, 2017, 04:39:26 PM »
Типа так:
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "A.bmp")
    KEYDOWN(#Q)
    WAITMS(50)
    $down = 1
    WHILE($down = 1)
        GETSCREEN
        IF_PICTURE_IN(0,0,$_xmax,$_ymax, "A.bmp")
            WAITMS(50)
        ELSE
            $down = 0
        END_IF
    END_CYC
    KEYUP(#Q)
    WAITMS(30)
ELSE
   ... и так далее...

Но лучше сделать подпрограммой
Code: (clickermann) [Select]
SUB(find, $pic, $key)
    IF_PICTURE_IN(0,0,$_xmax,$_ymax, $pic)
        KEYDOWN($key)
        WAITMS(30)
        $down = 1
        WHILE($down = 1)
            GETSCREEN
            IF_PICTURE_IN(0,0,$_xmax,$_ymax, $pic)
                WAITMS(50)
            ELSE
                $down = 0
            END_IF
        END_CYC
        KEYUP($key)
        WAITMS(30)
        GETSCREEN
    END_IF
END_SUB


GETSCREEN
find("A.bmp", 81)
find("B.bmp", 69)
find("C.bmp", 82)


Sergey67

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Помогите написать сценарий.
« Reply #11 on: January 16, 2017, 04:53:57 PM »
Спасибо, попробую дома склею.
Завтра отпишусь.

Sergey67

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Помогите написать сценарий.
« Reply #12 on: January 17, 2017, 01:24:45 PM »
Пока не добрался до игры  :-X
Есть еще одна мысль.
Как и во всякой игре, в этой то же можно посмотреть карту данной области, вызвав ее на экран.
Но карта показывает координаты только текущего места, и не может показать их по перемещению мышки по карте.
Можно ли написать сценарий, что бы по произвольно заданным координатам (допустим 333, 777) высчитывались место
координат и мышка кликала в этом месте. Левый нижний угол карты 0,0 - правый верхний 1000,1000.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите написать сценарий.
« Reply #13 on: January 17, 2017, 02:06:37 PM »
Как и во всякой игре, в этой то же можно посмотреть карту данной области, вызвав ее на экран.
Но карта показывает координаты только текущего места, и не может показать их по перемещению мышки по карте.
Можно ли написать сценарий, что бы по произвольно заданным координатам (допустим 333, 777) высчитывались место
координат и мышка кликала в этом месте. Левый нижний угол карты 0,0 - правый верхний 1000,1000.

Можно. Сценарий будет из команд деления и умножения  ;D