1
Общие вопросы / Re: Реалистичное передвижение курсора по траектории кривых Безье.
« on: November 10, 2020, 11:28:58 PM »
Добавлю своё понимание "реалистичности"...
Человек не робот и он не может прицельно взять мышку, не сдвинув её на минимальное расстояние и точно так же не может остановиться на заданной точке намертво. Поэтому для "реалистичности" движения (я использовал это правда не в играх, а на сайте, где была нежелательна автоматизированная работа с товаром, а товара было тысячи позиций, поэтому перестраховался...) вставлял "тремор рук"... непроизвольное движение, когда команда с головы уже ушла, а рука по инерции не успела остановиться
Тремор перед любым началом движения мышки и в конце, при останове, добавлял так же в скрипт с форума:
Это даже движениями трудно назвать... это скорее микродвижения, связанные с дыханием человека, его сердцебиением, гендерной принадлежности, днём недели (это вечер пятницы или утро понедельника), принятием дозы алкоголя до того, истеричным складом ума и т.п. факторами физиологического и психического характера... Думал даже сделать разные треморы для разных психотипов людей, чтобы при входе с разных аккаунтов подключалась или истеричка или флегмат и т.д.
Человек не робот и он не может прицельно взять мышку, не сдвинув её на минимальное расстояние и точно так же не может остановиться на заданной точке намертво. Поэтому для "реалистичности" движения (я использовал это правда не в играх, а на сайте, где была нежелательна автоматизированная работа с товаром, а товара было тысячи позиций, поэтому перестраховался...) вставлял "тремор рук"... непроизвольное движение, когда команда с головы уже ушла, а рука по инерции не успела остановиться
Code: (clickermann) [Select]
SUB(mouse_tremor, $_xmouse, $_ymouse)
//тремор
//MOVE($_xmouse + RNDFROM(-1, 1, 2, 3), $_ymouse + RNDFROM(-1, 1, 2, 3))
//WAITMS(RND(100, 150))
MOVE($_xmouse + RND(-1, 1), $_ymouse + RND(-1, 1))
WAITMS(RND(50, 100))
MOVE($_xmouse + RNDFROM(0, -1, 0, 1, 0), $_ymouse + RNDFROM(0, -1, 0, 1, 0))
WAITMS(RND(500, 1000))
END_SUB
Тремор перед любым началом движения мышки и в конце, при останове, добавлял так же в скрипт с форума:
Code: (clickermann) [Select]
SUB(mouse_move, $MOVE_END_X, $MOVE_END_Y)
$RND_SPEED_MIN = 3
$RND_SPEED_MAX = 5
$MOVE_SPEED = RND($RND_SPEED_MIN, $RND_SPEED_MAX) //множитель скорости
//Отвечает за количество точек, по которым движется курсор
$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_SPEED_MIN + $RND_SPEED_MAX - $MOVE_SPEED) //скорость перемещения в мс
//Можно увеличить задержку между каждым движением к следующей точке.
END_CYC
MOVE($MOVE_END_X, $MOVE_END_Y) //передвинуть окончательно в заданную точку
WAITMS(RND(200, 300))
mouse_tremor($_xmouse, $_ymouse)
END_SUB
Это даже движениями трудно назвать... это скорее микродвижения, связанные с дыханием человека, его сердцебиением, гендерной принадлежности, днём недели (это вечер пятницы или утро понедельника), принятием дозы алкоголя до того, истеричным складом ума и т.п. факторами физиологического и психического характера... Думал даже сделать разные треморы для разных психотипов людей, чтобы при входе с разных аккаунтов подключалась или истеричка или флегмат и т.д.