Что нового

[Автоматизация] Зациклить скрипт и пауза для некоторых функций

be4hoctb

Новичок
Сообщения
38
Репутация
0
Помогите доработать скрипт.
Он проверяет пиксели в клиенте программы, делает скриншот и отправляет этот файл по почте. Но делает он это 1 раз и отключается. Нужно зациклить весть скрипт.
Например: начинает скрипт с функции _Monahi() при нужных условиях делает скриншот окна и отправляет его по почте. И тут мне надо поставить паузу на эту функцию скажем на 30 мин. (на отправку файла по почте) но чтобы остальные скрипты продолжали работать. И так же с остальными функциям надо поставить паузу на отправление файла по почте (_Monahi(), _Razvedka(), _Ataka()). Весть скрипт должен работать непрерывно но с паузами отправки файла по почте.

Код:
#RequireAdmin

#include <ScreenCapture.au3>



WinActivate("Stronghold Kingdoms - Europe 1")
$hWnd = WinGetHandle("Stronghold Kingdoms - Europe 1") ; Это для скрина только окна игры
$sFileName_1 = @DesktopDir&'\Monahi.bmp' ; Путь\Имя для Монахов
$sFileName_2 = @DesktopDir&'\Ataka.bmp' ; Путь\Имя для aтаки
Sleep (1000)
Opt ( "MouseClickDelay", 1000)

_Monahi()
Sleep (10000)

Func _Monahi()
	Local $hBmp
    MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
	Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
		  _ScreenCapture_SaveImage($sFileName_1, $hBmp)
		  Sleep (1000)
        _Send_Email_Monahi ('На деревню идет монах', 'Монах')
    EndIf
 EndFunc

_Razvedka()
Sleep (10000)


Func _Razvedka()
    $coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0) ; Если появились два меча
    If Not @error Then
        MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
        MouseClick('Left', 895, 134, 1) ; Переход по второстепенно вкладке
        $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
        If Not @error Then
		   _Send_Email_Razvedka ('Разведка вашей деревни', 'Разведка')
		    Sleep (5000)
            _Ataka()
        EndIf
    EndIf
EndFunc

_Ataka()
Sleep (10000)

Func _Ataka()
   ;$coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0); Если появились два меча
   ;If Not @error Then
	  Local $hBmp1
	  MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
	  MouseClick('Left', 830, 137, 1) ; Переход по второстепенно вкладке
       $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
    If Not @error Then
        $hBmp1 = _ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
		  _ScreenCapture_SaveImage($sFileName_2, $hBmp1)
		  Sleep (1000)
        _Send_Email_Ataka('Ваша деревня атакована', 'Атака')
	 EndIf
   EndFunc



Func _Send_Email_Monahi($Body, $Subject)
$FromAddress = '[email protected]' ; Адрес отправителя
$ToAddress = '[email protected]' ; Адрес получателя
$Username = '[email protected]' ; Логин отправителя
$Password = "1234" ; Пароль почты отправителя
$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
$Port = 465 ; Порт сервера
$SSL = 1 ; SSL
$AddAttachment = ('C:\Users\Администратор\Desktop\Monahi.bmp');отправляем файл

$conf = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
		.AddAttachment ('C:\Users\Администратор\Desktop\Monahi.bmp')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
$hMAIL.Send
Sleep (4000)
EndFunc

Func _Send_Email_Razvedka($Body, $Subject)
$FromAddress = '[email protected]' ; Адрес отправителя
$ToAddress = '[email protected]' ; Адрес получателя
$Username = '[email protected]' ; Логин отправителя
$Password = "1234" ; Пароль почты отправителя
$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
$Port = 465 ; Порт сервера
$SSL = 1 ; SSL


$conf = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body

    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
$hMAIL.Send
Sleep (4000)
EndFunc

Func _Send_Email_Ataka($Body, $Subject)
$FromAddress = '[email protected]' ; Адрес отправителя
$ToAddress = '[email protected]' ; Адрес получателя
$Username = '[email protected]' ; Логин отправителя
$Password = "1234" ; Пароль почты отправителя
$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
$Port = 465 ; Порт сервера
$SSL = 1 ; SSL
$AddAttachment = ('C:\Users\Администратор\Desktop\Ataka.bmp');отправляем файл

$conf = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
		.AddAttachment ('C:\Users\Администратор\Desktop\Ataka.bmp')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
$hMAIL.Send
Sleep (4000)
EndFunc
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Ну примерно должно быть так:
Код:
HotKeySet('{p}', 'Pause_1') ; Кнопка для паузы

