Написал скриптик по переносу вандов и учетом имени и зарядов.
Имеющиеся в контейнере- источнике ванды переносит нормально.
Но если указать таргетом на ванд, который лежит не в источнике, а в другом месте, то имя ванда определяется неправильно и переносятся не те ванды.
Вообще с именами вандов какое-то шаманство, с первого раза не определяются пришлость сначала брать
uo.info ('finditem') а уж потом UO.GetName( 'finditem' ).
Code:
var clr=38, clo=43, cly=53, clg=63, clb1=3, cla=89, clda=83, clp=120 , clgr=1088, clb=1161
# красный - '38' или '0x0026' # темно-бирюзовый - '83' или '0x0053'
# оранжевый - '43' или '0x002B' # голубой - '89' или '0x0059'
# желтый - '53' или '0x0035' # синий - '3' или '0x0003'
# зеленый - '63' или '0x003F' # фиолетовый - '120' или '0x0078'
# '1088' - по умолчанию
# 1152 - бирюзовый 1151 - черный 1155 - фиолетовый 1156 - белый 1158 - кр 1161 - синий 1162 - темно зел 1166 ткр 1169 сз
# 2500 2524 - оранж 2517 кр 2567 малин 2566=0x0A06 белый
# 2998 - белый 3008 3221 3600 и выше - контур
###################################################
Sub PrintInColor(text,color)
# PrintInColor("здесь текст",'цвет текста')
# красный - '38' или '0x0026' # темно-бирюзовый - '83' или '0x0053'
# оранжевый - '43' или '0x002B' # голубой - '89' или '0x0059'
# желтый - '53' или '0x0035' # синий - '3' или '0x0003'
# зеленый - '63' или '0x003F' # фиолетовый - '120' или '0x0078'
# '1088' - по умолчанию
# 1152 - бирюзовый 1151 - черный 1155 - фиолетовый 1156 - белый 1158 - кр 1161 - синий 1162 - темно зел 1166 ткр 1169 сз
# 2500 2524 - оранж 2517 кр 2567 малин 2566=0x0A06 белый
# 2998 - белый 3008 3221 3600 и выше - контур
UO.ConColor(color)
;UO.Exec('set quiet 0') # Показывать сообщения Injection.
UO.Print(text)
;UO.Exec('set quiet 1') # Не показывать сообщения Injection.
UO.ConColor('1088')
endsub
###################################################
sub pereklad()
#****ДРВ*****#
# based on... (C) Cooper
# modified by Kobol, 2014.
#****v1.0****#
VAR Ttov
Var ReqName, CurrName
var ReqWandName, ReqWandCharge=3 ; требуемое имя ванда, требуемый заряд ванда
var CurrWandName, CurrWandCharge ; текущее найденное имя ванда, текущее найденный заряд ванда
#------------- примеры имен вандов ----------------
;a Magic wand of Cure (8 charges)
;a Magic wand of Mana Drain (10 charges)
;a Magic wand of Reactive Armor (10 charges)
;a Magic wand of Flame Strike (8 charges)
;нужно сравнивать по имени и учитывать число зарядов. разряженные ванды не брать
#-------------
UO.Print('Выбери мешок ИСТОЧНИК (From)')
UO.Exec('addobject istok')
while UO.Targeting()
wait(100)
wend
UO.UseObject('istok')
UO.Print('Выбери ПРИЕМНИК (To)')
UO.Exec('addobject priem')
while UO.Targeting()
wait(100)
wend
UO.UseObject('priem')
UO.Print('Выбери ПРЕДМЕТ (Item)')
UO.Exec('addobject tovar')
while UO.Targeting()
wait(100)
wend
TTov = UO.GetGraphic('tovar')
wait (100)
UO.FindType(Ttov,'-1','istok')
wait (400)
If UO.FindCount() > 0 then
uo.info ('finditem')
uo.textclear()
wait(50)
ReqName= UO.GetName( 'finditem' )
wait(50)
UO.Print('ReqName='+ReqName)
ReqWandName=left(ReqName, InStr(ReqName, '(')) ; a Magic wand of Mana Drain (10 charges)
;uo.print ("ReqWandName="+ ReqWandName)
PrintInColor("ReqWandName="+ ReqWandName,CLR)
;ReqWandCharge=val(mid(ReqName, InStr(ReqName, '(')+1, 2))
uo.print ("ReqWandCharge="+ str(ReqWandCharge))
;PrintInColor("ReqWandCharge="+ str(ReqWandCharge),CLR)
;return ;!!!!!!!!!!!!!!
repeat
uo.info ('finditem')
uo.textclear()
wait(50)
CurrName= UO.GetName( 'finditem' )
wait(50)
UO.Print('CurrName='+CurrName)
if len(CurrName)> 0 then
CurrWandName=left(CurrName, InStr(CurrName, '(')) ; a Magic wand of Mana Drain (10 charges)
;uo.print ("CurrWandName="+ CurrWandName)
PrintInColor("CurrWandName="+ CurrWandName,CLb)
CurrWandCharge=val(mid(CurrName, InStr(CurrName, '(')+1, 2))
uo.print ("CurrWandCharge="+ str(CurrWandCharge))
;PrintInColor("CurrWandCharge="+ str(CurrWandCharge),CLb)
if ReqWandName==CurrWandName and CurrWandCharge>= ReqWandCharge then
PrintInColor("CurrWandName="+ CurrWandName,CLg)
UO.MoveItem('finditem', '0', 'priem')
wait(800)
else
uo.ignore('finditem')
wait (200)
end if
else
end if
wait(200)
CheckLag()
UO.FindType(Ttov,'-1','istok')
until not UO.FindCount()
UO.Print('Закончили...')
else
UO.Print('А кидать то нечего...')
endif
uo.ignorereset()
end sub
############################################################
Sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
Wait(250)
until UO.InJournal('backpack')
endsub
############################################################
sub InStr(Source, subStr)
var n = len(subStr)
var j
for var i = 0 to len(Source)-n
j = 0
while (j < n) and (Source[i+j] == subStr[j])
j = j+1;
wend
if j == n then
return i
end if
next
return -1
end sub