Вопрос о сложных петлях - PullRequest
0 голосов
/ 13 июля 2010

Я пишу скрипт в AutoHotKey и наткнулся на тупик. Прямо сейчас у меня есть рабочий графический интерфейс, который включает в себя флажки и раскрывающиеся списки. Программа представляет собой макрос-скрипт для игр - пользователь проверяет, какие макросы он хочет запустить в фоновом режиме, отправляет свои параметры, и программа постоянно оценивает различные условия и выполняет команды в зависимости от того, выполнены ли эти условия. Шаблон каждого из макросов таков:

Loop:
PixelGetColor, color, 488, 778  ;gets pixel color of specific coordinate
if thecolor = 0x000000 ; if the color is black
{
    SendInput {Raw}f ;sends the f command to use item
    }

    else sleep 20
goto, Loop

Таким образом, макрос зацикливается, оценивая пиксель каждые 2 милисекунды и отправляя входные данные, если выполняется оператор if.

Вот проблема: Для каждого из макросов, которые пользователь может проверить для запуска в фоновом режиме, существует определенный цвет пикселя, разные отправленные входные данные и разные координаты для оценки. Как я могу сделать всеобъемлющий цикл, который учитывает выбор флажков пользователей? Например, если checkBox = 1 (выбрано), я мог бы выглядеть так:

if(%Box1%=1) 
{
   Run above code
}

Но если пользователь проверит 1 и 2, мне придется оценить и другие координаты. Вроде так:

if(%Box1%=1 & %Box2%=2) 
{
   Run above code
            + 
   PixelGetColor, color2, 510, 778
   if thecolor = 0x000000
   {
         Send 1
         Sleep 20000
   goto, start
 }
  else, sleep 20

Я не хочу, чтобы несколько разных циклов работали один за другим, потому что это было бы слишком медленно, и я не хочу делать огромную ветвь из всех возможных перестановок «если». Кто-нибудь знает, что делать?

1 Ответ

0 голосов
/ 25 июля 2010

и я не хочу делать огромные ветвь всех возможных «если» Перестановки

Проблема, мой друг, в том, что это единственное решение. Вы должны проверить статус каждого флажка, чтобы не перепрыгивать через эту часть. Если бы я мог видеть ваш код, я мог бы отправить вам поправку за него, но вы не можете вставить здесь полный код. Попробуйте autohotkey.net/paste, и я надеюсь, что смогу вам помочь.

...