Local $Pause_1

While 1 ;Цикл всего скрипта
	_Monahi()
	Sleep (10000)
	_Razvedka()
	Sleep (10000)
	_Ataka()
	Sleep (10000)
WEnd

Func Pause_1() ; Если пауза то отправка email через:
	$Pause_1 = Not $Pause_1
	If $Pause_1 Then
		AdlibRegister('_1', 1800000) ; 1800000= 30 минут = 1000*60*30
	EndIf
EndFunc

Func _1() ; Отправка, отмена паузы, закрытие AdlibRegister
	_Send_Email_Monahi ('На деревню идет монах', 'Монах')
	$Pause_1 = Not $Pause_1
	AdlibUnRegister('_1')
EndFunc

Func _Monahi()
    Local $hBmp
    MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
		_ScreenCapture_SaveImage($sFileName_1, $hBmp)
        Sleep (1000)
		If $Pause_1 Then 
			
		Else
			_Send_Email_Monahi ('На деревню идет монах', 'Монах') ; Если не пауза: Отправка.
		EndIf
    EndIf
 EndFunc
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Прпробовал, для монахов работает пауза. Вот только не пойму зачем назначать горячую клавишу паузы. И на остальные функции что надо сделать дополнительно $Pause_2 , $Pause_3 и Func _2(), Func _3() для разведки и атаки?
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Что просили то и сделал ;)
-"И тут мне надо поставить паузу на эту функцию скажем на 30 мин."
То есть пауза должна быть когда вам захочется а значит нужна горячая клавиша.
-"И на остальные функции что надо сделать дополнительно $Pause_2 , $Pause_3 и Func _2(), Func _3() для разведки и атаки?"
Да. А также Func Pause_2 и Func Pause_3
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Я имел в виду что скрипт при первом запуске должен работать самостоятельно без вмешательства человека. Можно такое реализовать?
Еще раз уточню чтобы не было недопонимания. Если одна из функций (_Monahi(), _Razvedka(), _Ataka()) выполняют условие и отправляют сообщение то она больше не должна отправлять сообщение в течении 30 мин. (чтобы не было спама), а остальные функции которые не выполнили условия и не отправляли сообщение продолжают работать.
Это все должно работать автоматически. 1 раз запустил и ушел, пришел через сутки - выключил.

Dima1337 вы мне очень помогли в другой теме по созданию бота так что вы как никто другой должны понимать мой замысел))
http://autoit-script.ru/index.php?topic=17608.0
А это то что получилось от вашего примера. Остались мелочи но они очень важны.
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Теперь все ясно) Попробуйте так:
Код:
Local $i = 1

While 1 ;Цикл всего скрипта
    _Monahi()
    Sleep (10000)
    _Razvedka()
    Sleep (10000)
    _Ataka()
    Sleep (10000)
WEnd

Func Pause_1()
	AdlibRegister('_1', 1800000)
EndFunc

Func _1() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Monahi ('На деревню идет монах', 'Монах')
    $i = 1
    AdlibUnRegister('_1')
EndFunc

Func _Monahi()
    Local $hBmp
    MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
		_ScreenCapture_SaveImage($sFileName_1, $hBmp)
		Sleep (1000)
		If $i = 1 Then
			$i += 1
			Pause_1()
		EndIf
    EndIf
 EndFunc
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Вот что получилось, но сообщение на почту не отравляет
Код:
Local $i = 1

While 1 ;Цикл всего скрипта
    _Monahi()
    Sleep (10000)
    _Razvedka()
    Sleep (10000)
    _Ataka()
    Sleep (10000)
WEnd

Func Pause_1()
    AdlibRegister('_1', 1800000)
 EndFunc

 Func Pause_2()
    AdlibRegister('_2', 1800000)
 EndFunc

 Func Pause_3()
    AdlibRegister('_3', 1800000)
EndFunc

Func _1() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Monahi ('На деревню идет монах', 'Монах')
    $i = 1
    AdlibUnRegister('_1')
EndFunc

Func _2() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Razvedka ('Разведка вашей деревни', 'Разведка')
    $i = 1
    AdlibUnRegister('_2')
EndFunc

Func _3() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Ataka('Ваша деревня атакована', 'Атака')
	Sleep (1000)
    $i = 1
    AdlibUnRegister('_3')
EndFunc

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;_Monahi()
;Sleep (10000)

Func _Monahi()
	Local $hBmp
    MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
	Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
		  _ScreenCapture_SaveImage($sFileName_1, $hBmp)
		  Sleep (1000)
		   If $i = 1 Then
            $i += 1
            Pause_1()
		EndIf
    EndIf
 EndFunc



