Что нового

Непрямолинейное перемещение курсора

Esterika

Новичок
Сообщения
3
Репутация
0
Здравствуйте!

Тему отдельную открывать не стал, потому, что почти ОФФ-топ. Но ОФФ-топ важный, по-крайней мере для меня.

«Нашел тему – где на тему». (С)

Как я понял (и почитав и сам «доперев»), что одним из способов вычислить ботовода – конвануть в его отсутствие.
За пару лет игры – со мной таким способом, слава Богу, ГМы не связывались. И я не представляю себе, как выглядит этот вызов.
Так же, как и другие? Например:

83857182.png


Написание НИКА ГМ красным? Взрывами? Звуками? Протяжной сиреной? Мерцанием экрана? :smile:
В связи с изложенным, вопрос и просьба – кто видел эти неприятные окна? Как они выглядят?
Аля обычные, али нет? А за скрин вообще отдельная благодарность будет. :smile: На словах. :smile:

Провоцирование ГМа - не предлагать! ;)

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

Где-то я еще пару месяцев назад видел пост про паранойю и случайное перемещение мыши - теперь, блин, найти не могу. Там побольше инфы было...
Никто не подскажет, где я ее видел? :smile: Я все глаза сломал уже. Пятница. Вечер. А я все ищу эту тему... :beer:


ОО!! И пока не забыл... Пока не начал тяпничать - а если разукрашивать работу бота всякими там визуальными графическими подсказками и подсветками - конспирация будет соблюдаться? Или это палево?

Вы должны понять меня - я параноик. :laugh:
 

SyDr

Сидра
Сообщения
651
Репутация
158
Вот ещё вариант:
Код:
$x = 0
$y = 0
HotKeySet('1', '_Example')
While 1
	Sleep(100)
	ToolTip(MouseGetPos(0) & ', '& MouseGetPos(1))
WEnd

Func _Example()
	If $x = 0 Then
		$x = MouseGetPos(0)
		$y = MouseGetPos(1)
	Else
		_MouseDrunkMove($x, $y, 1, 10, 10)
		$x = 0
		$y = 0
	EndIf
EndFunc

Func _MouseDrunkMove($x, $y, $speed = 10, $maxrandom = 1, $times = 10) ; формат такой же, как и у MouseMove + 2 параметра:
	; $maxrandom - максимальный разброс при движении по прямой от точек этой прямой по каждой из координат
	; $times - число остановок в пути
	Local $aCurrPos = MouseGetPos()
	Local $ix, $iy
	For $i = 1 To $times - 1
;~ 		ToolTip("Курсор здесь")
		$ix = Random(0, $maxrandom * 2, 1) - $maxrandom
		$iy = Random(0, $maxrandom * 2, 1) - $maxrandom
		MouseMove($aCurrPos[0] + ($x - $aCurrPos[0]) / $times * $i + $ix, $aCurrPos[1] + ($y - $aCurrPos[1]) / $times * $i + $iy, $speed)
	Next
	MouseMove($x, $y, 0)
EndFunc


Во вложении - пример "прямой" нарисованной в Paint с помощью функции :smile:
Для тестирования: перместить курсор в точку назначения, нажать 1, переместить курсор в начальную точку, нажать 1.
 

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Esterika сказал(а):
Написание НИКА ГМ красным? Взрывами? Звуками? Протяжной сиреной? Мерцанием экрана? :smile:
В связи с изложенным, вопрос и просьба – кто видел эти неприятные окна? Как они выглядят?

Вы должны понять меня - я параноик. :laugh:
Окошко диалога "оповещения о конво" ГМа - самое обычное. Там нет ничего отличающегося. Написание ника как обычно. Однако когда открывается сам чат, называется он "alone". И вот там уже написание ника и сообщений ГМа идут красным системным текстом (точно таким же, как пишется в локале оповещение о смены звёздной системы).
 

Esterika

Новичок
Сообщения
3
Репутация
0
SyDr - спасибо. Буду тестить.

Archy26 - если так, то здорово. Поставлю как я "Аларм" и "Ахтунг" на появление такого окна... :ok:
 

Nerfair

Новичок
Сообщения
7
Репутация
0
Понимаю что тема старая, но может быть кому то пригодится, сомневаюсь что сср ведут логи рассположения курсора так как логи рассположения корабля в космосе они не ведут. Связывался ни раз по петиции, плюс один раз флотом попали и всегда был ответ "ниче не знаем, рассположения логи не записывают, а скриншоты засуньте в зад" :smile: Так что делайте выводы.
 

Trunk

Новичок
Сообщения
10
Репутация
0
Плавное движение можно реализовать с помощью кривых Безье
 

mornere

Знающий
Сообщения
22
Репутация
8
http://ru.wikipedia.org/wiki/Кривые_Безье
Типа так?)
На самом деле хоть фракталом, лишь бы псевдослучайное перемещение мыши можно было запихать в алгоритм вычисления функции, кривая получалась бы непрерывной, псевдослучайной и не загрузила проц на 75%)
P.S. А, ну да, еще нужно чтобы в функцию можно было задать точку А, В и функция привела бы из А в В :smile:
 

