Что нового

Логические элементы в скрипте

bbrvi2008

Новичок
Сообщения
12
Репутация
0
Подскажите пожалуйсто можно ли сделать так что бы если в заданной точке был например красный цвет то скрипт выполнял одно действие а если другой цвет то ничего не выполнял. И еще один вопрос почему у меня не получается настроить чтобы скрипт выполнял определенный цикл например 5 раз?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
bbrvi2008
Из справки:
Код:
If <expression> Then
    statements
    ...
[ElseIf expression-n Then
    [elseif statements ... ]]
    ...
[Else
    [else statements]
    ...
EndIf

For <variable> = <start> To <stop> [Step <stepval>]
    statements
    ...
Next
;.......Пример:
$iColor = Random(0, 1, 1)

If $iColor Then
	MsgBox(64, '', '$iColor = 1')
Else
	MsgBox(16, '', '$iColor = 0')
EndIf

For $i = 1 To 5
	MsgBox(64, 'Цикл', 'Шаг ' & $i)
Next
MsgBox(64, 'End', 'Вышли из цикла')
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
bbrvi2008
Предупреждение
1. слишком общее название темы
2. сама проблема не имеет под собой основания, достаточно прочитать хелп на соответствующую тему
3. если есть проблемы со скриптом, то крайне рекомендуется этот скрипт предоставить

почитай справку на тему циклов заодно, как начнешь читать про If Then Else
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
Да уж я еще новечок, мне еще учиться и учиться. Понять бы что тут к чему.
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
Объясните мне пожалуйста , что и куда тут подставлять а то я что то совсем ничего не соображаю((


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

While 10 как я где то читал цифра 10 после While обозначет что тело цикла будет выполнятся 10 раз но на деле он выполняется бесконечное число раз. Или я что то не так понял?
Sleep(500)
Send("{TAB}")
Sleep(500)
Send("{1}")
Sleep(4000)
Send("{2}")
Sleep(500)
WEnd
 

Nelsy

Знающий
Сообщения
35
Репутация
8
bbrvi2008,

Можно сделать такой цикл
Код:
$i = 0
Do
Sleep(500)
Send("{TAB}")
Sleep(500)
Send("{1}")
Sleep(4000)
Send("{2}")
Sleep(500)
$i += 1
Until $i = 10
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
Nelsy сказал(а):
bbrvi2008,

Можно сделать такой цикл
Код:
$i = 0
Do
Sleep(500)
Send("{TAB}")
Sleep(500)
Send("{1}")
Sleep(4000)
Send("{2}")
Sleep(500)
$i += 1
Until $i = 10
спасибо попробую
 

Nelsy

Знающий
Сообщения
35
Репутация
8
А по поводу выполнения действий если в точке красный цвет, пример:

Код:
$PixGetCol = PixelGetColor(X,Y) ; Вместо X и Y впиши координаты откуда брать цвет для проверки
If $PixGetCol = 0xff0000 Then ; красный цвет ff0000, строка будет выглядеть так: If $PixGetCol = 0xff0000
	; Выполнить код вслучае если пиксель по X,Y  равен красному цвету ff0000.
	MsgBox(0,0,'В указаной точнке красный цвет')
Else
	; Если пиксель не красный то ничего не делать. В таком случае строка Else не обязательна.
EndIf


PS: Для получения точных координат и цвета пикселя тебе может помоч программа AU3Info входящая в комплект AutoIt. Если при использовании данной программоы испытаваешь проблемы с точностью захвата цвета пикселя то включи опцию увеличения(Ctrl+Alt+M)
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
Nelsy сказал(а):
А по поводу выполнения действий если в точке красный цвет, пример:

Код:
$PixGetCol = PixelGetColor(X,Y) ; Вместо X и Y впиши координаты откуда брать цвет для проверки
If $PixGetCol = 0xff0000 Then ; красный цвет ff0000, строка будет выглядеть так: If $PixGetCol = 0xff0000
	; Выполнить код вслучае если пиксель по X,Y  равен красному цвету ff0000.
	MsgBox(0,0,'В указаной точнке красный цвет')
Else
	; Если пиксель не красный то ничего не делать. В таком случае строка Else не обязательна.
EndIf


PS: Для получения точных координат и цвета пикселя тебе может помоч программа AU3Info входящая в комплект AutoIt. Если при использовании данной программоы испытаваешь проблемы с точностью захвата цвета пикселя то включи опцию увеличения(Ctrl+Alt+M)
У меня еще 2 вопроса что обозначает вот эта строчка MsgBox(0,0,'В указаной точнке красный цвет')?
а куда вписывать вот если цвет красный что бы он нажал клавищу допустим {F10}
 

Nelsy

Знающий
Сообщения
35
Репутация
8
MsgBox(0,0,'В указаной точнке красный цвет') - всплывающее сообщение в виде окна с текстом "В указаной точнке красный цвет".

Вписывать нажатие клавишей в случае красного цвета в пикселе, пример:

Код:
$PixGetCol = PixelGetColor(X,Y) ; Вместо X и Y впиши координаты откуда брать цвет для проверки
If $PixGetCol = 0xff0000 Then  ; Выполнить код вслучае если пиксель по X,Y  равен красному цвету ff0000.
    Send("{F10}")
EndIf
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
а это всплывающее окно обязательно нужно?
 

Nelsy

Знающий
Сообщения
35
Репутация
8
bbrvi2008 сказал(а):
а это всплывающее окно обязательно нужно?
Нет, не обязательно. Вписал в качестве примера куда можно вставить свой код(нажатие клавишей и тд) в случае если в пикселе красный цвет. :shok:
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
хммм первый раз сделал он нажимал клавишу бесконечно, а теперь переделал вобще не нажимает(
 

Nelsy

Знающий
Сообщения
35
Репутация
8
Вот максимально разжованый ответ на главный вопрос данной темы, если что не понятно или не работает то ищи в справке. За тебя код никто не напишет, могут лишь дать пример.

Код:
$PixGetCol = PixelGetColor(1280,1024) ; Помещаем в переменную $PixGetCol цвет из пикселя по координатам 1280,1024
If $PixGetCol = 0x000000 Then  ; Если переменная $PixGetCol ровняется 0x000000 (черный цвет) то выполнить код
	$i = 0 ; сбрасываем счетчик цикла в 0
	Do     ; начинаем цикл
		Send("{F10}")     ; код цикла - отправить клавишу F10
		$i = $i + 1       ; повысить счетчик цикла на 1
	Until $i = 5		; выйти из цикла если счетчик цикла $i ровняется 5-ти
EndIf  ; Конец условия (Если условие If не было выполнено то программа начент выполнение кода со следующей строки после EndIf)
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
Большое спасибо, свершилось чудо все получилось. У меня не получалось потому что я считал координаты от угла монитора как когда писал для клика мыши, а тут нужно было писать координаты от угла клиента.
Думаю теперь туму можно закрывать.


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

У меня остался еще один не большой вопрос можно сделать так что бы в одном скрипте пыполнялось паралельно 2 таких действия или их нужно запускать в 2 разных скриптах или по очереди их выполнять?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
bbrvi2008 [?]
остался еще один не большой вопрос
Ответ на который есть на форуме. Не нужно лепить кучу вопросов в одну тему.
 
Автор
B

bbrvi2008

Новичок
Сообщения
12
Репутация
0
Когда я создаю новые темы вы ругаетесь когда спрашиваю в одной вы сново ругаетесь. в той теме где я видел подобный в1опрёос на него там так и не ответили
 
Верх