Global $var=Random(Random(1,2),3,1); генерирует случайное число
;*************************Рандомый выбор направления*******************************
If $var=1 Then; елсли 1 то
Send ("{left Down}")
Sleep (500)
Send ("{left Up}")
EndIf
If $var=2 Then; елсли 2 то
Send ("{right Down}")
Sleep (500);
Send ("{right Up}");
EndIf
If $var=3 Then; елсли 3 то
Send ("{up Down}")
Sleep (500)
Send ("{up Up}")
EndIf
;*************************Конец рандомый выбор направления*******************************
Да, но EVE-Online игрушка платная.darkmor сказал(а):...
Может лучше попробовать начать с браузерных игр? Ну или на EVE-Online, на данном форуме можно будет найти кучу готовых примеров что бы разобраться в языке.
Все что у меня есть я уже выложил, просто нет времени сейчас заняться ботом... :( Диплом и работа съели.Pol сказал(а):LTR, а Вы не желаете поделиться тем что получилось у Вас?
Вот весь код касательно интерфейса управления и управления игрой исключая бой(коменты смотри по коду):Pol сказал(а):А можно как для тупых выложить весь скрипт сразу? :whistle:
А то у меня проблемы на уровне входа в игру. См тему форума :
* Русское сообщество AutoIt > * Продвинутая автоматизация > * Разработка ботов (Модератор: Belfigor) > * Не выполняется функция MouseClick
#comments-start
Бот для игры Мир танков
Код:
Графический интерфейс
Запуск бота
Релогин
Выбор танка(на дороботке)
Выход из боя(После смерти)
#comments-end
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; Определяем параметры окна
Opt("PixelCoordMode", 2)
Opt("MouseCoordMode",2)
; Рисуем GUI интерфейс для управления ботом
$WoT = GUICreate("BoT", 200, 220, 192, 124)
$Client = GUICtrlCreateGroup("Управление клиентом", 8, 8, 185, 129)
$AutoRelog = GUICtrlCreateCheckbox("Авто вход в игру", 16, 24, 169, 17)
$ChangTank = GUICtrlCreateCheckbox("Поиск свободного танка", 16, 40, 169, 25)
$SortLabel = GUICtrlCreateLabel("В каком порядке выбирать танк", 16, 64, 169, 17)
$SortTank = GUICtrlCreateInput("123", 16, 104, 169, 21)
$StartBot = GUICtrlCreateButton("Запуск", 32, 154, 129, 25, $WS_GROUP)
$SaveSet = GUICtrlCreateButton("Сохранить настройки", 32, 180, 129, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
; попытка сохранять параметры в Ini
Case $SaveSet
$ARState = GUICtrlRead($AutoRelog)
$CTState = GUICtrlRead($ChangTank)
$STState = GUICtrlRead($SortTank)
If $ARState = 1 Then
IniWrite("Bot.ini", "ClConfig", "AutoRelogin", 1)
Else
IniWrite("Bot.ini", "ClConfig", "AutoRelogin", 0)
EndIf
If $CTState = 1 Then
IniWrite("Bot.ini", "ClConfig", "ChangeTank", 1)
Else
IniWrite("Bot.ini", "ClConfig", "ChangeTank", 0)
EndIf
IniWrite("Bot.ini", "ClConfig", "SortTank", $STState)
; запуск бота
Case $StartBot
; активируем окно игры
WinActivate("[TITLE:W.o.T. Client]","")
While 1
Select
; Если окно не активно оповещаем
Case WinActive("[TITLE:W.o.T. Client]","") = 0
MsgBox(0,"Сообщение","Окно игры не активно, бот остановлен")
ExitLoop
; Если окно активно,проверяем залогинен ли клиент
Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
; Если логин не совершен, совершаем его
PixelSearch(0,0,500,500,0x000000,100)
If @error=0 Then
Sleep(1000)
MouseClick("",512,540,2)
EndIf
; Необходимо добавить проверку нахождения в ангаре
; Начинаем выбор танка
Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
; Проверяем 1 слот
If PixelGetColor(461,40) = 0xB02022 Then
Sleep(3000)
MouseClick("",180,657,5)
Sleep(3000)
MouseClick("",511,46,5)
; Проверяем 2 слот
ElseIf PixelGetColor(461,40) = 0xB02022 Then
Sleep(3000)
MouseClick("",348,657,5)
Sleep(3000)
MouseClick("",511,46,5)
; Проверяем 3 слот
ElseIf PixelGetColor(461,40) = 0xB02022 Then
Sleep(3000)
MouseClick("",511,657,5)
Sleep(3000)
MouseClick("",511,46,5)
EndIf
; Параметры боя
; Проверка жив ли наш танк
Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
PixelSearch(0,0,500,500,0x000000,100)
If @error=0 Then
Sleep(3000)
Send("{R 2}")
EndIf
; Если танк убит выходим из боя
Case Not WinActive("[TITLE:W.o.T. Client]","") = 0
Sleep(3000)
Send("{ESC}")
Sleep(3000)
MouseClick("",510,372,5)
EndSelect
WEnd
EndSwitch
WEnd
For $a=1 To 2000000
$esc =PixelSearch( 1168, 240, 1176, 246, 0x393429, 10 )
if Not @error Then
; Send("{Esc}")
Sleep (200)
EndIf
$Gold =PixelSearch( 1340, 757, 1391, 783, 0xBD8E4A, 10 )
If Not @error Then
MouseMove(731, 70)
MouseClick( "left" )
EndIf
$coord = PixelSearch( 1222, 681, 1439, 892, 0xFF0000, 10 )
If Not @error Then
Send("{LCTRL}")
MouseMove( $coord[0],$coord[1])
MouseClick( "right" )
For $G=1 To 80
$co = PixelSearch( 22, 38, 1431, 663, 0x2920FF, 10 );0x2920FF
If Not @error Then
MouseMove( $co[0],$co[1]); меняющиещя координаты цели
;модуль точного наведения
$CX=724 ; координаты центра экрана
$CY=404 ;координаты центра экрана
If $co[0]<$CX Then
Send("{LEFT down}")
Else
Send("{LEFT up}")
EndIf
If $co[0]>$CX Then
Send("{RIGHT down}")
Else
Send("{RIGHT up}")
EndIf
If $co[1]>$CY Then
Send("{DOWN down}")
Else
Send("{DOWN up}")
EndIf
If $co[1]<$CY Then
Send("{UP down}")
Else
Send("{UP up}")
EndIf
If $co[0]=$CX And $co[1]=$CY Then
Sleep (200)
MouseClick( "left" )
;If $G>48 Then MsgBox(0, "X and Y are:", $co[0] & "," & $co[1])
;MouseClick( "left" )
;EndIf
EndIf
;If $G>70 Then
;MouseClick( "left" )
;MsgBox(0, "X and Y are:", $co[0] & "," & $co[1])
;EndIf
EndIf
Next
;MouseClick( "left" )
;Send("{LCTRL down}")
;MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
EndIf
Next
1 Для 60% наведения необходимо сменить прицел (по умолчанию в нем присутствует тот же цвет что и танки противника) -в итоге получаться что он ,часто наводиться сам на себя, пока не зарядится.
2 глобальное решение -пока руки не доходят Надо поменять цвет ромбика противника с красного на голубой
#comments-start
Маркеры карт(номера карт указаны как в клиенте):
1) ff0000 - Карелия
2) ff0099 - Малиновка
4) cc3399 - Химельсдорф
5) cc99ff - Прохоровка
5) 6600ff - Энск
6) 3300ff - Ласвиль
8) ffffff - Руинберг
10) ff9999 - Рудники
11) 660000 - Мурованка
13) 666666 - Эрленберг
15) 99ff99 - Комарин
18) 33ff33 - Утес
19) 003300 - Монастырь
23) 000000 - Вестфилд
28) ffff66 - Песчаная река
29) 999933 - Эл-Халлуф
34) 006600 - Редшир
35) 996600 - Степи
37) 666633 - Перевал
38) 6699cc - Заполярье
#comments-end
а френдлифаера в этом случае не получается?думаю надо сначала искать ярлычок, а потом сделать условие для поиска башни в уже менее больших координатах.1) Не обязательно менять прицел я эту проблему предпочел решить так:
а где ты карту нашел?я только тут World_of_Tanks\res\gui\maps\icons\map\ и то это просто картинки, из них миникарта не грузится...они походу в флешку вшиты.3) Определение стороны на карте:
Opt("SendKeyDownDelay", 10000);удержание 10 сек
Send("{a down}") ;Нажать клавишу A
Send("{a up}") ;Освободить клавишу A