Что нового

[World of Tanks] Бот для игры by LTR

asa12

Новичок
Сообщения
66
Репутация
3
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Автору за героическую попытку уже надо давать медаль. Сам играю в танки-онлайн. Как сделать логику стреляния удачного и катания так и не разобрался. :-\
Так что развлекаюсь сам. Кинул 300 рублей - за месяц качнул танки до 6 левела, дальше и вправду труба без более серьёзного вложения.
Хотя по боту вот сейчас прикинул. Пусть бот стоит на респе (ездить мрак - там куча карт - писать для каждой реперные точки, хм хотя было бы желание) и ловит в области обзора "красные крестики" и стреляет на автопилоте. Толку будет мало, но хоть что то.
5-6 000 денег в любом случае дадут*15 минут максимум.
25 000 в час = 24*25к=500-600 000 в сутки.
Танк 7 и далее стоит около 1,2кк, фармится за 2-3 дня.
Прям желание проснулось накатать бота. Жаль правда я больше легкие танки люблю и еву.
 
Автор
L

LTR

Знающий
Сообщения
55
Репутация
13
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Вчера тестовый акк получил бан с формулировкой за ботоводство.

Статистика на аке такая:
Проведено боев 600+
Побед 40%
Проигрышей 58%
Выжил 26%
!--------------------
Танков уничтожено 20
Максимум за бой 2
Процент попаданий 20%
Нанесено повреждений 4К +
Обнаружено врагов 400+
!--------------------
Суммарный опыт 60К
Средний опыт за бой 90
Максимальный опыт за бой 500
!--------------------
Нафармлино денег в общем около 900К

При этом были еще получены разные плюшки типа:
Камикадзе
Разведчик
Стальная стена
Снайпер
Бронебойщик

Бот работал обычно с 18-00 до 9-00, время когда я ухожу и прихожу на работу, в течение 3х дней. За это время успел прокачать немецкие и американские танки до 5 уровня.

Вот, небольшой отчет.

Теперь задача:
Исходя из приведенного выше делаем вывод что стрелять и убивать мы обязаны :smile: иначе в баньку...
Расчет буду делать такой:
1 - за бой танк должен совершать 3 выстрела наносящих дамаг
2 - за 3 боя танк должен уничтожать минимум 1 вражеский
3 - исходя из 2х выше задач будем учить танк крыситься по кустам

Вообщем как то так. Скоро примусь за написание ведение боя, пока программа может войти в бой, выйти после смерти и выполнять авто релогин в случае разрыва связи.
 
Автор
L

LTR

Знающий
Сообщения
55
Репутация
13
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Возможно ли как нибудь выполнить нажатие 2х клавиш одновременно, те интересует именно нажатие например такое сочетание как CTRL + Right Mouse?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Код:
Send("{CTRLDOWN}")
MouseClick("right")
Send("{CTRLUP}")
 
Автор
L

LTR

Знающий
Сообщения
55
Репутация
13
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Что то не могу разобраться, вот участок кода который должен передвигать мышку в координаты где обнаружен цвет, перед движением выдавать сообщение со значением координат.
Код:
Opt("PixelCoordMode", 2) ; Определяем пиксили от верхнего левого угла окна
Opt("MouseCoordMode",2) ; Определяем положение курсора от левого верхнего угла окна

WinActivate("[TITLE:W.o.T. Client]","")

While 1
	Select
		Case WinActive("[TITLE:W.o.T. Client]","") = 0
			Exit
		Case WinActive("[TITLE:W.o.T. Client]","") = 1
			$var = PixelSearch(0,0,100,100,0x000000)
			If Not @error Then
				MsgBox(0, "X and Y are:", $var[0] & " - " & $var[1])
				MouseMove($var[0],$var[1],50)
			EndIf
	EndSelect
WEnd

При запуске ничего не происходит, сообщение не выдается и курсор не двигается. Если я правильно понял перевод функции то она возвращает только координаты найденного цвета? А если он его не находит то условие If продолжает код без выполнения своего тела.
Правильно ли я понимаю?

UPD: разобрался, если кому интересно, ниже приведен код для поиска на карте вражеской техники:
Код:
Opt("PixelCoordMode", 2) ; Определяем пиксили от верхнего левого угла окна
Opt("MouseCoordMode",2) ; Определяем положение курсора от левого верхнего угла окна
WinActivate("[TITLE:W.o.T. Client]","")

While 1
	Select
		Case WinActive("[TITLE:W.o.T. Client]","") = 0
			Exit
		Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
			While 1
			$var = PixelSearch(825,568,1014,756,0xDA0000,3)
			If @error=0 Then
				Send("{CTRLDOWN}")
				MouseMove($var[0],$var[1])
				Send("{CTRLUP}")
			EndIf
			WEnd
	EndSelect
