Для старой инжи.
Переклад вандов с раскладкой по координатам. Но все равно вручную найти нужный ванд невозможно )
Указывем источник, указываем приемник.
Если попадается нераспознанный ванд, автоматически юзается Item Identification.
Координаты жестко привязаны к именам вандов, задаются в массиве.
Code:
var clr=38, clo=43, cly=53, clg=63, clb1=3, cla=89, clda=83, clp=120 , clgr=1088, clb=1161, clw=2998
# красный - '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 perekladWand()
#****ДРВ*****#
# (C) Cooper
# modified by Kobol 2014
#****v1.0****#
DIM WandType[4]
WandType[0] = '0x0DF2' ;
WandType[1] = '0x0DF3' ;
WandType[2] = '0x0DF4' ;
WandType[3] = '0x0DF5' ;
#------------- примеры имен вандов ----------------
;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)
;нужно сравнивать по имени и учитывать число зарядов. разряженные ванды не брать
VAR Item ; object перекладываемого предмета
var ItemColor,x,y,i,col,row, ColCount, RowCount,TTov, X0=35, Y0=35, dx=10, dy=15
var si ; счетчик текущий Wand
var ti ; счетчик типов Wand
var WNameCurr, WNameRQ, zz
var nedo ; сколько недостает Wandов
var d ; счетчик докладываемых
i=4 ; шаг
x=X0 ; координата X первого предмета
y=Y0 ; координата Y первого предмета
col=0 ; текущее количество в ряду
row=0
ColCount=15 ; максимальное количество в ряду (количество колонок)
RowCount=7 ; максимальное количество рядов
# --- коорд вандов
dim wCoordX[64]
dim wCoordY[64]
#-------------
DIM WandName[64] ; названия заклинаний
;-------- 1 ряд -------------
WandName[31] = 'a Magic wand of Recall'; !!!!!!!!!!!!!!! 13 -10
wCoordX[31]=X0
wCoordY[31]=Y0
WandName[37] = 'a Magic wand of Paralyze Field'; !!!!!!!!!!!!!!! 20 -10
wCoordX[37]=X0+1*dx
wCoordY[37]=Y0+6*dy
WandName[46] = 'a Magic wand of Paralyze'; !!!!!!!!!!!!!!! 17 -10
wCoordX[46]=X0+2*dx
wCoordY[46]=Y0+6*dy
WandName[23] = 'a Magic wand of Wall of Stone'; !!!!!!!!!!!!!!! 9 -10
wCoordX[23]=X0+3*dx
wCoordY[23]=Y0
WandName[27] = 'a Magic wand of Fire Field'; !!!!!!!!!!!!!!! 10 -5
wCoordX[27]=X0+4*dx
wCoordY[27]=Y0
WandName[28] = 'a Magic wand of Greater Heal'; !!!!!!!!!!!!!!! 11 -10
wCoordX[28]=X0+5*dx
wCoordY[28]=Y0
WandName[10] = 'a Magic wand of Cure'; !!!!!!!!!!!!!!! 3 -5
wCoordX[10]=X0+6*dx
wCoordY[10]=Y0
WandName[6] = 'a Magic wand of Reactive Armor'; !!!!!!!!!!!!!!! 2 -10
wCoordX[6]=X0+7*dx
wCoordY[6]=Y0
WandName[32] = 'a Magic wand of Blade Spirit'; !!!!!!!!!!!!!!! 14 -5
wCoordX[32]=X0+8*dx
wCoordY[32]=Y0
WandName[35] = 'a Magic wand of Magic Reflect'; !!!!!!!!!!!!!!! 16 -10
wCoordX[35]=X0+9*dx
wCoordY[35]=Y0
;-------- 2 ряд -------------
WandName[4] = 'a Magic wand of Magic Arrow' ;!!!!!!!!!!!!!!! 1 -10
wCoordX[4]=X0
wCoordY[4]=Y0+1*dy
WandName[14] = 'a Magic wand of Protection'; !!!!!!!!!!!!!!! 4 -5
wCoordX[14]=X0+1*dx
wCoordY[14]=Y0+1*dy
WandName[17] = 'a Magic wand of Fireball'; !!!!!!!!!!!!!!! 5 -5
wCoordX[17]=X0+2*dx
wCoordY[17]=Y0+1*dy
WandName[19] = 'a Magic wand of Poison'; !!!!!!!!!!!!!!! 6 -10
wCoordX[19]=X0+3*dx
wCoordY[19]=Y0+1*dy
WandName[20] = 'a Magic wand of Telekinesis'; !!!!!!!!!!!!!!! 7 -5
wCoordX[20]=X0+4*dx
wCoordY[20]=Y0+1*dy
WandName[21] = 'a Magic wand of Teleport'; !!!!!!!!!!!!!!! 8 -5
wCoordX[21]=X0+5*dx
wCoordY[21]=Y0+1*dy
WandName[30] = 'a Magic wand of Mana Drain'; !!!!!!!!!!!!!!! 12 -5
wCoordX[30]=X0+6*dx
wCoordY[30]=Y0+1*dy
WandName[33] = 'a Magic wand of Dispel Field'; !!!!!!!!!!!!!!! 15 -5
wCoordX[33]=X0+7*dx
wCoordY[33]=Y0+1*dy
WandName[38] = 'a Magic wand of Poison Field'; !!!!!!!!!!!!!!! 18 -10
wCoordX[38]=X0+8*dx
wCoordY[38]=Y0+1*dy
WandName[43] = 'a Magic wand of Invisibility'; !!!!!!!!!!!!!!! 19 -10
wCoordX[43]=X0+9*dx
wCoordY[43]=Y0+1*dy
WandName[47] = 'a Magic wand of Reveal'; !!!!!!!!!!!!!!! 21 -10
wCoordX[47]=X0+10*dx
wCoordY[47]=Y0+1*dy
;-------- 3 ряд малоценка -------------
WandName[29] = 'a Magic wand of Lightning';
wCoordX[29]=X0+0*dx
wCoordY[29]=Y0+2*dy
WandName[34] = 'a Magic wand of Incognito';
wCoordX[34]=X0+1*dx
wCoordY[34]=Y0+2*dy
WandName[36] = 'a Magic wand of Mind Blast';
wCoordX[36]=X0+2*dx
wCoordY[36]=Y0+2*dy
WandName[39] = 'a Magic wand of Summon';
wCoordX[39]=X0+3*dx
wCoordY[39]=Y0+2*dy
WandName[40] = 'a Magic wand of Dispel';
wCoordX[40]=X0+4*dx
wCoordY[40]=Y0+2*dy
WandName[41] = 'a Magic wand of Energy Bolt';
wCoordX[41]=X0+5*dx
wCoordY[41]=Y0+2*dy
WandName[42] = 'a Magic wand of Explosion';
wCoordX[42]=X0+6*dx
wCoordY[42]=Y0+2*dy
WandName[44] = 'a Magic wand of Mark';
wCoordX[44]=X0+7*dx
wCoordY[44]=Y0+2*dy
WandName[45] = 'a Magic wand of Mass Curse';
wCoordX[45]=X0+8*dx
wCoordY[45]=Y0+2*dy
WandName[48] = 'a Magic wand of Chain Lightning';
wCoordX[48]=X0+9*dx
wCoordY[48]=Y0+2*dy
WandName[49] = 'a Magic wand of Energy Field';
wCoordX[49]=X0+10*dx
wCoordY[49]=Y0+2*dy
WandName[50] = 'a Magic wand of Flame Strike';
wCoordX[50]=X0+11*dx
wCoordY[50]=Y0+2*dy
WandName[51] = 'a Magic wand of Gate Travel';
wCoordX[51]=X0+12*dx
wCoordY[51]=Y0+2*dy
;-------- 4 ряд малоценка -------------
WandName[52] = 'a Magic wand of Mana Vampire';
wCoordX[52]=X0
wCoordY[52]=Y0+3*dy
WandName[53] = 'a Magic wand of Mass Dispel';
wCoordX[53]=X0+1*dx
wCoordY[53]=Y0+3*dy
WandName[54] = 'a Magic wand of Meteor Swarm';
wCoordX[54]=X0+2*dx
wCoordY[54]=Y0+3*dy
WandName[55] = 'a Magic wand of Polymorph';
wCoordX[55]=X0+3*dx
wCoordY[55]=Y0+3*dy
WandName[56] = 'a Magic wand of Earthquake';
wCoordX[56]=X0+4*dx
wCoordY[56]=Y0+3*dy
WandName[57] = 'a Magic wand of Energy Vortex';
wCoordX[57]=X0+5*dx
wCoordY[57]=Y0+3*dy
WandName[58] = 'a Magic wand of Resurrection';
wCoordX[58]=X0+6*dx
wCoordY[58]=Y0+3*dy
WandName[59] = 'a Magic wand of Air Elemental';
wCoordX[59]=X0+7*dx
wCoordY[59]=Y0+3*dy
WandName[60] = 'a Magic wand of Daemon'; 'Magic wand of Daemon'
wCoordX[60]=X0+8*dx
wCoordY[60]=Y0+3*dy
WandName[61] = 'a Magic wand of Earth Elemental';
wCoordX[61]=X0+9*dx
wCoordY[61]=Y0+3*dy
WandName[62] = 'a Magic wand of Fire Elemental';
wCoordX[62]=X0+10*dx
wCoordY[62]=Y0+3*dy
WandName[63] = 'a Magic wand of Water Elemental';
wCoordX[63]=X0+11*dx
wCoordY[63]=Y0+3*dy
;-------- 5 ряд хлам -------------
WandName[0] = 'a Magic wand of Clumsy'
wCoordX[0]=X0
wCoordY[0]=Y0+4*dy
WandName[1] = 'a Magic wand of Create Food'
wCoordX[1]=X0+1*dx
wCoordY[1]=Y0+4*dy
WandName[2] = 'a Magic wand of Feeblemind'
wCoordX[2]=X0+2*dx
wCoordY[2]=Y0+4*dy
WandName[3] = 'a Magic wand of Heal'
wCoordX[3]=X0+3*dx
wCoordY[3]=Y0+4*dy
WandName[5] = 'a Magic wand of Night Sight'
wCoordX[5]=X0+4*dx
wCoordY[5]=Y0+4*dy
WandName[7] = 'a Magic wand of Weaken'
wCoordX[7]=X0+5*dx
wCoordY[7]=Y0+4*dy
WandName[8] = 'a Magic wand of Agility'
wCoordX[8]=X0+6*dx
wCoordY[8]=Y0+4*dy
WandName[9] = 'a Magic wand of Cunning'
wCoordX[9]=X0+7*dx
wCoordY[9]=Y0+4*dy
WandName[11] = 'a Magic wand of Harm';
wCoordX[11]=X0+8*dx
wCoordY[11]=Y0+4*dy
WandName[12] = 'a Magic wand of Magic Trap';
;-------- 6 ряд хлам -------------
wCoordX[12]=X0+0*dx
wCoordY[12]=Y0+5*dy
WandName[13] = 'a Magic wand of Magic Untrap';
wCoordX[13]=X0+1*dx
wCoordY[13]=Y0+5*dy
WandName[15] = 'a Magic wand of Strength';
wCoordX[15]=X0+2*dx
wCoordY[15]=Y0+5*dy
WandName[16] = 'a Magic wand of Bless';
wCoordX[16]=X0+3*dx
wCoordY[16]=Y0+5*dy
WandName[18] = 'a Magic wand of Magic Lock';
wCoordX[18]=X0+4*dx
wCoordY[18]=Y0+5*dy
WandName[22] = 'a Magic wand of Unlock';
wCoordX[22]=X0+5*dx
wCoordY[22]=Y0+5*dy
WandName[24] = 'a Magic wand of Arch Cure';
wCoordX[24]=X0+6*dx
wCoordY[24]=Y0+5*dy
WandName[25] = 'a Magic wand of Arch Protection';
wCoordX[25]=X0+7*dx
wCoordY[25]=Y0+5*dy
WandName[26] = 'a Magic wand of Curse';
wCoordX[26]=X0+8*dx
wCoordY[26]=Y0+5*dy
var FullLoad ; флаг полной загрузки контейнера
UO.Print('Выбери ИСТОЧНИК Wandов (From)')
UO.Exec('addobject istok')
while UO.Targeting()
wait(100)
wend
UO.UseObject('istok')
UO.Print('Выбери ПРИЕМНИК Wandов (To)')
UO.Exec('addobject priem')
while UO.Targeting()
wait(100)
wend
UO.UseObject('priem')
; ищем ванды
for ti=0 to 3 ; перебираем по типам вандов
Ttov=WandType[ti]
UO.FindType(Ttov,'-1','istok') ; находим wand в ящике
If UO.FindCount() > 0 then
d=0
repeat ; <<<<<<<<<<<<<<< цикл поиска вандов в ящике
uo.click ('finditem')
wait (100)
WNameCurr =UO.GetName( 'finditem' ) ; имя найденного ванда
PrintInColor(WNameCurr,clw)
GetNameAgain:
if WNameCurr =="wand" or WNameCurr =="" then
UO.MoveItem('finditem', '111', 'istok')
UO.Useskill('Item Identification','finditem')
wait(4500)
checklag()
uo.click ('finditem')
wait (100)
WNameCurr =UO.GetName( 'finditem' ) ; имя найденного ванда
PrintInColor(WNameCurr,"0x0048")
goto GetNameAgain
end if
for si=0 to 63 ; перебираем по всем именам вандов. Каждое имя кладем на свою координату.
WNameRQ=WandName[si]
WNameRQ=left(WNameRQ, InStr(WNameRQ, '(' ) ) ; a Magic wand of Mana Drain (10 charges)
;PrintInColor(WNameCurr,cla)
;PrintInColor(WNameRQ,cla)
;PrintInColor(str(si),'2998')
zz=instr(WNameCurr,WNameRQ) ; имя из массива совпадает с именем найденного ванда?
if zz>-1 then ;если да, то кладем его на соответствующую имени координату
; 'ищем текущее имя в списке, определяем его индекс и по этому индексу берем координаты из массива координат
x=wCoordX[si]
y=wCoordY[si]
;PrintInColor("x="+str(x),clb)
;wait(50)
;PrintInColor("y="+str(y),clb)
wait(50)
UO.MoveItem('finditem', '111', 'priem',x,y,'0')
wait(570)
d=d+1
si=63 ; изврат! выход из цикла , другие типы вандов перебирать не надо
else
;uo.Ignore("finditem") ; ??????????????
end if
wait (10)
next ; переходим к следующему имени Wandа
CheckLag()
UO.FindType('-1','-1','priem')
if UO.FindCount()==255 then
FullLoad=1
PrintInColor("Priemnik zapolnen!!!",clr)
end if
UO.FindType(Ttov,'-1','istok')
until not UO.FindCount() or FullLoad==1 ; ; <<<<<<<<<<<<<<<
end if
;uo.print('Moved ' +str(d) +' Wands <<<')
wait (150)
if FullLoad==1 then
ti=3
end if
next ; переходим к следующему типу Wandа
uo.IgnoreReset()
wait (100)
UO.Print('Finished...')
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
if len(Source)>=len(subStr) then
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
else
end if
return -1
end sub