Автор Тема: Реалистичное передвижение курсора  (Прочитано 48131 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3831
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #15 : Сентябрь 10, 2015, 07:38:56 am »
В последней версии всё хорошо, кроме...
($MOVE_MID_X+RND(-30,30),$MOVE_MID_Y+RND(-30,30))

При расстояниях близких или меньше 30 указатель пляшет чечётку.
В примере дистанция 948.654310062417, отклонение 30 это чуть больше 3%
Вот осталось заменить на 3% от дистанции, ну или 6% на половине дистанции. Ну или где то так.
« Последнее редактирование: Сентябрь 10, 2015, 09:11:02 am от Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3831
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #16 : Сентябрь 10, 2015, 09:10:32 am »
Ну вот так попробовал
Код: Clickermann
  1. // подпрограмма обязательно выше вызова
  2. SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)  
  3.   $MOVE_Start_X = $_xmouse
  4.   $MOVE_Start_Y = $_ymouse
  5.   $MOVE_X = $MOVE_Start_X
  6.   $MOVE_Y = $MOVE_Start_Y
  7.  
  8.   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
  9.   $MOVE_step = ($dist-1)/INT(SQRT($dist))
  10.   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
  11.   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
  12.  
  13.   FOR($MOVE_i=0, $MOVE_i < INT($MOVE_step))
  14.      $MOVE_X = $MOVE_X + $MOVE_X_step
  15.      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
  16.      MOVE(INT($MOVE_X) + RND(-2,2), INT($MOVE_Y) + RND(-2,2))
  17.      WAITMS($rnwait) // задержка при движении по точкам
  18.   END_CYC  
  19. END_SUB
  20.  
  21. SUB(m_move,$M_X,$M_Y)
  22.   $rnwait = RND(6,15) // случайная скорость
  23.   $MOVE_MID_X = INT(($_xmouse+$M_X)/2)
  24.   $MOVE_MID_Y = INT(($_ymouse+$M_Y)/2)
  25.   $otx = INT(ABS($_xmouse - $M_X) * 0.12)
  26.   $oty = INT(ABS($_ymouse - $M_Y) * 0.12)
  27.   mouse_move($MOVE_MID_X+RND(-$otx,$otx), $MOVE_MID_Y+RND(-$oty,$oty))
  28.   mouse_move($M_X,$M_Y)
  29.   MOVE($M_X,$M_Y) //Передвинуть окончательно в заданную точку
  30. END_SUB
  31.  
  32.  
  33. LOGCLEAR
  34.  
  35. $MS = $_ms // засекаем время
  36. LDOWN($_xmouse,$_ymouse) // рисуем
  37. m_move(500,500) // передвигаем
  38. LUP(500,500) // отпускаем
  39. LOGWRITE ($_ms-$MS, " - ", $rnwait)
  40.  
  41. HALT
  42.  
« Последнее редактирование: Ноябрь 28, 2019, 10:04:58 am от Vint »


Flayka

  • Зашел в гости
  • *
  • Сообщений: 17
  • нуп
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #17 : Октябрь 21, 2015, 04:19:52 pm »
Подстава.
Я чет и не думал, что можно движение мышки игрока снимать.) добавил рандома в клик по пикселям и радовался) надо теперь снова бота подпиливать) спасибо за кучу инфы!

Kedrick

  • Освоившийся
  • **
  • Сообщений: 70
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #18 : Октябрь 22, 2015, 03:20:34 pm »
А насколько реалистично такое предположение?
В браузерках это же невозможно (или тоже возможно уже?) и данный вопрос касается только клиентских приложений?

xDigital

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #19 : Декабрь 14, 2015, 12:02:30 am »
кто поможет прикрутить к соединениям цифр?

xDigital

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #20 : Декабрь 14, 2015, 11:49:18 pm »
Всем спасиб разобрался, взял рандом от Vint

NewUserCM

  • Зашел в гости
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #21 : Апрель 01, 2016, 01:06:21 am »
Очень нужный код,только совершенно не понимаю как его вставлять в нужном месте

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3685
  • Котэ
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #22 : Август 14, 2016, 04:41:13 pm »
Код: Clickermann
  1. // подпрограммы обязательно выше вызова
  2. SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)  
  3.   $MOVE_Start_X = $_xmouse
  4.   $MOVE_Start_Y = $_ymouse
  5.   $MOVE_X = $MOVE_Start_X
  6.   $MOVE_Y = $MOVE_Start_Y
  7.  
  8.   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
  9.   $MOVE_step = ($dist-1)/INT(SQRT($dist))
  10.   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
  11.   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
  12.  
  13.   FOR($MOVE_i=0, $MOVE_i < INT($MOVE_step))
  14.      $MOVE_X = $MOVE_X + $MOVE_X_step
  15.      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
  16.      MOVE(INT($MOVE_X) + RND(-2,2), INT($MOVE_Y) + RND(-2,2))
  17.      WAITMS(RND(3,9)) // задержка при движении по точкам случайная скорость
  18.   END_CYC  
  19. END_SUB
  20.  
  21. SUB(m_move,$M_X,$M_Y)
  22.   $MOVE_MID_X = INT(($_xmouse+$M_X)/2)
  23.   $MOVE_MID_Y = INT(($_ymouse+$M_Y)/2)
  24.   $otx = INT(ABS($_xmouse - $M_X) * 0.12)
  25.   $oty = INT(ABS($_ymouse - $M_Y) * 0.12)
  26.   mouse_move($MOVE_MID_X+RND(-$otx,$otx), $MOVE_MID_Y+RND(-$oty,$oty))
  27.   mouse_move($M_X,$M_Y)
  28.   MOVE($M_X,$M_Y)
  29. END_SUB
  30.  
  31. // вызов пишем вместо MOVE
  32. m_move(500,500) // плавное перемещение мыши в заданную точку
  33.  
  34. HALT // стоп

