Что нового

Как собрать все написанные функции в одно целое с логикой ?

D

dreamorder

Гость
Здравствуйте уважаемые участники форума.
Сразу хочу сказать, что от программирования я достаточно далёк, но почитав этот форум, посмотрев примеры кодов, смог написать несколько функций для бота игры. Все функции просты и без переменных.
Теперь у меня возник вопрос как это всё написанное сложить во едино, и чтоб ещё и с какой то логикой выполнения этих функций.
Да, есть достаточно примеров, я их смотрел и пытался понять, но не как не могу понять зачем вообще нужны переменные в простом боте.
Можете конечно смеяться, но лучше бы помогли понять как и что надо соединять.
Прикреплённый файл содержит пример кода с одной из написанных мной функций, все остальные примерно такого же вида.

Код:
;модуль отварпа на станцию при минусах      
WinActive('EVE') ;проверяет активность окна
WinActivate('EVE') ;стоп до активации окна
Call('v_scanLocal') ; вызов функции
Func v_scanLocal()   ; начало и имя функции
   PixelSearch( -1163, 56, -1155, 942, 0x8F0000, 5 ) ; поиск красного цвета по координатам
   If Not @error Then   ; если цвет найден то ...
	  SoundSetWaveVolume(100)   ; громкость проигрывания звукового файла
	  SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 );вызов проигрывания звукового файла
		   WinActivate("EVE", '')
		   MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4)); рандомный клик 
		   Send('2', 3 )  ; эмуляция нажатия клавиши "2" 3 раза
		   MouseClick('left',-55, 89, 2, 2 )  ; эмуляция клика по нужным координатам
		   Send('6', 3) ;эмуляция нажатия клавиши "6" 3 раза
		     SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 );звук
		   Sleep(30000) ;пауза в работе скрипта
		   MouseClick('left',-55, 89, 2, 2 )  ; эмуляция клика по нужным координатам
		   Send('9', 3)                   ;эмуляция нажатия клавиши "9" 3 раза
		   SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 );звук
		   Send('`')                            ;эмуляция нажатия клавиши "`"
		   SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 ) ;звук
		 Else
			Sleep(1000)
			Call('v_scanLocal')
	  EndIf
EndFunc


Уважаемые гос-да пожалуйста разъясните как надо собирать скрипт во едино из отдельных кодов функций?
К примеру, вот написал я первые 2 строки кода:

WinActive('EVE') ;проверяет активность окна
WinActivate('EVE') ;стоп до активации окна

А что дальше? Как смонтировать все функции? ведь некоторые из них должны выполняться не раз, и в определённой последовательности или через какой то промежуток времени в той последовательности.
И как сделать логику бота? Например началось выполнение определённой последовательности функций, а в какой то момент одна из работающих функций одновременно с теми что идут по порядку, вызывает действия, которые прерывают последовательность выполнения тех функций. И как в таком случае выключить те уже не нужные в данный момент функции и начать процесс с нужного места (нужной функции).

Заранее благодарю всех откликнувшихся на мою просьбу.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
dreamorder
Научить вас программировать? :smile: Открываете справку по языку, читаете сверху вниз.
 
Автор
D

dreamorder

Гость
Поверьте, если бы я не читал справку, то не смог бы написать даже такие простые функции :smile:
 

agikon

Знающий
Сообщения
789
Репутация
17
dreamorder
мне вот иногда кажется что написать это только 30% всего дела, а 70% это как раз логика взиимосвязей, тестировние и выявление гдюков и погрешностей.
 
Автор
D

dreamorder

Гость
Каждая функция в отдельности или даже в маленькой цепочке, работает отлично, но вот как связать всё от начала до конца для меня трудно :smile:.
Хотя думаю если ещё посидеть пару месяцев, возможно и сам (без помощи форума) додумаю. Вот только тогда зачем на этом форуме создают темы с вопросами от новичков.
 

agikon

