Что нового

бот для ханта

Rymex

Новичок
Сообщения
4
Репутация
0
ноль в програмировании
ппц как неохота было самому разбираца
...
пришлось качать хелпер к автоиту и читать
...
вобщем программа придвигает окно евы к левому верхнему углу моника, приняв поправку что шапка окна в XP ано 30 пикселей (примерно)

На данный момент пока может:
- Лочить первые три строчки овервью,
- кликать и выпускать дронов (координаты группы дронов ставьте свои)
- травить дронов на кого то, что уже находица в локе

В принципе этот бот, насколько я понял, кликает мышой по координатам в мониторе, будь там окно с евой или еще что открыто, просто тыкает по координатам монитора. НЕ ишет иконку главного меню или типа того. Ну, щас главно чтоб работал. Если все будет работать, может наконец будет время научица играть на электрогитаре о_О пля! Надо написать автоит для электрухи!

Автоит имеет с своем составе "Автоит Виндоу Инфо", с помощью него я определял координаты менюшек и цвета пикселей.

Кто нифига не рубит в автоите - копируем текст программы и вставляем в свой автоит. Разумееца, вам придеца вставить свои координаты того места, где у вас группа дронов.

Все это сидел писал примерно с 15_00 до 02_54, суббота потеряна)


Код:
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна

;--------
; Чтобы не было несрабатываний из-за слишком быстрого по-умолчанию кликанья
AutoItSetOption("SendKeyDelay", 100)
AutoItSetOption("SendKeyDownDelay", 32)
AutoItSetOption("MouseClickDownDelay", 28)
;--------
 
WinMove("EVE", "", 0, 0)
WinActivate("EVE")
$X=191							; для горизонтали при кликании "Главное меню -> Белты"
$Y=19							; для вертикали  в функции LockNpc
$LockDelay=Random(250,1000)
$NumBelt=1						; переменная для счетчика белтов
$xLockNpc=1100					; для горизонтали в функции LockNpc

HotKeySet ("{`}","_exit");задаем горячую клавишу остановки скрипта

If $NumBelt=5 Then $NumBelt=1 ; в системе 4 белта

If CheckEndWarp()=1 Then
	WarpToBelt()
	$NumBelt=$NumBelt+1		; счетчик белтов
EndIf
sleep (1500)

PixelSearch( 1013, 77, 0, 00, 0x855851) ; есть ли кто нибудь в локе, при залочивании у цели всегда одинаковый фон

if @error Then
	PixelSearch( 1102, 187, 0, 00, 0xC11414, 10) ; есть ли нпс в первой строчке овервью
	If Not @error Then
		LockNpc()
		sleep (1500)
		DroneStart()
		sleep (1500)
	EndIf
EndIf
sleep (1500)


Func _exit();завершение работы скрипта
    Exit
EndFunc

Func LockNpc() ;функция лока мобов
    Send("{Ctrldown}") ;Нажать и удерживать клавишу Ctrl
	MouseClick("left",$xLockNpc, $X);лкм на моба(нажатая ctrl в сочетании с лкм = лок)
	sleep($LockDelay)	;Рандомная задержка между залочиванием разных целей, 
	                    ;чтоб небыл одинаковый период между залочиванием
	MouseClick("left",$xLockNpc, $X+$Y);лкм на моба(лок)
	sleep($LockDelay)
 	MouseClick("left",$xLockNpc, $X+$Y*2);лкм на моба(лок)
	Send("{CtrlUp}")   ;Отпустить клавишу Ctrl	
EndFunc

Func DroneStart() ; выпуск хэвиков из кара
	If Not @error Then
		MouseClick("right",908,249)   ;Пкм на группе хэвиков
		sleep(_CS(200,1100,0))
		MouseClick("left" ,984,252)   ;Лкм на группе хэвиков
 		sleep($LockDelay+100)
		MouseClick("left" ,940,190)   ;Лкм на общем списке дронов в дронбее, чтоб он свернулся и не мешал
		sleep($LockDelay+96)
		Send("{ctrldown}")	; Нажать и удерживать клавишу Ctrl
		sleep (1500)
		Send("{z}") 		; Нажать и удерживать клавишу Z
							; У меня ctrl+z натравливает дронов
		sleep (1500)
		Send("{Ctrlup}")    ;Нажать и удерживать клавишу Ctrl
		sleep (1500)
	EndIf
