Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Hito

Pages: 1 [2] 3 4 ... 81
16
Общие вопросы / Re: Помогите разобраться
« on: January 22, 2023, 08:52:12 PM »
Всем привет.
Друзья, помогите чуть чуть. У меня есть скрипт, которым я пользовался долго, но почему то он стал работать некорректно и поэтому нужно его немного улучшить.

Есть картинка с поплавком в определённой зоне. Нужно найти поплавок по цвету пикселя, обозначить небольшую зону вокруг него (примерно как на скрине), и в этой небольшой зоне уже искать нужный пискель (белого цвета) после поклёвки и сделать пкм.


Это не БДО случайно?  ;D

17

Quote

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

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

Изучи вот это: (правда примечание тут ошибочное)


И вот это:


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

18

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 Ато тоже голову сломаешь над этим...  ;D



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



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


19
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер

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)

При запуске этого кода возникает ошибка
Игнорируя её, скрипт запускается, но останавливается самопроизвольно со звуком ошибки, почему?

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

20
Общие вопросы / Re: печалька
« on: January 22, 2023, 06:37:11 PM »

Quote

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

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

Ватсон, элементарно! С помощью пикселей определяешь - в какую сторону тебе нужно. И определив, присваиваешь перменной - $position, значение (либо "right", либо "left"), а далее условие SWITCH по этим значениям определает, как действовать.

21

Quote

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

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

Хз - откуда у тебя такая ошибка...

22
Общие вопросы / Re: печалька
« on: January 22, 2023, 05:07:31 PM »

Quote
Бред полный...   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 мс.

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

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

23
Общие вопросы / Re: печалька
« on: January 22, 2023, 01:53:09 PM »

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

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

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

24
Общие вопросы / Re: печалька
« on: January 22, 2023, 01:51:06 PM »

Quote
Бред полный...   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 мс.

25
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер

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)

При запуске этого кода возникает ошибка
Игнорируя её, скрипт запускается, но останавливается самопроизвольно со звуком ошибки, почему?

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

26
Там эти грёбанные, медленно летящие брёвна всё портят. Подлазят под руку.
И немного - белые числа.

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

А че пропал-то?  ;D Вкурил - для чего все это?  ;D ;D ;D Я только с утра вкурил...  ;D На сколько редко ошибается? Сколько поинтов максимально собирал? ))

27
Общие вопросы / Re: печалька
« on: January 22, 2023, 01:27:14 AM »
у вас в корне неверный подход к написанию скрипта.
Специально включил посмотреть в чём там такие непредвиденные сложности и сразу увидел, что с каждым уровнем персонаж увеличивается в размерах, соответственно на каждый уровень нужны индивидуальные  автоматические настройки по высоте палок; на настройках с начальных уровней будет задевать большого перса, а на настройках с продвинутых будет зависать на начальных.

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

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

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

28
Можно ли как то увидеть те точки, на которые ошибочно срабатывает кликер? Ну т.е. сохранение картинок в файл, с пометкой точки на котору реагирвоал кликер

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)

29
Всегда ставлю паузу перед началом сценария, а в конце пауза прост осталась от скопированного отсюда кода




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

В общем что могу сказать... Ты зря перешел на пиксельный разбор. Я сейчас около часа помыкался, проанализировал картинки и все такое... Если брать с бревен чисто пиксели цветные, то нет-нет, но такие же пиксели попадаются в углах выскакивающих цифр. Кликер принимает их за бревна и отсылает перса в другую сторону, а там действительно бревно... Сейчас попробую с бревен брать картинки буквально 3 на 3 пекселя, и искать бревна по этим картинкам.

30
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), а в чем логика, чтобы разбить паузу на две части и выставить их друг за другом...?
Во вторых - покажи на скрине, в какой области ты ищешь эти пиксели.

Pages: 1 [2] 3 4 ... 81