Как определить смерть элема?

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Как определить смерть элема?

Post by Edred »

Чего-то мозги не варят совсем, не могу придумать, как в скрипте зафиксировать момент смерти элема, с которым чар сражается. Чар на фишинге, при нападении на чара элема (проверка простейшим способом - если здоровье чара становится меньше 150), чар скидывает удочку в трюм и берет из трюма вилку и щит. В этот момент скрипт включает вар и встает на паузу. Пока сделано что когда здоровье чара снова станет 150 - тогда вилку и щит в трюм, слутить все что выпало с элема, взять в руки удочку и продолжать рыбачить. Но хочется соптимизировать. Благо в результате рыбалки и бинтов навалом, так что если определить момент окончания сражения - то можно будет значительно ускорить процесс. После элема трупа не остается.

Плиз. Мне достаточно только самой идеи. ;)
Daioh
Posts: 63
Joined: 2004-06-28 19:06:26
Contact:

Post by Daioh »

UO.Dead(Elem)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Daioh wrote:UO.Dead(Elem)


Во-первых, вот что написано в хелпе: "Возвращает параметр обьекта object (по умолчанию - персонажа игрока) - дохлость. Правильно работает только со своим персонажем, с другими не гарантируется". Это про UO.Dead. Во-вторых, что ты имеешь в виду, под Elem? Серийника элема у меня нету. Я же написал, что скрипт на паузу просто встает.

Может есть дургие варианты? Этот гиморный и ненадежный.
Daioh
Posts: 63
Joined: 2004-06-28 19:06:26
Contact:

Post by Daioh »

А... я что-то сам не подумал... :)))) Делай так.
Если известен тип элема, то параллельно можно пустить проверку:
while not UO.Dead()
UO.FindType(TElem,-1,'ground')
if UO.FindCount()>0 then
UO.Say('STOP')
else
UO.Say('GO')
endif
wait(1500)
wend
А в основном, поставить проверку на UO.InJournal('STOP') и UO.InJournal('GO')
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Daioh wrote:А... я что-то сам не подумал... :)))) Делай так.
Если известен тип элема, то параллельно можно пустить проверку:
while not UO.Dead()
UO.FindType(TElem,-1,'ground')
if UO.FindCount()>0 then
UO.Say('STOP')
else
UO.Say('GO')
endif
wait(1500)
wend
А в основном, поставить проверку на UO.InJournal('STOP') и UO.InJournal('GO')


Это я тоже уже думал делать, только элем во время сражения ходит, он может легко отойти от чара несколько шагов и снова подойти. Лучше, думаю, попробую отлавливать звук "взрыва" элема, когда он убит, раздается такой звучок, вот, наверное, его и буду контролировать... А для надежности еще таймер и проверку здоровья... ;) Похоже, все остальные способы ненадежны.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

просто проверка здоровья
Daioh
Posts: 63
Joined: 2004-06-28 19:06:26
Contact:

Post by Daioh »

Edred wrote: он может легко отойти от чара несколько шагов и снова подойти

UO.Exec('set finddistance 15') думаю будет достаточно.
evr0
Posts: 12
Joined: 2004-07-25 07:26:59

Post by evr0 »

может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)
Daioh
Posts: 63
Joined: 2004-06-28 19:06:26
Contact:

Post by Daioh »

evr0 wrote:может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)

А вдруг вылезет новый элем до исчезновения старого трупа?
evr0
Posts: 12
Joined: 2004-07-25 07:26:59

Post by evr0 »

вот если так часто вылазят элемы то тогда не сработает +)
Bambr
Posts: 38
Joined: 2004-06-28 16:28:29
Contact:

Post by Bambr »

Edred wrote:
Daioh wrote:UO.Dead(Elem)


Во-первых, вот что написано в хелпе: "Возвращает параметр обьекта object (по умолчанию - персонажа игрока) - дохлость. Правильно работает только со своим персонажем, с другими не гарантируется". Это про UO.Dead. Во-вторых, что ты имеешь в виду, под Elem? Серийника элема у меня нету. Я же написал, что скрипт на паузу просто встает.

Может есть дургие варианты? Этот гиморный и ненадежный.


Дык получи серийник в бою:
UO.GetSerial(lasttarget)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

evr0 wrote:может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)


Ты читай внимательнее мой пост - после водного элема трупа не остается... :(
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Хех, надо еще сам момент боя-то поймать... Ладно, пока сделал отлов звука "взрыва" элема и контроль мессаги о прибавлении кармы/феймы и контроль здоровья чара... Теперь тестирую ;)

Вся проблема-то как раз в том, что не хотелось заморачиваться с самим боем... чар прекрасно ложит элема сам, просто скрипт на паузу и все. Но ждать пока здоровье само собой восстановится после боя - долго. Вот и хотел соптимизировать. Всем спасибо за идеи.
Daioh
Posts: 63
Joined: 2004-06-28 19:06:26
Contact:

Post by Daioh »

Сразу после того, как завалил, отхелись, а то мало ли что... :)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Yoko wrote:просто проверка здоровья


Такс, все переделал, были причины, но есть проблема - не могу определить здоровье элементаля. UO.GetHP возвращает 0

Code: Select all

UO.Exec('set finddistance 4')
UO.FindType( Elem, -1, 1 )
While UO.FindCount() == 0
   wait(500)
   UO.FindType( Elem, -1, 1 )
Wend
ElemSer = UO.GetSerial( 'finditem' )
UO.Print( str( UO.GetHP( ElemSer ) ) )


Тут всегда 0 независимо от уровня здоровья элема. Причем серийник определяется правильно, проверял. Какие есть еще варианты в скрипте получить здоровье другого персонажа?
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

Track World проверь
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Yoko wrote:Track World проверь


Включен. На самом деле, если Track world items выключен, то и сериал элема не получается взять. А сериал берется. Единственное, что мне приходит в голову - я использую версию 312.19 (перейти на 4х мешает step number failure, хотя может у меня ее и не будет, не проверял, но шард на UNCP)... Может можно где-то взять предыдущую версию инжи? Та, которая без step number failure? Мне бинды на колесо мыши на хрен не нужны...
Post Reply