EndFunc

Func _CS($Time1, $Time2, $showt=0)
Local $sec
$Randc=Random($Time1, $Time2)
if $showt==1 then
 $sec=Round($Randc/1000)
 Timer(0, $sec, "Paused for ")
else
 Sleep($Randc) ;Команда Sleep, останавливающая выполнение скрипта на заданное время
endif
EndFunc ;==>CS

Func WarpToBelt() ;функция варпа на белт
    MouseClick ("left",67, 27);лкм на главное меню
    sleep (2000)
    MouseClick ("left",140, 51);выбор меню с белтами
    sleep (500)
    MouseClick ("left",257, 53);выбор конкретного белта
    sleep (100)
    MouseClick ("left",425, 50);варп на белт в ноль
    sleep(100)
    Do
        WinActivate("EVE")
        ToolTip ("летим к белту",0,0)
    Until CheckEndWarp()=1
EndFunc

Func CheckEndWarp() ;функция проверки окончания варпа
    PixelSearch (408, 512,0, 0,0xC0C1BE);проверяется на предмет наличия белого пикселя, если есть, значит видно слово WARP
    If @error Then
    Return 1
    Else
    Return 0
	EndIf
EndFunc



Пока не применил функцию рандома, подсказаную SirMaksFromEho, и почему то перестал работать лок по оверьвю.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 591
Репутация
938
Re: [Автоматизация] Жутко нубский Ханто бот, типа того. INCURSION 1.4.2

Убери завуалированный мат, через 2.5 часа когда проснусь если он еще будет, тема будет закрыта.
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Твой $LockDelay и $xx всегда будет один и тот же во время одногой сессии запуска скрипта. При другом запуске будет другим.
Пользуйся лучше вот этим: http://autoit-script.ru/index.php?topic=5007.0
А $xx должен быть всегда 19 для английского клиента. Рандом нужно вставлять в самом клике небольшой.
Ну и нами тут, изучавшими математику, принято обозначать горизонтальные координаты через X, а вертикальные через Y.

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

Вместо
Код:
WinMove("EVE", "", 0, 0)

Я использую
Код:
WinMove("EVE", "", -3, -19)

для Win XP.
Тогда рамка уходит за экран почти целиком, и внизу становится доступнее на 19 пикселей больше. А именно там скрываются свёрнутые окна.

В пиксельсёрче у тебя лучше добавить ещё один параметр - шейд, мало ли, вдруг точка будет чуток другого оттенка. Думаю 10-15 хватит. Читай хелп по пиксельсёрчу если что.


Вообще, твой скрипт только и делает, что находит непись 1 раз, лочит три строчки, даже если непись только в первой, выпускает дронов, науськивает их и отключается.
Цикл
Код:
While 1
WEnd

тут совершенно ни к чему.

А ещё, при сдвиге овервью, тебе придётся править несколько раз твои 1100 и один раз 1010. Так что лучше их вогнать в начале скрипта в переменные, и в случае чего править только один раз.

И ещё по писксельсёрчу. Внимательно прочитай к нему хелп. Таким вызовом ты проверяешь на красные точки не только овервью, а весь прямоугольник от 0,0 до 1100, 160, методом справа налево снизу вверх. И туда не только овервью попадает...


Код:
Send("{ctrldown}")  ; Нажать и удерживать клавишу Ctrl
        Send("{z}")         ; Нажать и удерживать клавишу Z
                            ; У меня ctrl+z натравливает дронов
        Send("{Ctrlup}")    ;отпустить  клавишу Ctrl

Меняется на
Код:
Send("^z")


А чтобы не было несрабатываний из-за слишком быстрого по-умолчанию кликанья вставляем в начало скрипта нечто типа
Код:
AutoItSetOption("SendKeyDelay", 100)
AutoItSetOption("SendKeyDownDelay", 32)
AutoItSetOption("MouseClickDownDelay", 28)
 
Автор
R

Rymex

Новичок
Сообщения
4
Репутация
0
низнал, спасибо
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
В общем, я предыдущий пост правил сто раз, так что там смотри :smile:
 
Верх