Page 1 of 1
Пить бутылки с дисармом.
Posted: 2008-10-05 18:21:42
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 луков, часть из них балансед и можно с ними в руках пить бутылки, а часть обычные и их надо сбрасывать.
Хотелось бы чтобы я изначально задал какие луки балансед и при проверке просто пил бутылки, а остальные луки сбрасывал.
Posted: 2008-10-05 19:00:15
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
что непонятно, спрашивай
Posted: 2008-10-05 23:59:38
by Jaraa
Спасибо, а можно сделать меньше проверок какой лук у меня в руке?
Допустим у меня
bow1 обычный
bow2 обычный
bow3 обычный
bow4 балансед
bow5 балансед
1 проверка если руки вообще пустые (просто пьем)
2 в руках чтото есть, проверяем балансед ли
просто пьется бутылка
else (обычный)
запоминаем, сбрасываем, пьем, одеваем
Posted: 2008-10-06 06:43:51
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
Балансед луки ваще ненадо в скрипт забивать, они нам не интересны.
Posted: 2008-10-06 07:28:21
by Jaraa
Millerbeer wrote:Балансед луки ваще ненадо в скрипт забивать, они нам не интересны.
Спасибо, теперь все стало достаточно просто =))
Posted: 2008-10-06 07:49:42
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 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
Posted: 2008-10-06 07:52:04
by Millerbeer
then естественно в конец верхней строки надо приписать, я просто теги или управляющего символа незнаю, чтоб строка непереносилась.
Если у чара в руках будет балансед лук и ты запустишь мой скрипт, он его просто незаметит и выпьет бутылку.
Posted: 2008-10-06 08:12:45
by Jaraa
Millerbeer wrote:А ты думаешь твой алгоритм очень простой?
Я имел в виду, что твой алгоритм идеален для моих целей =)
Posted: 2008-10-06 08:15:36
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
вот это твой вариант, впринципе, хороший, ибо универсальный.Теперь скрипт сработает с любым предметом в правой руке, хоть с вилкой