Знающий
Сообщения
789
Репутация
17
на конкретный вопрос на этом форуме дают конкретный ответ. это я говорю как новичок со стажем.
но ваш вопрос действительно не очень конкретный.
но возможно вам надо почитать про функцию Adlibregister()
та и вообще посмотрите как работают другие скрипты, станет более ясно как всё связыается.
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
dreamorder
Скорее всего Вам не хватает знаний про условия выполнения функций, попробуйте почитать If...Else...EndIf, Select...Case...EndSelect, Switch...EndSwitch и разобраться.
Ну и обратите внимание, на то, что почти все вызываемые функции возвращают какое-то значение, например Pixelsearch, в случае ошибки возвращает @error -этим и пользуйтесь.
По второй части вашего вопроса...создавайте короткие "пользовательские функции" и вызывайте их по мере требования.
Вот, одно из моих первых творений, кусок кода, точнее анализирующая функция майнера, из которой вызываются остальные...
Код:
While 1
		analizator (); по большому счету, только эта функция находится в цикле.
WEnd
Func analizator () ; анализирует местонахождение корабля

		PixelSearch (3, 702, 28, 717, 0xFFD23F, 20) ; кнопка выхода из станции
	Select
		Case Not @error
			$analiz [1] = 1
		Case @error
			$analiz [1] = 0
	EndSelect

	PixelSearch (545, 620, 600, 675, 0xFFFFC9, 20); область энергии корабля в космосе, если видна, то мы в космосе
	Select
		Case Not @error
			$analiz [2] = 1
		Case @error
			$analiz [2] = 0
	EndSelect

	PixelSearch (601, 702, 601, 702, 0x06090C, 20); область проверки корабля в варп режиме
	Select
		Case @error
			$analiz [3] = 0
		Case Not @error
			$analiz [3] = 1
	EndSelect



	PixelSearch (1275, 610, 1295, 620, 0x005066, 25); область заполненности трюма
	Select
		Case @error
			$analiz [4] = 0
		Case Not @error
			$analiz [4] = 1
	EndSelect

	PixelSearch (1054, 238, 1074, 257, 0xFFFFFF, 10); проверка в овервью (mining), на станцию в первой строчке,
														;если да то возле дока, если нет то в белте или на станции
	Select
		Case @error
			$analiz [5] = 0
	Case Not @error
			$analiz [5] = 1
	EndSelect
	;PixelSearch (1109, 222, 1117, 234, 0xB9B9B9, 10);0xBFBFBF  0xC0C0C0

	PixelSearch (1111, 224, 1115, 232, 0xB0B0B0, 40) ; проверка первой цифры в растоянии до астероида
	Select
		Case @error
			Sleep (250)
			$analiz [6] = 0
		Case Not @error
			Sleep (250)
			$analiz [6] = 1
	EndSelect

	PixelSearch( 1008, 32, 1010, 40, 0x9F9E8B, 90); проверка лопаты1 на вкл
	Select
		Case @error
			$analiz [7] = 0
		Case Not @error
			$analiz [7] = 1
	EndSelect

	PixelSearch( 1008, 65, 1010, 73, 0x9F9E8B, 90); проверка второй лопаты на активность
	Select
		Case @error
			$analiz [8] = 0
		Case Not @error
			$analiz [8] = 1
	EndSelect


	PixelSearch (1065, 36, 1070, 41, 0x000000, 10)
	Select
		Case @error
			$analiz [11] = 0
		Case Not @error
			$analiz [11] = 1
	EndSelect


	PixelSearch (1194, 70, 1209, 95, 0xBD0000, 20) ; ищет  красный цвет на прицеле
	Select
		Case @error
			$analiz [12] = 0
		Case Not @error
			$analiz [12] = 1
	EndSelect


	PixelSearch (997, 550, 997, 555, 0x999999) ;проверка на открытый трюм
	Select
		Case Not @error
			$analiz [13] = 1
		Case @error
			$analiz [13] = 0
	EndSelect

	PixelSearch (903, 341, 910, 349, 0x000006, 10); проверка на черный экран
	Select
		Case Not @error
			$analiz [14] = 1
		Case @error
			$analiz [14] = 0
	EndSelect
