Вот там где (ошибка все равно вылазит) недоставало скобки. Или скорее твои вездесущие ($x+1) не нужно заключать в скобки.
GETSCREEN в цикле всего один это нормально? Просто там полно анализов экрана.
GETSCREEN
$y = 1
$x = 0
$i =  PXLCRC (391,293, 811,320)  //контрольная сумма пикс в облости вопроса
$n = TFCOUNT ("quest.txt")         //кол-во строк в файле
print($n/2)
WHILE($x < $n)                     //пока непроверит все строки, будет сверять с вопросом на экране
   IF(TFREAD ("quest.txt", $x+1) ! $i)
      if($x+1 = $n)
         
         $y = PXLXOR (412,353, 656,359)//если в списке нету такого вопроса, запоминает сумму пикс первого ответа
         LCLICK(415,329)//кликает на первый ответ
         LCLICK(421,501)
         waitms(1500)
         GETSCREEN
         IF(PXL(411,473)=3274545)    //и проверяет, правильно или нет(красный или зеленый)
            TFWrite("quest.txt", $i)//если правильно, записывает вопрос и ответ с индексом "а"
            TFWrite("quest.txt",STRCONCAT("a",$y))
         else
            TFWrite("quest.txt", $i)
            TFWrite("quest.txt",STRCONCAT("n",$y))//если неправильно, то вопрос и ответ с индексом "н"
         END_IF
      END_if
      INC($x,1)
   else
      if(strfilter(TFREAD ("quest.txt",$x+2),"a",1) = "a")//если такой вопрос имеется
         $s = strfilter(TFREAD ("quest.txt",$x+2),"a",0)//и ответ под ним с индексом "а"
         
         SWITCH($s)
         CASE(PXLXOR (412,353, 656,359))//находим ответ и кликаем по нему
            LCLICK(415,329)
         case(PXLXOR (412,393, 656,399))
            LCLICK(415,369)
         case(PXLXOR (412,433, 656,439))
            LCLICK(415,409)
         DEFAULT
         END_SWITCH
         LCLICK(421,501)
         waitms(1500)
         $x = $n// и начинаем с начала
         print("ok")
      else
         //если же ответ с индексом "н", то дальше у меня просто мозг кипит
         
         $s = strfilter(TFREAD ("quest.txt",$x+2),"n",0)//считываем из списка сумму, которая прямо под вопросом
         if($n > $x+3)//тут я расчитывал, что если ответ в конце списка, то в условии появляется ошибка(ошибка всеравно вылазит)
            if(strfilter(TFREAD ("quest.txt",$x+3),"n",1) = "n")// если под первым неправильным есть еще один такой
               $s1 = strfilter(TFREAD ("quest.txt",$x+3),"n",0)// то также его считываем
               if(($s!PXLXOR(412,353,656,359)&($s1!PXLXOR(412,353,656,359)))//свеирем с первым вариантом ответа
                  $y = PXLXOR(412,353, 656,359)//если несовпадает, то это правильный ответ
                  LCLICK(415,329)
               else
                  if(($s!PXLXOR(412,393, 656,399)&($s1!PXLXOR(412,393, 656,399)))//если же нет, то сверяем с втарым
                     $y = PXLXOR (412,433, 656,439)
                     LCLICK(415,409)
                  else
                     $y = PXLXOR (412,433, 656,439)//если же и там неправильный,то третий ответ должен быть правильным
                     LCLICK(415,409)
                  end_if
               end_if
            else//если же под вопросом только один вариант ответа(неверного)
               if($s = PXLXOR (412,353, 656,359))//то свераем его с первым на экране
                  $y = PXLXOR (412,393, 656,399)//если это он, то запоминаем вторрой вариант и кликам
                  LCLICK(415,369)
               else
                  $y = PXLXOR (412,353, 656,359)// если не он, то кликаем по первому и запоминаем его
                  LCLICK(415,329)
               end_if
            end_if
         else//тут я расчитывал, что если вопрос и ответ в конце списка, дабы невылазила ошибка(тоесть в списке только один вариант неправильного ответа)
            if($s = PXLXOR (412,353, 656,359))//если совпадает,
               $y = PXLXOR (412,393, 656,399)//то запоминаем второй вариант, и кликаем по нему
               LCLICK(415,369)
            else
               $y = PXLXOR (412,353, 656,359)//иначе запоминаем первый вариант и кликаем по нему
               LCLICK(415,329)
            end_if
         end_if
         LCLICK(421,501)//нажимем на кнопку "ответ"
         waitms(1500)
         GETSCREEN
         IF(PXL(411,473)=3274545) //и проверям, правильно мы ответили или нет
            print("zamena")
            TFDelete("quest.txt", $x+2)//если правильно, то заменям строку с индексом "н" на "а"
            TFWrite("quest.txt",STRCONCAT("a",$y),$x+2)
            if(strfilter(TFREAD ("quest.txt",$x+3),"n",1) = "n")//если после это строки есть еще один неправильный вариант, то и его удаляем
               TFDelete("quest.txt", $x+3)
            end_if
         else
            TFWrite("quest.txt",STRCONCAT("n",$y),$x+2)//если же ответ неверный, то добавляем его под строку с вопроосом, с индексом "н"
         END_IF
         $x = $n//НАЧИНАЕМ С НАЧАЛА
      END_IF
   END_IF
END_CYC