running-frag

why me?
Сообщения
441
Репутация
60
в теории тут можно хоть кружки рисовать от точки А до Б только вот проблема одна, на каждой точке он томрозит, т.е. получаются движения рывками, что как бы палево :smile:))

в общем то использывать можно, надо только алгоритм изменить, попыхчу сегодня ночью (доделаю по примеру первого поста)

ну а пока вот что есть

Код:
Func MouseClickEx ($_button, $_x2, $_y2, $_click_num, $_speed)
    
    Local $_x1 = script_get_mouse_current ("x")
    Local $_y1 = script_get_mouse_current ("y")

    Local $_w = Abs ($_x1 - $_x2)
    Local $_h = Abs ($_y1 - $_y2)
    
    Local $_dW = Round ($_w/20)
    Local $_dH = Round ($_h/20)
    ConsoleWrite ($_dW &" - $_dW"&@CR)
    ConsoleWrite ($_dH &" - $_dH"&@CR)
    
    Select
        ; ВСЁ ОТНОСИТЕЛЬНО Х1 (ТЕКУЩЕГО ПОЛОЖЕНИЯ МЫШИ)
        ; справа-налево снизу-вверх
        Case $_x1 > $_x2 And $_y1 > $_y2
            For $i = 1 To 20
                MouseMove ($_x1 -($_dW *$i)     +Random (-10,10,1),     $_y1 -($_dH *$i)    +Random (-10,10,1),     2)  ; 1/3
            Next
        ; справа-налево сверху-вниз
        Case $_x1 > $_x2 And $_y1 < $_y2
            For $i = 1 To 20
                MouseMove ($_x1 -($_dW *$i)     +Random (-10,10,1),     $_y1 +($_dH *$i)    +Random (-10,10,1),     2)  ; 1/3
            Next
        ; слево-направо снизу-вверх
        Case $_x1 < $_x2 And $_y1 > $_y2
            For $i = 1 To 20
                MouseMove ($_x1 +($_dW *$i)     +Random (-10,10,1),     $_y1 -($_dH *$i)    +Random (-10,10,1),     2)  ; 1/3
            Next
        ; слево-направо сверху-вниз
        Case $_x1 < $_x2 And $_y1 < $_y2
            For $i = 1 To 20
                MouseMove ($_x1 +($_dW *$i)     +Random (-10,10,1),     $_y1 +($_dH *$i)    +Random (-10,10,1),     2)  ; 1/3
            Next
    EndSelect
    
    
    MouseClick ($_button, $_x2 +20 +Random (0,30,1), $_y2 +Random (-1, 3, 1), 1, 10)

    
EndFunc



upd: скрипт делит растояние на 20 частей, потом по ним "прыгает" до точки клика, ну и сам клик в коце (у вас будет клик отличаться)
 

alexisnoy123

Новичок
Сообщения
9
Репутация
2
Посмотрите по адресу
http://villavu.com/repositories/srl/SRL/core/Mouse.scar

Это часть кода бота для какой-то онлайн игры. Написано на паскаль-подобном языке
(кажется проект называется SCAR). Они плотненько человекоподобным перемещением мыши занимались.
Перевести на AutoIt - несложно. Свой код не выкладываю - он на python-е (мой бот полностью на нем написан) - тем более там просто функции паскаля на функции питона переведены - логика абсолютна не изменена.
 

running-frag

why me?
Сообщения
441
Репутация
60
@alexisnoy123 ты мне пол жизни поломал
145.gif


я не знал что на питоне можно это всё реализовать (само написание бота)
122.gif


может пару ресурсов в личку подкинешь на эту тему? :smile: с радостью загляну

по теме, если делать стандартными функциями аля MouseMove то какой бы алгоритм не был всё равно получится рывками, т.е. тут проблему нужно решать на уровне UDF или глубже (моё мнение)
 

alexisnoy123

Новичок
Сообщения
9
Репутация
2
Сначала написал бота на автоите. Спасибо Belfegor-у на его скелет бота. Потом при его улучшении уперся в потолок автоита - реализовывать задумки на нем стало сложнее чем переписать на полноценный язык программирования. Написал функции ImageSearch и PixelSearch на python-е (см. OpenCV, WinApi-шную GetDC). Всего своего бота переписал на Python (просто функции AutoIt заменил аналогичными функциями Python или небольшими своими функциями если нет готового) . Почти везде используется ImageSearch с допуском 10%. Опрос всех датчиков (во втором потоке) выполняется 0,4 - 0,7 сек (смотря где нахожусь). На Автоите такие скорости у меня не получились :smile: Логика бота в третьем потоке. Gui в первом - иконка висит в трее (см. SysTrayIcon), полоска информации под окном и окно лога справа(Gui полностью на WinApi - Qt тяжеловат, Tkinter - плохо с моими потоками работает(долго)). Сейчас почти переписал на использование блокировок с ожиданием событий (wait(sec)). Вчера все картинки с нового клиента заскриншотил - часик времени убил. Осталось переписать определение дистанции до объекта - у меня там распознавание по точкам. Думаю может с переходом на др. шрифт Tesseract распознавать лучше станет - перепишу функцию на него. Все остальное уже работает. Пробуй, если что спрашивай - чем смогу помогу (когда на сайт вылезу).