;==========================================================
;==========================================================

	Select 

		Case $analiz [1] = 1 And $analiz [4] = 0 And $analiz [13] = 1
			;MsgBox (0, "ответ", "корабль в доке, готов к вылету")
		ExitSpace ()

		Case $analiz [1] = 1 And $analiz [4] = 1
			;MsgBox (0, "ответ", "корабль в доке, нужна разгрузка")
		unload ()
		Case $analiz [2] = 1 And $analiz [4] = 1 And $analiz [5] = 1
			;MsgBox (0, "ответ", "корабль в космосе, возле дока, полный, надо домой")
		aboutDoc ()
		Case $analiz [2] = 1 And $analiz [4] = 1 And $analiz [5] = 0
			;MsgBox (0, "", "корабль в космосе, возле белта, полный,  надо домой")
		warpToDoc ()
		Sleep (5000)
		ProvWarp ()

		Case $analiz [2] = 1 And $analiz [10] = 1
			;MsgBox (0, "", "корабль на белте, вижу пиратов, меняю белт?")
		warpToBelt ()
		Sleep (5000)
		ProvWarp ()

		Case $analiz [2] = 1 And $analiz [4] = 0 And $analiz [5] = 1 And $analiz [11] = 1
			;MsgBox (0, "", "корабль в космосе, возле дока, пустой, надо варпаться на белт")
		warpToBelt ()
		Sleep (5000)
		ProvWarp ()

		Case $analiz [2] = 1 And $analiz [4] = 0 And $analiz [5] = 0 And $analiz [6] = 1 And $analiz [12] = 0 ;And $analiz [8] = 0
			;MsgBox (0, "", "корабль в космосе, возле белта, пустой, надо копать, астеройды есть, включаю лазеры, при отсутствии красного цвета в прицеле")
			mining ()
			CheckLaserRun()

		Case $analiz [12] = 1 And $analiz [7] = 0 And $analiz [8] = 0 ; проверка на включенность двух лопат, т.е если лопаты выкл, то активировать обе
			Send("{F1}{F2}")

	Case $analiz [12] = 1 And $analiz [7] = 1 And $analiz [8] = 0
			Send("{F2}")

		Case $analiz [2] = 1 And $analiz [4] = 0 And $analiz [5] = 0 And $analiz [6] = 1 And $analiz [12] = 1; And $analiz [8] = 1
			;MsgBox (0, "", "корабль в космосе, возле белта, пустой, надо копать, астеройды есть, копаю, ловлю пиратов")
			pirates ()

		Case $analiz [2] = 1 And $analiz [4] = 0 And $analiz [5] = 0 And $analiz [6] = 0
			;MsgBox (0, "", "корабль в космосе, возле белта, пустой, надо копать, а астеройдов нет")
			warpToBelt ()
			Sleep (5000)
			ProvWarp ()

		Case $analiz [13] = 0
			Send ("!с")
		;MsgBox (0, 0, "0000")



	EndSelect
EndFunc
И обратите внимание на вторую часть скрипта, там как раз реализована простейшая логика.
 
Автор
D

dreamorder

Гость
mr.Gbabak [?] Огромное вам спасибо за пример и направление ... ;)


Продолжая решать задачи по теме, у меня появились ещё вопросы, в скрипте
ниже правильно ли написан код? А самое главное, будут ли циклы вложенные в цикл, запускаться одновременно, не по порядку с 1 ... 6, а именно одновременно, все разом?
Если нет, то как можно сделать одновременный запуск этих циклов ?

Код:
AutoItSetOption ('SendKeyDelay', Random(7, 19)) ;Продолжительность паузы между последовательными симуляциями нажатий клавиатуры.
AutoItSetOption ('WinWaitDelay', 500) ; Продолжительность паузы успешного ожидания в оконных функциях.
AutoItSetOption ('TrayIconHide', 1)
HotKeySet('+{F1}', '_Exit')

Func _Exit()
    Exit
 EndFunc   ;==>_Exit
 
 While 1         ; одновременный или последовательный запуск циклов в цикле ???   
      anal_1()  
	  anal_2()
	  anal_3()
	  anal_4()
	  anal_5()
	  anal_6()
WEnd

Func anal_1()
While 1            
        analiz_1()
WEnd
EndFunc

Func anal_2()
While 1            
        analiz_2()
WEnd
EndFunc

Func anal_3()
While 1            
        analiz_3()
WEnd
EndFunc

Func anal_4()
While 1            
        analiz_4()
WEnd
EndFunc

Func anal_5()
While 1            
        analiz_5()
WEnd
EndFunc

Func anal_6()
While 1            
        analiz_6()
WEnd
EndFunc


:scratch:
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
dreamorder
нет, все будет отрабатываться по порядку..но в твоем случае зависнет на первой функции. я так понял в ней не предусмотрен выход? :smile:
OffTopic:
а с отсутствие пауз будет полным аналом для системы :smile:

