Author Topic: Нужен скрипт для плавного перемещения карты в игре мышью  (Read 2239 times)

0 Members and 1 Guest are viewing this topic.

latrodectus

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Доброго времени суток. Сломал голову над перемещением объекта мышкой. Скрипт из Плавное перемещение мыши работает ровно один раз, при повторе не перемещает. ПАМАГИТЕ!!!!!
СУТЬ. Нужно зажать кнопку мыши по координатам перетащить в координаты и отпустить и чтобы можно было повторять. SOS Пробовал команду LOAD, делил скрипт на отдельные файлы сценарии, виснет кликерман.
[spoiler]
LDOWN(426,14) //это подставил я
$speed=1      // Скорость (от 1 до ∞)
SUB(Motion,$start1,$start2)   
   $x=$_xmouse
   $y=$_ymouse   
   $sign=$start1-$x   
   $xk=$sign/SQRT($sign*$sign)   
   FOR ($var, $var<($sign*$xk/$speed))
      $yk=INT(($_xmouse+$xk)*($start2-$y)/($start1-$x)+$y-($start2-$y)*$x/($start1-$x))
      MOVE(INT($_xmouse+$xk*$speed),$yk)
   END_CYC 
END_SUB

$c1=666
$c2=777
Motion($c1,$c2) // Вызываем процедуру с параметрами (стрелка дойдет до координат $c1, $c2)
LUP(666,777)  //Это подставил я
LCLICK($c1,$c2)

HALT

Второй раз уже не зажимает кнопку, или зажимает но не тянет[/spoiler]
« Last Edit: October 23, 2015, 02:21:01 PM by latrodectus »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
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
LDOWN(426,14) // зажать
mouse_move(666,777) // двигаем мышь сюда
LUP(-1,-1) // отпустить
WAITMS(500)

latrodectus

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Огромное Вам ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!! Добрейшей души Человек!!!