| Yoko http://forum.yoko.com.ua/ |
|
| Определить и добрать http://forum.yoko.com.ua/viewtopic.php?f=20&t=17294 |
Page 1 of 1 |
| Author: | Dexter Morgan [ 2013-08-06 14:25:52 ] |
| Post subject: | Определить и добрать |
Доброго времени суток! Есть скрипт, который должен определять количество определенного предмета в контейнере. Если меньше чем указано, то идет процедура: A = Заданное количество - Найденное количество Взять количество предметов, которого не хватает. Вот сам скрипт: Code: Sub Take(Type, Color, From, To, Quantity) Проблема в том, что одну половину предметов он берет столько, сколько надо, а вторую берет все, что найдет в контейнере. В чем заключается ошибка данного скрипта? |
|
| Author: | Mirage [ 2013-08-06 14:48:49 ] |
| Post subject: | Re: Определить и добрать |
Тут есть небольшая хитрость. 1) если ты используешь Grab без setreceivingcontainer то значит берешь всегда в пак чара. Тогда первая часть скрипта лишком большая. Code: UO.FindType(Type, Color, To) заменяется 1 строкой Code: A = Quantity - UO.count(Type, Color) 2) если ты пишешь универсальную перемещалку то надо либо извращаться с setreceivingcontainer либо взять более новую функцию uo.moveitem - если она работает естественно. 3) у тебя предмет тягается только 1 раз - а может лаг пролететь. Я бы перемещал через цикл пока предмет не переместится. Как то вот так: Code: Sub GET(item, cont, min, max) ; предмет, откуда, минимум, сколько брать Тут нет проверки цвета и добора предметов до определенного количества. |
|
| Author: | Dexter Morgan [ 2013-08-06 19:45:39 ] |
| Post subject: | Re: Определить и добрать |
1. SetReceivingContainer прописывается в первой части скрипта, чтобы каждый лишний раз не прописывал. Есть ли разница между Code: A = Quantity - UO.GetQuantity('finditem')и Code: A = Quantity - UO.Count(Type, Color) Если контейнер, где строка определяет количество, находится в личном рюкзаке? 2. К сожалению UO.MoveItem работает некорректно, поэтому приходиться извращаться. 3. Добавил проверку на то, в каком контейнере лежит предмет, как в твоем скрипте. При запуске скрипта инжект выдает ошибку "Parse Error" на строку: Code: While UO.ContainerOf( Item ) == To Собственно вот скрипт целиком Code: ;==============================================================================; Как быть? Мне кажется, что эта строка: Code: A = Quantity - UO.GetQuantity( Item ) Не всегда сбрасывает количество предыдущего предмета, таким образом плюсует и берет больше, чем насчитал. |
|
| Author: | Mirage [ 2013-08-06 21:06:47 ] |
| Post subject: | Re: Определить и добрать |
Code: UO.FindType(Type, Color, To) в твоем случае одно и тоже что и Code: A = Quantity - UO.Count(Type, Color) Плюсы первого - им можно искать не только в паке чара, плюсы второго кроме краткости - он отображает ВСЕ предметы данного цвета/типа в бэкпаке (хотя это может быть и минус). Если в паке лежит 3 кучи по 100 золотых скрипт скажет что 300 гп. Первый будет работать с любой одной кучей => 100 золотых. Про ошибку гляну - клиента под рукой нет. UO.MoveItem - сервер не бестуо? Версия клиента какая? |
|
| Author: | Dexter Morgan [ 2013-08-06 21:14:06 ] |
| Post subject: | Re: Определить и добрать |
Mirage, вот как оно работает, понятно. Спасибо. Да, сервер The Best UO. Версия инжекта YokoInj 710.16 |
|
| Author: | Mirage [ 2013-08-06 21:43:25 ] |
| Post subject: | Re: Определить и добрать |
на 710.16 вроде побороли проблему с мувитемом. ХЗ - надо тестить у меня чар на сервере голый Проверь вот такой добор регов. Code: sub dobor_regs() Надо вам Славу пытать чего он там такого наваял. У меня на 56b сфере (и ночной и стабильной) и вашем клиенте MoveItem работает без багов, но с паузой в >300 мсек |
|
| Author: | Dexter Morgan [ 2013-08-06 22:42:10 ] |
| Post subject: | Re: Определить и добрать |
Mirage, команда UO.MoveItem к сожалению до сих пор насилует сервер, поэтому придется извращаться дальше. Насчет твоего скрипта. Не хотелось бы использовать данный метод, так как количество и цвета динамичные, не смотря на то, что решением данной проблемы я поделился ссылкой в своей предыдущей теме. Как бы там ни было, хочется допилить свой скрипт. Свое все таки роднее, правильно? (; |
|
| Author: | Mirage [ 2013-08-07 07:11:09 ] |
| Post subject: | Re: Определить и добрать |
у тебя в скрипте из за граба сбита логика. Code: UO.FindType(Type, Color, To)граб пытается двинуть предмет который ты нашел у себя в сумке. Попробуй Item = UO.GetSerial('finditem') добавить еще раз и посмотри будет ли сбиваться. или даже вот так Code: UO.FindType(Type, Color, To) |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|