одновременный запуск только при одновременном запуске отдельных копий скрипта.
 
Автор
D

dreamorder

Гость
Спасибо за ответ. Так как же сделать одновременную обработку циклов - analiz_1() ... analiz_6(), так как
если бы они были запущены каждый отдельным - .exe? Подскажите пожалуйста :smile:

P.S. Да, в таком варианте всё зависает на 1ом цикле :(
Выход HotKeySet('+{F1}', '_Exit'), паузу пока не придумал, а в примере который тут на форуме мне не понятно как пауза работает ( мало коментариев) :smile:
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
dreamorder
пауза и выход по горячим клавишам:
Код:
Global $Paused
HotKeySet("{F1}", "TPause")
HotKeySet("{ESC}", "vyx")

;здесь тело скрипта

Func TPause()  
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func vyx()  
	ToolTip ( "Good Buy", 0,0)
	Sleep (3000)
	Exit
	EndFunc


Что касаемо одновременной обработки циклов...во первых в одном скрипте это не возможно, а во вторых: Вы уверены что это нужно?! Возможно (я в этом уверен на 99%), есть другой вариант решения поставленной задачи?
 
Автор
D

dreamorder

Гость
mr.Gbabak [?] Большое спасибо за пример скрипта с паузой, теперь разобрался :smile:

По поводу одновременного запуска нескольких отдельных скриптов, я думаю
конечно есть другой способ решить задачи иначе.
Но пока ещё не совсем разобрался в этом, точнее не как мне не даётся быстро понять как это сделать с помощью AutoIt.
С самого начала я написал несколько функций, затем по Вашему примеру как то упорядочил. И теперь у меня получилось 5 рабочих скриптов, запуская которые одновременно, всё отлично работает, но пытаясь всё запихнуть в один скрипт, выдаётся ошибка.
Наверное из-за большого кол-ва функций в одном, потому что как только
я убираю несколько или одну функцию, ошибки нет.
А отдельно та или те функции работают :laugh:
Могу я попросить чтобы Вы мне помогли с конкретными примерами моих скриптов?
По примеру, я сделал необходимые мне датчики, но после добавления очередного в "список" выдавалась ошибка,
по этому я разделил их(датчики) по кол-ву повторений для той или иной функции.

Вот к примеру три функции которые далеко друг от друга, по сути это начало и конец, но они у мну в одном скрипте из-за одинаковых датчиков.

Код:
AutoItSetOption("SendKeyDownDelay", Random(56, 111))
AutoItSetOption("MouseClickDownDelay",Random(56, 111))
AutoItSetOption ('SendKeyDelay', Random(56, 111)) ;Продолжительность паузы между последовательными симуляциями нажатий клавиатуры.
HotKeySet('+{F5}', '_Exit')
Func _Exit()
    Exit
EndFunc   ;==>_Exit
;----------------------------------------------------------------------------------------------------------------------------------
While 1            
        analiz_1()
WEnd

Func analiz_1() ; анализирует местонахождение корабля и наличие врагов в локале

   PixelSearch( -1166, 56, -1152, 1000, 0x8F0000, 5 ) ; сканирует локал на красный цвет минусов
    Select
        Case Not @error
            $analiz_1 = 1
        Case @error
            $analiz_1 = 0
    EndSelect

    PixelSearch( -255, 25, -249, 33, 0xCCCCCC, 2 )  ; ищет белые полоски квадратика овервью, значит в космосе
    Select
        Case Not @error
            $analiz_2 = 1
        Case @error
            $analiz_2 = 0
   EndSelect
		 
Select
   
Case $analiz_1 = 0 And $analiz_2 = 0 
            ;MsgBox (0, "ответ", "корабль в доке, врагов в локале нет, готов к вылету")
        exitSpace()

Case $analiz_1 = 1 And $analiz_2 = 0 
           ; MsgBox (0, "ответ", "корабль в доке, в локале враги, не готов к вылету, продолжаем скан локала")
        zvukStan()
		
Case $analiz_1 = 1 And $analiz_2 = 1  
            ;MsgBox (0, "", "Корабль в космосе на аномалке, в локале враги, разгон в ожидании дронов, варп на станцию")
	    otwarp()			
	  EndSelect
   EndFunc

; ВЫход в космос
Func exitSpace()
WinActive('Название окна')   
WinActivate('Название окна')
  MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
  SoundSetWaveVolume(50)   ; громкость звука
  SoundPlay("C:\Windows\Media\стандартный звук.wav", 1 )  ; звук
  Send('0', Random(2, 4))   ; эмуляция нажатия кнопки выхода со станции
    Sleep(Random(11888, 13999))
	Send('7', Random(2, 4)) 	; стоп шип 
	MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
		Send('{F4}')
	Sleep(783)
	MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
	Send('+3')
	Sleep(795)
	MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
	Send('+1')
	Sleep(792)
	MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
	Send('+2')
	Sleep(300)
 EndFunc
 
    ; Воспроизведение звука на станции, когда в локале враги
 Func zvukStan() 	
SoundSetWaveVolume(5); громкость звука
  SoundPlay("C:\Windows\Media\стандартный звук.wav", 1 )   ; звук
  Sleep(25000)
  EndFunc
   
; Отход домой при минусах
Func otwarp()  
   WinActivate('Название окна');стоп до активации окна
    WinActive('Название окна') ;проверяет активность окна
	  SoundSetWaveVolume(50) ; громкость проигрывания звукового файла
	  SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 ) ;вызов проигрывания звукового файла
		  Sleep(10)
		  MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 2, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка ), вход в док если минус появился при простое у станции
		  Sleep(Random(77, 111))
		   MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(7, 12)); рандомный клик в неактивный прямоугольник окна игры
		   Send('2', 2 )               ; эмуляция нажатия клавиши "2" 2 раза(возвращение дронов)
		   Sleep(Random(77, 111))
		    MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 1, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка )
		   Send('6', 1 )           ;эмуляция нажатия клавиши "6" (разгон)
		     SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 ) ;звук
		   Sleep(30000)        ; ожидание дронов, пока стоит в разгоне
            WinActive('Название окна') ;проверяет активность окна		   
	 	    WinActivate('Название окна');стоп до активации окна            
		   MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 1, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка )
		   Send('9', 1)                ;эмуляция нажатия клавиши "9"  (варп, вход в станцию)
		   SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 )  ;звук
		   Send('5')          ;эмуляция нажатия клавиши, перезарядка снарядов 
		   SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 ) ;звук
	       Sleep(20000)
		   WinActive('Название окна') ;проверяет активность окна
		    WinActivate('Название окна');стоп до активации окна
			  MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 1, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка сверху в овервью)
			  Send('9', 1)                ;эмуляция нажатия клавиши "9" (варп, вход в станцию)
			  Sleep(3309)
			SoundSetWaveVolume(50); громкость проигрывания звукового файла
	        SoundPlay("C:\Windows\Media\Characters\Windows 1восклицание.wav", 1 ) ;вызов проигрывания звукового файла
   EndFunc