squid

  • Освоившийся
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #23 : Август 14, 2016, 06:25:07 pm »
Кcтати я не знаю, насколько реалистично он выглядит при движении с одного угла в другой угол, но при горизонтальном движении (Y_START и Y_END равны) это выглядит вот так:

18:15:23 343, 783
18:15:23 350, 783
18:15:23 357, 783
18:15:23 367, 782
18:15:23 371, 782
18:15:23 379, 779
18:15:23 384, 783
18:15:23 396, 783
18:15:23 407, 780
18:15:23 416, 783
18:15:23 425, 781
18:15:23 433, 783
18:15:23 439, 783
18:15:23 452, 781
18:15:23 460, 782
18:15:23 467, 779
18:15:23 475, 780

Т.е. из всего этого навороченного алгоритма на выходе получаем простое:
Код: Clickermann
  1. FOR($X_START, $X_START<$X_END, RND(4,10))
  2.    MOVE($X_START, $_ymouse+RND(-2,2)
  3.    WAITMS(RND(3,9))

Хоть бы назад по X пару раз сдвинул...
« Последнее редактирование: Август 15, 2016, 07:04:52 am от squid »

Золотой

  • Оплот сообщества
  • ****
  • Сообщений: 312
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #24 : Август 14, 2016, 07:29:10 pm »
алгоритм проверен сотни раз и используется очень давно, не считай себя умнее всех, более вероятно обратное.

squid

  • Освоившийся
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #25 : Август 15, 2016, 12:08:56 am »
алгоритм проверен сотни раз и используется очень давно, не считай себя умнее всех, более вероятно обратное.
Я вижу по координатам, а вы, видимо, не обратили как следует внимание на лог.

Золотой

  • Оплот сообщества
  • ****
  • Сообщений: 312
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #26 : Август 15, 2016, 01:24:12 am »
а зачем лог, когда всё нагляднее графически.

squid

  • Освоившийся
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #27 : Август 15, 2016, 03:21:48 am »
а зачем лог, когда всё нагляднее графически.
А... Поколение предпочитающее смотреть, а не читать. Ну вот смотрите видео (10 mb) с работы сего алгоритма на сайте реально следящим за автокликерами. Pac-man в результате означает о не понравившемуся движению мыши.  Последние две "проводки" уже в ручную (первый раз промахнулся) и результат "Ок"

Золотой

  • Оплот сообщества
  • ****
  • Сообщений: 312
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #28 : Август 15, 2016, 09:48:22 am »
я ваше молодоепоколение удивлю, но технически грамотный человек должен уметь читать графическую информацию, а не знакомые буквы смотреть.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3831
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: Реалистичное передвижение курсора
« Ответ #29 : Август 15, 2016, 11:44:37 am »
Т.е. из всего этого навороченного алгоритма на выходе получаем простое:
Код: Clickermann
  1. FOR($X_START, $X_START<$X_END, RND(4,10))
  2.    MOVE($X_START, $_ymouse+RND(-2,2)
  3.    WAITMS(RND(3,9))

Хоть бы назад по X пару раз сдвинул...

Никто и не говорил, что он супер реалистичный. Скрипт создавался не для Pak-man-ов... А для более-менее похожих на человека передвижений (без учёта кривой ускорения). Он нормально выглядит при любых передвижениях по экрану, при любых расстояниях и направлениях. Для игр, браузеров и пр.

А вот ты запусти свой FOR не на 130 пикселов и не по горизонтали и сразу поймёшь о чём речь. Цикл, кстати, не закрыт и скобок не хватает.
При просмотре первое что бросилось в глаза: почему даже скорость не настроена? При таких скоростях он и не пропустит.
Скорость подобрать под свой комп, чтобы курсор не летал как ужаленный.

Для решения этой капчи нужен индивидуальный подход, там условия свои.
А сделать выбор конечной точки с медленным прицеливанием туда-сюда разве сложно сделать? Нет.
Только это будет выглядеть мерзко при других условиях. Пробовали и такое, но получалась лажа, если честно.
« Последнее редактирование: Август 15, 2016, 11:59:19 am от Vint »