эксплоужен, explosion, бомба, bomb

Ask for help

Moderators: Murderator+, Murderator

Post Reply
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

эксплоужен, explosion, бомба, bomb

Post by wizardme »

Code: Select all

; explosion on last target
; Hotkeys- Add new hotkey- Command ,exec exp

sub exp()
   var i,k
   
   uo.set('blocktargets', 1)   ; выключаем отображение таргетов клиента
   
   uo.deletejournal()
   
   uo.useobject('0x74D73B0C') ;explosion potion (,info)
   
   wait(100)
   
   if uo.injournal("Select a target") then  ; проверка
      wait(2000)  ;  2,7sec                       ; время до того, как кинуть банку
      uo.target(0x00000004, 'lasttarget')  ; вот тут скорее всего проблема
      wait(100)
      uo.set('blocktargets', 0)               ; отблочиваем таргеты
      wait(17000)
      for i = 0 to 10    ; с этим отсчетом проблем нет
         k=10-i
         uo.print(str(k)) ; ots4et
         wait(1000)
      next
   end if
   uo.set('blocktargets', 0)     ; поставит таргеты на место
end sub



Скрипт, собственно, юзает экспоужен бутылку, ждет определенное время и кидает ее в супостата. И все бы ничего, если бы скрипт не имел две пренепреятнейшие особенности, иногда вместо исполнения своих обязанностей скрипт или пишет You can't see that! (стоя напротив цели) в то время как кидается target(), либо, в крайнем случае, пишет Warning! Error in command после чего успешно взрывает владельца, при этом слайд эффектом идет заедание таргета, и приходится писать ,info и на чем- нибудь щелкать, чтобы эффект данный прошел.
Проблема судя по всему в uo.target(). Lasttargetkey 0x00000004 получен с помощью команды 0x00000004 uo.print(uo.getserial('lasttarget')).
Также хочу заметить, что от замены 'lasttarget' на 'laststatus' ничего не меняется.

В итоге мне хотелось бы узнать, что необходимо исправить в скрипте, чтобы он вел себя более вменяемо.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

юзай бомбу не по ID, а по типу, серийник у всех предметов разный, то есть ты одну бомбу бахнул, у следующей уже серийник другой, и целиться попробуй чуть по другому

Code: Select all

; explosion on last target 
; Hotkeys- Add new hotkey- Command ,exec exp

sub exp()
   uo.deletejournal()
    uo.usetype('0x????') ;explosion potion (,info) тут тип пропиши, в инфо следующая цифра после ID
    uo.deletejournal()
         repeat
             wait(100)
         until uo.injournal("Select a target") ; проверка
      wait(2000)  ;  2,7sec                       ; время до того, как кинуть банку
      uo.waittargetobject('laststatus')
      wait(17000)
      for var i = 10 to 0    ; с этим отсчетом проблем нет
         uo.print(str(i)) ; ots4et
         wait(1000)
      next
end sub


P.S. не тестил
Last edited by Millerbeer on 2009-02-15 19:59:33, edited 1 time in total.
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Заменил на uo.usetype('0x0F0E','0x069A') , но все равно. Тем более не менялся id раньше, но юзтайп все равно лучше. Пока проблема сузилась до 'lasttarget' он почему- то глючит. То есть если предварительно спел кинуть по waittargetlast(), то скрипт вроде работает стабильно.
По waittargetobject задержку поставить, по крайней мере я так считаю, невозможно.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

ну там ловушка стоит в ластстатус, на цель левой кнопкой мыши жмёшь и тащишь, чтоб ластстатус получить и потом скрипт запускаешь
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Ничего не меняет.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

А ты мой вариант пробуешь? или свой?
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Millerbeer wrote:А ты мой вариант пробуешь? или свой?

У твоего есть одна небольшая проблема, waittarget должен использоваться до usetype по правилам.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

по идее да, но на практике вроде пофиг, что ловушку ставишь до юза, что юзанешь, появится прицел, потом ставишь ловушку и она нормально срабатывает
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Millerbeer wrote:по идее да, но на практике вроде пофиг, что ловушку ставишь до юза, что юзанешь, появится прицел, потом ставишь ловушку и она нормально срабатывает

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

Проблема вроде определилась, каким- то образом сбивается ласттаргет, не смотря на то, что сериал таргета не меняется.
Каким- то образом если кастануть спел по waittargetlast до юза эксплоужена то все работает (пока как часы).
Каким- то образом если юзнуть скил с таргетом на цель (вместо спела), то все равно багует.
А значит необходимо эмулировать каст спела, желательно при этом его не кастуя и быстро это сделать.
Вопрос, как эмулировать каст спела или как еще можно добится желаемого результата?
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Потестил у нас на шарде, у нас взрывчатка кидается на пол, поэтому пришлось мудрить с киркой и ласт тайлом, для чистоты эксперимента в начале скрипта впихнул канселтаргет и чр27, это чтоб ты не думал, что срабатывает не с первого, а со второго раза и выводы следующие:
если ты юзанул чегото и прицел появился, можешь сделать паузу, какую тебе надо, потом кинуть ловушку, какой-нить вейт таргет, всё замечательно сработает именно на первый прицел, не на второй не на третий не на 28, миф подтверждён :D вот скрипт

