Author Topic: Dark Orbit сборщик коробок. Помогите дописать чуть чуть))  (Read 38026 times)

0 Members and 3 Guests are viewing this topic.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
если LDOWN, LUP не задать координат, он как себя поведет? кликнет где есть?
Нет так писать нельзя.
Вот клик без координат
Code: (clickermann) [Select]
LCLICK (-1,-1)
Осилил и разобрался с этим вопросом) сделал так
mouse_move (RND(780,999),RND(577,707))
LCLICK ($_xmouse, $_ymouse)
правильно, или есть еще способы?

Определенно есть
Code: (clickermann) [Select]
$x_clk = RND(780,999)
$y_clk = RND(577,707)
mouse_move ($x_clk,$y_clk)
LCLICK ($x_clk,$y_clk)
« Last Edit: March 21, 2015, 03:35:43 PM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
$MOVE_SPEED = 0,8 - это не правильно. Нужно писать точку а не запятую, иначе кликер примет 0 но не примет число после запятой, или вообще воспримет это как текст.
В подпрограмме есть два места где можно регулировать скорость.


Подпрограмму перемещения можно модифицировать добавив в нее параметр клика.
Code: (clickermann) [Select]
// подпрограмма обязательно выше вызова
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y,$MOVE_CLICK)
   $MOVE_SPEED = 4  // множитель скорости (число больше 0, чем больше число тем медленнее)
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
   
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
   
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(1) // чем больше задержка тем медленнее
   END_CYC
   
   MOVE($MOVE_END_X, $MOVE_END_Y) //Передвинуть окончательно в заданную точку
   
   IF($MOVE_CLICK = 1) // клик
      LDOWN($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150))
      LUP($MOVE_END_X, $MOVE_END_Y)
   END_IF
END_SUB




// образец строки MOVE (первые два числа это координаты, третье 0 или 1 просто передвинуть или кликнуть)
mouse_move(215,224,0) // двигаем мышь сюда
WAITMS(500)

mouse_move(1205,294,0)  // туда
WAITMS(500)

mouse_move(1347,1016,1) // и еще раз и клик
WAITMS(500)

HALT // стоп

Вот твой скрипт
Code: (clickermann) [Select]
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y,$MOVE_CLICK)
   $MOVE_SPEED = 4  // множитель скорости (число больше 0, чем больше число тем медленнее)
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
   
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
   
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(1) // чем больше задержка тем медленнее
   END_CYC
   
   MOVE($MOVE_END_X, $MOVE_END_Y) //Передвинуть окончательно в заданную точку
   
   IF($MOVE_CLICK = 1) // клик
      LDOWN($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150))
      LUP($MOVE_END_X, $MOVE_END_Y)
   END_IF
END_SUB

mouse_move (RND(780,999),RND(577,707),1)

$time = $_time_t + RND(1,30)
$check = 0
$check_out = 0
WHILE(($check_out = 0) & ($time > $_time_t))
   GETSCREEN   
   IF_PIXEL_IN(7,104, 999,707, 5413086, 16449533, 626990, 13565948, 10738419,11927543,9296371)
      $time = $_time_t + 1
      $check = 1
      mouse_move($_return1, $_return2,1)
      WAITMS(RND(500,1000))
   ELSE
      IF($check = 1)
         $check_out = 1
      END_IF
      WAITMS(30) // здесь рандом не нужен, это просто задержка холостого хода
   END_IF
END_CYC
WAITMS(RND(500,1000))


« Last Edit: March 21, 2015, 03:35:34 PM by Oraven »

SetConVar

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Ну как я сделал поменьше писать) до дома доберусь поиграюсь с цветами, чтоб искал нормально, ну и дальше какие возникнут проблемы)

SetConVar

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
$MOVE_SPEED = 0,8 - это не правильно. Нужно писать точку а не запятую, иначе кликер примет 0 но не примет число после запятой, или вообще воспримет это как текст.
В подпрограмме есть два места где можно регулировать скорость.

