Yoko

All sides of Injection
It is currently 2026-03-12 20:16:00

All times are UTC+02:00




Post new topic  Reply to topic  [ 17 posts ] 
Author Message
PostPosted: 2004-07-25 18:58:37 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Чего-то мозги не варят совсем, не могу придумать, как в скрипте зафиксировать момент смерти элема, с которым чар сражается. Чар на фишинге, при нападении на чара элема (проверка простейшим способом - если здоровье чара становится меньше 150), чар скидывает удочку в трюм и берет из трюма вилку и щит. В этот момент скрипт включает вар и встает на паузу. Пока сделано что когда здоровье чара снова станет 150 - тогда вилку и щит в трюм, слутить все что выпало с элема, взять в руки удочку и продолжать рыбачить. Но хочется соптимизировать. Благо в результате рыбалки и бинтов навалом, так что если определить момент окончания сражения - то можно будет значительно ускорить процесс. После элема трупа не остается.

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


Top
   
 Post subject:
PostPosted: 2004-07-25 19:17:04 
Offline

Joined: 2004-06-28 19:06:26
Posts: 63
UO.Dead(Elem)


Top
   
 Post subject:
PostPosted: 2004-07-25 19:32:29 
Offline
Expert!

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


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

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


Top
   
 Post subject:
PostPosted: 2004-07-25 20:05:12 
Offline

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


Top
   
 Post subject:
PostPosted: 2004-07-25 20:14:27 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
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')


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


Top
   
 Post subject:
PostPosted: 2004-07-25 20:47:44 
Offline
Site Admin
User avatar

Joined: 2004-04-03 16:49:38
Posts: 1964
просто проверка здоровья


Top
   
 Post subject:
PostPosted: 2004-07-25 20:48:05 
Offline

Joined: 2004-06-28 19:06:26
Posts: 63
Edred wrote:
он может легко отойти от чара несколько шагов и снова подойти

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


Top
   
 Post subject:
PostPosted: 2004-07-26 09:18:58 
Offline

Joined: 2004-07-25 07:26:59
Posts: 12
может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)


Top
   
 Post subject:
PostPosted: 2004-07-26 10:29:19 
Offline

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

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


Top
   
 Post subject:
PostPosted: 2004-07-26 10:43:15 
Offline

Joined: 2004-07-25 07:26:59
Posts: 12
вот если так часто вылазят элемы то тогда не сработает +)


Top
   
 Post subject:
PostPosted: 2004-07-26 12:44:07 
Offline

Joined: 2004-06-28 16:28:29
Posts: 38
Edred wrote:
Daioh wrote:
UO.Dead(Elem)


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

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


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


Top
   
 Post subject:
PostPosted: 2004-07-26 12:48:37 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
evr0 wrote:
может быть просто фиксирование типа трупа на земле, вот и все... 0x2006 тип трупа :)


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


Top
   
 Post subject:
PostPosted: 2004-07-26 12:53:01 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Хех, надо еще сам момент боя-то поймать... Ладно, пока сделал отлов звука "взрыва" элема и контроль мессаги о прибавлении кармы/феймы и контроль здоровья чара... Теперь тестирую ;)

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


Top
   
 Post subject:
PostPosted: 2004-07-26 12:54:47 
Offline

Joined: 2004-06-28 19:06:26
Posts: 63
Сразу после того, как завалил, отхелись, а то мало ли что... :)


Top
   
 Post subject:
PostPosted: 2004-07-31 14:37:52 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
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 независимо от уровня здоровья элема. Причем серийник определяется правильно, проверял. Какие есть еще варианты в скрипте получить здоровье другого персонажа?


Top
   
 Post subject:
PostPosted: 2004-07-31 21:00:46 
Offline
Site Admin
User avatar

Joined: 2004-04-03 16:49:38
Posts: 1964
Track World проверь


Top
   
 Post subject:
PostPosted: 2004-08-01 19:08:39 
Offline
Expert!

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


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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 17 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited