Code:
uo.findtype(hides ,'-1',corpse) ; нашли тип кожи в трупе
if uo.findcount() then
itemID = uo.GetSerial('finditem')
itemCont = UO.ContainerOf(itemID)
timemove=UO.Timer() ; задаем таймер для выхода из цикла
uo.MoveItem(itemID,0,'backpack')
repeat
wait(100)
until UO.ContainerOf(itemID)<>UO.GetSerial('backpack') || timemove+30>UO.Timer() ; цикл крутится пока предмет не переместится в бэкпак или не пройдет 3 секунды
endif
динамическая пауза срабатывает не по истечению времени а при выполнении каких либо условий. Счетчик, таймер, перемещение объекта, сообщение в журнале (классический чеклаг = динамическая пауза + защита от лага).
Для чего это нужно? Для того что некоторые действия изменяют время выполнения от внешних признаков. Лечение новичка бинтом требует 4 секунды а ГМ лекаря 1 секунду. Придется либо менять каждый раз паузу либо 1 раз поставить динамику на сообщение в журнале или изменение жизней и пауза будет наименьшая для каждого конкретного чара. Или например рубка - иногда требуется 6 секунд на попытку рубить 1 дерево а иногда дерево падает в пак сразу - динамика будет на сообщение журнала "You put" - как только проскочило сообщение - цикл с паузой выбивается и на надо ждать остальные 4-5 секунды.
Конкртно про лут - на шарде где я играю есть класс игроков которые могут при определенном обвесе лутать вещи в два раза быстрее остальных. У простого игрока пауза обычно 600-650 на 1 предмет а у этого класса около 300+пинг. Придется либо лишний раз дергать в цикле предмет на маленькой паузе - а действие которое как бы выполняется но без результата не приятно как сфере так и клиенту (прювет фастлут и краши), либо лутать с большой паузой, либо делать 2 отдельных скрипта для разных классов персонажей и разный обвес.
Главное не увлекаться и (лучше) не ставить паузы менее wait(100).
PS перенес в хелп ибо это не вопрос по скрипту как таковому а просто вопрос
Исправил косяк скрипта замеченный Juicy Fruit. © Я