Page 1 of 1

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

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

Плиз. Мне достаточно только самой идеи. ;)

Posted: 2004-07-25 19:17:04
by Daioh
UO.Dead(Elem)

Posted: 2004-07-25 19:32:29
by Edred
Daioh wrote:UO.Dead(Elem)


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

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

Posted: 2004-07-25 20:05:12
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')

Posted: 2004-07-25 20:14:27
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')


Это я тоже уже думал делать, только элем во время сражения ходит, он может легко отойти от чара несколько шагов и снова подойти. Лучше, думаю, попробую отлавливать звук "взрыва" элема, когда он убит, раздается такой звучок, вот, наверное, его и буду контролировать... А для надежности еще таймер и проверку здоровья... ;) Похоже, все остальные способы ненадежны.

Posted: 2004-07-25 20:47:44
by Yoko
просто проверка здоровья

Posted: 2004-07-25 20:48:05
by Daioh
Edred wrote: он может легко отойти от чара несколько шагов и снова подойти

UO.Exec('set finddistance 15') думаю будет достаточно.

Posted: 2004-07-26 09:18:58
by evr0
может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)

Posted: 2004-07-26 10:29:19
by Daioh
evr0 wrote:может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)

А вдруг вылезет новый элем до исчезновения старого трупа?

Posted: 2004-07-26 10:43:15
by evr0
вот если так часто вылазят элемы то тогда не сработает +)

Posted: 2004-07-26 12:44:07
by Bambr
Edred wrote:
Daioh wrote:UO.Dead(Elem)


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

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


Дык получи серийник в бою:
UO.GetSerial(lasttarget)

Posted: 2004-07-26 12:48:37
by Edred
evr0 wrote:может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)


Ты читай внимательнее мой пост - после водного элема трупа не остается... :(

Posted: 2004-07-26 12:53:01
by Edred
Хех, надо еще сам момент боя-то поймать... Ладно, пока сделал отлов звука "взрыва" элема и контроль мессаги о прибавлении кармы/феймы и контроль здоровья чара... Теперь тестирую ;)

Вся проблема-то как раз в том, что не хотелось заморачиваться с самим боем... чар прекрасно ложит элема сам, просто скрипт на паузу и все. Но ждать пока здоровье само собой восстановится после боя - долго. Вот и хотел соптимизировать. Всем спасибо за идеи.

Posted: 2004-07-26 12:54:47
by Daioh
Сразу после того, как завалил, отхелись, а то мало ли что... :)

Posted: 2004-07-31 14:37:52
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 независимо от уровня здоровья элема. Причем серийник определяется правильно, проверял. Какие есть еще варианты в скрипте получить здоровье другого персонажа?

Posted: 2004-07-31 21:00:46
by Yoko
Track World проверь

Posted: 2004-08-01 19:08:39
by Edred
Yoko wrote:Track World проверь


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