WEnd
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Распространенная ошибка, ты пишешь только на случай успеха. Рекомендую взять за привычку описывать если не кодам то хотя бы комментами все условия.
Код:
Opt("PixelCoordMode", 2) ; Определяем пиксили от верхнего левого угла окна
Opt("MouseCoordMode",2) ; Определяем положение курсора от левого верхнего угла окна
WinActivate("[TITLE:W.o.T. Client]","")

While 1
    Select
        Case WinActive("[TITLE:W.o.T. Client]","") = 0
            Exit
        Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
            While 1
            $var = PixelSearch(825,568,1014,756,0xDA0000,3)
            If Not @error Then
                Send("{CTRLDOWN}")
                MouseMove($var[0],$var[1])
                Send("{CTRLUP}")
            Else
                ;Мы не нашли нужный цвет
            EndIf
            WEnd
    EndSelect
WEnd
 
Автор
L

LTR

Знающий
Сообщения
55
Репутация
13
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Belfigor сказал(а):
Распространенная ошибка, ты пишешь только на случай успеха. Рекомендую взять за привычку описывать если не кодам то хотя бы комментами все условия.

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

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Ну если там красная точка имеет шанс появится если покрутить камеру, как раз этим можно заняться в свободное время. Кстати в случае неудачного условия можно инициализировать таймер или счетчик и в последствии по прошествии определенного времени (или количества) срабатывания неудачных проверок одна за другой принять какое-то убер решение.
Код:
Local $var = 1
Local $Timer = 0
Local $Pause
While 1
    If $var = 1 Then
        MsgBox(0,0,1)
        $var = 0
    ElseIf $var = 0 Then
        If $Timer = 0 Then $Timer = TimerInit()
        $Pause = Round(TimerDiff($Timer))
        If $Pause < 5000 Then
            ;Можно принять какое-то решение в данном времянном промежутке
            ToolTip("Первая фаза ожидания"&@CR&"Прошло времени: "&$Pause&"ms")
        ElseIf $Pause > 5000 And $Pause < 10000 Then
            ;Можно принять какое-то решение в данном времянном промежутке
            ToolTip("Вторая фаза ожидания"&@CR&"Прошло времени: "&$Pause&"ms")
        ElseIf $Pause > 10000 Then
            ;Можно принять какое-то решение в данном времянном промежутке
            MsgBox(0,0,"Достигнуто предельное время ожидания"&@CR&"Начинаем отсчет с начала")
            $Timer = 0 ;Сбрасываем таймер на 0 и подготавливаем его к тому чтобы начать новый отсчет при следующей неудачной проверке.
        EndIf
        Sleep(10)
    EndIf
WEnd



Добавлено:
Сообщение автоматически объединено:

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

LTR

Знающий
Сообщения
55
Репутация
13
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Код:
Opt("PixelCoordMode", 2) ; Определяем пиксили от верхнего левого угла окна
Opt("MouseCoordMode",2) ; Определяем положение курсора от левого верхнего угла окна
WinActivate("[TITLE:W.o.T. Client]","")

While 1
	Select
		Case WinActive("[TITLE:W.o.T. Client]","") = 0
			ExitLoop	
		; Определяем на карте цель и наводимся на нее и пытаемся паразить
		Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
			While 1
				$var = PixelSearch(825,568,1014,756,0xDA0000,3)
				If @error=0 Then
					Send("{CTRLDOWN}")
					MouseClick("right",$var[0],$var[1])
					Send("{CTRLUP}")
					MouseClick("middle")
					While 1
						; Точное прицеливание
						; Пытаемся найти на экране красный цвет врага
						$var2 = PixelSearch(250,150,750,768,0xDA0000)
						If @error=0 Then
							While 1
							Sleep(2000)
							; Проверяем чтоб прицел был сведен
							$var3 = PixelSearch(500,375,520,400,0x00CC00)
							If @error=0 Then
								MouseClick("left",$var2[0],$var2[1])
							Else
								ExitLoop
							EndIf
							WEnd
						Else
							Sleep(2000)
							Send("{SHIFTDOWN}{SHIFTUP}")
							ExitLoop
						EndIf
					WEnd
				Else
					ExitLoop
				EndIf
			WEnd
	EndSelect
WEnd


