Что нового

Как назначить выполнение действия

Сообщения
8
Репутация
-1
Добрый день столкнулся с проблемой того что при появлении цвета "0xFF0000" в точке "811,759" выполнялось повторное действие нажатие левой клавиши мыши, при появлении другого цвена например "0хffffff"(может его не существует просто для примера) скрипт останавливется
Код:
Loop
{
    PixelGetColor, chek, 811,759 
    if (check = 0xFF0000)
    {
        MouseClick 
        sleep 100 
    }
}

сделал типо такого но ничего не понимаю почему не нажимается мышка (еще не сделал чтоб скрипт останавливался)
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Скрипт написан вообще не на AutoIt.
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Этот форум по AutoIt. Вот так это пишется на этом языке.
Код:
While 1
   $colour = PixelGetColor(811, 759)
   If $colour = 0xFF0000 Then
      MouseClick("left")
      Sleep(100)
   EndIf
WEnd
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
Oki в твоем случае код не завершится и будет непрерывно щелкать мышкой пока не уйдет "зеленый" цвет.
Код:
$var = PixelGetColor(811,759)        ;получаем цвет пикселя
Sleep(100)

   If $var = 0xFF0000 Then        ;сравниваем полученный цвет с шаблоном
      MouseClick ("left", 811,759)     ;координаты можно не указывать, тогда кликнет по текущим координатам
      sleep 100
   Else
      ;нужный цвет отсутствует
   EndIf

либо убираем цикл, либо делаем выход из него.
Правка твоего варианта
Код:
While 1
   $colour = PixelGetColor(811, 759)
   If $colour = 0xFF0000 Then
      MouseClick("left")
      Sleep(100)
      ExitLoop        ;выход из цикла
   EndIf
WEnd
 
Последнее редактирование:
Автор
A
Сообщения
8
Репутация
-1
мне нужно чтоб пока не исчезнет красный цвет мышь кликала а когда он пропадет на время переставала и обратно начинала на крысный
в твоем случае код не завершится и будет непрерывно щелкать мышкой пока не уйдет "зеленый" цвет.
Код:
$colour = PixelGetColor[/URL](811,759)        ;получаем цвет пикселя
Sleep(100)

   If $colour = 0xFF0000 Then        ;сравниваем полученный цвет с шаблоном
      MouseClick ("left", 811,759)     ;координаты можно не указывать, тогда кликнет по текущим координатам
     sleep 100
  Else
      ;нужный цвет отсутствует
 EndIf

такой код подойдет для этого?
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Oki в твоем случае код не завершится и будет непрерывно щелкать мышкой пока не уйдет "зеленый" цвет.

либо убираем цикл, либо делаем выход из него.
Инородный код топикстартера так и призван был делать: регулярно искать и кликать в цикле. И цвет там всё-таки красный, а не зелёный.
 
Последнее редактирование:

All2khoff

Продвинутый
Сообщения
347
Репутация
65
время переставала и обратно начинала
Тогда скрипт Oki для вас, но параметр "Sleep" задайте 1000 тогда клики будут происходить раз в секунду, а не десять раз в секкунду. и будет хороший вариант.
Инородный код топикстартера так и призван был делать
я не смотрел его "код", что написал ТС то и сделал, сказано остановить я остановил)
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Впрочем, вероятно, что топикстартер нуждается в остановке скрипта после первой удачной попытки, он недостаточно ясно объяснил цели.
 
Автор
A
Сообщения
8
Репутация
-1
Нет, нужно чтоб скрипт не останавливался, а повторял клик постоянно когда на данных координатах есть нужный пиксель, а когда он меняет цвет времменно приостанавливался и запускался при повторном появлении нужного цвета пикселя
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Вы так быстро общались, что моё сообщение запоздало.
Сообщение автоматически объединено:

