Основной раздел > Общие вопросы
Реалистичное передвижение курсора
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