2010-07-13 8 views
0

J'écris un script dans AutoHotKey, et je suis tombé sur une impasse. À l'heure actuelle, j'ai une interface graphique de travail qui implique des cases à cocher et des listes déroulantes. Le programme est un script de macro pour les jeux - l'utilisateur vérifie quelles macros il veut exécuter en arrière-plan, soumet ses options, et le programme évalue constamment diverses conditions et exécute des commandes selon que ces conditions soient satisfaites ou non. Le modèle de chacun des macros est la suivante:Question sur les boucles complexes

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 

Ainsi, les boucles macro, l'évaluation d'un pixel chaque 2 millisecondes, et l'envoi d'entrée si l'instruction if est remplie.

Voici le problème: Pour chacune des macros que l'utilisateur peut vérifier pour s'exécuter en arrière-plan, il existe une couleur de pixel différente identifiée, une entrée différente envoyée et une coordonnée différente à évaluer. Comment puis-je créer une boucle globale qui prenne en compte les choix de cases à cocher des utilisateurs? Par exemple, si la case = 1 (sélectionné), je pourrais être comme:

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

Mais si les contrôles utilisateur 1 et 2, je vais devoir évaluer d'autres coordonnées, aussi. Comme ainsi:

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

Je ne veux pas avoir de multiples boucles différentes qui exécutent un après l'autre parce qu'il serait trop lent, et je ne veux pas avoir à faire une énorme branche de tous les possibles « si 'permutations. Est-ce que quelqu'un sait quoi faire?

+0

Qu'est-ce que cela a à voir avec javascript? –

+0

l'a marqué accidentellement comme tel. Comment je detag? – Parseltongue

Répondre

0

et je ne veux pas avoir à faire une énorme branche de tous les possibles « si » permutations

Le problème de mon ami est que c'est la seule solution. Vous devez vérifier l'état de chaque case à cocher, il n'y a donc pas de saut de cette partie. Si je pouvais voir votre code, je pourrais vous envoyer un amendement, mais vous ne pouvez pas coller le code complet ici. Essayez autohotkey.net/paste, et j'espère pouvoir vous aider.