И вот второй скрипт, который хотелось бы соединить с первым

Код:
AutoItSetOption("SendKeyDownDelay", Random(56, 111))
AutoItSetOption("MouseClickDownDelay",Random(56, 111))
AutoItSetOption ('SendKeyDelay', Random(56, 111)) ;Продолжительность паузы между последовательными симуляциями нажатий клавиатуры.
HotKeySet('+{F6}', '_Exit')
Func _Exit()
    Exit
 EndFunc   ;==>_Exit
 
 While 2            
        analiz2()
WEnd

Func analiz2() ; анализирует местона
   
		 PixelSearch( -814, 961, -804, 972, 0x949494, 7 ) ;ищет серый цвет на полоске скорости справа, область проверки корабля в варп режиме
    Select
        Case Not @error
            $analiz_3 = 1
        Case  @error
            $analiz_3 = 0
		 EndSelect
		 
PixelSearch( -870, 960, -863, 964, 0x949494, 7 ) ;ищет серый цвет на полоске скорости СЛЕВА, область проверки корабля в варп режиме
    Select
        Case @error
            $analiz_4 = 0
        Case Not @error
            $analiz_4 = 1
		 EndSelect
		 
  PixelSearch( -249, 110, -240, 500, 0x002699, 5 )        ;координаты поиска и цвет  тёмно-синих союзников 
	                                                        ;в аномалии (овервью, полностью полоска со значками сверху в низ)
    Select
        Case @error
            $analiz_55 = 0
    Case Not @error
            $analiz_55 = 1
		 EndSelect
		 
   PixelSearch( -250, 104, -249, 500, 0xC11313, 1 )        ;координаты поиска и цвет  красных крестиков неписи 
	                                                        ;в аномалии (овервью, полностью полоска со значками сверху в низ)
   Select
        Case @error
            $analiz_5 = 0
    Case Not @error
            $analiz_5 = 1
		 EndSelect
		 
 PixelSearch( -1166, 56, -1152, 1000, 0x8F0000, 5 ) ; сканирует локал на красный цвет минусов
    Select
        Case Not @error
            $analiz_1n = 1
        Case @error
            $analiz_1n = 0
    EndSelect
	  	
		PixelSearch( -750, 56, -739, 673, 0x006FFD, 5 )  ; ищет синий значок с окошка карты системы
    Select
        Case Not @error
            $analiz_1k = 1
        Case @error
            $analiz_1k = 0
    EndSelect
