PDA

Просмотр полной версии : Вложенные if'ы в UOPilot.



Passimense
12.06.2004, 23:01
Допустимы ли сабж?

Например такой скрипт работает некорректно:

for #i 0 20
send f3 4000
if #i > 0
if lastmsg you must wait
continue
end_if
if lastmsg you fail
continue
end_if
break
end_if
end_for
send f1 200

не реагирует на if lastmsg

baal
12.06.2004, 23:05
Вообще говоря допустимы, но ты явно тут намудрил, поэтому и не пашет скорее всего.
Распиши чтоли что ты хочешь и каждую строчку распиши что должна делать и т.д.
А то что-то не очень ясно :) Поможем исправить тогда хоть

ЗЫ: сразу бросается ошибка в 1ой строчке где шаг не указан :) for #i 0 20 1 скорее, не так ли? :) И вообще тут лучше рипит поставить...

Passimense
12.06.2004, 23:12
1. А чего тут можно намудрить?
2. В первой строке нет ошибки: шаг - необязательный параметр (по умолчанию 1).

for #i 0 20 // цикл от 0 до 20
send f3 4000 // некоторое действие
if #i > 0 // если не первый шаг цикла, то
if lastmsg you must wait // если поторопились ждем еще 4с
continue
end_if
if lastmsg you fail // если не вышло, пробуем еще раз
continue
end_if
break // если все получилось, прерываем цикл и идем все сначала
end_if
end_for
send f1 200

Passimense
12.06.2004, 23:17
А если поставить репит, тогда надо будет заводить итерационную переменную i, которая в цикле for есть по умолчанию.

baal
12.06.2004, 23:20
По большому счету там эта i не особо то и нужна =)
Попробуй вейты перед проверкой на месагу поставить по 100. Убрать задержку 4000 при посылке кнопки, и в репит загнать проверки на месаги все.

ЗЫ: может таки напишешь что ты хочешь этим скриптом сделать? =)

Passimense
12.06.2004, 23:39
если поставить проверку на все мессаги, слишком длинный скрипт получается.
а хочется, чтобы было как можно короче и как можно оптимальнее по времени.

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

say all release
repeat 20
send f3 1000 // use skill taming LastTarget
if lastmsg you fail
break
end_if
if lastmsg you are too far
break
end_if
if lastmsg already
break
end_if
if lastmsg you are your
break
end_if
if lastmsg you must wait
wait 4000
continue
end_if
wait 4000
if lastmsg it seems
break
end_if
if lastmsg remembers you
break
end_if
end_repeat
send f1 200 / TargetNext