Что нового

[Stronghold Kingdoms] Создание скриншота окна игры и отправка его по почте

be4hoctb

Новичок
Сообщения
38
Репутация
0
Сайт игры - http://ru.strongholdkingdoms.com/

Помогите создать бота который бы отслеживал изменения цвета пикселя, делал простые клики и при определенных условиях делал скриншот и отправлял его по почте или допустим в соцсети ВК и в идеале отправлял смс на телефон.
Теперь подробнее о задумке:
1. Вот основное окно игры и вкладки начального положения (положения покоя)


2. При изменении цвета на поле во вкладке монахи делать скрин окна и отправлять сообщение "Монахи"


3. При смене значка на основной вкладки с одного меча на два скрещенных нужно кликнуть мышкой на подвкладку Разведка и проверить поле если поле заполнено то отправить сообщение "Разведка"


4. После проверки подвкладки Разведка кликаем на вкладку Атака и проверяем поле. Если оно заполнено делаем скрин и отправляем сообщение "Атака"


Ну в общем как-то так. Помогите если кого-то заинтересовала такая задумка. Так же есть идеи как реализовать отправку смс. Еще хотелось бы сюда добавить отправку сообщения в RaidCall.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Сделать скрин можно такой функцией:
Код:
_ScreenCapture_Capture; скрин всего экрана
или
Код:
_ScreenCapture_CaptureWnd; скрин определённого окна

Отправить сообщение на почту можно через CDO.message, на форуме есть много примеров.
Ну а в ВК через API...
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Всего по немногу набросал. Собрать все правильно не получается. Надо разделить шаг "2" с шагом "3" и "4" чтобы после отправки файла на монаха срабатывал таймер где-то 1 час неотправлять по почте но не прерывал остальную часть скрипта.
Не знаю как настроить скрины и отправку по почте.

Код:
#include <ScreenCapture.au3>
$hwnd = WinGetHandle("Stronghold Kingdoms - Europe 1")

While 1
   $pix = PixelGetColor(1240,92);цвет иконки атаки
   $pix1 = PixelGetColor(1008,472);цвет поля 1 ур
   MouseClick("left",1237,90,1);клик на основной вкладке
   MouseClick("left",1090,135,1);клик на подвкладке монахи
  if $pix1 = 0xAD8E57 Then
	 _ScreenCapture_CaptureWnd(c:\image.jpg, $hWnd [, $iLeft = 100 [, $iTop = 200 [, $iRight = -100 [, $iBottom = -200]]]])
		 Sleep (5000)
   If $pix = 0xC0B598 Then
   MouseClick("left",833,137,1)
   Sleep (5000)
   if $pix1 = 0xAD8E57 Then
	  _send
WEnd


_send ('Деревня под атакой', 'Атака')
Func _send($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



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

Пробую делать поэтапно. Вместо отправки сообщения просто издает звук но что-то пошло не так и я запутался с функцией If. Помогите разобраться где ошибка.
Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.12.0
 Author:         myName

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------
WinActivate("Stronghold Kingdoms - Europe 1")
Sleep (1000)
Opt ( "MouseClickDelay", 500)

MouseClick ( "left", 1795, 85, 1);клик на иконке "Атака"
MouseClick ( "left", 1365, 130, 1);клик на иконке "монахи"

$a_pix = PixelGetColor (1805, 72,)
Local $a_pix = 0xB4A284 ;цвет иконки "Атака"
Local $s_pix = PixelSearch (1253, 596, 1273, 612, 0xAC8C55);ищим цвет в области активации

Switch 1

	Case $a_pix
		MouseClick ( "left", 1365, 130, 1);если иконка "Атаки пасивна то кликаем на иконку "Монахи"
		If $s_pix = (0xAC8C55) ;проверка области активации
		Then Beep ;если совпадает цвет то оповещает звуком
	Case Else
		MouseClick ( "left", 1113, 120, 1);клик на иконке "Нападение"
		If $s_pix = (0xAC8C55) ;проверка области активации
		Then Beep ;если совпадает цвет то оповещает звуком

EndSwitch
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Разделите задачу на 3 части:
1. Отслеживание изменения цвета пикселя.
2. Создание скрина.
3. Отправка по почте.

По 1 задаче:
http://autoit-script.ru/autoit3_docs/functions/PixelSearch.htm
Смотрите пример.
По 2 задаче уже ответили.
По 3 задаче:
http://autoit-script.ru/index.php?topic=17233.msg105418#msg105418
Второе сообщение, код под спойлером.

Мой вам совет, тщательней читайте мануал и перемещайтесь в раздел для новичков, там вам будут рады :beer:
Вот примерно набросал что у вас может выйти:
Код:
#RequireAdmin

#include <ScreenCapture.au3>

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

Func _Monahi()
	MouseClick('Left', 0, 0) ; Переход по основной вкладке
	MouseClick('Left', 0, 0) ; Переход по второстепенно вкладке
	$coord = PixelSearch(0, 0, 20, 300, 0xFF0000) ; Если поле найдено 
	If Not @error Then
		_ScreenCapture_CaptureWnd($sFileName_1, $hWnd)
		_Send_Email_Monahi()
	EndIf
EndFunc

Func _Razvedka()
	$coord = PixelSearch(0, 0, 20, 300, 0xFF0000) ; Если появились два меча
	If Not @error Then
		MouseClick('Left', 0, 0) ; Переход по основной вкладке
		MouseClick('Left', 0, 0) ; Переход по второстепенно вкладке
		$coord = PixelSearch(0, 0, 20, 300, 0xFF0000) ; Если есть поле отправка
		If Not @error Then
			_Send_Email_Razvedka()
			_Ataka()
		EndIf
	EndIf
EndFunc

Func _Ataka()
	MouseClick('Left', 0, 0) ; Переход по второстепенно вкладке
	$coord = PixelSearch(0, 0, 20, 300, 0xFF0000) ; Если есть поле отправка
	If Not @error Then
		_ScreenCapture_CaptureWnd($sFileName_2, $hWnd)
		_Send_Email_Ataka()
	EndIf
EndFunc

Цвета, позиции мышки, _Send_Email... впишите самостаятельно
 
Автор
B

be4hoctb

Новичок
Сообщения
38
Репутация
0
Огромное спасибо за помощь. Щас буду исправлять.


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

Странно мышка не реагирует но ошибки никакой нет, только активируется окно клиента и все, тишина. Где может быть ошибка?


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

Все решил, надо было функцию в скрипте вызвать.
 
Верх