Получилось вот как то так, вообщем за 3 боя было сбито 2 танка, и с 10ок накрыто, что радует, не радует другое что почему то ель всегда находится в стороне :( Полагаю где то цвет не совпадает. Еще хотел спросить, как сделать так чтоб допустим мышка велась за объектом, как бы следила за ним, просто что то попробовал не получилось...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Код:
$var2 = PixelSearch(250,150,750,768,0xDA0000)
If Not @error Then
    MouseMove($var2[0], $var2[1])
Else
    ;
EndIf
 

clown

Новичок
Сообщения
28
Репутация
3
Re: [Автоматизация] Бот для игры Мир танков(WoT)

LTR сказал(а):
Код:
Opt("PixelCoordMode", 2) ; Определяем пиксили от верхнего левого угла окна
Opt("MouseCoordMode",2) ; Определяем положение курсора от левого верхнего угла окна
WinActivate("[TITLE:W.o.T. Client]","")

While 1
	Select
		Case WinActive("[TITLE:W.o.T. Client]","") = 0
			ExitLoop	
		; Определяем на карте цель и наводимся на нее и пытаемся паразить
		Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
			While 1
				$var = PixelSearch(825,568,1014,756,0xDA0000,3)
				If @error=0 Then
					Send("{CTRLDOWN}")
					MouseClick("right",$var[0],$var[1])
					Send("{CTRLUP}")
					MouseClick("middle")
					While 1
						; Точное прицеливание
						; Пытаемся найти на экране красный цвет врага
						$var2 = PixelSearch(250,150,750,768,0xDA0000)
						If @error=0 Then
							While 1
							Sleep(2000)
							; Проверяем чтоб прицел был сведен
							$var3 = PixelSearch(500,375,520,400,0x00CC00)
							If @error=0 Then
								MouseClick("left",$var2[0],$var2[1])
							Else
								ExitLoop
							EndIf
							WEnd
						Else
							Sleep(2000)
							Send("{SHIFTDOWN}{SHIFTUP}")
							ExitLoop
						EndIf
					WEnd
				Else
					ExitLoop
				EndIf
			WEnd
	EndSelect
WEnd


Получилось вот как то так, вообщем за 3 боя было сбито 2 танка, и с 10ок накрыто, что радует, не радует другое что почему то ель всегда находится в стороне :( Полагаю где то цвет не совпадает. Еще хотел спросить, как сделать так чтоб допустим мышка велась за объектом, как бы следила за ним, просто что то попробовал не получилось...

постоянно находит пиксель красного цвета на миникарте, а не на боевом поле и на этом вся стрельба...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Исключи область миникарты из поиска
 

clown

Новичок
Сообщения
28
Репутация
3
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Belfigor сказал(а):
Исключи область миникарты из поиска
так?
Код:
PixelSearch(1,1,805,760,0xDA0000)

тогда теряем кусок экрана (1,760,1022,555)
как можно выделить область поиска не прямоугольной формы?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

можно если написать свою UDF. Так же ты можешь просто по средством нескольких пиксельсерчей определить несколько областей где будет искаться цвет.


Добавлено:
Сообщение автоматически объединено:

Код:
PixelSearch
if Not @error Then
    ;
Else
    PixelSearch
    If Not @error Then
        ;
    Else
        PixelSearch
        If Not @error Then
            ;
        Else
            ...
        EndIf
    EndIf
EndIf
 

S32P87

Новичок
Сообщения
7
Репутация
2
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Пишу бота для этой же игры, но для танка а не для арты, осталось только стрельбу прикрутить и вопросик возник. Можно ли как то определить направление движение мыши по двум координатам, к примеру, начальное и конечное ?
С помощью функций PixelGetColor, PixelSearch и MouseMove
Если можно то поподробнее 5 - тый день занимаюсь Autoit.
Для стрельбы по движущемуся объекту.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Зная начальное и конечное положение можно определить направление куда мышь движется, верх, низ, право, лево, вверх влево, вверх вправо, вверх вверх влево, вниз вправо вправо, любое направление. Школа, математика, 3-й класс.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Автоматизация] Бот для игры Мир танков(WoT)

S32P87 [?]
Можно ли как то определить направление движение мыши
Код:
HotKeySet('{Esc}', '_Exit')
$sW = ''
$sH = ''

While 1
	$aPos = MouseGetPos()
	Sleep(50)
	$aPos_1 = MouseGetPos()
	If $aPos_1[0] - $aPos[0] > 0 Then
		$sW = 'вправо'
	ElseIf $aPos_1[0] - $aPos[0] < 0 Then
		$sW = 'влево'
	Else
		$sW = ''
	EndIf
	If $aPos_1[1] - $aPos[1] > 0 Then
		$sH = 'вниз'
	ElseIf $aPos_1[1] - $aPos[1] < 0 Then
		$sH = 'вверх'
	Else
		$sH = ''
	EndIf
	ToolTip($sW & ' ' & $sH, 0, 0, 'Движение мыши', 1)
WEnd

Func _Exit()
	Exit
EndFunc   ;==>_Exit
;D
 

S32P87

Новичок
Сообщения
7
Репутация
2
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Belfigor меня интересовало именно описание на языке Autoit, а не школа 3 класса.
madmasles спасибо за ответ.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Описание на автоит есть в теме про бота для Flyff. Ты же не код просил а просто вопрос задал можно ли.
 

S32P87

Новичок
Сообщения
7
Репутация
2
Re: [Автоматизация] Бот для игры Мир танков(WoT)

Возникла проблема я планировал использовать функцию MouseMove для перемещение курсора по экрану клиента, но движений не происходит. Есть ли альтернативная функция или может быть кто знает причину?
Все остальные функции, передвижение танка, выстрел, работают. И на скриншоте игры действия выполняются в полном объеме.
 
Верх