Yoko
http://forum.yoko.com.ua/

Как определить смерть элема?
http://forum.yoko.com.ua/viewtopic.php?f=3&t=976
Page 1 of 1

Author:  Edred [ 2004-07-25 18:58:37 ]
Post subject:  Как определить смерть элема?

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

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

Author:  Daioh [ 2004-07-25 19:17:04 ]
Post subject: 

UO.Dead(Elem)

Author:  Edred [ 2004-07-25 19:32:29 ]
Post subject: 

Daioh wrote:
UO.Dead(Elem)


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

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

Author:  Daioh [ 2004-07-25 20:05:12 ]
Post subject: 

А... я что-то сам не подумал... :)))) Делай так.
Если известен тип элема, то параллельно можно пустить проверку:
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')

Author:  Edred [ 2004-07-25 20:14:27 ]
Post subject: 

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


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

Author:  Yoko [ 2004-07-25 20:47:44 ]
Post subject: 

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

Author:  Daioh [ 2004-07-25 20:48:05 ]
Post subject: 

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

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

Author:  evr0 [ 2004-07-26 09:18:58 ]
Post subject: 

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

Author:  Daioh [ 2004-07-26 10:29:19 ]
Post subject: 

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

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

Author:  evr0 [ 2004-07-26 10:43:15 ]
Post subject: 

вот если так часто вылазят элемы то тогда не сработает +)

Author:  Bambr [ 2004-07-26 12:44:07 ]
Post subject: 

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


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

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


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

Author:  Edred [ 2004-07-26 12:48:37 ]
Post subject: 

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


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

Author:  Edred [ 2004-07-26 12:53:01 ]
Post subject: 

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

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

Author:  Daioh [ 2004-07-26 12:54:47 ]
Post subject: 

Сразу после того, как завалил, отхелись, а то мало ли что... :)

Author:  Edred [ 2004-07-31 14:37:52 ]
Post subject: 

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


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

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

Author:  Yoko [ 2004-07-31 21:00:46 ]
Post subject: 

Track World проверь

Author:  Edred [ 2004-08-01 19:08:39 ]
Post subject: 

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


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

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/