Page 1 of 1
Поиск по типу на земле: "то ли лыжи не едут, то ли я ..
Posted: 2004-10-15 23:01:00
by XSmith
Вот кусок некоего скрипта:
Code: Select all
sub FindFire()
Var CampFire = '0x0DE3'
Var Embers = '0x0DE9'
UO.Set('finddistance','3')
UO.IgnoreReset()
UO.FindType('CampFire','-1','ground')
UO.Print('Camp fire UO.FindCount = '+Str(UO.FindCount()))
If UO.FindCount()>0 Then
UO.WaitTargetGround('finditem')
UO.Print('Camp fire found.')
Else
UO.Print('Camp fire not found.')
EndIf
UO.FindType('Embers','-1','ground')
UO.Print('Embers UO.FindCount = '+Str(UO.FindCount()))
If UO.FindCount()>0 Then
UO.WaitTargetGround('finditem')
UO.Print('Embers found.')
Else
UO.Print('Embers not found.')
EndIf
end sub
А вот то, что он на консоль выдаёт
Code: Select all
FINDDIST=3
Camp fire UO.FindCount = 1
No item found. Next target request will be canceled
Auto target cancelled
Camp fire found.
Embers UO.FindCount = 1
No item found. Next target request will be canceled
Auto target cancelled
Embers found.
Костра в обозримом пространстве нет, углей от оного - тоже. WaitTargetGround вполне правомерно ругается на попытку скормить ему ссылку на несуществующий объект. А FindCount таки единичка. И как с этим борются?
P.S. Да, ещё одна непонятка, судя по всему того же генезиса.
Не знаю, как у остального почтенного опчества, но у меня при частых поисках чего-л. на земле наблюдается весьма существенная утечка памяти, которая в пределах 5-15 минут кончается тем, что "Client performed ..." и далее по тексту. Интересно, кого ещё эта болячка донимала, и как широкая опчественность с ней обходиться советует?

Posted: 2004-10-15 23:07:08
by GrayLord
CampFire и Embers в uo.findtype() должны бытьбез кавычек.
Posted: 2004-10-15 23:10:09
by GrayLord
насчет утечки памяти - это неудивительно, если ты сидишь не под w2k... у меня тоже такое бывало, когда под 98 сидел, но значительно реже....
Posted: 2004-10-15 23:28:12
by XSmith
Пасиб.

После этого FindCount кажет количество костров честно, но WaitTargetGround продолжает ругаться на то, что finditem показывает чёрт знает куда. Или конструкция WaitTargetGround('finditem') каким-то местом неправильна?
И ещё попутно возник следующий вопрос: как корректно захватить в какую-л. переменную сериал некоего объекта?
Конструкции вида
CampFireHexSerial=UO.GetSerial('finditem') ; для переменной, инициализированной, как 0х00000000
CampFireStringSerial=Str(UO.GetSerial('finditem')) ; для переменной, инициализированной, как "0х00000000"
выдают нули.
Posted: 2004-10-15 23:32:43
by XSmith
GrayLord wrote:насчет утечки памяти - это неудивительно, если ты сидишь не под w2k... у меня тоже такое бывало, когда под 98 сидел, но значительно реже....
W2K AS SP4 с поглушенными сервисами, 1Г оперативки, 36Г свопа. Бывший файл-сервер, разжалованный в рабочие станции
Клиент - 2.0.3, мульти. Больше патчей нет.
Что же до скрипта - то UO.FindType('-1','-1','ground') отрабатывается раз в четыре секунды.
Скрипты, в которых такового поиска нет, спокойно крутятся сутками.
Posted: 2004-10-15 23:36:14
by GrayLord
XSmith wrote:Пасиб.

После этого FindCount кажет количество костров честно, но WaitTargetGround продолжает ругаться на то, что finditem показывает чёрт знает куда. Или конструкция WaitTargetGround('finditem') каким-то местом неправильна?
И ещё попутно возник следующий вопрос: как корректно захватить в какую-л. переменную сериал некоего объекта?
Конструкции вида
CampFireHexSerial=UO.GetSerial('finditem') ; для переменной, инициализированной, как 0х00000000
CampFireStringSerial=Str(UO.GetSerial('finditem')) ; для переменной, инициализированной, как "0х00000000"
выдают нули.
uo.getserial('finditem') тебе дает сериал, вто время, как waittargetground кидает таргет на тип объекта, а не на конкретный объект. короче - uo.waittargetobject('finditem') или uo.waittargetobject(uo.getserial('finditem')) спасет отца русской демократии...
Posted: 2004-10-15 23:48:29
by XSmith
GrayLord wrote:uo.getserial('finditem') тебе дает сериал, вто время, как waittargetground кидает таргет на тип объекта, а не на конкретный объект. короче - uo.waittargetobject('finditem') или uo.waittargetobject(uo.getserial('finditem')) спасет отца русской демократии...
Понял.

