Page 1 of 2
баг uo.findtype
Posted: 2006-04-19 12:26:56
by doomstar
я давно страдаю от одного бага, при котором обьекты изначально имеют правильный ID а потом вдруг имеют ID 0xFFFFFFFF.
Я решил подробнее разобраться с проблемой, вот мои результаты:
Кладу на землю кувшинчик:
Code: Select all
ID=0x400F4C9A Type=0x1F9D WUKWLMD Name=
Quantity: 1 Colour: 0x0000 Layer: 0 Has: 0
X=1426 Y=1695 Z=0 C=0xFFFFFFFF F=0x20
делаю в консоле ,ignore 0x400F4C9A. смотрим его опять:
Code: Select all
ID=0x400F4CA4 Type=0x0FF6 YUKWLMD Name=
Quantity: 1 Colour: 0x0000 Layer: 0 Has: 0
X=1427 Y=1696 Z=0 C=0xFFFFFFFF F=0x20 ignored
Теперь перетаскиваем этот кувшинчик себе в пак:
Code: Select all
ID=0xFFFFFFFF Type=0x0FF6 6? Name=
Quantity: 1 Colour: 0x0000 Layer: 0 Has: 1
X=129 Y=67 Z=0 C=0x40141BAA F=0x20 ignored
И видим ужасную вещь... ID кувшинчика почемуто решило умереть.
Этот глюк возникает иногда по непонятным причинам (тоесть не только при таскании кувшинчиков).
Пожалуйста разбиритесь, ибо ignore("finditem") такие ID не игнорит и цикл поиска через fyndtype зацикливается на этой веще до бесконечности...
А вообще в идеале, чтобы создавался массив FindItems[n]
Тогда проблем с зацикливанием не будет
Да и в перловом скрипт-модуле будет больше возможностей! )
Posted: 2006-04-19 12:32:55
by Scripts Writer
тип после игнора изменяется. Посмотри сам
Posted: 2006-04-19 12:35:52
by Scripts Writer
flake wrote:Скорее он изменяется после перетаскивания. Игнор никак не может изменить тип вещи.
я так понимаю автор ищет командой uo.FindType по первому типу, но по его кодам-во 2 ом и 3ем случае он изменённый.
Posted: 2006-04-19 12:36:48
by flake
Уже как то была похожая тема, там кто-то обьяснил эту проблему. Щас поищу.
Posted: 2006-04-19 14:38:47
by doomstar
ой, с выводами INFO запутался мальца, просто один кувшинчиков у меня была туча и некоторые были заполненые некоторые нет.
Но идея вобщем остаётся такойже.. если вещь заигнорена и её перетащить с земли в пак, то её ID умрёт
Posted: 2006-04-19 14:41:37
by doomstar
Пока разбирался с этой проблемой нашёл выход...
перед перетаскиванием в пак снять с вещи игнор, потом перетащить в пак, потом проверить наличие вещи в паке. Если вещи в паке нету - вернуть игнор на место.
Code: Select all
sub TakeAllFromGround() {
uo::ignorereset();
$bpack=uo::getserial('backpack');
uo::set("finddistance","1");
uo::findtype("-1","-1","ground");
while(uo::findcount()) {
$ser=uo::getserial("finditem");
uo::print($ser);
if($ser ne uo::getserial('self')) {
uo::ignore($ser,"off");
uo::grab(0,$ser);
&wait(650);
}
if(uo::containerof($ser) ne $bpack) {
uo::ignore("finditem","on");
uo::print("Can't GET");
}
uo::findtype("-1","-1","ground");
}
uo::ignorereset();
}
Сори за синтаксис, перехожу на перловый script.dll
(кстати всем рекомендую)
Posted: 2006-04-19 14:51:39
by Grin
Скоро будудома;) добъю трасивовку%)
Posted: 2006-04-19 16:20:29
by admir
что это ?
все понял )
Возвращает параметр обьекта object (по умолчанию - персонажа игрока) - контейнер, в котором находится. 0xFFFFFFFF означает неизвестно или на земле.
Posted: 2006-04-19 16:51:42
by Destruction
Я чего скажу, после длительного поиска с игнором одних и тех же объектов в сумочке на полу, они стали иметь ID = 0xFFFFFFF и помог мне перезапуск Injection.
Массив найденных вещей я организовал тут:
viewtopic.php?p=40604#40604
Posted: 2006-04-19 20:41:14
by Edred
Ресенд не пробовали в качестве лекарства?
Posted: 2006-04-19 21:25:59
by Destruction
Edred wrote:Ресенд не пробовали в качестве лекарства?
Не лечит. Пробывал.
Posted: 2006-04-20 21:13:14
by doomstar
угу, нелечит...
YOKO, замути нам командочку обнуления памяти инжекта, чтобы глюки оттуда убирать.
Типа обнуляем память, потом делаем resend, открываем все сумки заного и опана - инжа в здравой памяти ))
Posted: 2006-04-21 00:34:06
by Grin
для зануления когдато был такой форгет... но сработает ли...
Posted: 2006-04-21 00:47:15
by Destruction
Grin wrote:для зануления когдато был такой форгет... но сработает ли...
Форгет - забывает что-то там в инже, т.е. с параметром, а что я ему дам в качестве параметра?
Posted: 2006-04-21 00:51:10
by Grin
Так просили зануление вот и держите;)
может в в сочетании с игнором оно както работать будет более норм..
у меня нету "свежих" исходников...
Posted: 2006-04-21 00:52:49
by Destruction
Grin wrote:Так просили зануление вот и держите;)
может в в сочетании с игнором оно както работать будет более норм..
у меня нету "свежих" исходников...
Кто бы сомневался
Нифига оно не поможет. Что мы будем забывать? FindItem? А он у нас 0xFFFFFFF...
Posted: 2006-04-21 00:56:24
by Grin
Эх..
Ну ты прежде чем игнорить зная обаге возми да и запомни серийник...
а можеи и за игнореное сразу забыть;)
а может...
Короче нужен штат людей что бы проверить все варианты;)
Posted: 2006-04-21 01:01:28
by Destruction
Grin wrote:Эх..
Ну ты прежде чем игнорить зная обаге возми да и запомни серийник...
а можеи и за игнореное сразу забыть;)
а может...
Короче нужен штат людей что бы проверить все варианты;)
Кароче этот штат людей всё проверил и отправляется в Request всем топиком.
Posted: 2006-04-21 23:31:10
by doomstar
А реально ваще промутить всё это дело, чтобы не терялис ID объектов в инже? А то стабильность макросов сильно снижается из-за этого лага... Вот у мя макрос только от этого дела и останавливается. Потомучто нистого ни ссиго обект с которым он работает теряет ID и всё ( имее зацикл.
Posted: 2006-04-21 23:45:02
by Grin
все реально только руки связаны;)