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 - Oraven

Pages: 1 ... 244 245 [246]
3676
Общие вопросы / Re: IF_PICTURE_IN
« on: October 20, 2012, 06:00:18 PM »
Нажимаешь кнопку PrintsScreen на клавиатуре. Снимок экрана помещается в буфер.
Далее запускаешь любой графический редактор (Paint, Photoshop) и вставляешь снимок (Ctrl+V)
Вырезаешь маленькую картинку 50X50 макс. Чем меньше картинка тем быстрее будет поиск.
Сохраняешь в формат BMP 24 bit
Кладешь картинку в папку со скриптом.

3677
Общие вопросы / Re: IF_PICTURE_IN
« on: October 20, 2012, 05:05:36 PM »
Функция GETSCREEN делает снимок в БУФЕР программы. Он находится в виртуальной памяти а не на диске!

3678
$rnd_x = RND(50,100)//Разброс по x
$rnd_y = RND(50,100)//Разброс по y
LCLICK($rnd_x,$rnd_y)
этот макрос работает не так как мне надо,надо чтобы он нажимал хаотично не по всему экрану, а только в выделенной области. Пусть это будет квадрат 5х5 см в нижнем левом углу. Как сделать?

Проще писать так.
Предположим тебе нужно кликать по координате 400, 500

Code: [Select]
LCLICK(400+RND(-5,5),500+RND(-5,5))
в результате кликер будет кликать в области 10 пикселов от координаты 400, 500

3679
Code: (clickermann) [Select]
$break = 0
WHILE($break = 0) // если переменная break равна 0 то цикл работает
   GETSCREEN
   IF_PIXEL_IN(50,50, 100,100, 255)
      $break = 1
      LCLICK(75,75)//Нажатие мышкой
   END_IF
   WAITMS(100)//Ожидание между проверками
END_CYC

Переменной $break присваивается значение 1 (теперь цикл WHILE($break = 0) уже работать не будет, сценарий продолжится)

3680
Использование / Re: Гнев Богов
« on: October 19, 2012, 01:11:47 PM »
Нет, по пикселам фигня получается. Вот результат по  цветам только фио шмота в одной точке координат: 7278415, 4132655, 7282511, 8326991, 5181247, 11476863  такая же история с синими и зелёными вещами. в одной точке координат вроде фон например зелёный, а по пикселям фигня получается, каждый раз цвет разный.  игрался с цветокорекцией тоже. так что выборка по цветам пролетает. или я дебил.

Щас только разглядел, у тебя на скрине подписи к предметам тоже имеют свой цвет!
Используй IF_PIXEL_IN чтобы искать в области "подписи" нужный тебе цвет!

3681
Использование / Re: Гнев Богов
« on: October 18, 2012, 06:46:01 PM »
Нужно использовать цветокоррекцию, и думаю в твоем случает проще использовать IF_PIXEL_IN. Вставь несколько цветов если потребуется.
Помни, при наведении мыши кнопки могут менять цвет.

getscreen
// поиск красного или зеленого пиксела
IF_PIXEL_IN (10,20, 100, 40, 255, 65280)
 lclick(200, 300)
END_IF

3682
Скрипт лучше всех, но вот это лишнее...

#name "MOVE2 include"

$MOVE2_X
$MOVE2_Y
$MOVE2_X_SPEED
$MOVE2_Y_SPEED
$MOVE2_ROUNDED_SPEED


$MOVE2_END_X = $_xmouse // Конечная координата X
$MOVE2_END_Y = $_ymouse// Конечная координата Y
$MOVE2_SPEED = 1 // За сколько секунд курсор пройдет путь
$MOVE2_OPSPERSEC = 850 //Примерно 850 операций в секунду, может различаться на разных компьютерах
$MOVE2_DEBUG = 0 // 1 для вывода сообщений в лог

