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

 
Ответить в эту темуОткрыть новую тему
> Ошибка интерпритации For
nazar
сообщение 6.9.2012, 22:10
Сообщение #1


***

Novice
Сообщений: 52
Регистрация: 9.4.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.847



Редко, но не всегда 5-10% случаев прохождения етого фрагмента кода,на самой первой строчке вылетает ошибка "Ошибка интерпритации For". Подскажите пожалуйста, в чём проблема?
+нашёл ошибку в новой версии которой небыло в 2.29. После устоновления и снятия с паузы "linedelay" уже не то что задано ранее самим скриптом (становиться тем числом что задано внизу окна)

for #i 1 4 1
if #i = 1
set $runa $runa5p
end_if
if #i = 2
set $runa $runa6p
end_if
if #i = 3
set $runa $runa7p
end_if
if #i = 4
set $runa $runa8p
end_if
set $w1 findimage (0, 0 700, 600 ($runa)%f 2 50 1)
if $w1 > 50
wait 500 + random (400)
set #x %f[1 1] + random (40)
set #y %f[1 2] + random (45)
left #x, #y
wait 1s
while #t = 0
set $w1 findimage (0, 0 700, 600 ($yesbutton)%f 2 50 1)
if $w1 > 50
set #t 1
end_if
wait 500 + random (400)
set #lag #lag + 1
if #lag >= 50
set #lag 0
goto refresh
end_if
end_while
set #t 0
set #x %f[1 1] + random (10)
set #y %f[1 2] + random (8)
left #x, #y
break
end_if
if #i = 4
set #activerunes 0
end_if
end_for
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.9.2012, 22:39
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



goto refresh

Версия какая пилота?
goto из фора делать нельзя. Точнее в последней версии вроде можно стало, но лучше не надо, не прально это (IMG:style_emoticons/default/wink.gif)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nazar
сообщение 6.9.2012, 23:44
Сообщение #3


***

Novice
Сообщений: 52
Регистрация: 9.4.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.847



Цитата(DarkMaster @ 6.9.2012, 23:39) *

goto refresh

Версия какая пилота?
goto из фора делать нельзя. Точнее в последней версии вроде можно стало, но лучше не надо, не прально это (IMG:style_emoticons/default/wink.gif)

пилот был 2.29, сейчас 2.31 пока повторной ошибки небыло.

Я гдето читал что програмисты вообще считают что если ты используешь гото то ты плохой програмист и у тебя кривой код, нодо уметь обходиться без него, но в конкретной ситуации незнаю как можна без него именно в етом месте, ведь именно в етом месте ожидание которое закончиваеться или действием или перезагрузкой =(
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.9.2012, 0:27
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



как вариант можно сделать флаг, который будет считываться после выхода.
Что-то вроде
...
if #lag >= 50
set #lag 0
set #refresh 1
break // До какого уровня сами посчитайте
end_if
....
end_for

if #refresh = 1
set #refresh 0
goto refresh
end_if


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nazar
сообщение 7.9.2012, 0:55
Сообщение #5


***

Novice
Сообщений: 52
Регистрация: 9.4.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.847



Цитата(DarkMaster @ 7.9.2012, 1:27) *

как вариант можно сделать флаг, который будет считываться после выхода.
Что-то вроде
...
if #lag >= 50
set #lag 0
set #refresh 1
break // До какого уровня сами посчитайте
end_if
....
end_for

if #refresh = 1
set #refresh 0
goto refresh
end_if


Пасибо, если еще раз выскочит еррор так и зделаю=)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
REPA
сообщение 16.9.2012, 3:47
Сообщение #6


***

Novice
Сообщений: 59
Регистрация: 12.2.2011
Группа: Пользователи
Наличность: 0
Из: Мариуполь
Пользователь №: 13.442
Возраст: 27



если будет снова вылетать, попробуй заменить цифры на переменные в For #i 1 4 1
помню был у меня случай, когда команда "repeat 10" срабатывала один раз, а при возврате к ней через goto выкидывало ошибку. заменил на repeat #n и всё заработало
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nazar
сообщение 16.9.2012, 18:26
Сообщение #7


***

Novice
Сообщений: 52
Регистрация: 9.4.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.847



Цитата(REPA @ 16.9.2012, 3:47) *

если будет снова вылетать, попробуй заменить цифры на переменные в For #i 1 4 1
помню был у меня случай, когда команда "repeat 10" срабатывала один раз, а при возврате к ней через goto выкидывало ошибку. заменил на repeat #n и всё заработало

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

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

 

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