Author Topic: Типовые алгоритмы, вводные статьи (Новички, читайте!)  (Read 328317 times)

0 Members and 4 Guests are viewing this topic.

formica

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Здравствуйте  только недавно начал разбираться с программой и нужна помощь

// если по координатам 100,100 цвет пиксела НЕ 255, то цикл будет работать

GETSCREEN // снимок в буфер кликера


// условие цикла: если функция PXL находит по координатам 100,100 пиксел любого цвета кроме 255
// цикл будет продолжаться, а как найдет цвет 255 то прервется, и скрипт продолжится дальше после END_CYC

WHILE(PXL(100, 100) ! 255)
   WAITMS(100) // задержка
   GETSCREEN // снимок в буфер кликера внутри цикла
END_CYC

как сделать такое условие если по координатам 100,100 цвет пиксела НЕ 255 или не 250, то цикл будет работать
чтобы было два условия окончания цикла

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
GETSCREEN
WHILE((PXL(100, 100) ! 255)|(PXL(100, 100) ! 250))
   WAITMS(100) // задержка
   GETSCREEN // снимок в буфер кликера внутри цикла
END_CYC

formica

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Code: (clickermann) [Select]
GETSCREEN
WHILE((PXL(100, 100) ! 255)|(PXL(100, 100) ! 250))
   WAITMS(100) // задержка
   GETSCREEN // снимок в буфер кликера внутри цикла
END_CYC
уточните пожалуйста цикл закончится если пиксель будет 255 или 250(любого из двух цветов) или должны выполнится оба условия

Kedrick

  • Освоившийся
  • **
  • Posts: 70
    • View Profile
как сделать такое условие если по координатам 100,100 цвет пиксела НЕ 255 или не 250, то цикл будет работать
чтобы было два условия окончания цикла
Ты дал условие.

уточните пожалуйста цикл закончится если пиксель будет 255 или 250(любого из двух цветов) или должны выполнится оба условия
Получил на него точный ответ и спрашиваешь снова то-же самое.
Ты думаешь мы тут собрались чтобы тебя обманывать и радостно хихикать при этом чтоли?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
уточните пожалуйста цикл закончится если пиксель будет 255 или 250(любого из двух цветов) или должны выполнится оба условия

| - обозначает ИЛИ
& - обозначает И
^ - обозначает ИЛИ то ИЛИ другое но не оба

Да пока оба условия не станут ложными цикл будет крутиться, если одно из них будет верным цикл будет продолжаться.
« Last Edit: December 01, 2014, 07:34:16 PM by Oraven »

formica

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
уточните пожалуйста цикл закончится если пиксель будет 255 или 250(любого из двух цветов) или должны выполнится оба условия

| - обозначает ИЛИ
& - обозначает И
^ - обозначает ИЛИ то ИЛИ другое но не оба
спасибо
а теперь объясните мне дураку что у меня неправильно
GETSCREEN
COLORMODE(6, 773, 184, 780, 187)
WHILE((PXL(774, 186) ! 4161407)|(PXL(774, 186) ! 4144959))
   lclick(530, 335)
   WAIT(3)
   GETSCREEN
   COLORMODE(6, 773, 184, 780, 187)
END_CYC
lclick(983, 728)
WAIT(3)
заранее спасибо

formica

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
у меня просто крутит цикл хотя второе условие PXL(774, 186) ! 4144959  выполняется

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Запись в лог нам все разъяснит
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6, 773, 184, 780, 187)
WHILE((PXL(774, 186) ! 4161407)|(PXL(774, 186) ! 4144959))
   LOGWRITE ("Цвет: ", PXL(774, 186))
   lclick(530, 335)
   WAIT(3)
   GETSCREEN
   COLORMODE(6, 773, 184, 780, 187)
END_CYC
lclick(983, 728)
WAIT(3)

formica

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Запись в лог нам все разъяснит
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6, 773, 184, 780, 187)
WHILE((PXL(774, 186) ! 4161407)|(PXL(774, 186) ! 4144959))
   LOGWRITE ("Цвет: ", PXL(774, 186))
   lclick(530, 335)
   WAIT(3)
   GETSCREEN
   COLORMODE(6, 773, 184, 780, 187)
