резка трупа

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

резка трупа

Post by Gromiz »

Добрый день!

Ранее использовал скрипт с командой "lascorpse" для резки трупа, все хорошо работает, но когда убиваешь подряд несколько мобов, то скрипт естественно режет только последнего убитого(даже не открывая трупа), остальных приходилось резать "ручками"
- дабл клик на даггер и потом на тело(главное попасть - не всегда с первого раза). Выходом из положения нашел комманду по последнему контейнеру, но что берут сомнения в правильности и скрипта и его влияние на вылет из игры:

Code: Select all

sub POREZ()
  uo.Set('finddistance','3')
  uo.WaitTargetObject('lastcontainer')
  uo.usetype('0x0F52','0x0000')
end sub


сей скрипт можно использовать или возможен другой гибкий вариант?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: резка трупа

Post by Mirage »

у меня вот так:

Code: Select all

Sub REZ()
   var body = '0x2006'
   var dagger = '0x0F51'
   var corpse
   UO.Set('quiet','1')
   ;uo.ignorereset()
   uo.set('finddistance', '3')
   UO.filterspeech('clear')
   UO.filterspeech('add','[Surprize ! Fast loot detected!]')
   UO.filterspeech('add','[Зафиксирована ловкость рук]')
   UO.filterspeech('on')
   uo.findtype(body, -1, 'ground')
   if uo.findcount() and Uo.GetDistance( 'finditem' ) < 3  then
      var x = uo.GetGraphic(uo.ObjAtLayer('Lhand'))
      var y = uo.GetGraphic(uo.ObjAtLayer('Rhand'))
      uo.warmode(0)
      wait(500)
      corpse = uo.getSerial("finditem")
      UO.WaitTargetObject(corpse)
      UO.UseType(dagger)
      wait(1000)
      uo.Equipt('Lhand',x)
      uo.Equipt('Rhand',y)
      Loot()
      uo.warmode(1)
   endif
   UO.Set('quiet','0')
end sub


в луталке после оббирания прописаны 2 строки
UO.Hide(corpse)
UO.Ignore(corpse)
Так что при запуске резки после облутивания каждый раз будет резаться другой труп.
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Re: резка трупа

Post by Gromiz »

автохайд не возможен(на данный момент), т.к. в трупе иногда появляются вещи, которые еще в луталке не указаны.
так их потерять можно.

мой вариант в принципе работает, а хайд сам на тела бросаю, если они наложились друг на друга.


просто, при таком значении ( uo.WaitTargetObject('lastcontainer') - заместо трупа) какие-нибудь конфликты возможно?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: резка трупа

Post by Mirage »

Возможные варианты проблемы в не моем скрипте:
1) у тела TYPE и ID один, у порезанного тела (костей человеческих) другие. Если лутать НЕ мобов то будет глюк.
2) часто на шардах если тело открыто и его порезать окошко лута закрывается - придется юзать тело опять чтобы полутить.
3)если ты охотишься не один (на экране еще один охотник/ПК) ты убиваешь когото и собираешься нажать кнопку резки/лута и тут в углу экрана ктото умирает то последний контейнер будет в углу экрана а не рядом с тобой.
Если будешь тело игнорить то ловушка на ластконтейнер будет либо 0xfffffffff либо ты сам =>

Code: Select all

if uo.getSerial('lastcontainer')<>'my' then
loot
endif

Можно так частично обезопаситься

ХЗ Мне всегда было проще организовать поиск на земле тела чем оперировать малопонятными и слетающими командами тило ласткорпс и ластконтейнер. Но это мое ИМХО.


В моем варианте резки и лута я сделал по следующему принципу
ищу труп
режу труп и открываю его
ИГНОРИРУЮ все не нужные мне предметы
лутаю НУЖНЫЕ мне предметы
лутаю все оставшиеся предметы.
прячу труп и игнорирую его.

Отдельно список игнора и список нужных предметов которые лутаются в первую очередь.
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Re: резка трупа

Post by Gromiz »

супер, вроде все пашет и без ошибок.

добавил:
проверку на даггеры для резки
и сообщение, если тел для резки нет
Вроде все хорошо.

Code: Select all

sub POREZ()
   var body = '0x2006'
   var corpse
   uo.set('finddistance', '3')
   uo.findtype(body, -1, 'ground')
   if uo.findcount() and Uo.GetDistance( 'finditem' ) < 3  then
      wait(500)
      corpse = uo.getSerial("finditem")
      uo.UseObject(corpse)
      UO.WaitTargetObject(corpse)
if UO.Count('0x0F51','0x0000') || UO.Count('0x0F52','0x0000')  then
     if UO.Count('0x0F51','0x0000') then
      UO.UseType('0x0F51','0x0000')
     else
      UO.UseType('0x0F52','0x0000')
      endif
      else
    UO.Print('Gde Dagger?')
     return
    endif
    uo.DeleteJournal()
          wait(1000)
#      Loot1() ; запускаю другой кнопкой при необходимости, а так можно автоматом
#     UO.Hide(corpse) ; запускаю другой кнопкой при необходимости, а так можно автоматом
      UO.Ignore(corpse)
      ELSE
         uo.print(' No Corpse ')   
   endif
end sub


благодарю, твой скрипт лучше )))
Post Reply