Насчет MouseMove - передвигай с соседнюю точку и никаких рывков - это минимально возможное перемещение мыши. Хорошенько посмотри мое предыдущее сообщение - по ссылке - там так и реализовано.
 

usrman

Новичок
Сообщения
13
Репутация
0
alexisnoy123
По поводу питона очень даже интересно (не надо в личку, да простит меня модератор). На самом деле тема очень интересная, т.к. AutoIt имеет некоторые ограничения.
Если я правильно понял, то для аналога PixelSearch Вы использовали WinAPI GetDC, а для MouseClick WinAPI SendMessage?
А чем тогда питон был предпочтительней? Остальной функционал можно было бы реализовать на практически любом языке программирования, или у питона есть уже готовые реализации PixelSearch и MouseMove/MouseClick?
 

running-frag

why me?
Сообщения
441
Репутация
60
usrman [?]
А чем тогда питон был предпочтительней? Остальной функционал можно было бы реализовать на практически любом языке программирования, или у питона есть уже готовые реализации PixelSearch и MouseMove/MouseClick?
Ничем, пример указавший выше вообще написан не на питоне. На любом языке можно "выкрутиться" и получить аналогичные функции autoit.

ps: меня просто заинтриговало что на питоне это реально, я знаю немного питон и честно говоря лучше б время затраченное на изучение автоит, я потратил углубляясь в питон, со временем 100% уйду с автоит
 

alexisnoy123

Новичок
Сообщения
9
Репутация
2
У питона нет готовых реализаций PixelSearch и MouseMove/MouseClick.

ВЕСЬ функционал можно реализовать практически на любом полноценном языке программирования. Просто питон я получше знаю, чем С и Паскаль (администрирую серваки, в том числе на линуксе). С Явой совсем плохо знаком. С# только дописать что нибудь почти готовое. Также планирую в отдаленном будущем перенести Еву на линукс. Следовательно бота тоже. ( правда PixelSearch, ImageSearch, MoveMouse/MoveClick, модуль для работы с клавой придется переписать).

Для MouseClick - win32api.mouse_event
MouseMove - win32api.SetCursorPos ( + весь модуль указанный мной выше , переписанный на питон).
Для скриншота экрана (естественно в память) использовалось win32gui.GetDC и вся обвязка к нему ( не забывайте win32gui.DeleteDC -иначе утечка памяти страшная :smile: - 4 Gb минут за 5 - если скриншотишь раз в пол секунды)
ImageSearch - через библиотеку OpenCV - офигенная вещь
PixelSearch - обычный поиск по массиву - тем более используется numpy
 

Frostnord

Новичок
Сообщения
13
Репутация
1
Код:
#include-once
#include <AnimationEasing.au3>

;===============================================================================
;
; Description:      Moves the mouse more smoothly, with some random movements.
; Parameter(s):     $iX - The target X position.
;                   $iY - The target Y position.
; Requirement(s):   The _AnimEaseInOut and _AnimEaseBackward function.
; Return Value(s):  None.
; Author(s):        the DtTvB
; Note(s):
;
;===============================================================================
Func _MouseMove($iX, $iY)
	Local $x1 = MouseGetPos(0)
	Local $y1 = MouseGetPos(1)
	Local $xv = Random(-100, 100)
	Local $yv = Random(-100, 100)
	Local $sm = Random(1.5, 2.5)
	Local $m = Random(50, 160)
	Local $ci, $co, $cx, $cy
	for $i = 0 to $m
		$ci = _AnimEaseInOut($i / $m, $sm)
		$co = _AnimEaseBackward($i / $m, $sm)
		$cx = $x1 + (($iX - $x1) * $ci) + ($xv * $co)
		$cy = $y1 + (($iY - $y1) * $ci) + ($yv * $co)
		MouseMove ($cx, $cy, 0)
	Next
EndFunc

Странно написано с рандом скоростью движения но у мя поч мгновенное перемещение
п.с. это скрипт из ссылки выше

upd// хотя скорее всего имеется ввиду рандомные движения в стороны , тогда непонятно почему мгновенная скорость
 

mousekey

вот он какой, серверный олень
Сообщения
8
Репутация
5
Я особо не разбирался, но, возможно, поэтому:
MouseMove ( x, y [, speed] )
speed [optional] the speed to move the mouse in the range 1 (fastest) to 100 (slowest). A speed of 0 will move the mouse instantly. Default speed is 10.

Попробуй выставить 1-10.
 
Верх