Александр_
[url=http://autoit-script.ru/index.php?topic=21393
- Сообщения
- 62
- Репутация
- 2
Доброго времени суток! Написал небольшого бота не загрузку и выходи из игры, но столкнулся с некоторыми неприятностями такими как:
1. Мышь не всегда попадает в нужные координаты. Такое ощущение, что координаты отсчитываются то относительные от края окна, то от края экрана... Непонятно как это исправить
2. Бот сбивается, т.е производит манипуляции в неподходящее время. Написал уже 2 проверки для распознания когда надо производить действия смысла особо не прибавилось.... В чем может быть загвоздка?
3. Т.к бот работает на 4 окна с одинаковым заголовком, то постоянно проверка на изменения цвета пикселя выполняется непонятно к цему привязана, а обращаться к окну по handle не получается возникают ошибки
4. Все проверки срабатывают, а результат не правильный...
Кому не трудно помогите довести бота до рабочего состояния. Заранее спасибо за внимание.
Для большего понимая
1. Мышь не всегда попадает в нужные координаты. Такое ощущение, что координаты отсчитываются то относительные от края окна, то от края экрана... Непонятно как это исправить
2. Бот сбивается, т.е производит манипуляции в неподходящее время. Написал уже 2 проверки для распознания когда надо производить действия смысла особо не прибавилось.... В чем может быть загвоздка?
3. Т.к бот работает на 4 окна с одинаковым заголовком, то постоянно проверка на изменения цвета пикселя выполняется непонятно к цему привязана, а обращаться к окну по handle не получается возникают ошибки
4. Все проверки срабатывают, а результат не правильный...
Кому не трудно помогите довести бота до рабочего состояния. Заранее спасибо за внимание.
Для большего понимая
Код:
Func winButton ()
;AutoItSetOption("CaretCoordMode",0)
Opt("MouseCoordMode", 0)
Dim $wList[2]=[1,2];[2]=[[1,2],[2,2]]
Dim $bList[2]=[1,2];[2]=[[1,2],[2,2]]
GUISetState(@SW_HIDE)
GUISetState(@SW_DISABLE, $mainwindow)
$ex = False
$i=0
$j=1
$k=0
$n=0
Do
Select
Case $w = True
$wList[0]= WinGetHandle(WinGetTitle("[ACTIVE]")) ;$aList[$i][1]
MsgBox(4096,"warface",$wList[0])
$w = False
$k=$k+1
Case $ww = True
$wList[1]= WinGetHandle(WinGetTitle("[ACTIVE]")) ;$aList[$i][1]
MsgBox(4096,"warface",$wList[1])
$ww = False
$k=$k+1
Case $b= True
$bList[0]= WinGetHandle(WinGetTitle("[ACTIVE]"));$aList[$i][1]
MsgBox(4096,"bleckwood", $bList[0])
$b = False
$k=$k+1
Case $bb= True
$bList[1]= WinGetHandle(WinGetTitle("[ACTIVE]"));$aList[$i][1]
MsgBox(4096,"bleckwood", $bList[1])
$bb = False
$k=$k+1
EndSelect
if $k=4 Then
Do
if $ex = True Then ExitLoop
;MsgBox(0,"","начало фарма!")
Sleep(500)
WinActivate($wList[0])
MouseMove(700,425,5)
MouseClick("left")
Sleep(500)
WinActivate($bList[0])
MouseMove(700,425,5)
MouseClick("Left")
Sleep(500)
WinActivate($wList[1])
MouseMove(700,425,5)
MouseClick("left")
Sleep(500)
WinActivate($bList[1])
MouseMove(700,425,5)
MouseClick("Left")
;Sleep(1000)
$i=$i+1
;$n=$n+1
if $i=2 Then $i=0
; новый кусок=================новый кусок=================новый кусок=================новый кусок=================новый кусок=================новый кусок=================
;$n=8
if ProcessExists ( $ok ) Then ; Проверьте, если процесс запущен Блокнот.
Else
MsgBox ( 64 , "" , " не работает" )
EndIf
$Mem = _WinAPI_GetProcessMemoryInfo($ok)
;MsgBox(64,'',Round($Mem[9] / 1024))
$p = $Mem[9]
Sleep (500)
$Mem = _WinAPI_GetProcessMemoryInfo($ok)
Sleep(500)
If $p < $Mem[9] Then
Global $log = True
;MsgBox (64, "", "true")
EndIf
if $p >= $Mem[9] Then
Global $log = False
; MsgBox(64,"","false")
EndIf
Until $log = True
;новый кусок=================новый кусок=================новый кусок=================новый кусок=================новый кусок=================новый кусок=================
Sleep(5000)
;Opt("MouseCoordMode", 0)
Do
WinActivate($wList[0])
MouseMove(800,425,5)
WinActivate($bList[0])
MouseMove(800,425,5)
WinActivate($wList[1])
MouseMove(800,425,5)
WinActivate($bList[1])
MouseMove(800,425,5)
$checksum = PixelGetColor (710,430)
Sleep(500)
$chec = PixelGetColor (710,430)
if $checksum = $chec Then
Global $l = True
EndIf
if $checksum <> $chec Then
Global $l = False
EndIf
$pin = 0
$Mema = _WinAPI_GetProcessMemoryInfo($ok)
;MsgBox(64,'',Round($Mem[9] / 1024))
$pin = $Mema[9]
Sleep (1000)
$Mema = _WinAPI_GetProcessMemoryInfo($ok)
;Sleep(1000)
If $pin < $Mema[9] Then
Global $log = True
;Sleep(1000)
;MsgBox (64, "", "true")
EndIf
if $pin >= $Mema[9] And $l = False Then
Global $log = False
; MsgBox(64,"","false")
EndIf
Until $log = False
;новый кусок=================новый кусок=================новый кусок=================новый кусок=================новый кусок=================новый кусок=================
; WEnd
WinActivate($bList[0])
Send("{ESC}")
MouseMove(400,290,5)
MouseClick("Left")
MouseClick("Left")
MouseMove(350,350,5)
MouseClick("Left")
MouseClick("Left")
Sleep(500)
WinActivate($bList[1])
Send("{ESC}")
MouseMove(400,290,5)
MouseClick("Left")
MouseMove(350,350,5)
MouseClick("Left")
Sleep(40000)
WinActivate($wList[0])
MouseMove(700,550,5)
MouseClick("Left")
MouseClick("Left")
Sleep(5000)
WinActivate($wList[1])
MouseMove(700,550,5)
MouseClick("Left")
MouseClick("Left")
$n=0
EndIf
;EndIf
Until _IsPressed ("11")= 1
GUISetState(@SW_SHOW)
GUISetState(@SW_ENABLE, $mainwindow)
EndFunc