Моя попытка написать бот для игры The Infinite Black. Знаний в программировании у меня практически нет, поэтому, скорее всего, ниже вы увидите "быдло" код. И отсюда соответственно приму помощь в любом виде, хоть советом по исправлению, хоть делом. Заранее благодарю.
Что делает:
+ Летает по серым клеткам, рандомно выбирая направление
+ Проверяет путь и цвет клетки, поэтому в черные зоны случайно не залетит
+ Атакует, прицепляясь пока не убьет
+ Во время боя хилится
+ Если попадает в клетку со СтарПортом, то продает ресурсы (Надо чтобы, была включена вкладка с ресурсами вручную 1 раз)
Минусы:
- Может летать перегруженым, оставляя дроп в космосе
- Принудительно не летит к СтарПорту для продажи
- Быдлокодинг, много рекурсивных функций
Огромные минусы:
-- Зависим от разрешения дисплея 1366х768 (писал для себя, очень много проверки пикселов на цвет, работать с памятью еще не умею)
-- Необходимо ОБЯЗАТЕЛЬНО иметь Дрона и Файтера за БД
-- Нестабильная работа в целом
-- Забирает управление мышью, сделать что-то во время работы бота невозможно, не остановив его (Запуск бота по PageUp, остановка по Escape)
Что делает:
+ Летает по серым клеткам, рандомно выбирая направление
+ Проверяет путь и цвет клетки, поэтому в черные зоны случайно не залетит
+ Атакует, прицепляясь пока не убьет
+ Во время боя хилится
+ Если попадает в клетку со СтарПортом, то продает ресурсы (Надо чтобы, была включена вкладка с ресурсами вручную 1 раз)
Минусы:
- Может летать перегруженым, оставляя дроп в космосе
- Принудительно не летит к СтарПорту для продажи
- Быдлокодинг, много рекурсивных функций
Огромные минусы:
-- Зависим от разрешения дисплея 1366х768 (писал для себя, очень много проверки пикселов на цвет, работать с памятью еще не умею)
-- Необходимо ОБЯЗАТЕЛЬНО иметь Дрона и Файтера за БД
-- Нестабильная работа в целом
-- Забирает управление мышью, сделать что-то во время работы бота невозможно, не остановив его (Запуск бота по PageUp, остановка по Escape)
Код:
;============================Settings================================
HotKeySet("{PgUp}", "Fighting")
HotKeySet("{PgDn}","Map")
HotKeySet("{ESC}", "Terminate")
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{NUMPADMULT}", "Selling")
;====================================================================
;ВЫХОД ИЗ СКРИПТА ПРИ НАЖАТИИ 'Escape'
;===========================Variables================================
Dim $Center[2]=[515, 523] ;Кнопка центрирования карты
Dim $JumpButtonCoords[2]=[408, 511] ;Кнопка GO
Global $Paused
Global $Map[4][4]
Global $GrayTile[3]
Global $Enemy[3]
Global $Sell[3]
;Координаты окружающих клеток возможных к перемещению на 1 шаг (Tiles coords we can move directly in 1 jump)
;NW - Северо-запад N - Север NE - Северо-восток
;W - Запад Клетка Корабля E - Восток
;SW - Юго-запад, S - Юг SE - Юго-восток
;=====================================================================
;===========================Тело скрипта==============================
;=====================================================================
While 1
WEnd
;Функция при нажатии на PageDown выводит схематическую карту с доступными для прыжка направлениями
Func Map()
WinActivate("[TITLE:BlueStacks App Player for Windows (beta-1]", "")
WinMove ("BlueStacks App Player for Windows (beta-1)", "", 0, 0)
MouseClick("",$Center[0],$Center[1])
MouseClick("", 512, 313)
$NWP = PixelGetColor(496,293)
If $NWP = 0 Then
$Map[1][1] = " "
Else
$Map[1][1] = "\ "
EndIf
$NP = PixelGetColor(512,286)
If $NP = 0 Then
$Map[1][2] = " "
Else
$Map[1][2] = "|"
EndIf
$NEP = PixelGetColor(534,293)
If $NEP = 0 Then
$Map[1][3] = " "
Else
$Map[1][3] = " /"
EndIf
$WP = PixelGetColor(488,310)
If $WP = 0 Then
$Map[2][1] = " "
Else
$Map[2][1] = "--"
EndIf
$EP = PixelGetColor(541,310)
If $EP = 0 Then
$Map[2][3] = " "
Else
$Map[2][3] = "--"
EndIf
$SWP = PixelGetColor(495,332)
If $SWP = 0 Then
$Map[3][1] = " "
Else
$Map[3][1] = "/ "
EndIf
$SP = PixelGetColor(514,341)
If $SP = 0 Then
$Map[3][2] = " "
Else
$Map[3][2] = "|"
EndIf
$SEP = PixelGetColor(534,333)
If $SEP = 0 Then
$Map[3][3] = " "
Else
$Map[3][3] = " \"
EndIf
MsgBox(0, '', $Map[1][1] & $Map[1][2] & $Map[1][3] & @CR & $Map[2][1] & "0" & $Map[2][3] & @CR & $Map[3][1] & $Map[3][2] & $Map[3][3])
EndFunc
Func Moving()
WinActivate("[TITLE:BlueStacks App Player for Windows (beta-1]", "")
WinMove ("BlueStacks App Player for Windows (beta-1)", "", 0, 0)
$NWP = PixelGetColor(496,293)
If $NWP = 0 Then
$Map[1][1] = 0
Else
$Map[1][1] = 8
EndIf
$NP = PixelGetColor(515, 279)
If $NP = 0 Then
$Map[1][2] = 0
Else
$Map[1][2] = 1
EndIf
$NEP = PixelGetColor(534,293)
If $NEP = 0 Then
$Map[1][3] = 0
Else
$Map[1][3] = 2
EndIf
$WP = PixelGetColor(488,310)
If $WP = 0 Then
$Map[2][1] = 0
Else
$Map[2][1] = 7
EndIf
$EP = PixelGetColor(541,310)
If $EP = 0 Then
$Map[2][3] = 0
Else
$Map[2][3] = 3
EndIf
$SWP = PixelGetColor(495,332)
If $SWP = 0 Then
$Map[3][1] = 0
Else
$Map[3][1] = 6
EndIf
$SP = PixelGetColor(514, 341)
If $SP = 0 Then
$Map[3][2] = 0
Else
$Map[3][2] = 5
EndIf
$SEP = PixelGetColor(534,333)
If $SEP = 0 Then
$Map[3][3] = 0
Else
$Map[3][3] = 4
EndIf
;MsgBox(4, '', $Map[1][1] & $Map[1][2] & $Map[1][3] & @CR & $Map[2][1] & "0" & $Map[2][3] & @CR & $Map[3][1] & $Map[3][2] & $Map[3][3] )
$DestinationPoint = Random(1,8,1)
Switch $DestinationPoint
Case 1 ;Двигаемся на север (Moving North)
ToolTip('N')
If $Map[1][2] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(498, 198, 532, 226, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0],$Graytile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
Case 2 ;Двигаемся на северо-восток (Moving North-East)
ToolTip('NE')
If $Map[1][3] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(598, 198, 631, 231, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0], $GrayTile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
Case 3 ;Двигаемся на восток (Moving East)
ToolTip('E')
If $Map[2][3] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(597, 296, 632, 330, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0],$GrayTile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
Case 4 ;Двигаемся на юго-восток (Moving South-East)
ToolTip('SE')
If $Map[3][3] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(595, 396, 631, 427, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0],$GrayTile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
Case 5 ;Двигаемся на юг (Moving South)
ToolTip('S')
If $Map[3][2] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(498, 397, 528, 427, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0],$GrayTile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
Case 6 ;Двигаемся на юго-запад (Moving South-West)
ToolTip('SW')
If $Map[3][1] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(398, 398, 429, 429, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0],$GrayTile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
Case 7 ;Двигаемся на запад (Moving West)
ToolTip('W')
If $Map[2][1] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(395, 296, 430, 330, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0],$GrayTile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
Case 8 ;Двигаемся на северо-запад (Moving North-West)
ToolTip('NW')
If $Map[1][1] = 0 Then
Moving()
EndIf
$GrayTile = PixelSearch(397, 197, 431, 231, 0x8C8A8C)
If @error = 1 Then
Moving()
Else
ToolTip('Двигаемся на северо-восток')
MouseClick ('left', $GrayTile[0],$GrayTile[1])
Sleep(200)
MouseClick ('left', $JumpButtonCoords[0],$JumpButtonCoords[1])
Sleep(2000)
ToolTip('')
Fighting()
EndIf
EndSwitch
EndFunc
Func Fighting()
WinActivate("[TITLE:BlueStacks App Player for Windows (beta-1]", "")
$Fighter = PixelSearch(980, 66, 1013, 74, 0xFFFFFF) ;Проверка на белый цвет ХП у файтера и хил
If @error = 1 Then
MouseClick('Primary', 983, 52)
EndIf
$Drone = PixelSearch(980, 107, 1013, 117, 0xFFFFFF) ;Проверка на белый цвет ХП у Дрона и хил
If @error = 1 Then
MouseClick('Primary', 960, 94)
EndIf
$SelfRep = PixelSearch(846, 80, 881, 90, 0xFFFFFF) ;Проверка на белый цвет ХП у основного корабля и хил
If @error = 1 Then
MouseMove(840, 75)
MouseDown('left')
Sleep(1000)
MouseUp('left')
EndIf
$Att = PixelGetColor(406, 529) ;Проверка прицепился ли к врагу корабль.
If $Att = 6369659 Or $Att = 9765363 Then
Sleep(500)
Fighting()
EndIf
$Enemy = PixelSearch(897, 124, 1026, 163, 0xFECC59)
Select
Case @error = 0
MouseMove($Enemy[0], $Enemy[1])
MouseDown('left')
Sleep(1000)
MouseUp('left')
Fighting()
Case @error = 1
$AttackedEnemy = PixelSearch(897, 124, 1026, 163, 0xDF1C08)
If @error = 0 Then
Sleep(1000)
Fighting()
Else
Center()
EndIf
EndSelect
EndFunc
Func Center()
$StarPort = PixelGetColor(800, 124) ;Проверка на наличие старпорта
If $StarPort = 7598175 Then
Selling()
EndIf
$Drop = PixelGetColor(776, 132) ;Проверка на дроп в клетке (любой)
If $Drop > 0 Then
MouseClick('',776, 132)
EndIf
MouseClick("",$Center[0],$Center[1])
MouseClick("", 512, 313)
Sleep(3000)
Moving()
EndFunc
Func Selling()
WinActivate("[TITLE:BlueStacks App Player for Windows (beta-1]", "")
$Res = PixelSearch(766, 99, 812, 136, 0x7EF16C)
If @error = 0 Then
MouseClick('Primary', $Res[0],$Res[1])
Sleep(1000)
EndIf
Trade()
EndFunc
Func Trade()
$Sell = PixelSearch(522, 189, 798, 393, 0x00FF00)
If @error = 1 Then
MouseClick('', 1004, 577)
Moving()
Else
MouseClick("", $Sell[0],$Sell[1])
Trade()
EndIf
EndFunc
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
ToolTip('Скрипт приостановлен')
WEnd
ToolTip("")
EndFunc
Func Terminate()
ToolTip('Скрипт остановлен')
Exit 0
EndFunc