Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Ellen on January 20, 2023, 03:15:20 PM

Title: помогите грамотно построить код
Post by: Ellen on January 20, 2023, 03:15:20 PM
Есть игра https://prizes.gamee.com/game/karatekid2
Играем в рабочем чате в тг на рейтинг до понедельника))
Механика достаточно простая, персонаж может стоять или слева или справа от дерева. управляется или мышкой или кнопками влево-вправо. Задача  направлять персонажа слева или справа от дерева в зависимости от веток, игра в общем доступе, можете открыть посмотреть, если кому интересно.

Пришла идея написать скрипт, с помощью которого автоматически будет анализировано с какой стороны есть ветка и в зависимости от результата приниматься решение нажатия клавиши влево или вправо так как появление абсолютно рандомное, кроме как делать скрин и анализировать по пикселю больше идей нет. В том и сложность, не могу точно сформулировать скрипт.

Идея такая:
Вначале думал делать скрин всей области и считывать сколько веток по разным сторонам, и в зависимости от этого далее нажимать клавиши, но иногда на дереве встречаются ледяные фигуры или х2 т.е. данную часть можно разбить только с 2 или 3 раз.
Решил упростить задачу, делать скрин только одной стороны (левой) и только самую ближнюю зону в которой будет только одна ветка: ветка есть - кнопка вправо, ветки нет - кнопка влево. Так даже если встретятся части которые разбиваются с 2 или 3 раз персонаж просто будет оставаться на одной из сторон и просто прожимать одну сторону до тех пор пока на зоне которая скриншотится не появится ветка.
(https://ibb.co/16J1HBy)  (https://i.ibb.co/k16jYzb/image.png) (https://ibb.co/16J1HBy)
пример льда
(https://ibb.co/WvP454t) (https://i.ibb.co/r2cR0Rs/image.png) (https://ibb.co/WvP454t)
изменить размер картинки онлайн (https://ru.imgbb.com/)
Дело в том что у веток ещё и разная длина


И вот:
(https://i.ibb.co/n8YGx3C/image.jpg) (https://ibb.co/dJVT8bg)
(https://ibb.co/dJVT8bg)
Как грамотно написать скрипт, чтобы скриншотилась область выделенная красным, а поиск пикселя в области которая указана желтым. там на ветках с краю есть однотонная заливка по которой и можно определять где ветка.

В кликере я новичок, знаком только с стандартными функциями, поэтому, если есть кто на опыте, можете подсказать как составить скрипт?
И правильна ли вообще идея?
Title: Re: помогите грамотно построить код
Post by: Ellen on January 20, 2023, 04:02:13 PM
Code: (clickermann) [Select]
WAITMS(100)
GETSCREEN
IF_PIXEL_IN(654,577,747,615,5605331)
KEYPRESS(#RIGHT)
ELSE
KEYPRESS(#LEFT)
END_IF

Вот что удалось написать, но постоянно жмется кнопка влево, значит пиксель не найден?
Title: Re: помогите грамотно построить код
Post by: Ellen on January 20, 2023, 04:15:01 PM
Code: (clickermann) [Select]
WAITMS(100)
GETSCREEN
WAITMS(20)
IF_PIXEL_IN(653,572,762,631,2776231)
WAITMS(20)
LCLICK(956,467)
WAITMS(20)
ELSE
WAITMS(20)
LCLICK(559,498)


END_IF

Перескакивает на разные стороны, но почему то умирает слева на коротких ветках, как исправить?
Title: Re: karatekid2
Post by: kiril on January 20, 2023, 05:34:39 PM
уже писали что-то для вашей игры
https://vk.com/topic-14410794_23383620?offset=40420 (https://vk.com/topic-14410794_23383620?offset=40420)
Title: Re: помогите грамотно построить код
Post by: Vint on January 20, 2023, 06:22:33 PM
Там в указанном месте бывает ещё один цвет если место х3. Но это всё равно не поможет от сбоев.
Указанный цвет искать плохо ещё по причине, что иногда из-за вылетающих брёвен, они перекрывают конец ветки
(https://i.ibb.co/2hSQBBk/Image-00000020.png) (https://imgbb.com/)

Сначала добавил цветов от сероватого наконечника и светлых полос, стало реже, но совсем не пропало.

Code: (clickermann) [Select]
GETSCREEN(930, 740, 950, 885)
IF_PIXEL_IN(930, 740, 950, 885, 1446469, 1446725)
    KEYDOWN(#RIGHT)
    WAITMS(100)
    KEYUP(#RIGHT)
ELSE
    KEYDOWN(#LEFT)
    WAITMS(100)
    KEYUP(#LEFT)
END_IF

WAITMS(500)

Вот в этом месте поиск
(https://i.ibb.co/R99Bf6n/2023-01-20-18-16-36.png) (https://imgbb.com/)

Задержка великовата, т.к. страница нереально подтормаживает и после удара не успевает ветка опуститься. Нужно пробовать у вас конкретно какую задержку ставить.
Title: Re: помогите грамотно построить код
Post by: Vint on January 20, 2023, 06:43:21 PM
Там эти грёбанные, медленно летящие брёвна всё портят. Подлазят под руку.
И немного - белые числа.

P.S. добавил ещё один цвет. Сейчас хорошо работает, но не быстро. Ошибается очень-очень редко.
Title: Re: помогите грамотно построить код
Post by: Ellen on January 20, 2023, 08:39:49 PM
1. В команде поиска пикселя можно указать не один пиксель? Вот тут IF_PIXEL_IN(930, 740, 950, 885, 1446469, 1446725)
2. Около каждой ветки есть треугольная тень, которая прикасается к дереву, поиск ставлю теперь на эту точку, вроде нормально, но иногда путается почему то… видимо реально нужно поиграться с задержками, потому что замечал, что если он увидел ветку слева прыгает направо и сразу возвращается обратно, хотя там ветка
3. Почему вы используете 2 команды на нажатии клавиши вместо одной? Есть какой то секрет?
Title: Re: помогите грамотно построить код
Post by: kiril on January 21, 2023, 01:37:26 AM
1. В команде поиска пикселя можно указать не один пиксель? Вот тут IF_PIXEL_IN(930, 740, 950, 885, 1446469, 1446725)
2. Около каждой ветки есть треугольная тень, которая прикасается к дереву, поиск ставлю теперь на эту точку, вроде нормально, но иногда путается почему то… видимо реально нужно поиграться с задержками, потому что замечал, что если он увидел ветку слева прыгает направо и сразу возвращается обратно, хотя там ветка
3. Почему вы используете 2 команды на нажатии клавиши вместо одной? Есть какой то секрет?
1. пиксель это точка на мониторе, имеющая определённые координаты.
    в показанной вами строке через запятую можно перечислять номера цветов поиска. проверка осуществляется в
    порядке записи цветов и прерывается при первом совпадении.
2. есть смысл попробовать уменьшить область проверки по горизонтали всего до нескольких пикселей и подрезать её снизу, там где с учётом времени на обработку скрипт всё равно не успеет вовремя среагировать.
два  близких проверяемых цвета существенно замедляют проверку, быстрее будет использовать в работе скрипта цветокоррекцию.
3.  в  одну команду клика встроена  внутренняя задержка между зажатием и отжатием клавиши 30 мс.
     раздельные команды позволяют эту задержку настраивать под требования игры или скорость интернета.
Title: Re: помогите грамотно построить код
Post by: Hito on January 21, 2023, 09:25:05 AM
Code: (clickermann) [Select]
GETSCREEN(930, 740, 950, 885)
IF_PIXEL_IN(930, 740, 950, 885, 1446469, 1446725)
    KEYDOWN(#RIGHT)
    WAITMS(100)
    KEYUP(#RIGHT)
ELSE
    KEYDOWN(#LEFT)
    WAITMS(100)
    KEYUP(#LEFT)
END_IF

WAITMS(500)



Я в своих скриптах использую вот такие паузы для кликов:

Code: (clickermann) [Select]
GETSCREEN(930, 740, 950, 885)
IF_PIXEL_IN(930, 740, 950, 885, 1446469, 1446725)
   $left_time = 0
   IF($right_time < $_ms)
      KEYDOWN(#RIGHT)
      WAITMS(100)
      KEYUP(#RIGHT)
      $right_time = $_ms + 500
   END_IF
ELSE
   $right_time = 0
   IF($left_time < $_ms)
      KEYDOWN(#LEFT)
      WAITMS(100)
      KEYUP(#LEFT)
      $left_time = $_ms + 500
   END_IF
END_IF

WAITMS(50)

Может как-то поможет? Кликает с паузами, но во время этих пауз, экран держится под контролем.
Title: Re: помогите грамотно построить код
Post by: Ellen on January 21, 2023, 01:00:08 PM
Code: (clickermann) [Select]
// 1446725
WAITMS(100)
GETSCREEN(771, 567, 786, 682)
IF_PIXEL_IN(771, 567, 786, 682, 1446725, 1579598, 2301001, 5653088)
   $left_time = 0
   IF($right_time < $_ms)
      KEYDOWN(#RIGHT)
      WAITMS(40)
      KEYUP(#RIGHT)
      $right_time = $_ms + 100
   END_IF
ELSE
   $right_time = 0
   IF($left_time < $_ms)
      KEYDOWN(#LEFT)
      WAITMS(40)
      KEYUP(#LEFT)
      $left_time = $_ms + 100
   END_IF
END_IF
 
WAITMS(20)

Вот последний рабочий код, но спотыкается когда белые цифры вылетают после удара, думал покопаться в js игры и отключить загрузку цифр вообще... но после этого висит окно загрузки бесконечно, а в панели разработчика выходит ошибка о том, что не все данные были загружены для запуска игры Может тут есть эксперты по js? Как отключить цифры или есть возможность подать на сервер ответ, в котором будет прописано желаемое количество очков?
Title: Re: помогите грамотно построить код
Post by: Hito on January 21, 2023, 01:53:12 PM
Code: (clickermann) [Select]
// 1446725
WAITMS(100)
GETSCREEN(771, 567, 786, 682)
IF_PIXEL_IN(771, 567, 786, 682, 1446725, 1579598, 2301001, 5653088)
   $left_time = 0
   IF($right_time < $_ms)
      KEYDOWN(#RIGHT)
      WAITMS(40)
      KEYUP(#RIGHT)
      $right_time = $_ms + 100
   END_IF
ELSE
   $right_time = 0
   IF($left_time < $_ms)
      KEYDOWN(#LEFT)
      WAITMS(40)
      KEYUP(#LEFT)
      $left_time = $_ms + 100
   END_IF
END_IF
 
WAITMS(20)

Вот последний рабочий код, но спотыкается когда белые цифры вылетают после удара, думал покопаться в js игры и отключить загрузку цифр вообще... но после этого висит окно загрузки бесконечно, а в панели разработчика выходит ошибка о том, что не все данные были загружены для запуска игры Может тут есть эксперты по js? Как отключить цифры или есть возможность подать на сервер ответ, в котором будет прописано желаемое количество очков?

Во первых - зачем тебе пауза в начале скрипта и в конце? У тебя в скрипте (в его конце) срабатывает пауза, после которой он выходит в свое начало и снова срабатывает пауза... Где логика...? Если тебе нужна пауза в 120 мс, то укажи в конце скрипта WAITMS(120), а в чем логика, чтобы разбить паузу на две части и выставить их друг за другом...?
Во вторых - покажи на скрине, в какой области ты ищешь эти пиксели.
Title: Re: помогите грамотно построить код
Post by: Ellen on January 21, 2023, 02:14:26 PM
Всегда ставлю паузу перед началом сценария, а в конце пауза прост осталась от скопированного отсюда кода

(https://i.ibb.co/FDzLgKs/1.png) (https://imgbb.com/)
(https://i.ibb.co/R6XGmNs/2.png) (https://imgbb.com/)

Первый - угол тени
Второй - край бревна, который касается дерева
Третий, четвертый, такие же края бревен, только других цветов
Title: Re: помогите грамотно построить код
Post by: Hito on January 21, 2023, 03:02:35 PM
Всегда ставлю паузу перед началом сценария, а в конце пауза прост осталась от скопированного отсюда кода

(https://i.ibb.co/FDzLgKs/1.png) (https://imgbb.com/)
(https://i.ibb.co/R6XGmNs/2.png) (https://imgbb.com/)

Первый - угол тени
Второй - край бревна, который касается дерева
Третий, четвертый, такие же края бревен, только других цветов

В общем что могу сказать... Ты зря перешел на пиксельный разбор. Я сейчас около часа помыкался, проанализировал картинки и все такое... Если брать с бревен чисто пиксели цветные, то нет-нет, но такие же пиксели попадаются в углах выскакивающих цифр. Кликер принимает их за бревна и отсылает перса в другую сторону, а там действительно бревно... Сейчас попробую с бревен брать картинки буквально 3 на 3 пекселя, и искать бревна по этим картинкам.
Title: Re: помогите грамотно построить код
Post by: Ellen on January 21, 2023, 03:53:50 PM
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер
Title: Re: помогите грамотно построить код
Post by: Ellen on January 21, 2023, 04:00:12 PM
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на которую реагировал кликер
Title: Re: помогите грамотно построить код
Post by: Hito on January 21, 2023, 04:13:44 PM
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер

Code: (clickermann) [Select]
$path = "screens\Цех"



IF($start = 0)
   $start = 1
   
   if (FExists($path)=0)
      FCREATE ($path)
   end_if
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   FOR($a=0,$a<ARRSIZE($arr))
      FDELETE (STRCONCAT($path,"\",$arr[$a]))
   END_CYC
   UNDEFINE ($arr)
END_IF



SUB(bordering, $x_bord1,$y_bord1, $x_bord2,$y_bord2, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord2+1,$y_bord1-1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord2+1, $x_bord2+1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord1-1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord2+1,$y_bord1-1, $x_bord2+1,$y_bord2+1, -1, $color)
END_SUB

GETSCREEN(771, 567, 786, 682)
IF_PIXEL_IN(771, 567, 786, 682, 1446725, 1579598, 2301001, 5653088)
   bordering ($_return1,$_return2, $_return1,$_return2, 255)
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   $n = ARRSIZE($arr)
   UNDEFINE ($arr)
   
   SCREENSHOTFIX(771, 567, 786, 682, STRCONCAT($path,"\",$n,".bmp"), 0)
   
   $left_time = 0
   IF($right_time < $_ms)
      KEYDOWN(#RIGHT)
      WAITMS(40)
      KEYUP(#RIGHT)
      $right_time = $_ms + 100
   END_IF
ELSE
   $right_time = 0
   IF($left_time < $_ms)
      KEYDOWN(#LEFT)
      WAITMS(40)
      KEYUP(#LEFT)
      $left_time = $_ms + 100
   END_IF
END_IF

WAITMS(50)
Title: Re: печалька
Post by: kiril on January 21, 2023, 05:46:00 PM
у вас в корне неверный подход к написанию скрипта.
Специально включил посмотреть в чём там такие непредвиденные сложности и сразу увидел, что с каждым уровнем персонаж увеличивается в размерах, соответственно на каждый уровень нужны индивидуальные  автоматические настройки по высоте палок; на настройках с начальных уровней будет задевать большого перса, а на настройках с продвинутых будет зависать на начальных.
Title: Re: печалька
Post by: Hito on January 22, 2023, 01:27:14 AM
у вас в корне неверный подход к написанию скрипта.
Специально включил посмотреть в чём там такие непредвиденные сложности и сразу увидел, что с каждым уровнем персонаж увеличивается в размерах, соответственно на каждый уровень нужны индивидуальные  автоматические настройки по высоте палок; на настройках с начальных уровней будет задевать большого перса, а на настройках с продвинутых будет зависать на начальных.

Бред полный...   https://www.youtube.com/watch?v=DkmlMLyPFG0 (https://www.youtube.com/watch?v=DkmlMLyPFG0)

А хотя не... Сейчас вот обновил страницу и начал с начала. Действительно перс пониже и частенько падает от палок. Но он очень быстро вкачивается до дедка с черным поясом, а этот дедок уже по ходу не трансформируется...

Ну, вот я ровно за 15 минут с самого первого левла стал дедком с черным поясом. Оставлю скрипт до утра. Посмотрим - что он там набьет к утру... Пошел спать.
Title: Re: помогите грамотно построить код
Post by: Hito on January 22, 2023, 09:12:08 AM
Там эти грёбанные, медленно летящие брёвна всё портят. Подлазят под руку.
И немного - белые числа.

P.S. добавил ещё один цвет. Сейчас хорошо работает, но не быстро. Ошибается очень-очень редко.

А че пропал-то?  ;D Вкурил - для чего все это?  ;D ;D ;D Я только с утра вкурил...  ;D На сколько редко ошибается? Сколько поинтов максимально собирал? ))
Title: Re: печалька
Post by: Ellen on January 22, 2023, 01:31:11 PM

Quote
Бред полный...   https://www.youtube.com/watch?v=DkmlMLyPFG0 (https://www.youtube.com/watch?v=DkmlMLyPFG0)
Вот то скорость... это какой код в работе?

Я добился того, чтобы он не ошибался, ввел абсолютно все точки + добавил времени перед тем как сделать скрин, чтобы белые цифры успели проскочить, в итоге более-менее работает, но когда долго нет бонуса времени, то проигрывает только из за времени, задержка перед скрином у меня 170мс, если делать больше на хотя бы 5, но уже проигрывает из за цифр, но как добиться той скорости, которая в видео?
Title: Re: помогите грамотно построить код
Post by: Ellen on January 22, 2023, 01:37:17 PM
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер

Code: (clickermann) [Select]
$path = "screens\Цех"



IF($start = 0)
   $start = 1
   
   if (FExists($path)=0)
      FCREATE ($path)
   end_if
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   FOR($a=0,$a<ARRSIZE($arr))
      FDELETE (STRCONCAT($path,"\",$arr[$a]))
   END_CYC
   UNDEFINE ($arr)
END_IF



SUB(bordering, $x_bord1,$y_bord1, $x_bord2,$y_bord2, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord2+1,$y_bord1-1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord2+1, $x_bord2+1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord1-1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord2+1,$y_bord1-1, $x_bord2+1,$y_bord2+1, -1, $color)
END_SUB

GETSCREEN(771, 567, 786, 682)
IF_PIXEL_IN(771, 567, 786, 682, 1446725, 1579598, 2301001, 5653088)
   bordering ($_return1,$_return2, $_return1,$_return2, 255)
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   $n = ARRSIZE($arr)
   UNDEFINE ($arr)
   
   SCREENSHOTFIX(771, 567, 786, 682, STRCONCAT($path,"\",$n,".bmp"), 0)
   
   $left_time = 0
   IF($right_time < $_ms)
      KEYDOWN(#RIGHT)
      WAITMS(40)
      KEYUP(#RIGHT)
      $right_time = $_ms + 100
   END_IF
ELSE
   $right_time = 0
   IF($left_time < $_ms)
      KEYDOWN(#LEFT)
      WAITMS(40)
      KEYUP(#LEFT)
      $left_time = $_ms + 100
   END_IF
END_IF

WAITMS(50)

При запуске этого кода возникает ошибка (https://i.ibb.co/rQdbMKx/Screenshot-1.png) (https://imgbb.com/)
Игнорируя её, скрипт запускается, но останавливается самопроизвольно со звуком ошибки, почему?
Title: Re: печалька
Post by: Ellen on January 22, 2023, 01:39:55 PM

Quote
Ну, вот я ровно за 15 минут с самого первого левла стал дедком с черным поясом. Оставлю скрипт до утра. Посмотрим - что он там набьет к утру... Пошел спать.

И сколько результат?
Title: Re: помогите грамотно построить код
Post by: Hito on January 22, 2023, 01:47:59 PM
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер

Code: (clickermann) [Select]
$path = "screens\Цех"



IF($start = 0)
   $start = 1
   
   if (FExists($path)=0)
      FCREATE ($path)
   end_if
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   FOR($a=0,$a<ARRSIZE($arr))
      FDELETE (STRCONCAT($path,"\",$arr[$a]))
   END_CYC
   UNDEFINE ($arr)
END_IF



SUB(bordering, $x_bord1,$y_bord1, $x_bord2,$y_bord2, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord2+1,$y_bord1-1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord2+1, $x_bord2+1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord1-1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord2+1,$y_bord1-1, $x_bord2+1,$y_bord2+1, -1, $color)
END_SUB

GETSCREEN(771, 567, 786, 682)
IF_PIXEL_IN(771, 567, 786, 682, 1446725, 1579598, 2301001, 5653088)
   bordering ($_return1,$_return2, $_return1,$_return2, 255)
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   $n = ARRSIZE($arr)
   UNDEFINE ($arr)
   
   SCREENSHOTFIX(771, 567, 786, 682, STRCONCAT($path,"\",$n,".bmp"), 0)
   
   $left_time = 0
   IF($right_time < $_ms)
      KEYDOWN(#RIGHT)
      WAITMS(40)
      KEYUP(#RIGHT)
      $right_time = $_ms + 100
   END_IF
ELSE
   $right_time = 0
   IF($left_time < $_ms)
      KEYDOWN(#LEFT)
      WAITMS(40)
      KEYUP(#LEFT)
      $left_time = $_ms + 100
   END_IF
END_IF

WAITMS(50)

При запуске этого кода возникает ошибка (https://i.ibb.co/rQdbMKx/Screenshot-1.png) (https://imgbb.com/)
Игнорируя её, скрипт запускается, но останавливается самопроизвольно со звуком ошибки, почему?

Ты скрипт сохраняешь куда-нибудь прежде, чем его запустить? Или ты просто отсюда копируешь его, вставляешь в кликер и погнал...?
Title: Re: печалька
Post by: Hito on January 22, 2023, 01:51:06 PM

Quote
Бред полный...   https://www.youtube.com/watch?v=DkmlMLyPFG0 (https://www.youtube.com/watch?v=DkmlMLyPFG0)
Вот то скорость... это какой код в работе?

Я добился того, чтобы он не ошибался, ввел абсолютно все точки + добавил времени перед тем как сделать скрин, чтобы белые цифры успели проскочить, в итоге более-менее работает, но когда долго нет бонуса времени, то проигрывает только из за времени, задержка перед скрином у меня 170мс, если делать больше на хотя бы 5, но уже проигрывает из за цифр, но как добиться той скорости, которая в видео?

Code: (clickermann) [Select]
SWITCH($position)
   CASE("right")
     
      $left_time = 0
      IF($right_time < $_ms)
         KEYPRESS(#RIGHT)
         $right_time = $_ms + 100
      END_IF
     
   CASE("left")
     
      $right_time = 0
      IF($left_time < $_ms)
         KEYPRESS(#LEFT)
         $left_time = $_ms + 100
      END_IF
     
END_SWITCH

И в конце скрипта пауза на 50 мс.
Title: Re: печалька
Post by: Hito on January 22, 2023, 01:53:09 PM

Quote
Ну, вот я ровно за 15 минут с самого первого левла стал дедком с черным поясом. Оставлю скрипт до утра. Посмотрим - что он там набьет к утру... Пошел спать.

И сколько результат?

Ну, он 3X вкачал и на этом остановился. По ходу это максимум.
Title: Re: печалька
Post by: Ellen on January 22, 2023, 02:44:45 PM

Quote
Ну, вот я ровно за 15 минут с самого первого левла стал дедком с черным поясом. Оставлю скрипт до утра. Посмотрим - что он там набьет к утру... Пошел спать.

И сколько результат?

Ну, он 3X вкачал и на этом остановился. По ходу это максимум.

ну 3х то множитель очков, а сам рейтинг формируется из цифр, которые находятся вверху дерева
Title: Re: печалька
Post by: Ellen on January 22, 2023, 02:45:23 PM

Quote
Бред полный...   https://www.youtube.com/watch?v=DkmlMLyPFG0 (https://www.youtube.com/watch?v=DkmlMLyPFG0)
Вот то скорость... это какой код в работе?

Я добился того, чтобы он не ошибался, ввел абсолютно все точки + добавил времени перед тем как сделать скрин, чтобы белые цифры успели проскочить, в итоге более-менее работает, но когда долго нет бонуса времени, то проигрывает только из за времени, задержка перед скрином у меня 170мс, если делать больше на хотя бы 5, но уже проигрывает из за цифр, но как добиться той скорости, которая в видео?

Code: (clickermann) [Select]
SWITCH($position)
   CASE("right")
     
      $left_time = 0
      IF($right_time < $_ms)
         KEYPRESS(#RIGHT)
         $right_time = $_ms + 100
      END_IF
     
   CASE("left")
     
      $right_time = 0
      IF($left_time < $_ms)
         KEYPRESS(#LEFT)
         $left_time = $_ms + 100
      END_IF
     
END_SWITCH

И в конце скрипта пауза на 50 мс.

А где здесь поиск пикселя?
Title: Re: помогите грамотно построить код
Post by: Ellen on January 22, 2023, 02:46:30 PM

Quote

Ты скрипт сохраняешь куда-нибудь прежде, чем его запустить? Или ты просто отсюда копируешь его, вставляешь в кликер и погнал...?

Да, сохраняю в папку, где находятся другие наработки по этой игре. Копировал - сохранил - запустил
Title: Re: печалька
Post by: Hito on January 22, 2023, 05:07:31 PM

Quote
Бред полный...   https://www.youtube.com/watch?v=DkmlMLyPFG0 (https://www.youtube.com/watch?v=DkmlMLyPFG0)
Вот то скорость... это какой код в работе?

Я добился того, чтобы он не ошибался, ввел абсолютно все точки + добавил времени перед тем как сделать скрин, чтобы белые цифры успели проскочить, в итоге более-менее работает, но когда долго нет бонуса времени, то проигрывает только из за времени, задержка перед скрином у меня 170мс, если делать больше на хотя бы 5, но уже проигрывает из за цифр, но как добиться той скорости, которая в видео?

Code: (clickermann) [Select]
SWITCH($position)
   CASE("right")
     
      $left_time = 0
      IF($right_time < $_ms)
         KEYPRESS(#RIGHT)
         $right_time = $_ms + 100
      END_IF
     
   CASE("left")
     
      $right_time = 0
      IF($left_time < $_ms)
         KEYPRESS(#LEFT)
         $left_time = $_ms + 100
      END_IF
     
END_SWITCH

И в конце скрипта пауза на 50 мс.

А где здесь поиск пикселя?

А ты не в состоянии поиск пикселей намутить что ль...? ))
Title: Re: помогите грамотно построить код
Post by: Hito on January 22, 2023, 05:08:01 PM

Quote

Ты скрипт сохраняешь куда-нибудь прежде, чем его запустить? Или ты просто отсюда копируешь его, вставляешь в кликер и погнал...?

Да, сохраняю в папку, где находятся другие наработки по этой игре. Копировал - сохранил - запустил

Хз - откуда у тебя такая ошибка...
Title: Re: печалька
Post by: Ellen on January 22, 2023, 05:26:59 PM

Quote

А ты не в состоянии поиск пикселей намутить что ль...? ))

Не полностью знаю команды CASE и SWITCH($position)
В какую часть подставлять поиск пикселя?
Что обрабатывают данные команды конкретно тут?
Title: Re: печалька
Post by: Hito on January 22, 2023, 06:37:11 PM

Quote

А ты не в состоянии поиск пикселей намутить что ль...? ))

Не полностью знаю команды CASE и SWITCH($position)
В какую часть подставлять поиск пикселя?
Что обрабатывают данные команды конкретно тут?

Ватсон, элементарно! С помощью пикселей определяешь - в какую сторону тебе нужно. И определив, присваиваешь перменной - $position, значение (либо "right", либо "left"), а далее условие SWITCH по этим значениям определает, как действовать.
Title: Re: помогите грамотно построить код
Post by: Hito on January 22, 2023, 06:42:50 PM
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер

Code: (clickermann) [Select]
$path = "screens\Цех"



IF($start = 0)
   $start = 1
   
   if (FExists($path)=0)
      FCREATE ($path)
   end_if
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   FOR($a=0,$a<ARRSIZE($arr))
      FDELETE (STRCONCAT($path,"\",$arr[$a]))
   END_CYC
   UNDEFINE ($arr)
END_IF



SUB(bordering, $x_bord1,$y_bord1, $x_bord2,$y_bord2, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord2+1,$y_bord1-1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord2+1, $x_bord2+1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord1-1,$y_bord1-1, $x_bord1-1,$y_bord2+1, -1, $color)
   PXLREPLACE($x_bord2+1,$y_bord1-1, $x_bord2+1,$y_bord2+1, -1, $color)
END_SUB

GETSCREEN(771, 567, 786, 682)
IF_PIXEL_IN(771, 567, 786, 682, 1446725, 1579598, 2301001, 5653088)
   bordering ($_return1,$_return2, $_return1,$_return2, 255)
   
   GETFILELIST ($arr, STRCONCAT($path,"\*.bmp"))
   $n = ARRSIZE($arr)
   UNDEFINE ($arr)
   
   SCREENSHOTFIX(771, 567, 786, 682, STRCONCAT($path,"\",$n,".bmp"), 0)
   
   $left_time = 0
   IF($right_time < $_ms)
      KEYDOWN(#RIGHT)
      WAITMS(40)
      KEYUP(#RIGHT)
      $right_time = $_ms + 100
   END_IF
ELSE
   $right_time = 0
   IF($left_time < $_ms)
      KEYDOWN(#LEFT)
      WAITMS(40)
      KEYUP(#LEFT)
      $left_time = $_ms + 100
   END_IF
END_IF

WAITMS(50)

При запуске этого кода возникает ошибка (https://i.ibb.co/rQdbMKx/Screenshot-1.png) (https://imgbb.com/)
Игнорируя её, скрипт запускается, но останавливается самопроизвольно со звуком ошибки, почему?

Ты вот эту переменную в скрипте оставляешь? ($path = "screens\Цех")
Title: Re: помогите грамотно построить код
Post by: Ellen on January 22, 2023, 07:32:39 PM

Quote

Ты вот эту переменную в скрипте оставляешь? ($path = "screens\Цех")

Нет, пробовал оставлять только screens или давал другое имя, все равно упирается в ошибку, тут скорее всего всё работает просто я слаб знаниями в области этих переменных...  ???
Title: Re: помогите грамотно построить код
Post by: Hito on January 22, 2023, 07:37:28 PM

Quote

Ты вот эту переменную в скрипте оставляешь? ($path = "screens\Цех")

Нет, пробовал оставлять только screens или давал другое имя, все равно упирается в ошибку, тут скорее всего всё работает просто я слаб знаниями в области этих переменных...  ???

Ахах  ;D Я тут (на этом форуме) лет 10 назад Винта с этими переменными так достал, что он мне в личку начал писать и интересоваться - я действительно никак понять не могу, или троллю форум своими вопросами  ;D

Короче вот мой скрипт полный.

Code: (clickermann) [Select]
#include "subs\bordering.cms"
#include "subs\MouseClick.cms"



$path = "screens\Цех"


IF($start = 0)
   $start = 1
   
   if (FExists($path)=0)
      FCREATE ($path)
   end_if
   
   GETFILELIST ($arr, "screens\Цех\*.bmp")
   FOR($a=0,$a<ARRSIZE($arr))
      FDELETE (STRCONCAT("screens\Цех\",$arr[$a]))
   END_CYC
   UNDEFINE ($arr)
END_IF

THREAD(hotkeys, 1)
   
   IF(ISKEYDOWN(#DOWN)=1)
      LOGWRITE ("Стоп...")
      $script = 0
      WHILE(ISKEYDOWN(#DOWN)=1)
         WAITMS(50)
      END_CYC
   END_IF
   
   IF(ISKEYDOWN(#LEFT)=1)
      LOGWRITE ("Поехали!")
      $position = "left"
      $script = 1
      WHILE(ISKEYDOWN(#LEFT)=1)
         WAITMS(50)
      END_CYC
   END_IF
   
   IF(ISKEYDOWN(#RIGHT)=1)
      LOGWRITE ("Поехали!")
      $position = "right"
      $script = 1
      WHILE(ISKEYDOWN(#RIGHT)=1)
         WAITMS(50)
      END_CYC
   END_IF
   
   WAITMS(50)
   
END_THREAD



IF($script > 0)
   
   GETSCREEN (1061,800, 1505,1351)
   
   bordering (1061+170,917, 1061+194,1032, 255) // Обводим поле 1
   bordering (1061+243,917, 1061+267,1032, 255) // Обводим поле 2
   bordering (1086,917, 1259-32,1032, 255) // Обводим поле 3
   bordering (1300+32,917, 1479,1032, 255) // Обводим поле 4
   
   $pos = "_"
   IF_PICTURE_IN (1061+81,800+517, 1061+86,800+521, "screens\упс.bmp", -1, 100) // Здесь определяем фейл и конец игры
      MouseClick("L", $_return1+50, $_return2+10) // И кликаем, чтобы начать игру заново
      WAITMS(1000)
   else
      IF_PIXEL_IN(1061+170,917, 1061+194,1032, 1446725,5256016)  // Здесь ищем пиксель в поле 1
         bordering ($_return1,$_return2, $_return1,$_return2, 255) // Обводим его, для инфы на скрине
         $pos = "right"
      else
         
      END_IF
     
      IF_PIXEL_IN(1061+243,917, 1061+267,1032, 1446725,5256016) // Здесь ищем пиксель в поле 2
         bordering ($_return1,$_return2, $_return1,$_return2, 255) // Тоже обводим
         $pos = "left"
      else
         
      END_IF
   END_IF
   
   IF($pos = "_") // Если в поле 1 и 2 пиксели были не найдены, то ищем пиксели в поле 3 и 4. Причем не нужно в левый поиск пихать пиксели правых веток и наоборот.
     
      IF_PIXEL_IN(1086,917, 1259-32,1032, 5605331,10072785,10784132)
         bordering ($_return1,$_return2, $_return1,$_return2, 255)
         $pos = "right"
      else
         
      END_IF
     
      IF_PIXEL_IN(1300+32,917, 1479,1032, 1916556,5589345)
         bordering ($_return1,$_return2, $_return1,$_return2, 255)
         $pos = "left"
      else
         
      END_IF
     
   END_IF
   
   GETFILELIST ($arr, "screens\Цех\*.bmp") // Здесь чисто считаем сколько уже сохранено скринов, чтобы
   $n = ARRSIZE($arr) // скрины сохранять по порядку
   UNDEFINE ($arr)
   SCREENSHOTFIX(1061,800, 1505,1251, STRCONCAT("screens\Цех\",$n,".bmp"), 0)
   
   IF($pos ! "_") // Если в каком-то из полей была определена ветка
      $position = $pos // То присваиваем значение right или left
   END_IF
   
   // Ну, а если ветка не была найдена вообще, то пусть перс долбит с той стороны, с которой долбил на прошлом кругу скрипта
   
   SWITCH($position)
      CASE("right")
         
         $left_time = 0
         IF($right_time < $_ms)
            KEYPRESS(#RIGHT)
            $right_time = $_ms + 150
         END_IF
         
      CASE("left")
         
         $right_time = 0
         IF($left_time < $_ms)
            KEYPRESS(#LEFT)
            $left_time = $_ms + 150
         END_IF
         
   END_SWITCH
   
END_IF

WAITMS(50)

По поводу MouseClick("L", $_return1+50, $_return2+10) - http://crapware.aidf.org/forum/index.php?topic=5750.0 (http://crapware.aidf.org/forum/index.php?topic=5750.0) Ато тоже голову сломаешь над этим...  ;D

(https://i.ibb.co/2PJ8Xwg/189.jpg)

В 1 и 2 зоне ищем ветки, на которых НЕ висят куски льда. Эти ветки мы ищем по цвету пикселей, взятых "из под мышки" этих веток.
В зонах 3 и 4 мы ищем ветки, на которых висят куски льда. Их мы ищем по пикселям, взятым со срезов веток.

(https://i.ibb.co/Zdbm8V8/163.jpg)

Все пиксели ищем без COLORMODE. Они так уникальнее...
Итог...

(https://i.ibb.co/xJ46Nm1/QIP-Shot-Screen-271.jpg)
Title: Re: помогите грамотно построить код
Post by: Hito on January 22, 2023, 08:26:05 PM

Quote

Ты вот эту переменную в скрипте оставляешь? ($path = "screens\Цех")

Нет, пробовал оставлять только screens или давал другое имя, все равно упирается в ошибку, тут скорее всего всё работает просто я слаб знаниями в области этих переменных...  ???

Изучи вот это: (правда примечание тут ошибочное)
(https://i.ibb.co/3YJDt53/QIP-Shot-Screen-0001.jpg)

И вот это:
(https://i.ibb.co/hMpKTvW/QIP-Shot-Screen-0002.jpg)

Code: (clickermann) [Select]
$path = "screens\Цех" // В переменную $path мы подставляем значение - "screens\Цех"
Code: (clickermann) [Select]
if (FExists($path)=0) // Тут у нас по сути получается - if (FExists("screens\Цех")=0). Это условие "звучит" так - "Если этих папок нет"
Code: (clickermann) [Select]
FCREATE ($path) // И если не существуют, то создаем их, чтобы потом в них скрины сохранять.
Жаль, что когда тут просят помощи, в итоге приходится тратить время, на ссылки в справку кликера, которую вы похоже даже не открываете. Я в свое время хоть и ставил на уши этот форум своими вопросами, эту справку читал и перечитывал раз 300 и потом уже доставал своими вопросами о том, что я никак не мог понять...
Title: Re: помогите грамотно построить код
Post by: Vint on January 23, 2023, 09:52:11 AM

Изучи вот это: (правда примечание тут ошибочное)
(https://i.ibb.co/3YJDt53/QIP-Shot-Screen-0001.jpg)

Code: (clickermann) [Select]
if (FExists($path)=0) // Тут у нас по сути получается - if (FExists("screens\Цех")=0). Это условие "звучит" так - "Если этих папок нет"
Жаль, что когда тут просят помощи, в итоге приходится тратить время, на ссылки в справку кликера, которую вы похоже даже не открываете. Я в свое время хоть и ставил на уши этот форум своими вопросами, эту справку читал и перечитывал раз 300 и потом уже доставал своими вопросами о том, что я никак не мог понять...

Причина очень простая. Ты не указал версию кликера под которую писал скрипт. Нужно всегда указывать версии ПО, особенно если используешь не релизные версии.
FExists появилась только в 4.14 (и FCREATE там же), а версия 4.14 с бэты так и не вылезла. Человек наверняка использует версию 4.13.
Title: Re: помогите грамотно построить код
Post by: Vint on January 23, 2023, 09:54:51 AM
А че пропал-то?  ;D Вкурил - для чего все это?  ;D ;D ;D Я только с утра вкурил...  ;D На сколько редко ошибается? Сколько поинтов максимально собирал? ))
Я уже уходя с работы тему увидел. Набросал скрипт, потестил, сделал ещё 3 варианта и свалил домой. А дома у меня выходные  :D поэтому такие конкурсы не для меня. Нафиг это олимпиадное программирование на время.
Title: Re: помогите грамотно построить код
Post by: Hito on January 23, 2023, 02:52:47 PM

Изучи вот это: (правда примечание тут ошибочное)
(https://i.ibb.co/3YJDt53/QIP-Shot-Screen-0001.jpg)

Code: (clickermann) [Select]
if (FExists($path)=0) // Тут у нас по сути получается - if (FExists("screens\Цех")=0). Это условие "звучит" так - "Если этих папок нет"
Жаль, что когда тут просят помощи, в итоге приходится тратить время, на ссылки в справку кликера, которую вы похоже даже не открываете. Я в свое время хоть и ставил на уши этот форум своими вопросами, эту справку читал и перечитывал раз 300 и потом уже доставал своими вопросами о том, что я никак не мог понять...

Причина очень простая. Ты не указал версию кликера под которую писал скрипт. Нужно всегда указывать версии ПО, особенно если используешь не релизные версии.
FExists появилась только в 4.14 (и FCREATE там же), а версия 4.14 с бэты так и не вылезла. Человек наверняка использует версию 4.13.

Да просто кликер уже не развивается и я забыл про версии.
Title: Re: помогите грамотно построить код
Post by: Hito on January 23, 2023, 02:53:55 PM
А че пропал-то?  ;D Вкурил - для чего все это?  ;D ;D ;D Я только с утра вкурил...  ;D На сколько редко ошибается? Сколько поинтов максимально собирал? ))
Я уже уходя с работы тему увидел. Набросал скрипт, потестил, сделал ещё 3 варианта и свалил домой. А дома у меня выходные  :D поэтому такие конкурсы не для меня. Нафиг это олимпиадное программирование на время.

Ну, там просто если залогиниться, то становится видно, что это всё ради реальных лаве ))))