Func _Razvedka()
    $coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0) ; Если появились два меча
    If Not @error Then
        MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
        MouseClick('Left', 895, 134, 1) ; Переход по второстепенно вкладке
        $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
        If Not @error Then
		    If $i = 1 Then
            $i += 1
            Pause_2()
		    Sleep (1000)
            _Ataka()
			EndIf
        EndIf
    EndIf
EndFunc


Func _Ataka()
   ;$coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0); Если появились два меча
   ;If Not @error Then
	  Local $hBmp1
	  MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
	  MouseClick('Left', 830, 137, 1) ; Переход по второстепенно вкладке
       $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
    If Not @error Then
        $hBmp1 = _ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
		  _ScreenCapture_SaveImage($sFileName_2, $hBmp1)
		  Sleep (1000)
         If $i = 1 Then
            $i += 1
            Pause_3()
		 EndIf
	 EndIf
   EndFunc
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
А так?
Код:
Global $i_1 = 1, $i_2 = 1, $i_3 = 1

While 1 ;Цикл всего скрипта
    _Monahi()
    Sleep (10000)
    _Razvedka()
    Sleep (10000)
WEnd

Func Pause_1()
	$i_1 = 2
    AdlibRegister('_1', 1800000) ; Ставить Sleep в функциях Ad... Нельзя!
 EndFunc

 Func Pause_2()
	$i_2 = 2
    AdlibRegister('_2', 1800000) ; Ставить Sleep в функциях Ad... Нельзя!
 EndFunc

 Func Pause_3()
	$i_3 = 2
    AdlibRegister('_3', 1800000) ; Ставить Sleep в функциях Ad... Нельзя!
EndFunc

Func _1() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Monahi ('На деревню идет монах', 'Монах')
    $i_1 = 1
    AdlibUnRegister('_1')
EndFunc

Func _2() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Razvedka ('Разведка вашей деревни', 'Разведка')
    $i_2 = 1
    AdlibUnRegister('_2')
EndFunc

Func _3() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Ataka('Ваша деревня атакована', 'Атака')
    $i_3 = 1
    AdlibUnRegister('_3')
EndFunc

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;_Monahi()
;Sleep (10000)

Func _Monahi()
	Local $hBmp
    MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
		$hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
        _ScreenCapture_SaveImage($sFileName_1, $hBmp)
        Sleep (1000)
		If $i_1 = 1 Then
			Pause_1()
		EndIf
    EndIf
EndFunc

Func _Razvedka()
    $coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0) ; Если появились два меча
    If Not @error Then
        MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
        MouseClick('Left', 895, 134, 1) ; Переход по второстепенно вкладке
        $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
        If Not @error Then
			If $i_2 = 1 Then
				Pause_2()
				Sleep (5000)
			EndIf
            _Ataka()
        EndIf
    EndIf
EndFunc

Func _Ataka()
	Local $hBmp1
	MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
	MouseClick('Left', 830, 137, 1) ; Переход по второстепенно вкладке
	$coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
    If Not @error Then
        $hBmp1 = _ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
		_ScreenCapture_SaveImage($sFileName_2, $hBmp1)
		Sleep (1000)
		If $i_3 = 1 Then
			Pause_3()
		EndIf
	EndIf
EndFunc
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Dima1337, Не лучший вариант.
be4hoctb, Пробуйте таким методом. Если на другие функции тоже нужен таймер, то напишите в теме - дам еще пример :smile:
Код:
Global $h_MonahiTimer = -1

While 1
_Monahi()
_Razvedka()
_Ataka()
Wend

Func _Monahi()
If $h_MonahiTimer <> -1 AND TimerDiff($h_MonahiTimer) < 60000*30 Then Return 0
; Ваш код отправки письма на почту
$h_MonahiTimer = TimerInit()
EndFunc

Func _Razvedka()
; Какой-то код
EndFunc

Func _Ataka()
; Какой-то код
EndFunc
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Сообщение все равно не отсылает и теперь кроме вкладки "монахи" ни какие не работают (вкладки не переключаются)
Код:
Global $i_1 = 1, $i_2 = 1, $i_3 = 1

While 1 ;Цикл всего скрипта
    _Monahi()
    Sleep (10000)
    _Razvedka()
    Sleep (10000)

WEnd

Func Pause_1()
    $i_1 = 2
 EndFunc

 Func Pause_2()
    $i_2 = 2
 EndFunc

 Func Pause_3()
    $i_3 = 2