Спасибо за разьяснения, и за скрипт. Сейчас часика 4 и буду дома, похоже сегодня бесонная ночь)

Vegetal

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
SetConVar, куда пропал? Расскажи какие результаты? Пашет скрипт?

SetConVar

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

SetConVar

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Все привет!) немножко времени появилось, решил посидеть поиграться с цветом, и понял что бот совсем перестал искать коробки. Вернее он жмякает по карте рандомно, летит туда, там ищет коробки, их нет он летит дальше. А вот во время полетов не ищет их=(

Решил разбираться заново, ссори что сейчас он с goto, мне так легче разбираться)

Code: [Select]
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y,$MOVE_CLICK)
   $MOVE_SPEED = 2  // ìíîæèòåëü ñêîðîñòè (÷èñëî áîëüøå 0, ÷åì áîëüøå ÷èñëî òåì ìåäëåííåå)
 
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
 
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
 
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
 
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
 
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
 
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(RND(3, 8) // ÷åì áîëüøå çàäåðæêà òåì ìåäëåííåå
   END_CYC
 
   MOVE($MOVE_END_X, $MOVE_END_Y) //Ïåðåäâèíóòü îêîí÷àòåëüíî â çàäàííóþ òî÷êó
 
   IF($MOVE_CLICK = 1) // êëèê
      LDOWN($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150))
      LUP($MOVE_END_X, $MOVE_END_Y)
   END_IF
END_SUB

 
 
 fly:

mouse_move (RND(1020,1341),RND(605,738),0)
LDOWN ($_xmouse, $_ymouse)
WAITMS(RND(80,150))
LUP($_xmouse, $_ymouse)
WAIT(RNDc(7,15))


 loot:

