Пить бутылки с дисармом.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Jaraa
Posts: 45
Joined: 2008-03-03 02:16:35

Пить бутылки с дисармом.

Post by Jaraa »

Рануо шард, для того чтобы выпить бутылку нужна пустая рука. В случае если на луке есть свойство "balanced" то лук снимать не нужно. Сейчас я использую такой скрипт, но он будет разоружать всегда.

Code: Select all

sub curepot()
VAR t = 650
Var Empty=''
Var Bow='0x4017EC3D' ; id лука
UO.FindType('0x0F07','0x0000', 'my') ;type and color of potion
    if UO.FindCount()>0 then
       If not UO.ObjAtLayer( 'Rhand' ) == Empty then
                uo.unequip( "Rhand" )
                wait(t)
           endif
     UO.UseObject('finditem')
     wait(t)
     uo.equip("Rhand", Bow)
      else
        wait(100)
    endif
end sub


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

Post by Millerbeer »

Code: Select all

sub curepot() 
VAR t = 650
var arm
Var Bow1='1111111';допустим этот лук балансед
Var Bow2='0x4017EC3D' ; обычный лук
var Bow3='2222222'; это допустим тож обычный лук
UO.FindType('0x0F07','0x0000', 'my') ;type and color of potion
    if UO.FindCount() then
       If UO.ObjAtLayer( 'Rhand' ) == Bow2 then
               arm =Bow2
                uo.unequip( "Rhand" )
                wait(t)
        endif
       If UO.ObjAtLayer( 'Rhand' ) == Bow3 then
               arm =Bow3
                uo.unequip( "Rhand" )
                wait(t)
        endif
     UO.UseObject('finditem')
     wait(t)
       If not UO.ObjAtLayer( 'Rhand' ) then
           uo.equip("Rhand", arm)
           wait(t) 
        endif
   endif
end sub
что непонятно, спрашивай
Jaraa
Posts: 45
Joined: 2008-03-03 02:16:35

Post by Jaraa »

Спасибо, а можно сделать меньше проверок какой лук у меня в руке?
Допустим у меня
bow1 обычный
bow2 обычный
bow3 обычный
bow4 балансед
bow5 балансед

1 проверка если руки вообще пустые (просто пьем)
2 в руках чтото есть, проверяем балансед ли
просто пьется бутылка
else (обычный)
запоминаем, сбрасываем, пьем, одеваем
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

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

Code: Select all

sub curepot() 
VAR t = 650
var arm =0
Var Bow2='0x4017EC3D' ; обычный лук
var Bow3='2222222'; это допустим тож обычный лук
UO.FindType('0x0F07','0x0000', 'my') ;type and color of potion
    if UO.FindCount() then
       If UO.ObjAtLayer( 'Rhand' ) == Bow2 then
               arm =Bow2
                uo.unequip( "Rhand" )
                wait(t)
        endif
       If UO.ObjAtLayer( 'Rhand' ) == Bow3 then
               arm =Bow3
                uo.unequip( "Rhand" )
                wait(t)
        endif
     UO.UseObject('finditem')
     wait(t)
       If not UO.ObjAtLayer( 'Rhand' ) and arm then
           uo.equip("Rhand", arm)
           wait(t) 
        endif
   endif
end sub
Балансед луки ваще ненадо в скрипт забивать, они нам не интересны.
Jaraa
Posts: 45
Joined: 2008-03-03 02:16:35

Post by Jaraa »

Millerbeer wrote:Балансед луки ваще ненадо в скрипт забивать, они нам не интересны.


Спасибо, теперь все стало достаточно просто =))
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

А ты думаешь твой алгоритм очень простой? :D У меня много условий, у тебя будет много процедур питья бутылок с ретурнами, мой вариант, я думаю, по компактней будет, тем более, мои условия можно все в одну строку запихнуть

Code: Select all

sub curepot() 
VAR t = 650
var arm =0
Var Bow2='0x4017EC3D' ; обычный лук
var Bow3='2222222'; это допустим тож обычный лук
UO.FindType('0x0F07','0x0000', 'my') ;type and color of potion
    if UO.FindCount() then
       If UO.ObjAtLayer( 'Rhand' ) == Bow2  or UO.ObjAtLayer( 'Rhand' ) == Bow3 then
               arm = UO.ObjAtLayer( 'Rhand' )
                uo.unequip( "Rhand" )
                wait(t)
        endif
       
     UO.UseObject('finditem')
     wait(t)
       If not UO.ObjAtLayer( 'Rhand' ) and arm then
           uo.equip("Rhand", arm)
           wait(t) 
        endif
   endif
end sub
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

then естественно в конец верхней строки надо приписать, я просто теги или управляющего символа незнаю, чтоб строка непереносилась.
Если у чара в руках будет балансед лук и ты запустишь мой скрипт, он его просто незаметит и выпьет бутылку.
Jaraa
Posts: 45
Joined: 2008-03-03 02:16:35

Post by Jaraa »

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


Я имел в виду, что твой алгоритм идеален для моих целей =)
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Code: Select all

sub curepot() 
VAR t = 650
var arm
Var Bow2='0x4017EC3D' ; балансед лук
var Bow3='2222222'; это тож балансед лук
UO.FindType('0x0F07','0x0000', 'my') ;type and color of potion
    if UO.FindCount() then
       If not UO.ObjAtLayer( 'Rhand' ) or UO.ObjAtLayer( 'Rhand' ) == Bow2  or UO.ObjAtLayer( 'Rhand' ) == Bow3 then
             UO.UseObject('finditem') 
                wait(t)
             return
        else
              arm= UO.ObjAtLayer( 'Rhand' )
              uo.unequip( "Rhand" )
              wait(t)
              UO.UseObject('finditem')
               wait(t) 
              uo.equip("Rhand", arm)
               wait(t) 
        endif
end sub
вот это твой вариант, впринципе, хороший, ибо универсальный.Теперь скрипт сработает с любым предметом в правой руке, хоть с вилкой
Post Reply