EndFunc

Func _1() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Monahi ('На деревню идет монах', 'Монах')
    $i_1 = 1
    AdlibUnRegister('_1')
EndFunc

Func _2() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Razvedka ('Разведка вашей деревни', 'Разведка')
    $i_2 = 1
    AdlibUnRegister('_2')
EndFunc

Func _3() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Ataka('Ваша деревня атакована', 'Атака')
	Sleep (1000)
    $i_3 = 1
    AdlibUnRegister('_3')
EndFunc

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;_Monahi()
;Sleep (10000)

Func _Monahi()
	Local $hBmp
    MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
	Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
		  _ScreenCapture_SaveImage($sFileName_1, $hBmp)
		  Sleep (1000)
		   If $i_1 = 1 Then
             Pause_1()
		EndIf
    EndIf
 EndFunc



Func _Razvedka()
    $coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0) ; Если появились два меча
    If Not @error Then
        MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
        MouseClick('Left', 895, 134, 1) ; Переход по второстепенно вкладке
        $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
        If Not @error Then
		    If $i_2 = 1 Then
               Pause_2()
		    Sleep (1000)
            _Ataka()
			EndIf
        EndIf
    EndIf
EndFunc


Func _Ataka()
   ;$coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0); Если появились два меча
   ;If Not @error Then
	  Local $hBmp1
	  MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
	  MouseClick('Left', 830, 137, 1) ; Переход по второстепенно вкладке
       $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
    If Not @error Then
        $hBmp1 = _ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
		  _ScreenCapture_SaveImage($sFileName_2, $hBmp1)
		  Sleep (1000)
         If $i_3 = 1 Then
            Pause_3()
		 EndIf
	 EndIf
   EndFunc
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Протестируйте полную версию:
Код:
#RequireAdmin

#include <ScreenCapture.au3>



WinActivate("Stronghold Kingdoms - Europe 1")
$hWnd = WinGetHandle("Stronghold Kingdoms - Europe 1") ; Это для скрина только окна игры
$sFileName_1 = @DesktopDir&'\Monahi.bmp' ; Путь\Имя для Монахов
$sFileName_2 = @DesktopDir&'\Ataka.bmp' ; Путь\Имя для aтаки
$i_1 = 1
$i_2 = 1
$i_3 = 1
Sleep (1000)
Opt ( "MouseClickDelay", 1000)

While 1 ;Цикл всего скрипта
    _Monahi()
    Sleep (10000)
    _Razvedka()
    Sleep (10000)
WEnd

Func Pause_1()
	$i_1 = 2
    AdlibRegister('_1', 1800000) ; Ставить Sleep в функциях Ad... Нельзя!
 EndFunc

 Func Pause_2()
	$i_2 = 2
    AdlibRegister('_2', 1800000) ; Ставить Sleep в функциях Ad... Нельзя!
 EndFunc

 Func Pause_3()
	$i_3 = 2
    AdlibRegister('_3', 1800000) ; Ставить Sleep в функциях Ad... Нельзя!
EndFunc

Func _1() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Monahi ('На деревню идет монах', 'Монах')
    $i_1 = 1
    AdlibUnRegister('_1')
EndFunc

Func _2() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Razvedka ('Разведка вашей деревни', 'Разведка')
    $i_2 = 1
    AdlibUnRegister('_2')
EndFunc

Func _3() ; Отправка, отмена паузы, закрытие AdlibRegister
    _Send_Email_Ataka('Ваша деревня атакована', 'Атака')
    $i_3 = 1
    AdlibUnRegister('_3')
EndFunc

Func _Monahi()
	Local $hBmp
    MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
		$hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
        _ScreenCapture_SaveImage($sFileName_1, $hBmp)
        Sleep (1000)
		If $i_1 = 1 Then
			Pause_1()
		EndIf
    EndIf
EndFunc

Func _Razvedka()
    $coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0) ; Если появились два меча
    If Not @error Then
        MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
        MouseClick('Left', 895, 134, 1) ; Переход по второстепенно вкладке
        $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
        If Not @error Then
			If $i_2 = 1 Then
				Pause_2()
				Sleep (5000)
			EndIf
            _Ataka()
        EndIf
    EndIf
EndFunc

Func _Ataka()
	Local $hBmp1
	MouseClick('Left', 1244,90, 1) ; Переход по основной вкладке
	MouseClick('Left', 830, 137, 1) ; Переход по второстепенно вкладке
	$coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
    If Not @error Then
        $hBmp1 = _ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
		_ScreenCapture_SaveImage($sFileName_2, $hBmp1)
		Sleep (1000)
		If $i_3 = 1 Then
			Pause_3()
		EndIf
	EndIf
