| Yoko http://forum.yoko.com.ua/ |
|
| Не стабильная отработка условия в UNTIL - цикле http://forum.yoko.com.ua/viewtopic.php?f=1&t=5395 |
Page 1 of 2 |
| Author: | MaDoG [ 2005-10-07 09:41:24 ] |
| Post subject: | Не стабильная отработка условия в UNTIL - цикле |
Вот берем такой цикл: Code: Repeat Вопрос: почему 3 из 5ти раз, этот цикл будет повторяться до бесконечности? |
|
| Author: | flake [ 2005-10-07 10:48:38 ] |
| Post subject: | |
А у тебя в контейнере отдельные айтемы, или кучкующиеся? |
|
| Author: | MaDoG [ 2005-10-07 11:13:15 ] |
| Post subject: | |
flake wrote: А у тебя в контейнере отдельные айтемы, или кучкующиеся?
Отдельные! |
|
| Author: | Titanium [ 2005-10-07 13:28:17 ] |
| Post subject: | Re: Не стабильная отработка условия в UNTIL - цикле |
MaDoG wrote: Вот берем такой цикл:
Code: Repeat Вопрос: почему 3 из 5ти раз, этот цикл будет повторяться до бесконечности? Меня тоже интересует этот вопрос, в похожих условиях у меня тоже периодически не выходит из цикла... |
|
| Author: | flake [ 2005-10-08 11:25:13 ] |
| Post subject: | |
Попробуйте так: Until STR(UO.FindCount())> 199 |
|
| Author: | Askaneli [ 2005-10-08 12:15:28 ] |
| Post subject: | |
uo.[yhlp_GetQuantity]('[yhlp_finditem]') |
|
| Author: | Destruction [ 2005-10-08 13:11:48 ] |
| Post subject: | |
Askaneli wrote: uo.[yhlp_GetQuantity]('[yhlp_finditem]') Причем тут получить количество айтема? GetQuantity('-1') тока если -) flake wrote: Until STR(UO.FindCount())> 199 Кто тебя учил сравнивать строку с числом? Не делай так никада![/quote] |
|
| Author: | Beyonder [ 2005-10-08 19:03:42 ] |
| Post subject: | |
Помоему инжекту пофиг, он всеравно обе части текста переводит в строки, а потом парсер переводит обратно. |
|
| Author: | MaDoG [ 2005-10-08 20:09:10 ] |
| Post subject: | |
Askaneli wrote: uo.[yhlp_GetQuantity]('[yhlp_finditem]')
Не-а... Не катит такой вариант... Скрипт продолжается... |
|
| Author: | MaDoG [ 2005-10-08 20:11:24 ] |
| Post subject: | |
flake wrote: Попробуйте так:
Until STR(UO.FindCount())> 199 Не, тоже не сечет фишку... Видать через While надежней будет! |
|
| Author: | flake [ 2005-10-08 21:48:52 ] |
| Post subject: | |
Quote: flake wrote: Until STR(UO.FindCount())> 199 Кто тебя учил сравнивать строку с числом? Не делай так никада! Самоучки мы |
|
| Author: | Grin [ 2005-10-08 23:01:01 ] |
| Post subject: | |
Бред все работает... Скрипт привебеный внизу будет повторятся если итемов будет >= 199 Code: sub BugTest() И вообще лутше если не доверяешь фукуциям выводи данные которые эти функции должны проверить и сам проврея... Дальше скрипт написаный тобой зациклится если найденых и томов <= 199 Антил полное противоположность вайлу... он крутит пока функция сравнения дает фальш и проверка условия в конце.. |
|
| Author: | Destruction [ 2005-10-08 23:42:06 ] |
| Post subject: | |
while true и until false следовательно: Code: until uo.findcount()<199равносильно (почти) Code: while uo.findcount()=>199 Разница между циклами на самом деле есть - while проверяет данные на входе, а until на выходе. Destruction: Флуд потер, который не по теме, пост исправил, ошибся - не спорю. |
|
| Author: | MaDoG [ 2005-10-09 09:23:37 ] |
| Post subject: | |
Млин... А не может сама инжа глючить!? Через WHILE тоже самое - один раз все нормально, а дальше гонит без остановки! При чем на втором окне, где работал давно проверенный скрипт, тоже начались глюки! Скрипт типа запускается, что то делает, но как только доходит до любого условия, дык либо игнорирует его, либо скрипт останавливается! У меня версия инжи 505.16. А UNTIL мне был бы удобнее! |
|
| Author: | MaDoG [ 2005-10-09 09:26:44 ] |
| Post subject: | |
Grin wrote: И вообще лутше если не доверяешь фукуциям выводи данные которые эти функции должны проверить и сам проврея...
Да я уже сижу и мышкой тыкаю по мешку, где итемы(куда уж лучше проверка?) - не люблю всевозможное засорение экрана! |
|
| Author: | MaDoG [ 2005-10-09 10:30:21 ] |
| Post subject: | |
Видимо что то действительно глючит... После сбоя скрипта, перезагружаю клиент и все работает! Что бы это могло быть? |
|
| Author: | Grin [ 2005-10-09 13:07:17 ] |
| Post subject: | |
MaDoG Прверка заключается в том что бы выводить значения которые в слудующей строчке будут сравниватся... а не тыкать по мешкам... возможно инжект чтото не правелньно подсчитал но логика сработала правельно... По этому просто добавляешь перед антилом еще одну строчку которая бы вывела численное значение функции FindCount Code: uo.Print(Str(UO.FindCount())) |
|
| Author: | MaDoG [ 2005-10-09 19:15:44 ] |
| Post subject: | |
2Grin Попробовал и твой вариант... Когда идут сбои, то выдает 0... Хотя все остальное в скрипте работает!! Инжа видимо спотыкается (после какого то момента) на подсчете итемов в баге, не находящемся в паке... Как же с этим бороться? А главное ни как не могу вычислить момент, с которого инжа сбивается... При тестировании твоего предложения столкнулся с тем, что крысом тычу на баг - показывает 200, а скрипт выдает 0... Через десяток циклов Инжа вдруг обнаружила, что в баге действительно 200 итемов... Как с этим бороться ни фига не понимаю... |
|
| Author: | Grin [ 2005-10-09 19:53:53 ] |
| Post subject: | |
Смотри... Возможен вариант таков... насколько я помню пакет отвечающий за колво вещей в баге отсылается от дельно... но команда фанд тайп делает другое... она не сумирует значения кова вещей в баге... она конкретно ищет в памяти определеные или не определеные типы предметов и уж их конкретно считает... Так вот попробуй перед запуском с крипта открыть сумку... или когда скрипт сбивается то открой сумку... по логике баг должен уйти если это из за этого |
|
| Author: | Grin [ 2005-10-09 19:55:58 ] |
| Post subject: | |
Но как ты уже заметил баг не в логике... а баг с функции файндтайп... или коннкретнее еще может быть файндкоунт... но скорей всего источник файнд тайп ито только из за того что инфа о вещах в сумке не существует |
|
| Page 1 of 2 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|