END_CYC
lclick(983, 728)
WAIT(3)
вот что выдал лог
20:14:22 Цвет: 4144959
20:14:25 Цвет: 4144959
20:14:28 Цвет: 4144959
20:14:32 Цвет: 4144959
20:14:35 Цвет: 4144959
20:14:38 Цвет: 4144959
20:15:03 Цвет: 4144959
20:15:06 Цвет: 4144959
20:15:09 Цвет: 4144959
20:15:12 Цвет: 4144959
20:15:15 Цвет: 4144959
20:15:18 Цвет: 4144959
20:15:21 Цвет: 4144959

formica

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
еще один момент
условие WHILE(PXL(774, 186) ! 4161407) работает
 а условие WHILE((PXL(774, 186) ! 4161407)|(PXL(774, 186) ! 4144959)) не работает и для цвета 4144959 и для 4161407


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
А ну да, там же одинаковые координаты, тогда правильно И.

Code: (clickermann) [Select]
    GETSCREEN
    COLORMODE(6, 773, 184, 780, 187)
    WHILE((PXL(774, 186) ! 4161407)&(PXL(774, 186) ! 4144959))
      lclick(530, 335)
      WAIT(3)
      GETSCREEN
      COLORMODE(6, 773, 184, 780, 187)
    END_CYC
    lclick(983, 728)
    WAIT(3)

formica

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
еще один момент
условие WHILE(PXL(774, 186) ! 4161407) работает
 а условие WHILE((PXL(774, 186) ! 4161407)|(PXL(774, 186) ! 4144959)) не работает и для цвета 4144959 и для 4161407

если проверяется один и тот же пиксель одновременно на отсутствие двух цветов, то почему в условиях "или" должно быть "и", ведь пиксель не может быть одновременно двух цветов.
WHILE((PXL(774, 186) ! 4161407)&(PXL(774, 186) ! 4144959))
и вообще не проще применить COLORMODE и проверять один цвет?
спасибо за совет вроде все работает
а смысл в том что цикл должен повторяться пока пиксель не будет 4161407 цвета но может так случится что во время выполнения цикла битва заканчивается и цикл становится бесконечным для этого тот же пиксель проверяется на другой цвет 4144959
в общем еще раз спасибо всем кто мне помог разобраться

Kubus

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
хочу предложить свой вариант определения чисел. я думаю он немного быстрее и легче в настройке.

данный скрипт в данном виде настроен на определения числа номера цвета в км (естественно на моем пк)

Code: (clickermann) [Select]
$1 = 2598951422
$2 = 3563910420
$3 = 1725485783


привет, я недавно стал пользоваться автокликером, возможно я еще далеко не все уловки знаю, заинтересовал твой метод, о котором ты говори в своем посте. Не можешь подсказать что именно ты использовал за основу в своем скрипте. Если можно в общих чертах?
Сейчас пользую алгоритм в котором сравниваются изображения циферок  прочел твой пост - зацепило....
« Last Edit: January 19, 2015, 12:56:23 PM by Kubus »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
привет, я недавно стал пользоваться автокликером, возможно я еще далеко не все уловки знаю, заинтересовал твой метод, о котором ты говори в своем посте. Не можешь подсказать что именно ты использовал за основу в своем скрипте. Если можно в общих чертах?
Сейчас пользую алгоритм в котором сравниваются изображения циферок  прочел твой пост - зацепило....
Он использует PXLCRC - контрольныю сумму области.
Только вот беда, в большинстве случаев в играх (прозрачный/полупрозрачный фон, градиентный фон, сглаживание, сдвиг числа по полю, рендеринг со сдвигом на пол пикселя) похоронят этот способ в зародыше.
Можно использовать только при абсолютно 100% одинаковом отрисовывании чисел. + прицеливаться в первую цифру нужно до пикселя.


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Только вот беда, в большинстве случаев в играх (прозрачный/полупрозрачный фон, градиентный фон, сглаживание, сдвиг числа по полю, рендеринг со сдвигом на пол пикселя) похоронят этот способ в зародыше.

 все верно. но я думаю плюс этого способа в скорости.возможно я и ошибаюсь, вариант с изображениями циферок не проверял :).
 когда мне нужно было считывать четыре семизначных числа (включая знак "-" и ".") из артмани, км с помощью PXLCRC справлялся за 70-90мс. эти числа - координаты. и с такой скоростью у меня в игре автобус ехал как по ниточке. readmem к сожелению нечитает числа с точкой, а в моем случае он вообще нечитает в игре ничего  :-\.
 во втором случае мне нужно было мониторить цены в магазине в игре, опять же скорость это хороше. но ... полупрозрачное окно. подставил под это окно другое окно с постоянным цветом (белое текстовое поле), и проблем нет.