EndFunc



Func _Send_Email_Monahi($Body, $Subject)
$FromAddress = '[email protected]' ; Адрес отправителя
$ToAddress = '[email protected]' ; Адрес получателя
$Username = '[email protected]' ; Логин отправителя
$Password = "1234" ; Пароль почты отправителя
$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
$Port = 465 ; Порт сервера
$SSL = 1 ; SSL
$AddAttachment = ('C:\Users\Администратор\Desktop\Monahi.bmp');отправляем файл

$conf = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
        .AddAttachment ('C:\Users\Администратор\Desktop\Monahi.bmp')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
$hMAIL.Send
Sleep (4000)
EndFunc

Func _Send_Email_Razvedka($Body, $Subject)
$FromAddress = '[email protected]' ; Адрес отправителя
$ToAddress = '[email protected]' ; Адрес получателя
$Username = '[email protected]' ; Логин отправителя
$Password = "1234" ; Пароль почты отправителя
$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
$Port = 465 ; Порт сервера
$SSL = 1 ; SSL


$conf = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body

    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
$hMAIL.Send
Sleep (4000)
EndFunc

Func _Send_Email_Ataka($Body, $Subject)
$FromAddress = '[email protected]' ; Адрес отправителя
$ToAddress = '[email protected]' ; Адрес получателя
$Username = '[email protected]' ; Логин отправителя
$Password = "1234" ; Пароль почты отправителя
$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
$Port = 465 ; Порт сервера
$SSL = 1 ; SSL
$AddAttachment = ('C:\Users\Администратор\Desktop\Ataka.bmp');отправляем файл

$conf = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
        .AddAttachment ('C:\Users\Администратор\Desktop\Ataka.bmp')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
$hMAIL.Send
Sleep (4000)
EndFunc
Просто скопировать и запустить.
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Сообщения не отправляются, а так по вкладкам переходит и скриншоты делает
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Не вижу ошибки :scratch:
Вот попробуйте примерчик:
Код:
Global $i = 1

While 1
	_1()
	ToolTip('Работает 2', 0, 0)
	Sleep(1000)
WEnd

Func _1()
	ToolTip('Работает 1', 20, 20)
	Sleep(1000)
	If $i = 1 Then
		Pause_1()
	EndIf
EndFunc

Func Pause_1()
	$i = 2
	AdlibRegister('_2', 5000)
EndFunc

Func _2()
	ToolTip('Работает 4', 20, 0)
	$i = 1
	AdlibUnRegister('_2')
EndFunc

Все точь в точь, работает :blink:


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

Может так заработает:
Код:
Func _1()
    _Send_Email_Monahi('На деревню идет монах', 'Монах')
    $i_1 = 1
    AdlibUnRegister('_1')
EndFunc

Func _Monahi()
	Local $hBmp
    MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
		$hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
        _ScreenCapture_SaveImage($sFileName_1, $hBmp)
        Sleep (1000)
		If $i_1 = 1 Then
			AdlibRegister('_1', 1800000)
			$i_1 = 2
		EndIf
    EndIf
EndFunc


Попробуйте _Send_Email_Monahi('На деревню идет монах', 'Монах') Заменить на MsgBox
Может причина в самой функции отправки сообщения
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Походу в последнем примере (моем) сначала ставится пауза а потом идет отправка сообщения, надо там это как-то местами поменять


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

Сообщение не выводится
Код:
While 1 ;Цикл всего скрипта
    _Monahi()
    Sleep (10000)
    _Razvedka()
    Sleep (10000)
WEnd

Func _1()
    MsgBox(0, 'Результат', 'Сообщение доставлено')
    $i_1 = 1
    AdlibUnRegister('_1')
EndFunc


Func _Monahi()
    Local $hBmp
    MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
        _ScreenCapture_SaveImage($sFileName_1, $hBmp)
        Sleep (1000)
        If $i_1 = 1 Then
         AdlibRegister('_1', 1800000)
            $i_1 = 2
        EndIf
    EndIf
EndFunc


Мне кажется что тут идет сначала команда паузы потом сообщение потом отмена паузы
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
Func _Monahi()
	Local $hBmp
	MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
	Sleep(1000)
	MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
	Sleep(1000)
	While 1
		$coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
		If Not @error Then
			$hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
			_ScreenCapture_SaveImage($sFileName_1, $hBmp)
			Sleep(1000)
			_Send_Email_Monahi('На деревню идет монах', 'Монах');поле найдено, отправляем файл
			ExitLoop;выходим из функции 
		EndIf
		Sleep(100)
	WEnd