Select 
			
 Case $analiz_1n = 0 And $analiz_3 = 1  And $analiz_4 = 1 And $analiz_55 = 1 And  $analiz_5 = 1 
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()
		
Case $analiz_1n = 0 And $analiz_3 = 1  And $analiz_4 = 1 And $analiz_55 = 0 And  $analiz_5 = 0 
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()
		
Case $analiz_1n = 0 And $analiz_3 = 1  And $analiz_4 = 1 And $analiz_55 = 1   
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()
		
Case $analiz_1n = 0 And $analiz_3 = 1  And $analiz_4 = 1  And $analiz_5 = 0   
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()

Case   $analiz_1k = 0 And  $analiz_5 = 1 
             ; включает карту системы
       kartsistem()
		
	 EndSelect
  EndFunc
  
  ; Включает сканер аномалий, получает данные и варп на место назначения
  Func scan_warpAnomal()
   WinActivate('Название окна')
   WinActive('Название окна')
   Send('{F10}')
   Sleep(500)
   Send('5')
   MouseClick('left', Random(-966, -953, 1), Random(77, 89, 1), 1, Random(7, 12))   ; рандомный клик в прямоугольник кнопки сканера
   Sleep(12759)
   MouseClick('right', Random(-900, -871, 1), Random(272, 279, 1), 1, Random(7, 12)) ; клик ПКМ на аномалке в сканере(3 строка сверху)
   MouseClick('left', Random(-814, -788, 1), Random(284, 290, 1), 1, Random(7, 12))  ; клик ЛКМ на варп в аномалию в 0 км.
   Sleep(2000)
   WinActivate('Название окна')
   WinActive('Название окна')
   Send('{ENTER}')
   Sleep(20000)
   
   
EndFunc


Func kartsistem()
   WinActivate('Название окна')
   WinActive('Название окна')
   Sleep(100)
   Send('{F10}') ; включает карту
   Sleep(300)
   EndFunc


Всего их сейчас пять, но в итоге должно быть не меньше семи :smile:
Мне бы только пример с пояснениями и комментариями как соединить их можно, а дальше думаю я уже пойму что к чему.

Заранее благодарю.
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
dreamorder

Попробуйте так:
Код:
AutoItSetOption("SendKeyDownDelay", Random(56, 111))
AutoItSetOption("MouseClickDownDelay",Random(56, 111))
AutoItSetOption ('SendKeyDelay', Random(56, 111)) ;Продолжительность паузы между последовательными симуляциями нажатий клавиатуры.
HotKeySet('+{F6}', '_Exit')
Func _Exit()
    Exit
 EndFunc   ;==>_Exit

 While 2
        analiz2()
WEnd

