PDA

Просмотр полной версии : В UOScript зависает цикл вида...



aspid
31.05.2004, 13:58
Сабж:

repeat
[действия]
Until(FindObject(PackIndex, 3577, HlopokID) = False);

Т.е. проходит внешний цикл раза два-четыре после чего мёртвой хваткой отказывается выходить из данного цикла, кто-нибудь сталкивался?
ЗЫ: При использовании нагрузка на проц мгновенно взлетает до 100 процентов, к чему бы это? :)

Alex M.A.
31.05.2004, 14:21
эм...
FindObject пробегает по всему списку предметов в контейнере и ищет первый попавшийся с заданными параметрами...
список предметов "у ей унутрё" организован так, что каждый элемент списка имеет ссылку на последующий...
так вот оччень НЕ рекомендуется вызывать функции поиска и получения списков, если в этот момент может измениться общее количество предметов в контейнере...
т.к. в этом случае поиск может пойти по несуществующим ссылкам в космос...
что, собственно, как я понял, он и делает...

aspid
31.05.2004, 14:36
Не знаю даже, в контейнере принципиально один предмет такого типа - это хлопок, его количество изменяется но кучка вроде как одна... :) Видимо ваше замечание действительно и в отношении количества в стопке? :)

aspid
31.05.2004, 14:37
Он не совсем виснет, он зацикливается, т.е. при полном отсутствии хлопка функция не возвращает трую что немножко странно... :) Конечно избежать таких трипов проверками элементарно, просто стало интерестно а как это он так... :)

Alex M.A.
31.05.2004, 14:42
тогда вообще-то так...
если в этот раз я правильно понял...

repeat
[действия]
Until not FindObject(PackIndex, 3577, HlopokID);

и еще...
при полном отсутствии хлопка она True и не вернет...

aspid
31.05.2004, 15:00
Фалс я хотел сказать, очепятка... :) Спасибо ещё раз! :) Вы меня просто спасаете... :)