EndFunc

и так с остальными функциями проверки

be4hoctb [?]
но чтобы остальные скрипты продолжали работать.
тут не понял, несколько независимых скриптов или нужно чтобы остальные функции в одном и том же скрипте работали?
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Все же интересно почему не работает :scratch:
Набросал небольшой тестик, все работает как надо.
Код:
Global $i[3]
$i[1] = 1
$i[2] = 1

While 1
	ToolTip('Работает цикл', 0, 0)
	Check_Pixel_1()
	Check_Pixel_2()
	Sleep(1000)
WEnd

Func Check_Pixel_1()
	$Coord = PixelSearch( 0, 0, 100, 100, 0xFFFFFF)
	If Not @error Then
		ToolTip('Работает первый поиск пикселей', 0, 20)
		If $i[1] = 1 Then
			AdlibRegister('Adlib_Func_1', 1000*20)
			$i[1] = 2
		EndIf
	EndIf
EndFunc

Func Adlib_Func_1()
	MsgBox(64, 'Тест', 'Тест пройден успешно!')
	$i[1] = 1
	AdlibUnRegister('Adlib_Func_1')
EndFunc

Func Check_Pixel_2()
	$Coord = PixelSearch( 0, 0, 100, 100, 0x47557A)
	If Not @error Then
		ToolTip('Работает второй поиск пикселей', 0, 40)
		If $i[2] = 1 Then
			AdlibRegister('Adlib_Func_2', 1000*25)
			$i[2] = 2
		EndIf
	EndIf
EndFunc

Func Adlib_Func_2()
	MsgBox(64, 'Тест', 'Второй тест пройден успешно!')
	$i[2] = 1
	AdlibUnRegister('Adlib_Func_2')
EndFunc



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

Протестил скрин окна:
Код:
#RequireAdmin

#include <ScreenCapture.au3>

Global $i[3]
$i[1] = 1
$i[2] = 1
$hWnd = WinGetHandle('[CLASS:SciTEWindow]')
$sFileName_1 = @DesktopDir&'\Monahi.bmp'
$sFileName_2 = @DesktopDir&'\Ataka.bmp'


While 1
    ToolTip('Работает цикл', 0, 0)
    Check_Pixel_1()
	Check_Pixel_2()
    Sleep(1000)
WEnd

Func Check_Pixel_1()
	Local $hBmp
    $Coord = PixelSearch( 0, 0, 100, 100, 0xFFFFFF)
    If Not @error Then
		$hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
        _ScreenCapture_SaveImage($sFileName_1, $hBmp)
        ToolTip('Работает первый поиск пикселей', 0, 20)
        If $i[1] = 1 Then
            AdlibRegister('Adlib_Func_1', 1000*20)
            $i[1] = 2
        EndIf
    EndIf
EndFunc

Func Adlib_Func_1()
    MsgBox(64, 'Тест', 'Тест пройден успешно!')
    $i[1] = 1
    AdlibUnRegister('Adlib_Func_1')
EndFunc

Func Check_Pixel_2()
	Local $hBmp
    $Coord = PixelSearch( 0, 0, 100, 100, 0x576FA2)
    If Not @error Then
		$hBmp = _ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
        _ScreenCapture_SaveImage($sFileName_2, $hBmp)
        ToolTip('Работает второй поиск пикселей', 0, 40)
        If $i[2] = 1 Then
            AdlibRegister('Adlib_Func_2', 1000*30)
            $i[2] = 2
        EndIf
    EndIf
EndFunc

Func Adlib_Func_2()
    MsgBox(64, 'Тест', 'Тест два пройден успешно!')
    $i[2] = 1
    AdlibUnRegister('Adlib_Func_2')
EndFunc
Так же работает. Сообщения вылетают по таймеру, цикл не прекращается.


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

Протестил отправку сообщений со скрином:
Код:
#RequireAdmin

#include <ScreenCapture.au3>

Global $i[2]
$i[1] = 1
$hWnd = WinGetHandle('[CLASS:SciTEWindow]')
$sFileName_1 = @DesktopDir&'\Monahi.bmp'

While 1
    ToolTip('Работает цикл', 0, 0)
    Check_Pixel_1()
    Sleep(1000)
WEnd