GETSCREEN
IF_PIXEL_IN(7,51, 1341,738, 9755391,6199541,16449533,15727869,16252415)
mouse_move ($_return1, $_return2,0)
LDOWN ($_return1, $_return2)
WAITMS(RND(80,150))
LUP($_return1, $_return2)
WAITMS(RND(100,150))
   WAIT(RND(3,5)
   goto(loot)
else
goto(fly)
END_IF 






« Last Edit: March 28, 2015, 10:27:07 AM by SetConVar »

SetConVar

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Пока не могу настроить поиск во время полета. Сейчас он летит, прилетает, ищет, летит дальше. Предыдущий почему то перестал искать даже когда прилетал. В этом уже сразу сделал клик с задержкой. Чтобы адекватно жмякал по коробкам, графу в игре на минимум, все эффекты отключить, и убрать фон карты.

Эх, сегодня не получилось его зациклить на постоянный поиск коробок, даже во время полета. Начинает поиск только когда прилетит на место, а если там нет летит на другое(
« Last Edit: March 28, 2015, 05:20:54 PM by SetConVar »

SetConVar

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Тьфу, уже голова не соображает, с кликами совсем намудрил. Они же уже прописаны( Вот что получается пока
Code: [Select]
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y,$MOVE_CLICK)
   $MOVE_SPEED = 2  // множитель скорости (число больше 0, чем больше число тем медленнее)
 
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
 
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
 
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
 
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
 
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
 
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(RND(3, 8) // чем больше задержка тем медленнее
   END_CYC
 
   MOVE($MOVE_END_X, $MOVE_END_Y) //Передвинуть окончательно в заданную точку
 
   IF($MOVE_CLICK = 1) // клик
      LDOWN($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150))
      LUP($MOVE_END_X, $MOVE_END_Y)
   END_IF
END_SUB

 
 
 fly:

mouse_move (RND(1020,1341),RND(605,738),1)
WAIT(RNDc(7,15))


 loot:

GETSCREEN
IF_PIXEL_IN(7,51, 1341,738, 9755391,6199541,16449533,15727869,16252415)
mouse_move ($_return1, $_return2,1)
   WAIT(RND(3,5)
   goto(loot)
else
goto(fly)
END_IF 


SetConVar

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Получается что он жмякает по миникарте рандомно, ждет 7-15 секунд, потом ищет, если находит еще ищет, если нет жмяк по миникарте и ждет. Как сделать чтобы после рандомного клика, он ждал пока долетит, секунд 15 и в то же время искал, и если найдет собирал?

Vegetal

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Всем привет. Получилась у меня вот такая штука...
Проблема в том, что бот, при виде искомого предмета, начинает кликать на него (предмет), но попадает далеко не с первого раза, т.к. картинка перемещается. Что тут подкрутить, чтобы уменьшить количество кликов и повысить их точность?



[spoiler]
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y,$MOVE_CLICK)
   $MOVE_SPEED = 2 
 
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
 
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
 
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
 
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
 
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
 
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(1)
   END_CYC
 
   MOVE($MOVE_END_X, $MOVE_END_Y)
 
   IF($MOVE_CLICK = 1)
      LDOWN($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150)
      LUP($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150)
   END_IF
END_SUB
 
mouse_move (RND(1030,1230),RND(830,930),1)
 
$time = $_time_t + RND(20,30)
$check = 0
$check_out = 0
WHILE(($check_out = 0) & ($time > $_time_t))
   GETSCREEN   
   IF_PIXEL_IN(7,51, 1341,738, 9755391,6199541,16449533,15727869,16252415)
    mouse_move ($_return1, $_return2,0)
    LDOWN ($_return1, $_return2)
    WAITMS(RND(80,150))
    LUP($_return1, $_return2)
  WAITMS(RND(10,20))
   ELSE
      IF($check = 1)
         $check_out = 1
      END_IF
      WAITMS(30)
   END_IF
END_CYC
WAITMS(RND(30,50))
[/spoiler]

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y,$MOVE_CLICK)
   $MOVE_SPEED = 2
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
   
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
   
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(1)
   END_CYC
   
   MOVE($MOVE_END_X, $MOVE_END_Y)
   
   IF($MOVE_CLICK = 1) // ????
      LDOWN($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150)
      LUP($MOVE_END_X, $MOVE_END_Y)
      WAITMS(RND(80,150)
   END_IF
END_SUB

mouse_move (RND(1030,1230),RND(830,930),1)

$time = $_time_t + RND(20,30)
$check = 0
$check_out = 0
WHILE(($check_out = 0) & ($time > $_time_t))
   GETSCREEN
   IF_PIXEL_IN(7,51, 1341,738, 9755391,6199541,16449533,15727869,16252415)
      LDOWN ($_return1, $_return2)
      WAITMS(RND(80,100))
      LUP($_return1, $_return2)
      WAITMS(RND(100,120))
   ELSE
      IF($check = 1)
         $check_out = 1
      END_IF
      WAITMS(30)
   END_IF
END_CYC
WAITMS(RND(100,200))

Vegetal

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Спасибо! Буду тестить...  ;D

Скрипт плавнее стал. Еще раз спасибо. Буду делать выводы...
« Last Edit: April 03, 2015, 04:26:07 PM by Vegetal »

turlinet

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
здраствуйте. Подскажите как написать скрипт на паладий и так что бы он бил мобов?

turlinet

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
что то не пойму. мой скрипт
Code: [Select]
    LCLICK(RND(1180,1322),RND(605,680))
    $time = $_time_t + 30
    $check = 0
    $check_out = 0
    WHILE(($check_out = 0) & ($time > $_time_t))
       GETSCREEN
       IF_PIXEL_IN(89,149, 1120,642, 15268857,3006463,3095502) //89,149, 1120,642 координаты мини карты? 15268857,3006463,3095502 - цвета коробок?
          $time = $_time_t + 1
          $check = 1
          LCLICK($_return1, $_return2)
          WAITMS(500)
       ELSE
          IF($check = 1)
             $check_out = 1
          END_IF
          WAITMS(25)
       END_IF
    END_CYC
    WAITMS(500)
Задержка 30 сек а вот выбранные цвета не собирает. Помогите исправить. И если возможно дописать что бы выбраного моба брал влок и нажимал на атаку на клавишу контрл