Author Topic: Подскажите, есть код перемещения курсора...  (Read 2004 times)

0 Members and 1 Guest are viewing this topic.

cheremburum

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Всем привет. Я только начал пользоваться программой. Подскажите, есть код перемещения курсора. Но нужно замедлить скорость перемещения. У меня не срабатывает.
Code: (clickermann) [Select]
$S_CORR = 0

SUB (m-move, $MOVE_END_X, $MOVE_END_Y)   
   $MOVE_SPEED = 25
   $MOVE_Start_X = -1727
   $MOVE_Start_Y = 170
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   $MOVE_END_X = -1560
   $MOVE_END_Y = 170
 
   $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)
END_SUB
 
SUB (m-lclick, $MOVE_END_X, $MOVE_END_Y)
   $LC1 = $MOVE_END_X
   $LC2 = $MOVE_END_Y
   m-move($MOVE_END_X, $MOVE_END_Y)
   WAITMS(20)
   LDOWN($LC1, $LC2)
   WAITMS(30)
   LUP($LC1, $LC2)
   WAITMS(30)
END_SUB
 
m-lclick(-1480,735)

код взял тут же на форуме. скорость меняю вот в этой строке
Code: (clickermann) [Select]
$MOVE_SPEED = 25
и ещё вопрос в конце кода происходит клик мышью
Code: (clickermann) [Select]
m-lclick(-1480,735)мне этот клик не нужен, но если убрать эту строку тогда вообще ни чего не работает. Если не возможно его убрать то нужно сделать перед кликом паузу минимум 2 сек. тож не получается.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вот так без клика.
$MOVE_SPEED = 3  // множитель скорости отвечает за количество точек по которым движется курсор. Чем больше число тем больше точек.
На 25 строке можно увеличить задержку между каждым движением к следующей точке что приведет к более медленному движению мыши.

Code: (clickermann) [Select]
SUB(mouse_move, $MOVE_END_X,$MOVE_END_Y)
   $MOVE_SPEED = 3  // множитель скорости
   
   $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)
END_SUB


// образец строки MOVE
mouse_move(215,224)

HALT

cheremburum

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
спасибо все отлично работает. вот только ещё пару вопросов. Я задал координаты начала движения курсора вот здесь
Code: (clickermann) [Select]
 
   $MOVE_Start_X = -1727
   $MOVE_Start_Y = 170
правильно ли это?
Второе. мне нужно что бы эта подпрограмма отработала 3 раза и потом работал другой код. Как это реализовать? нужно 3 раза использовать #include или есть другой способ?
пример
Code: (clickermann) [Select]
LCLICK(-1428,78)      //закр банк
WAIT(2)
LCLICK(-1430,517)     //откр базар
WAIT(2)
LCLICK(-1515,155)     //вкладка "помощь"
WAIT(2)
LCLICK(-1470,418)     //выбрать Dob
WAIT(2)

#include "send food.cms"
WAIT(2)

#include "send food.cms"
WAIT(2)

#include "send food.cms" 
WAIT(2)

LCLICK(-1822,78)      //возврат к списку
WAIT(2)
LCLICK(-1468,635)     //выбрать Bb
и ещё вопрос, строка HALT останавливает работу всего следующего за подпрограммой кода, можно ли её убрать?