Func Check_Pixel_1()
	Local $hBmp
    $Coord = PixelSearch( 0, 0, 100, 100, 0xFFFFFF)
    If Not @error Then
		$hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
        _ScreenCapture_SaveImage($sFileName_1, $hBmp)
        ToolTip('Работает первый поиск пикселей', 0, 20)
        If $i[1] = 1 Then
            AdlibRegister('Adlib_Func_1', 1000*20)
            $i[1] = 2
        EndIf
    EndIf
EndFunc

Func Adlib_Func_1()
    _Send_Email_Monahi('Тест пройден успешно! Поздравляем!', 'Тестовое сообщение')
	MsgBox(64, 'Тест', 'Внимание! Проверьте почту! Вам поступило новое сообщение.')
    $i[1] = 1
    AdlibUnRegister('Adlib_Func_1')
EndFunc

Func _Send_Email_Monahi($Body, $Subject)
	$FromAddress = '[email protected]' ; Адрес отправителя
	$ToAddress = '[email protected]' ; Адрес получателя
	$Username = '[email protected]' ; Логин отправителя
	$Password = "***********" ; Пароль почты отправителя
	$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
	$Port = 465 ; Порт сервера
	$SSL = 1 ; SSL
	$AddAttachment = ('C:\Users\Администратор\Desktop\Monahi.bmp');отправляем файл

	$conf = "http://schemas.microsoft.com/cdo/configuration/"
	$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
        .AddAttachment ('C:\Users\Администратор\Desktop\Monahi.bmp')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
	$hMAIL.Send
EndFunc
Все работает, единственное что отправлял с Gmail на Mail.ru
В обратном направлении сообщение не пришло.


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

И собственно итог:
Код:
#RequireAdmin

#include <ScreenCapture.au3>

WinActivate("Stronghold Kingdoms - Europe 1")
$hWnd = WinGetHandle("Stronghold Kingdoms - Europe 1") ; Это для скрина только окна игры
$sFileName_1 = @DesktopDir&'\Monahi.bmp' ; Путь\Имя для Монахов
$sFileName_2 = @DesktopDir&'\Ataka.bmp' ; Путь\Имя для aтаки
Opt ( "MouseClickDelay", 1000)

Global $i[4]
$i[1] = 1
$i[2] = 1
$i[3] = 1

While 1
	_Monahi()
	_Razvedka()
	_Ataka()
	Sleep(10000)
WEnd

Func _Monahi()
    Local $hBmp
    MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1089, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
		_ScreenCapture_SaveImage($sFileName_1, $hBmp)
		If $i[1] = 1 Then
            AdlibRegister('Adlib_Func_1', 1000*60*30)
            $i[1] = 2
        EndIf
    EndIf
EndFunc

Func Adlib_Func_1()
    _Send_Email_Monahi ('На деревню идет монах', 'Монах')
    $i[1] = 1
    AdlibUnRegister('Adlib_Func_1')
EndFunc

Func _Razvedka()
    $coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0) ; Если появились два меча
    If Not @error Then
        MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
        MouseClick('Left', 895, 134, 1) ; Переход по второстепенно вкладке
        $coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
        If Not @error Then
			If $i[2] = 1 Then
				AdlibRegister('Adlib_Func_2', 1000*60*30)
				$i[2] = 2
			EndIf
        EndIf
    EndIf
EndFunc

Func Adlib_Func_2()
    _Send_Email_Razvedka ('Разведка вашей деревни', 'Разведка')
    $i[2] = 1
    AdlibUnRegister('Adlib_Func_2')
EndFunc

Func _Ataka()
	Local $hBmp1
	$coord = PixelSearch(1250, 80, 1262, 92, 0xFFFFF0) ; Если появились два меча
    If Not @error Then
		MouseClick('Left', 1244, 90, 1) ; Переход по основной вкладке
		MouseClick('Left', 830, 137, 1) ; Переход по второстепенно вкладке
		$coord = PixelSearch(1047, 465, 1107, 475, 0x312836) ; Если есть поле отправка
		If Not @error Then
			$hBmp1 = _ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
			_ScreenCapture_SaveImage($sFileName_2, $hBmp1)
			If $i[3] = 1 Then
				AdlibRegister('Adlib_Func_3', 1000*60*30)
				$i[3] = 2
			EndIf
		EndIf
	EndIf
EndFunc

Func Adlib_Func_3()
    _Send_Email_Ataka('Ваша деревня атакована', 'Атака')
    $i[3] = 1
    AdlibUnRegister('Adlib_Func_3')
EndFunc