Пасиб ещё раз

Блин, всё-таки ночью спать надо (даже сидючи на дежурстве).
P.S. А с захватом сериала всё-таки как быть? Или забить нафиг и заводить объект (например так)
Code: Select all
UO.WaitTargetObject('finditem')
UO.AddObject('TempObject')
и работать уже с ним?
Posted: 2004-10-16 14:37:47
by Yoko
не знаю, будет ли для тебя это откровением, но есть хелп по синтаксису функций:
http://yoko.netroof.net/help
В частности там описаны и такие функции как твоя любимая waittargetground(type), а так же addobject(name,serial) и getserial(object)
В случае прочтения соответсвующих описаний становится ясно, что waittargetground ждёт аргументом тип, а не обьект, а занести обьект поиска в список обьектов (не знаю правда, зачем!) можно например конструкцией uo.addobject("myname",uo.getserial("finditem"))
Возможно откровением так же может стать наличие инструкции по установке и первичной настройке инжекта,
http://yoko.netroof.net/install.htm
Из недр которой, в частности, можно достать реккомендацию держать включенными как минимум опции Permit Vars Loopback, Track World и TargetXYZfix, что несомненно повлияет положительно на конструкции связанные с курсорами ультимы и командами waittarget*.
Ну и напоследок отмечу существование на этом форуме раздела FAQ, который набит информацией, по моему скромному мнению, обязательной к изучению всех (начинающих, развивающихся, продвинутых, нужное подчеркнуть, отсутствующее вписать) скриптеров.
В частности в архиве форума (ссылка в левом верхнем углу) есть топик посвящённый последовательности команд waittarget* в скрипте. Из которого следует что предложеная тобой последовательность команд идеологически неверна, противоречит политике Партии и должна искореняться как исключительно вредная.
ну и так далее, и тому подобное. от сарказма уже скулы сводит. прошу прощения.
Posted: 2004-10-16 20:45:31
by AGRS
"Документация -- для ламеров!" (с)

Posted: 2004-10-17 22:37:36
by Yoko
документация это для всех. ламер это тот, кто думает что к нему это не относится.
Posted: 2004-10-18 02:44:09
by GrayLord
Yoko wrote:документация это для всех. ламер это тот, кто думает что к нему это не относится.
опа... мне тут вспомнился разговор с тобой по аське (примерно годовалой давности, может даже больше), насчет того, есть ли необходимость в ичпользовании msdn при программировании на ms vc++ =)
Posted: 2004-10-18 09:32:11
by Yoko
я пользуюсь намного более обширной документацией чем просто msdn:
www.google.com
Posted: 2004-10-18 18:08:37
by AGRS
Yoko wrote:документация это для всех. ламер это тот, кто думает что к нему это не относится.
Исправил.

Posted: 2004-10-18 18:17:10
by GrayLord
Yoko wrote:я пользуюсь намного более обширной документацией чем просто msdn:
www.google.com
это конечно здорово, но "обширный" источник - не есть "надёжный". если подходить к вопросу с этой точки зрения, то кроме msdn существует всего лишь 5-6 продвинутых сайтов и форумов при них, всё остальное - либо не слишком верно, либо - берет информацию от туда.
насчет msdn: я не о том, который "msdn online help", а про тот, коий на дисках. первое и второе - не одно и то же.
Posted: 2004-10-18 18:24:20
by Yoko
я отлично знаю что имеется в виду, но в отличае от вида у меня самих дисков не имеется. посему и используется гугл. преймущество очевидно - в большинстве случаев при поиске по конкретной команде загружается сразу описаловка и пример, так как больше раз повторяется ключ. в мсдн тоже можно чтото найти, но обычно я обращаюсь в безнадёжных случаях, чтобы посмотреть хотя бы синтаксис.
Posted: 2004-10-18 18:28:02
by GrayLord
Yoko wrote:я отлично знаю что имеется в виду, но в отличае от вида у меня самих дисков не имеется. посему и используется гугл. преймущество очевидно - в большинстве случаев при поиске по конкретной команде загружается сразу описаловка и пример, так как больше раз повторяется ключ. в мсдн тоже можно чтото найти, но обычно я обращаюсь в безнадёжных случаях, чтобы посмотреть хотя бы синтаксис.
"дисков не имею"... жаль. а что, там где ты работаешь - тебе не могут купить комплект этого добра, для удобства работы? или ты не программером работаешь?