Добрый день всем участникам конференции, наткнулся тут на игру Мир танков. Прокачка на низких уровнях проста, но чем выше уровень тем больше времени нужно проводить в игре. Нашел бота, в принципе неплохой но хочется чего то большего, решил написать сам.
Сразу появилось куча вопросов...
1 стоит ли делать гуи для бота
2 как определить координаты в окне игры
3 как можно передать параметры движение, те заставить бота нажимать кнопки
Мэйн файл:
На заметку, по разработке массива карты.
Сразу появилось куча вопросов...
Мэйн файл:
Код:
#comments-start
Бот для игры Мир танков
Обязательное условие, игру необходимо запустить в
оконном режиме с разрешением 1024х768, иначе бот
будет работать не корректно!
Так же для данного бота необходим мод xvm-lite!
Бот предназначен под стандартные бои!
#comments-end
Opt("PixelCoordMode", 2) ; Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ; Отсчет координат мыши от левого верхнего угла клиентской части окна
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; Пользовательские функции
#include <C:\AutoIT\DropBox\LangFunc.au3> ; Языковой файл
#include <C:\AutoIT\DropBox\HangarFunc.au3> ; Логин, элементы ангара
#include <C:\AutoIT\DropBox\BonusFunc.au3> ; Функции допю функционала
;#include <C:\AutoIT\DropBox\BattelFunc.au3> ; Стрельба и наведение
;#include <C:\AutoIT\DropBox\SocialFunc.au3> ; Чат
;#include <C:\AutoIT\DropBox\MoveFunc.au3> ; Передвижение по карте
;#include <C:\AutoIT\DropBox\HostFunc.au3> ; Соединение с сервером бота
;#include <C:\AutoIT\DropBox\StrategyFunc.au3> ; Стратигия боя
;#include <C:\AutoIT\DropBox\StatsFunc.au3> ; Статистика бота
;#include <C:\AutoIT\DropBox\GUI.au3> ; GUI
; Задаем горячую клавишу остановки скрипта
HotKeySet ("{`}","_exit")
; Данные переменные будут управляться черещ .ini файл, как результат работы GUI
$MainTanks=1 ; Диапазон значений от 0 до 2
$TankNation=1 ; Диапазон значений от 0 до 6
$TankType=1 ; Диапазон значений от 0 до 5
$TankSelect=1 ; Диапазон значений от 1 до 7
$GoToBattele=1 ; Диапозон значений от 1 до 2
; Активируем окно игры
ToolTip($WinActivate_ln,0,0)
Sleep(2000)
WinActivate("[TITLE:WoT Client]","")
; Начинаем основной цикл, пока в нем не вернется лож
While 1
Select
; Если окно не игры не активно
Case WinActive("[TITLE:WoT Client]","") = 0
MsgBox(0,$ProgTitle_ln,$MsgWinNotActive_ln,5)
ExitLoop
; Если окно игры активно
Case Not WinActivate("[TITLE:WoT Client]","") = 0
ToolTip($WinActive_ln,0,0)
Sleep(2000)
_Login()
sleep(2000)
; Проверяем нужно ли выбрать основные танки или нет
Case Not WinActivate ("[TITLE:WoT Client]","") = 0
_MainTanks($MainTanks)
; Проверяем нужно ли выбрать танки конкретной нации или нет
Case Not WinActivate ("[TITLE:WoT Client]","") = 0
_TankNation($TankNation)
; Проверяем нужно ли выбирать класс техники
Case Not WinActivate ("[TITLE:WoT Client]","") = 0
_TankType($TankType)
; Выбираем танк на котором пойдем в бой
Case Not WinActivate ("[TITLE:WoT Client]","") = 0
_TankSelect($TankSelect)
; Уходим в бой
Case Not WinActivate ("[TITLE:WoT Client]","") = 0
_GoToBattele($GoToBattele)
EndSelect
WEnd
На заметку, по разработке массива карты.
Проходимость карты:
0 - не проходимые места
1 - вода
2 - места где возможно понижение скорости(в основном вязкий грунт, болотища, не глубокая вода)
3 - подъемы/спуски
4 - свободно проходимые места(улицы, дороги, поля)
5 - возможно использовать как укрытие(высокие, камни, капитальные строения)
6 - разрушаемое строение(сараи, бараки, заборы)
7 - место с хорошей маскировкой(в основном кусты)
Масштабирование карты:
Размер карты 1000х1000 у.е.
Размер квадрата 100х100 у.е.
Массив геодаты для площади одного квадрата 100х100=10000 у.е., для все карты 1000х1000=1000000у.е.
Формат таблицы массива для геодаты карты
id_maps - пока что нет точного определения
x - значения от 0 до максимальной ширины карты
y - значения от 0 до максимальной высоты карты
cross - проходимость карты от 0 до 7
box - сервисная графа, указывает какой это квадрат
box_snails - сервисная графа, указывает какой это квадрат по улитке(возможно не нужное поле массива)
respawn - точки респауна 0-неможет, 1-обычный бой, 2-встречный бой, 3-штурм(если закономерности в точках появления нет, то поле скорей всего не нужно)
Пример заполнения массива для карты Тундра, обозначение дома на квадрате D2, с указанием координат по улитке D21.
Для удобного заполнения карты необходим редактор, в который можно было бы подложкой загрузить фон и разукрасить квадраты, после чего сохранить информацию в массив. В редакторе константами можно обозначить буквы по Х и цифры по Y для генерации поля box, по аналогии сделать и для поля box_snails.
Полученный массив планируется выгружать в формате таблицы SQL, скорее всего для MySQL.
0 - не проходимые места
1 - вода
2 - места где возможно понижение скорости(в основном вязкий грунт, болотища, не глубокая вода)
3 - подъемы/спуски
4 - свободно проходимые места(улицы, дороги, поля)
5 - возможно использовать как укрытие(высокие, камни, капитальные строения)
6 - разрушаемое строение(сараи, бараки, заборы)
7 - место с хорошей маскировкой(в основном кусты)
Масштабирование карты:
Размер карты 1000х1000 у.е.
Размер квадрата 100х100 у.е.
Массив геодаты для площади одного квадрата 100х100=10000 у.е., для все карты 1000х1000=1000000у.е.
Формат таблицы массива для геодаты карты
id_maps - пока что нет точного определения
x - значения от 0 до максимальной ширины карты
y - значения от 0 до максимальной высоты карты
cross - проходимость карты от 0 до 7
box - сервисная графа, указывает какой это квадрат
box_snails - сервисная графа, указывает какой это квадрат по улитке(возможно не нужное поле массива)
respawn - точки респауна 0-неможет, 1-обычный бой, 2-встречный бой, 3-штурм(если закономерности в точках появления нет, то поле скорей всего не нужно)
Пример заполнения массива для карты Тундра, обозначение дома на квадрате D2, с указанием координат по улитке D21.
Код:
id_maps=1(например пусть будет карта - Тундра)
x=115
y=305
cross=5(там стоит не разрушаемый дом на этой карте, который можно использовать как укрытие)
box=D2
box_snails=1
respawn=0
Для удобного заполнения карты необходим редактор, в который можно было бы подложкой загрузить фон и разукрасить квадраты, после чего сохранить информацию в массив. В редакторе константами можно обозначить буквы по Х и цифры по Y для генерации поля box, по аналогии сделать и для поля box_snails.
Полученный массив планируется выгружать в формате таблицы SQL, скорее всего для MySQL.