Func analiz2() ; анализирует местона
	
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;;;;;;;   1 скрипт;;;;;;;;;;;;;;;
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	
	PixelSearch (x1,y1,x2,y2, XxXXXXXX, 10); сделать проверку на док (к примеру влевом нижнем углу желтые скобки-стрелки для выхода в космос)
	
	Select
        Case Not @error
            $analiz_doc = 1
        Case @error
            $analiz_doc = 0
    EndSelect
	
	 PixelSearch( -1166, 56, -1152, 1000, 0x8F0000, 5 ) ; сканирует локал на красный цвет минусов
    Select
        Case Not @error
            $analiz_1 = 1
        Case @error
            $analiz_1 = 0
    EndSelect

    PixelSearch( -255, 25, -249, 33, 0xCCCCCC, 2 )  ; ищет белые полоски квадратика овервью, значит в космосе
    Select
        Case Not @error
            $analiz_2 = 1
        Case @error
            $analiz_2 = 0
   EndSelect

	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;;;;;;;   2 скрипт;;;;;;;;;;;;;;;
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
         PixelSearch( -814, 961, -804, 972, 0x949494, 7 ) ;ищет серый цвет на полоске скорости справа, область проверки корабля в варп режиме
    Select
        Case Not @error
            $analiz_3 = 1
        Case  @error
            $analiz_3 = 0
         EndSelect

PixelSearch( -870, 960, -863, 964, 0x949494, 7 ) ;ищет серый цвет на полоске скорости СЛЕВА, область проверки корабля в варп режиме
    Select
        Case @error
            $analiz_4 = 0
        Case Not @error
            $analiz_4 = 1
         EndSelect

  PixelSearch( -249, 110, -240, 500, 0x002699, 5 )        ;координаты поиска и цвет  тёмно-синих союзников
;в аномалии (овервью, полностью полоска со значками сверху в низ)
    Select
        Case @error
            $analiz_55 = 0
    Case Not @error
            $analiz_55 = 1
         EndSelect

   PixelSearch( -250, 104, -249, 500, 0xC11313, 1 )        ;координаты поиска и цвет  красных крестиков неписи
;в аномалии (овервью, полностью полоска со значками сверху в низ)
   Select
        Case @error
            $analiz_5 = 0
    Case Not @error
            $analiz_5 = 1
         EndSelect
#cs
 PixelSearch( -1166, 56, -1152, 1000, 0x8F0000, 5 ) ; сканирует локал на красный цвет минусов
    Select
		Case Not @error					;;;;;;;;;;;;;;;;;
            $analiz_1n = 1			;;;;;;;;; то=же проверка $analiz_1   соответственно убрать
        Case @error					;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            $analiz_1n = 0
    EndSelect
#ce

        PixelSearch( -750, 56, -739, 673, 0x006FFD, 5 )  ; ищет синий значок с окошка карты системы
    Select
        Case Not @error
            $analiz_1k = 1
        Case @error
            $analiz_1k = 0
    EndSelect
Select
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;;;;;;;   1 скрипт;;;;;;;;;;;;;;;
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
Case $analiz_1 = 0 And $analiz_2 = 0 And $analiz_doc = 1
            ;MsgBox (0, "ответ", "корабль в доке, врагов в локале нет, готов к вылету")
        exitSpace()

Case $analiz_1 = 1 And $analiz_2 = 0 And $analiz_doc = 1
           ; MsgBox (0, "ответ", "корабль в доке, в локале враги, не готов к вылету, продолжаем скан локала")
        zvukStan()
        
Case $analiz_1 = 1 And $analiz_2 = 1  
            ;MsgBox (0, "", "Корабль в космосе на аномалке, в локале враги, разгон в ожидании дронов, варп на станцию")
        otwarp()            
      EndSelect

	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;;;;;;;   2 скрипт;;;;;;;;;;;;;;;
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	
	
	
	

 Case $analiz_1 = 0 And $analiz_2 = 1 And $analiz_3 = 1  And $analiz_4 = 1 And $analiz_55 = 1 ;And  $analiz_5 = 1 <--думаю лишнее, если есть союзники, то в любом случае прыжок
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()

Case $analiz_1 = 0 And $analiz_2 = 1 And $analiz_3 = 1  And $analiz_4 = 1 And $analiz_55 = 0 And  $analiz_5 = 0
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()

#cs
Case $analiz_1n = 0 And $analiz_3 = 1  And $analiz_4 = 1 And $analiz_55 = 1 ;<---получается повторение = удаляем
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()
#ce

Case $analiz_1 = 0 And $analiz_2 = 1 And $analiz_3 = 1  And $analiz_4 = 1  And $analiz_5 = 0
            ;MsgBox (0, "ответ", "корабль в космосе, включаем сканер аномалий и прыгаем")
        scan_warpAnomal()