Func _Send_Email_Monahi($Body, $Subject)
	$FromAddress = '[email protected]' ; Адрес отправителя
	$ToAddress = '[email protected]' ; Адрес получателя
	$Username = '[email protected]' ; Логин отправителя
	$Password = "1234" ; Пароль почты отправителя
	$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
	$Port = 465 ; Порт сервера
	$SSL = 1 ; SSL
	$AddAttachment = ('C:\Users\Администратор\Desktop\Monahi.bmp');отправляем файл

	$conf = "http://schemas.microsoft.com/cdo/configuration/"
	$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
        .AddAttachment ('C:\Users\Администратор\Desktop\Monahi.bmp')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
	$hMAIL.Send
EndFunc

Func _Send_Email_Razvedka($Body, $Subject)
	$FromAddress = '[email protected]' ; Адрес отправителя
	$ToAddress = '[email protected]' ; Адрес получателя
	$Username = '[email protected]' ; Логин отправителя
	$Password = "1234" ; Пароль почты отправителя
	$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
	$Port = 465 ; Порт сервера
	$SSL = 1 ; SSL

	$conf = "http://schemas.microsoft.com/cdo/configuration/"
	$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body

    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
	$hMAIL.Send
EndFunc

Func _Send_Email_Ataka($Body, $Subject)
	$FromAddress = '[email protected]' ; Адрес отправителя
	$ToAddress = '[email protected]' ; Адрес получателя
	$Username = '[email protected]' ; Логин отправителя
	$Password = "1234" ; Пароль почты отправителя
	$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
	$Port = 465 ; Порт сервера
	$SSL = 1 ; SSL
	$AddAttachment = ('C:\Users\Администратор\Desktop\Ataka.bmp');отправляем файл

	$conf = "http://schemas.microsoft.com/cdo/configuration/"
	$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
        .AddAttachment ('C:\Users\Администратор\Desktop\Ataka.bmp')
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($conf & "sendusing") = 2
        .Item ($conf & "smtpauthenticate") = 1
        .Item ($conf & "sendusername") = $Username
        .Item ($conf & "sendpassword") = $Password
        .Item ($conf & "smtpserver") = $SMTPServer
        .Item ($conf & "smtpserverport") = $Port
        .Item ($conf & "smtpusessl") = $SSL
        .Update
    EndWith
	$hMAIL.Send
EndFunc

Проверьте тесты, проверьте итог, если мышью дергает но не отправляет значит не может найти поле с картинки 2 в теме:
http://autoit-script.ru/index.php?topic=17608.0
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Сообщение все равно не отправляет я поставил MsgBox после отправки почты и он тоже не сработал. То что поле находит это точно так как скриншот делает.
Код:
#RequireAdmin

#include <ScreenCapture.au3>

WinActivate("Stronghold Kingdoms - Europe 1")
$hWnd = WinGetHandle("Stronghold Kingdoms - Europe 1") ; Это для скрина только окна игры
$sFileName_1 = @DesktopDir&'\Monahi.bmp' ; Путь\Имя для Монахов
$sFileName_2 = @DesktopDir&'\Ataka.bmp' ; Путь\Имя для aтаки
Opt ( "MouseClickDelay", 1000)

Global $i[4]
$i[1] = 1
$i[2] = 1
$i[3] = 1

While 1
    _Monahi()
    _Razvedka()
    _Ataka()
    Sleep(10000)
WEnd

Func _Monahi()
    Local $hBmp
    MouseClick('Left', 1795, 90, 1) ; Переход по основной вкладке
    MouseClick('Left', 1366, 136, 1) ; Переход по второстепенно вкладке
    Sleep (1000)
    $coord = PixelSearch(1320, 620, 1385, 633, 0x2E2617) ; Если поле найдено
    If Not @error Then
        $hBmp = _ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
        _ScreenCapture_SaveImage($sFileName_1, $hBmp)
        If $i[1] = 1 Then
            AdlibRegister('Adlib_Func_1', 1000*60*30)
            $i[1] = 2
        EndIf
    EndIf
EndFunc

Func Adlib_Func_1()
    _Send_Email_Monahi ('На деревню идет монах', 'Монах')
	MsgBox(64, 'Тест', 'Внимание! Проверьте почту! Вам поступило новое сообщение.')
    $i[1] = 1
    AdlibUnRegister('Adlib_Func_1')
EndFunc
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
be4hoctb
Попробуйте способом, который я Вам показывал здесь...
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
be4hoctb [?]
Вроде так работает, попробую немного потестить, спасибо.

Не за что, если нужно таймеры на несколько функций поставить - скажите.
 
Верх