Code: Select all

sub exp()
   if uo.waiting() then
      uo.canceltarget()
   endif
   if uo.targeting() then
      uo.say(chr(27))
   endif
   uo.print('покажь цель')
   uo.usetype('0x0E85')
      while uo.targeting()
         wait(300)
      wend
      wait(3000)
    uo.usetype('0x0F0D','0x0B99')
    uo.deletejournal()
         repeat
             wait(100)
         until uo.injournal('Where do')
      wait(1000)  ;  2,7sec       
      uo.waittargettile('lasttile') 
      for var i=0 to 10   
         uo.print(str(10-i)) ; ots4et
         wait(500)
      next
end sub
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Code: Select all

sub exp()
uo.useskill('Anatomy')
wait(500)
uo.waittargetobject('self')
end sub


У меня даже такой скрипт не работает.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

ндя, такое и у меня не работает :D
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Как объяснить, что этот скрипт работает,


Code: Select all

sub exp()
   var i,k
   if uo.waiting() or uo.targeting() then
      uo.canceltarget()
      uo.say(chr(27))
   end if
   uo.deletejournal()
   uo.waittargetlast()
   uo.cast('Poison')
   repeat
      wait(50)
   until uo.injournal('eval_damage=')
   uo.set('blocktargets', 1)
   uo.usetype('0x0F0E','0x069A')
   repeat
      wait(50)
   until uo.injournal('Select a target') or uo.injournal('You cannot use this yet!')
   if uo.injournal("Select a target") then
      wait(2600)
      uo.target(0x00000004, 'lasttarget')
      wait(100)
      uo.set('blocktargets', 0)
      wait(17000)
      for i = 0 to 10
         k=10-i
         uo.print(str(k)) ; ots4et
         wait(1000)
      next
   end if
   uo.set('blocktargets', 0)
end sub


а этот не работает?

Code: Select all

sub exp()
   var i,k
   if uo.waiting() or uo.targeting() then
      uo.canceltarget()
      uo.say(chr(27))
   end if
   uo.deletejournal()
   uo.waittargetlast()
   uo.cast('Magic Arrow')
   repeat
      wait(50)
   until UO.injournal('eval_damage=')
   uo.set('blocktargets', 1)
   uo.usetype('0x0F0E','0x069A')
   repeat
      wait(50)
   until uo.injournal('Select a target') or uo.injournal('You cannot use this yet!')
   if uo.injournal("Select a target") then
      wait(2600)
      uo.target(0x00000004, 'lasttarget')
      wait(100)
      uo.set('blocktargets', 0)
      wait(17000)
      for i = 0 to 10
         k=10-i
         uo.print(str(k)) ; ots4et
         wait(1000)
      next
   end if
   uo.set('blocktargets', 0)
end sub


Если я не ошибаюсь, отличие в скриптах только одно, в первом кастуется пойзон, во втором стрелка. Причем если вместо стрелки кастуется фаербол (тоже 3уровень магии как и пойзон), то все равно не работает.
То есть кастуется спел, а когда бутылку надо кидать пишет you can't see that.
Проверка проходила так- я реколился вторым чаром куда-нибудь и реколился обратно. Если в скрипте кастовался пойзон по нему, то потом кидалась бомба. Если кастовалась стрелка или фаербол, то you cant see that и бомба не кидалась.
Что это за полтергейст? И можно ли как нибудь без пойзона кидать экспоужен?
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

А если просто uo.lclick, юзанул бомбу, выдержал паузу и левый клик по цели
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Millerbeer wrote:А если просто uo.lclick, юзанул бомбу, выдержал паузу и левый клик по цели


Что написать нужно в uo.click?
Сейчас кстати попробовал уошным ласттаргетом кидать бомбу, и нифига, не видит цель, хотя скилы и спелы работают. В чем то тут может быть проблема?
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Не, uo.lclick не покатит, там аргументы ток координаты, указатели не принимаются, а какой именно уошный ласттаргет, что за скрипт вообще?
wizardme
Posts: 10
Joined: 2009-02-15 15:38:29

Post by wizardme »

Millerbeer wrote:Не, uo.lclick не покатит, там аргументы ток координаты, указатели не принимаются, а какой именно уошный ласттаргет, что за скрипт вообще?


lasttarget в уо макросе
Post Reply