2017-07-14 1 views
-1

J'essaie d'améliorer mes compétences AHK en faisant des programmes aléatoires et stupides qui utilisent différents concepts de différentes façons. En ce moment, je suis en train de créer un programme pour battre les codes pour Rust, un jeu à vapeur. Mon code est listé ci-dessous, mais il ne semble pas entrer correctement le code. La majeure partie du code est dans enterCode(), de sorte que je peux l'appeler disons, 20 fois, sans avoir à écrire chaque déclaration MouseClick un million de fois. Seul problème est, if (codeArray[%A_Index%] = x) ne semble pas fonctionner correctement. Est-ce que je ne passe pas les paramètres de la fonction dans le tableau correctement? Il effectue la première section correctement, puis ne fait rien après cela, donc il n'y a pas d'erreur que je peux regarder. Ma seule supposition est que rien ne se met dans le tableau, mais j'ai regardé beaucoup d'autres exemples de programmes et cela semble juste. (De plus, les deux dernières lignes de mon code ne sont pas fusionner avec le reste, mais ils sont tous les deux dans le même programme.)Impossible de récupérer des éléments du tableau? [AHK]

enterCode(number1, number2, number3, number4) 
{ 
codeArray=:[] ;define the array, with nothing in it 
codeArray[1]:=number1 ;enumerate passed parameters into array for loop 
codeArray[2]:=number2 
codeArray[3]:=number3 
codeArray[4]:=number4 

sleep 100 
send {e down} ;open door context menu 
sleep 200 
MouseClick, left, 942, 536 ;click to open code interface 
sleep 500 
send {e up} 
sleep 200 

loop, 4 
{  
    if (codeArray[%A_Index%] = 0) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 1) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 2) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 3) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 4) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 5) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 6) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 7) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 8) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    } 

    if (codeArray[%A_Index%] = 9) 
    { 
     MouseClick, left, 1217, 668 
     continue 
    }                  
} 

}

F3:: 
enterCode(1,2,3,4) 

Répondre

1

Modifier ceci:

codeArray=:[] ;define the array, with nothing in it 

à ceci:

codeArray := [] 
+0

Je suis curieux de savoir pourquoi l'ajout d'espaces fixerait le problème. –

+0

Ce n'est pas le cas. Changer la faute de frappe '=:' en ': =' le répare. L'espace blanc permet de distinguer l'opérateur d'affectation –