Здравствуйте, гость ( Вход | Регистрация )

> Ошибка при использовании "else" в цикле "repeat"
facset
сообщение 23.12.2013, 22:38
Сообщение #1


**

Neophyte
Сообщений: 10
Регистрация: 21.12.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 16.508
Возраст: 23



баг на втором уровне выражения else

Код
1)   repeat #a
2)   действие
3)   if
4)     действие
5)   else
6)     действие
7)     if
8)       действие
9)     else
10)      действие
11)    end_if
12)  end_if
13)  end_repeat  - Ошибка интерпретации скрипта (end_repeat).


если с 7 по 11 строку засунуть в процедуру то все работает
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
facset
сообщение 27.12.2013, 19:30
Сообщение #2


**

Neophyte
Сообщений: 10
Регистрация: 21.12.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 16.508
Возраст: 23



Прошу перенести DarkMaster наши с ним обсуждения из темы Новая Версия Uopilot v.2.34) в эту.
продолжая редактировать свой скрипт повторно столкнулся с этой же проблемой но уже при использовании "if 754, 246 16578789" поясняю:
в своем скрипте заменил выражения (кстати брал я их отсюда: Wiki для UOPilot раздел if)
Код
set $a 754, 246 16578789 
set $b 754, 246    
if ($a) and ($b 16578789)
  left 754, 246  
  wait 3s
end_if
на
Код
if 754, 246 16578789
   left 754, 246          
   wait 3s
end_if
при этом из скрипта убрал все "call a", также заменил "call b"на код "if 484, 462 6313276" но убрал 2е "else" получилось
Код
if 484, 462 6313276
    left 484, 462
    wait 3s
  else
    left 412, 487          
    wait 3s
    left 526, 487        
    wait 3s
    if 484, 462 6313276
      left 484, 462        
      wait 3s
     //отсюда убрали "else"
    end_if
  end_if
скрипт работает правильно, но если вернуть
Код
else
  left 412, 487        
  wait 3s
end_if
вылезает баг Ошибка интерпретации скрипта (end_repeat), а вот если сделать отдельный скрипт
Код
repeat 5
left 526, 487  
  wait 3s      
  if 484, 462 6313276
    left 484, 462        
    wait 3s
  else
    left 412, 487          
    wait 3s
    left 526, 487          
    wait 3s
    if 484, 462 6313276
      left 484, 462          
      wait 3s
    else
      left 412, 487      
      wait 3s
    end_if
  end_if
end_repeat
end_script
то работает.

ВЫВОД: если в цикле "repeat" при нескольких "if" использовать два оператора "else" (один используется на втором уровне, как это делал я) то вылезает ошибка на строчке "end_repeat" = Ошибка интерпретации скрипта (end_repeat), повторяюсь в хз какой раз: проблема решается если
if 484, 462 6313276
Код
if 484, 462 6313276
  left 484, 462          
  wait 3s
else
  left 412, 487      
  wait 3s
end_if
второго уровня убрать в процедуру, или можно прописать ту часть где используются оба оператора "else" в отдельную вкладку Uopilot'а и вызывать их использование в нужном месте с предварительной передачей хендла окна.

хоть это и частичное решение проблемы но могут возникнуть неприятности например: если необходимо при повторном отрицательном результате перейти на какую то другую строку скрипта, из процедуры это пока невозможно (или я ошибаюсь?)

думаю данную тему можно будет закрыть.

P.S. прошу прощение за косноязычность в выражениях, на форумах и в чатах до этого тоже не особо участвовал.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 9.7.2025, 4:05
Designed by Nickostyle