Case   $analiz_1k = 0 And  $analiz_5 = 1 ; <---не совсем понял для чего?
             ; включает карту системы
       kartsistem()

     EndSelect
  EndFunc

  ; Включает сканер аномалий, получает данные и варп на место назначения
  Func scan_warpAnomal()
   WinActivate('Название окна')
   WinActive('Название окна')
   Send('{F10}')
   Sleep(500)
   Send('5')
   MouseClick('left', Random(-966, -953, 1), Random(77, 89, 1), 1, Random(7, 12))   ; рандомный клик в прямоугольник кнопки сканера
   Sleep(12759)
   MouseClick('right', Random(-900, -871, 1), Random(272, 279, 1), 1, Random(7, 12)) ; клик ПКМ на аномалке в сканере(3 строка сверху)
   MouseClick('left', Random(-814, -788, 1), Random(284, 290, 1), 1, Random(7, 12))  ; клик ЛКМ на варп в аномалию в 0 км.
   Sleep(2000)
   WinActivate('Название окна')
   WinActive('Название окна')
   Send('{ENTER}')
   Sleep(20000)


EndFunc


Func kartsistem()
   WinActivate('Название окна')
   WinActive('Название окна')
   Sleep(100)
   Send('{F10}') ; включает карту
   Sleep(300)
   EndFunc




; ВЫход в космос
Func exitSpace()
WinActive('Название окна')   
WinActivate('Название окна')
  MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
  SoundSetWaveVolume(50)   ; громкость звука
  SoundPlay("C:\Windows\Media\стандартный звук.wav", 1 )  ; звук
  Send('0', Random(2, 4))   ; эмуляция нажатия кнопки выхода со станции
    Sleep(Random(11888, 13999))
    Send('7', Random(2, 4))     ; стоп шип 
    MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
        Send('{F4}')
    Sleep(783)
    MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
    Send('+3')
    Sleep(795)
    MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
    Send('+1')
    Sleep(792)
    MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(2, 4))  ; рандомный клик в прямоугольник 
    Send('+2')
    Sleep(300)
 EndFunc
 
    ; Воспроизведение звука на станции, когда в локале враги
 Func zvukStan()    
SoundSetWaveVolume(5); громкость звука
  SoundPlay("C:\Windows\Media\стандартный звук.wav", 1 )   ; звук
  Sleep(25000)
  EndFunc
   
; Отход домой при минусах
Func otwarp()  
   WinActivate('Название окна');стоп до активации окна
    WinActive('Название окна') ;проверяет активность окна
      SoundSetWaveVolume(50) ; громкость проигрывания звукового файла
      SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 ) ;вызов проигрывания звукового файла
          Sleep(10)
          MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 2, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка ), вход в док если минус появился при простое у станции
          Sleep(Random(77, 111))
           MouseClick('left', Random(-627, -479, 1), Random(28, 144, 1), 1, Random(7, 12)); рандомный клик в неактивный прямоугольник окна игры
           Send('2', 2 )               ; эмуляция нажатия клавиши "2" 2 раза(возвращение дронов)
           Sleep(Random(77, 111))
            MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 1, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка )
           Send('6', 1 )           ;эмуляция нажатия клавиши "6" (разгон)
             SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 ) ;звук
           Sleep(30000)        ; ожидание дронов, пока стоит в разгоне
            WinActive('Название окна') ;проверяет активность окна           
            WinActivate('Название окна');стоп до активации окна            
           MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 1, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка )
           Send('9', 1)                ;эмуляция нажатия клавиши "9"  (варп, вход в станцию)
           SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 )  ;звук
           Send('5')          ;эмуляция нажатия клавиши, перезарядка снарядов 
           SoundPlay("C:\Windows\Media\Characters\Windows Exclamation.wav", 1 ) ;звук
           Sleep(20000)
           WinActive('Название окна') ;проверяет активность окна
            WinActivate('Название окна');стоп до активации окна
              MouseClick('left', Random(-258, -241, 1), Random(84, 97, 1), 1, Random(7, 12)) ;рандом клик по строке с станцией(1 строчка сверху в овервью)
              Send('9', 1)                ;эмуляция нажатия клавиши "9" (варп, вход в станцию)
              Sleep(3309)
            SoundSetWaveVolume(50); громкость проигрывания звукового файла
            SoundPlay("C:\Windows\Media\Characters\Windows 1восклицание.wav", 1 ) ;вызов проигрывания звукового файла
   EndFunc
 
Верх