SUB(MOVE2)
   $MOVE2_X = $_xmouse
   $MOVE2_Y = $_ymouse
   
   $MOVE2_ROUNDED_SPEED = ROUND($MOVE2_SPEED*$MOVE2_OPSPERSEC,0)
   $MOVE2_X_SPEED = ($MOVE2_END_X-$MOVE2_X)/($MOVE2_ROUNDED_SPEED)
   $MOVE2_Y_SPEED = ($MOVE2_END_Y-$MOVE2_Y)/($MOVE2_ROUNDED_SPEED)
   
   IF($MOVE2_DEBUG = 1)
      PRINT("start")
   END_IF
   FOR($i, $i < $MOVE2_ROUNDED_SPEED){
      $MOVE2_X = $MOVE2_X+$MOVE2_X_SPEED
      $MOVE2_Y = $MOVE2_Y+$MOVE2_Y_SPEED
      MOVE(ROUND($MOVE2_X,0), ROUND($MOVE2_Y,0))
   END_CYC
   IF($MOVE2_DEBUG = 1)
      PRINT("done")
   END_IF
   MOVE($MOVE2_END_X, $MOVE2_END_Y)//Передвинуть окончательно в заданную точку
END_SUB

3683
Использование / Re: Гнев Богов
« on: October 17, 2012, 08:33:35 AM »
Ну ты ж сам написал что у иконок разные фоны. Значит тебе нужно искать и продавать зеленые и серые

Для каждой иконки определи цвет и координату пиксела (где нибудь в углу иконки)
100, 100 - координата пиксела
255 - первый цвет
3 - второй цвет
Всего должно получиться 7 условий


Code: [Select]
GETSCREEN

IF((PXL (100, 100) = 255) | (PXL (100, 100) = 3))// иконка 1
   LCLICK(1048,226) // клик по "Продать"
   WAITMS (500)
END_IF

IF((PXL (100, 100) = 255) | (PXL (100, 100) = 3)) // иконка 2
   LCLICK(1048,226)
   WAITMS (500)
END_IF

IF((PXL (100, 100) = 255) | (PXL (100, 100) = 3)) // иконка 3
   LCLICK(1048,226)
   WAITMS (500)
END_IF

IF((PXL (100, 100) = 255) | (PXL (100, 100) = 3)) // иконка 4
   LCLICK(1048,226)
   WAITMS (500)
END_IF

и тд....

WAITMS (100)

3684
Вот скрипт для плавного перемещения мыши

Code: [Select]
$x2 = 2 // точка перемещения X
$y2 = 2 // точка перемещения Y
$x1 = $_xmouse
$y1 = $_ymouse
$speed = 5

if (($x1 > $x2) & ($y1 > $y2))
   while(($x1 > $x2) | ($y1 > $y2))
      if ($x1 > $x2)
         MOVE($x1-$speed, $y1)
         $x1 = $x1-$speed
      end_if
     
      if ($y1 > $y2)
         MOVE($x1, $y1-$speed)
         $y1 = $y1-$speed
      end_if
   END_CYC
end_if

if (($x1 < $x2) & ($y1 < $y2))
   while(($x1 < $x2) | ($y1 < $y2))
      if ($x1 < $x2)
         MOVE($x1+$speed, $y1)
         $x1 = $x1+$speed
      end_if
     
      if ($y1 < $y2)
         MOVE($x1, $y1+$speed)
         $y1 = $y1+$speed
      end_if
   END_CYC
end_if

if (($x1 < $x2) & ($y1 > $y2))
   while(($x1 < $x2) | ($y1 > $y2))
      if ($x1 < $x2)
         MOVE($x1+$speed, $y1)
         $x1 = $x1+$speed
      end_if
     
      if ($y1 > $y2)
         MOVE($x1, $y1-$speed)
         $y1 = $y1-$speed
      end_if
   END_CYC
end_if

if (($x1 > $x2) & ($y1 < $y2))
   while(($x1 > $x2) | ($y1 < $y2))
      if ($x1 > $x2)
         MOVE($x1-$speed, $y1)
         $x1 = $x1-$speed
      end_if
     
      if ($y1 < $y2)
         MOVE($x1, $y1+$speed)
         $y1 = $y1+$speed
      end_if
   END_CYC
end_if

halt

3685
Архив / Re: Ошибка в справке
« on: October 17, 2012, 12:43:13 AM »

Pages: 1 ... 244 245 [246]