Поиск по типу на земле: "то ли лыжи не едут, то ли я ..

Ask for help

Moderators: Murderator+, Murderator

Post Reply
XSmith
Posts: 6
Joined: 2004-10-08 09:46:39

Поиск по типу на земле: "то ли лыжи не едут, то ли я ..

Post 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 ..." и далее по тексту. Интересно, кого ещё эта болячка донимала, и как широкая опчественность с ней обходиться советует? ;)
GrayLord
Expert!
Posts: 333
Joined: 2004-06-04 03:24:25
Contact:

Post by GrayLord »

CampFire и Embers в uo.findtype() должны бытьбез кавычек.
GrayLord
Expert!
Posts: 333
Joined: 2004-06-04 03:24:25
Contact:

Post by GrayLord »

насчет утечки памяти - это неудивительно, если ты сидишь не под w2k... у меня тоже такое бывало, когда под 98 сидел, но значительно реже....
XSmith
Posts: 6
Joined: 2004-10-08 09:46:39

Post by XSmith »

Пасиб. ;) После этого FindCount кажет количество костров честно, но WaitTargetGround продолжает ругаться на то, что finditem показывает чёрт знает куда. Или конструкция WaitTargetGround('finditem') каким-то местом неправильна?

И ещё попутно возник следующий вопрос: как корректно захватить в какую-л. переменную сериал некоего объекта?
Конструкции вида
CampFireHexSerial=UO.GetSerial('finditem') ; для переменной, инициализированной, как 0х00000000
CampFireStringSerial=Str(UO.GetSerial('finditem')) ; для переменной, инициализированной, как "0х00000000"
выдают нули.
XSmith
Posts: 6
Joined: 2004-10-08 09:46:39

Post by XSmith »

GrayLord wrote:насчет утечки памяти - это неудивительно, если ты сидишь не под w2k... у меня тоже такое бывало, когда под 98 сидел, но значительно реже....
W2K AS SP4 с поглушенными сервисами, 1Г оперативки, 36Г свопа. Бывший файл-сервер, разжалованный в рабочие станции ;)
Клиент - 2.0.3, мульти. Больше патчей нет.
Что же до скрипта - то UO.FindType('-1','-1','ground') отрабатывается раз в четыре секунды.
Скрипты, в которых такового поиска нет, спокойно крутятся сутками.
GrayLord
Expert!
Posts: 333
Joined: 2004-06-04 03:24:25
Contact:

Post 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')) спасет отца русской демократии...
XSmith
Posts: 6
Joined: 2004-10-08 09:46:39

Post 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')

и работать уже с ним?
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post 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* в скрипте. Из которого следует что предложеная тобой последовательность команд идеологически неверна, противоречит политике Партии и должна искореняться как исключительно вредная.

ну и так далее, и тому подобное. от сарказма уже скулы сводит. прошу прощения.
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

"Документация -- для ламеров!" (с) :lol:
Last edited by AGRS on 2004-10-18 18:08:18, edited 1 time in total.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

документация это для всех. ламер это тот, кто думает что к нему это не относится.
GrayLord
Expert!
Posts: 333
Joined: 2004-06-04 03:24:25
Contact:

Post by GrayLord »

Yoko wrote:документация это для всех. ламер это тот, кто думает что к нему это не относится.

опа... мне тут вспомнился разговор с тобой по аське (примерно годовалой давности, может даже больше), насчет того, есть ли необходимость в ичпользовании msdn при программировании на ms vc++ =)
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

я пользуюсь намного более обширной документацией чем просто msdn: www.google.com
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Yoko wrote:документация это для всех. ламер это тот, кто думает что к нему это не относится.


Исправил. :)
GrayLord
Expert!
Posts: 333
Joined: 2004-06-04 03:24:25
Contact:

Post by GrayLord »

Yoko wrote:я пользуюсь намного более обширной документацией чем просто msdn: www.google.com

это конечно здорово, но "обширный" источник - не есть "надёжный". если подходить к вопросу с этой точки зрения, то кроме msdn существует всего лишь 5-6 продвинутых сайтов и форумов при них, всё остальное - либо не слишком верно, либо - берет информацию от туда.

насчет msdn: я не о том, который "msdn online help", а про тот, коий на дисках. первое и второе - не одно и то же.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

я отлично знаю что имеется в виду, но в отличае от вида у меня самих дисков не имеется. посему и используется гугл. преймущество очевидно - в большинстве случаев при поиске по конкретной команде загружается сразу описаловка и пример, так как больше раз повторяется ключ. в мсдн тоже можно чтото найти, но обычно я обращаюсь в безнадёжных случаях, чтобы посмотреть хотя бы синтаксис.
GrayLord
Expert!
Posts: 333
Joined: 2004-06-04 03:24:25
Contact:

Post by GrayLord »

Yoko wrote:я отлично знаю что имеется в виду, но в отличае от вида у меня самих дисков не имеется. посему и используется гугл. преймущество очевидно - в большинстве случаев при поиске по конкретной команде загружается сразу описаловка и пример, так как больше раз повторяется ключ. в мсдн тоже можно чтото найти, но обычно я обращаюсь в безнадёжных случаях, чтобы посмотреть хотя бы синтаксис.

"дисков не имею"... жаль. а что, там где ты работаешь - тебе не могут купить комплект этого добра, для удобства работы? или ты не программером работаешь?
Post Reply