Page 1 of 2
Не стабильная отработка условия в UNTIL - цикле
Posted: 2005-10-07 09:41:24
by MaDoG
Вот берем такой цикл:
Code: Select all
Repeat
Uo.FindType('0x171C','-1','0x40482bf4')
Wait(4000)
Until UO.FindCount()>199
Вопрос: почему 3 из 5ти раз, этот цикл будет повторяться до бесконечности?
Posted: 2005-10-07 10:48:38
by flake
А у тебя в контейнере отдельные айтемы, или кучкующиеся?
Posted: 2005-10-07 11:13:15
by MaDoG
flake wrote:А у тебя в контейнере отдельные айтемы, или кучкующиеся?
Отдельные!
Re: Не стабильная отработка условия в UNTIL - цикле
Posted: 2005-10-07 13:28:17
by Titanium
MaDoG wrote:Вот берем такой цикл:
Code: Select all
Repeat
Uo.FindType('0x171C','-1','0x40482bf4')
Wait(4000)
Until UO.FindCount()>199
Вопрос: почему 3 из 5ти раз, этот цикл будет повторяться до бесконечности?
Меня тоже интересует этот вопрос, в похожих условиях у меня тоже периодически не выходит из цикла...
Posted: 2005-10-08 11:25:13
by flake
Попробуйте так:
Until STR(UO.FindCount())> 199
Posted: 2005-10-08 12:15:28
by Askaneli
uo.[yhlp_GetQuantity]('[yhlp_finditem]')
Posted: 2005-10-08 13:11:48
by Destruction
Askaneli wrote:uo.[yhlp_GetQuantity]('[yhlp_finditem]')
Причем тут получить количество айтема? GetQuantity('-1') тока если -)
flake wrote:Until STR(UO.FindCount())> 199
Кто тебя учил сравнивать строку с числом? Не делай так никада![/quote]
Posted: 2005-10-08 19:03:42
by Beyonder
Помоему инжекту пофиг, он всеравно обе части текста переводит в строки, а потом парсер переводит обратно.
Posted: 2005-10-08 20:09:10
by MaDoG
Askaneli wrote:uo.[yhlp_GetQuantity]('[yhlp_finditem]')
Не-а... Не катит такой вариант... Скрипт продолжается...
Posted: 2005-10-08 20:11:24
by MaDoG
flake wrote:Попробуйте так:
Until STR(UO.FindCount())> 199
Не, тоже не сечет фишку... Видать через While надежней будет!
Posted: 2005-10-08 21:48:52
by flake
flake wrote:Until STR(UO.FindCount())> 199
Кто тебя учил сравнивать строку с числом? Не делай так никада!
Самоучки мы

Posted: 2005-10-08 23:01:01
by Grin
Бред все работает...
Скрипт привебеный внизу будет повторятся если итемов будет >= 199
Code: Select all
sub BugTest()
Repeat
Uo.FindType(-1,-1,'my')
Wait(1000)
uo.Print(Str(UO.FindCount()))
Until UO.FindCount()<199
end sub
И вообще лутше если не доверяешь фукуциям выводи данные которые эти функции должны проверить и сам проврея...
Дальше скрипт написаный тобой зациклится если найденых и томов <= 199
Антил полное противоположность вайлу... он крутит пока функция сравнения дает фальш и проверка условия в конце..
Posted: 2005-10-08 23:42:06
by Destruction
while true и until false
следовательно:
равносильно (почти)
Разница между циклами на самом деле есть - while проверяет данные на входе, а until на выходе.
Destruction: Флуд потер, который не по теме, пост исправил, ошибся - не спорю.
Posted: 2005-10-09 09:23:37
by MaDoG
Млин... А не может сама инжа глючить!? Через WHILE тоже самое - один раз все нормально, а дальше гонит без остановки! При чем на втором окне, где работал давно проверенный скрипт, тоже начались глюки! Скрипт типа запускается, что то делает, но как только доходит до любого условия, дык либо игнорирует его, либо скрипт останавливается! У меня версия инжи 505.16. А UNTIL мне был бы удобнее!

Posted: 2005-10-09 09:26:44
by MaDoG
Grin wrote:И вообще лутше если не доверяешь фукуциям выводи данные которые эти функции должны проверить и сам проврея...
Да я уже сижу и мышкой тыкаю по мешку, где итемы(куда уж лучше проверка?) - не люблю всевозможное засорение экрана!
Posted: 2005-10-09 10:30:21
by MaDoG
Видимо что то действительно глючит... После сбоя скрипта, перезагружаю клиент и все работает! Что бы это могло быть?
Posted: 2005-10-09 13:07:17
by Grin
MaDoG
Прверка заключается в том что бы выводить значения которые в слудующей строчке будут сравниватся... а не тыкать по мешкам... возможно инжект чтото не правелньно подсчитал но логика сработала правельно... По этому просто добавляешь перед антилом еще одну строчку которая бы вывела численное значение функции FindCount
Posted: 2005-10-09 19:15:44
by MaDoG
2Grin
Попробовал и твой вариант... Когда идут сбои, то выдает 0... Хотя все остальное в скрипте работает!! Инжа видимо спотыкается (после какого то момента) на подсчете итемов в баге, не находящемся в паке... Как же с этим бороться? А главное ни как не могу вычислить момент, с которого инжа сбивается... При тестировании твоего предложения столкнулся с тем, что крысом тычу на баг - показывает 200, а скрипт выдает 0... Через десяток циклов Инжа вдруг обнаружила, что в баге действительно 200 итемов... Как с этим бороться ни фига не понимаю...
Posted: 2005-10-09 19:53:53
by Grin
Смотри...
Возможен вариант таков...
насколько я помню пакет отвечающий за колво вещей в баге отсылается от дельно...
но команда фанд тайп делает другое... она не сумирует значения кова вещей в баге... она конкретно ищет в памяти определеные или не определеные типы предметов и уж их конкретно считает...
Так вот попробуй перед запуском с крипта открыть сумку...
или когда скрипт сбивается то открой сумку... по логике баг должен уйти если это из за этого
Posted: 2005-10-09 19:55:58
by Grin
Но как ты уже заметил баг не в логике... а баг с функции файндтайп... или коннкретнее еще может быть файндкоунт... но скорей всего источник файнд тайп ито только из за того что инфа о вещах в сумке не существует