Нет, нужно чтоб скрипт не останавливался, а повторял клик постоянно когда на данных координатах есть нужный пиксель, а когда он меняет цвет времменно приостанавливался и запускался при повторном появлении нужного цвета пикселя
Тогда используй, как сказано выше, мой скрипт, но (возможно?) увеличив время 100 миллисекунд до более нормальной задержки после удачной попытки.
 
Автор
A
Сообщения
8
Репутация
-1
Удалено...
 
Последнее редактирование:

All2khoff

Продвинутый
Сообщения
347
Репутация
65
изучите справку, у AutoIt она очень удобна
while Цикл с предусловием, пока истинно выполняется, например:
Код:
HotKeySet ( "`" ,"WhileNottTue")
HotKeySet ( "ё" ,"WhileNottTue")

Global $war = 1


While $war = 1 ; можно записать как While 1 или While True
   ;пока истинно цикл выполняется бесконечно по кругу
   ConsoleWrite("$war = 1 истинно"&@CRLF)
   Sleep(500)
WEnd


Func WhileNottTue()
$war = $war + 1
;условие $war = 1 больше не истнинно это последняя итерация цикла while
ConsoleWrite("$war = 1 больше не истинно"&@CRLF)
EndFunc

Также здесь принято один вопрос одна тема, предварительно убедитесь что пишете в нужный раздел, и что ранее этот вопрос не задавался.
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
HotKeySet(^e)
While 1
   $colour = PixelGetColor(811, 759)
   If $colour = 0xFF0000 Then
      MouseClick("left")
      Sleep(100)
   EndIf
WEnd
вот этот скрипт будет запускаться при нажатии alt e?
если такой вид скрипта компилировать выходит ошибка
Непонятно, требуется ли нажатие горячей клавиши для каждой активации. Предположим, что активация имеет одноразовый характер. Тогда такой скрипт.
Код:
HotKeySet("!e", "_Action")
While 1
   Sleep(10)
WEnd
Func _Action()
   While 1
      $colour = PixelGetColor(811, 759)
      If $colour = 0xFF0000 Then
         MouseClick("left")
         Sleep(100)
      EndIf
   WEnd
EndFunc
 
Последнее редактирование:
Автор
A
Сообщения
8
Репутация
-1
А если добавить паузу то будет примерно так или я ошибаюсь?

HotKetSet(“!3”, “_pause”)
Это первая строка а потом идёт все остальное
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
Функция HotKeySet HotKeySet ( "key", "function" )
key это клавиша на которую срабатывает
function это вызываемая функция.
параметр sleep(приостановка скрипта на милисекунды) можно написать в теле функции.
 
Автор
A
Сообщения
8
Репутация
-1
sleep(приостановка скрипта на милисекунды) можно написать в теле функции.
Мне нужно остановить скрипт не на несколько секунд а на неопределённое время, после чего снова запустить его
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
Arkhangel напишите задачу нормально, максимально подробно, шаг за шагом.
В новой теме, в "столе заказов" если хотите чтобы сделали за вас, либо в "общем разделе" если хотите идти по пути подсказок, рассуждений и поправок к задаче.
Эта тема уже с ответом.
Это не отказ в помощи, здесь так заведено, одна тема один вопрос. очень рекомендую ознакомиться с основными правилами создания тем.
Еще раз о Русской справке
Прежде чем спросить
Быстрый старт для работы с AutoIt
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
Мне нужно остановить скрипт не на несколько секунд а на неопределённое время, после чего снова запустить его
Код:
HotKeySet("!e", "_Action")
$flagActive = 0
While 1
   Sleep(10)
WEnd
Func _Action()
   If $flagActive = 0 Then
      $flagActive = 1
      MsgBox(4096, "Message", "Activated.", 1)
      While 1
         $colour = PixelGetColor(811, 759)
         If $colour = 0xFF0000 Then
            MouseClick("left")
            Sleep(100)
         EndIf
      WEnd
   Else
      $flagActive = 0
      MsgBox(4096, "Message", "Deactivated.", 1)
   EndIf
EndFunc
 
Верх