Основной раздел > Общие вопросы

Реалистичное передвижение курсора

<< < (3/12) > >>

WHOIM:

--- Quote from: Oraven on September 09, 2015, 01:17:13 PM ---
--- Quote from: dramster on September 09, 2015, 10:39:32 AM ---да, такие рандомные отклонения будут хорошо себя вести на максимальной скорости, где шаг перемещения 40-60пикс. но если поставить скорость на минимум, то курсор будет отклоняться не только со стороны в сторону, но и в зад в перед.

--- End quote ---

В том и смысл рандома! Все что нужно это добиться чтоб курсор ездил не как по линейке а немного коряво. Кроме того нужна именно высокая скорость, потому что ты там все коробки (в дарк орбит) пропустишь пока доведешь курсор куда нужно.

--- End quote ---

Очень хороший скрипт получился, за исключением скорости. Вы правы насчет того, что кликер пропустит много коробок. В моем скрипте он не попадает в коробку с первого раза, а кликает рядом, без всякого дополнения скрипта. Это происходит из-за небольшой скорости передвижения курсора.

Такой подход добавляет больше человечности в скрипт. Ведь люди тоже не попадают с первого раза, а иногда и со второго. Плюс скорость движения ни в коем случае не должна превышать "человеческую". Если в игре стоит тех анализ поведения игроков (а он скорее всего стоит), то скорость перемещения и клика будут самые основные показатели, выявляющие "читеров".  ;)

Если возможно заставить адекватно работать последний скрип на скорости от 6 до 8, дабы добавить рандом, буду премного благодарен.

Oraven:
Вот последняя редакция с рандомом

--- Code: (clickermann) ---// подпрограмма обязательно выше вызова
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_SPEED = 1  // множитель скорости (отвечает за количество точек)
   
   $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)+RND(-2,2), ROUND($MOVE_Y,0)+RND(-2,2)) // добавляем рандом
      WAITMS($rnwait) // задержка при движении по точкам
   END_CYC
   
END_SUB

SUB(m_move,$M_X,$M_Y)
   $rnwait = RND(6,15) // случайная скорость
   $MOVE_MID_X = ($_xmouse+$M_X)/2
   $MOVE_MID_Y = ($_ymouse+$M_Y)/2
   mouse_move($MOVE_MID_X+RND(-30,30),$MOVE_MID_Y+RND(-30,30))
   mouse_move($M_X,$M_Y)
   MOVE($M_X,$M_Y) //Передвинуть окончательно в заданную точку
END_SUB

LDOWN(226,265) // рисуем
$MS = $_ms // засекаем время

m_move(839,989) // передвигаем

LUP(839,989) // отпускаем
LOGWRITE ($_ms-$MS, " - ", $rnwait)

HALT // стоп
--- End code ---

Время передвижения на картинке занимает от 330 до 730 мс что вполне реалистично.

--- Code: ---17:35:40 509 - 9
17:35:43 606 - 12
17:35:47 525 - 10
17:35:49 589 - 11
17:36:03 425 - 8
17:36:04 378 - 7
17:36:05 520 - 10
17:36:07 686 - 14
17:36:10 430 - 8
17:36:11 351 - 6
17:36:13 467 - 9
17:36:14 606 - 12
17:36:15 640 - 13
17:36:17 523 - 10
17:36:18 549 - 11
17:36:19 344 - 6
17:36:20 348 - 6
17:36:21 730 - 15
--- End code ---

dramster:
что то я загнался этим передвижением  :D . и чето подумал, а от чего же зависит скорость передвижения курсора в системе? как оказалось, она зависит только лиш (ну или почти) от шага $MOVE_step. а обновляться местоположение должно в пределах 4-7мс. в изначальном варианте стоит задержка 1мс ($rnwait), и это, как оказывается, маловато. и скорее всего менять эту задержку не желательно, а менять скорость передвижение только шагом $MOVE_step.
проверял так

--- Code: (clickermann) ---wait(1)
print("бот")
m_move(910,540)
print("не бот")// начинаем дергать мышкай
wait(5)
halt


THREAD(thr_name)
   WHILE(1)
      $t=$_ms
      $x=$_xmouse
      $y=$_ymouse
      WHILE(($x=$_xmouse)&($y=$_ymouse))
         waitms(1)
      END_CYC
      print($_ms-$t)
   END_CYC
END_THREAD
--- End code ---
у меня показало : там где бот - ($rnwait+-1);  там где не бот - в пределах 3-7 мс (в основном 4-6 мс), не зависимо от скорости дергания(конечно если не слишком медленно). возможно это только у меня так, а возможно что эта задержка и не играет никакой роли    :D

Oraven:
Вряд ли игра снимает положение курсора каждую миллисекунду, это большая нагрузка. Достаточно это делать раз в несколько десятков мс. чтобы понять что курсором водят по экрану а не прыгают мгновенно из точки в точку.

Vint:

--- Quote from: dramster on September 09, 2015, 06:05:20 PM ---что то я загнался этим передвижением  :D . и чето подумал, а от чего же зависит скорость передвижения курсора в системе? как оказалось, она зависит только лиш (ну или почти) от шага $MOVE_step.

--- End quote ---

Так я на основе этого и писал mouse_move. Скорость только шагом.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version