Переклад бутылок с раскладом по координатам.
Code: var clr=38, clo=43, cly=53, clg=63, clb=3, cla=89, clda=83, clp=120 , clgr=1088, clw=1156 var typeBottle='0x0F0E' var typeExplosion='0x0F0D' var typeAntiF='0x0F03' var totalB=1 ; если 0, то перекладываются бутылки того цвета и типа на который кликнули при выборе. Если 1, то выбор бутылки не предлагается и перекладываются-раскладываются все бутылки из контейнера-источника. # --- цвета бутылок var clrEmpty="0x0000" var clrAgility="0x0489" var clrCure="0x09A6" var clrHeal="0x09BB" var clrNightsight="0x0B9D" var clrPoison="0x0998" var clrRefresh="0x0997" var clrStrength="0x0482" var clrShrink="0x0388" var clrInvis="0x0631" var clrMana="0x09DF" var clrClever="0x0482" var clrBless="0x09C5" var clrSteelskin="0x0962" var clrStoneskin="0x0964" var clrLavaBomb="0x09DA" var clrExplosion="0x0B99" var clrAntiF="0x09CF" ; итого 16+2 цветов ################################################### 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 perekladBottle() #****ДРВ*****# # based on (C) Cooper # modified by Kobol 2014 # перекладывает бутылки из мешка с кучей несортированных в другой мешок, # раскладывая их по кучкам (координатам) в соответствии с типом, в т.ч. некучкующиеся. TWI должен быть включен. # координаты фиксированы в скрипте для каждого типа бутылки - своя координата #****v1.0****# ;VAR Item ; object перекладываемого предмета # --- цвета бутылок dim bColor[18] bColor[0]="0x0000" ; Empty bColor[1]="0x0489" ; Agility bColor[2]="0x09A6" ; Cure bColor[3]="0x09BB" ; Heal bColor[4]="0x0B9D" ; Nightsight bColor[5]="0x0998" ; Poison bColor[6]="0x0997" ; Refresh bColor[7]="0x0482" ; Strength bColor[8]="0x0388" ; Shrink bColor[9]="0x0631" ; Invis bColor[10]="0x09DF" ; Mana bColor[11]="0x0482" ; Clever bColor[12]="0x09C5" ; Bless bColor[13]="0x0962" ; Steelskin bColor[14]="0x0964" ; Stoneskin bColor[15]="0x09DA" ; LavaBomb bColor[16]="0x0B99" ; clrExplosion bColor[17]="0x09CF" ; clrAntiF # --- типы бутылок dim bType[3] bType[0]=typeBottle bType[1]=typeExplosion bType[2]=typeAntiF var ItemColor, ItemName, ItemType, x,y, dx, dy,i,col,row, ColCount, RowCount, cIdx, X0=30, Y0=20 Var CurrName='' ; имя взятого предмета dx=12 ; шаг по X dy=20 ; шаг по Y x=X0 ; координата X первого предмета y=Y0 ; координата Y первого предмета col=0 ; текущее количество в ряду row=0 ;ColCount=8 ; максимальное количество в ряду (количество колонок) ;RowCount=8 ; максимальное количество рядов # --- коорд бутылок dim bCoordX[33] dim bCoordY[33] for i=0 to 7 bCoordX[i]=X0+dx*i bCoordY[i]=Y0 next for i=8 to 15 bCoordX[i]=X0+dx*i bCoordY[i]=Y0+dy next dim bName[33] ;-------- 1 ряд ------------ bName[0]="empty bottle" ;0'!!! "0x0000" bCoordX[0]=X0 bCoordY[0]=Y0 bName[1]="Agility" ;1' "0x0489"- bCoordX[1]=X0+dx*1 bCoordY[1]=Y0 bName[2]="Greater Agility" ;1' "0x0489"- bCoordX[2]=X0+dx*2 bCoordY[2]=Y0 bName[3]="Lesser Cure" ;2' "0x09A6"- bCoordX[3]=X0+dx*3 bCoordY[3]=Y0 bName[4]="Cure" ;2 "0x09A6" - bCoordX[4]=X0+dx*4 bCoordY[4]=Y0 bName[5]="Greater Cure" ;2'!!! "0x09A6"- bCoordX[5]=X0+dx*5 bCoordY[5]=Y0 ;-------- 2 ряд ------------- bName[6]="Lesser Heal" ;3' "0x09BB"- bCoordX[6]=X0 bCoordY[6]=Y0+dy bName[7]="Heal" ;3' "0x09BB"- bCoordX[7]=X0+dx bCoordY[7]=Y0+dy bName[8]="Greater Heal" ;3'!!! "0x09BB"- bCoordX[8]=X0+dx*2 bCoordY[8]=Y0+dy bName[9]="Nightsight" ;4,' "0x0B9D"- bCoordX[9]=X0+dx*3 bCoordY[9]=Y0+dy ;---------3 ряд -------- bName[10]="Lesser Poison" ;5, "0x0998"- bCoordX[10]=X0+dx*1 bCoordY[10]=Y0+dy*2 bName[11]="Poison" ;5, "0x0998"- bCoordX[11]=X0+dx*2 bCoordY[11]=Y0+dy*2 bName[12]="Greater Poison" ;5, "0x0998"- bCoordX[12]=X0+dx*3 bCoordY[12]=Y0+dy*2 bName[13]="Deadly Poison" ;5'!!! "0x0998"- bCoordX[13]=X0+dx*4 bCoordY[13]=Y0+dy*2 bName[14]="Refresh" ;6, "0x0997"- bCoordX[14]=X0+dx*5 bCoordY[14]=Y0+dy*2 bName[15]="Total Refresh" ;6'!!! "0x0997"- bCoordX[15]=X0+dx*6 bCoordY[15]=Y0+dy*2 ;---------4 ряд ------------- bName[16]="Strength" ;7,' "0x0482"- bCoordX[16]=X0+dx*1 bCoordY[16]=Y0+dy*3 bName[17]="Greater Strength" ;7,' "0x0482"- bCoordX[17]=X0+dx*2 bCoordY[17]=Y0+dy*3 bName[18]="Shrink" ;8'!!! "0x0388"- bCoordX[18]=X0+dx*3 bCoordY[18]=Y0+dy*3 bName[19]="Invisibility" ;9'!!! "0x0631"- bCoordX[19]=X0+dx*4 bCoordY[19]=Y0+dy*3 bName[20]="Total Mana" ;10'!!! "0x09DF"- bCoordX[20]=X0+dx*5 bCoordY[20]=Y0+dy*3 bName[21]="Mana" ;10, "0x09DF"- bCoordX[21]=X0+dx*6 bCoordY[21]=Y0+dy*3 ;---------5 ряд --------------- bName[22]="Clever" ;11,' "0x0482"- bCoordX[22]=X0+dx*1 bCoordY[22]=Y0+dy*4 bName[23]="Greater Clever" ;11,' "0x0482"- bCoordX[23]=X0+dx*2 bCoordY[23]=Y0+dy*4 bName[24]="Bless" ;12,' "0x09C5"- bCoordX[24]=X0+dx*3 bCoordY[24]=Y0+dy*4 bName[25]="Greater Bless" ;12,' "0x09C5"- bCoordX[25]=X0+dx*4 bCoordY[25]=Y0+dy*4 bName[26]="Steelskin" ;13,' "0x0962"- bCoordX[26]=X0+dx*5 bCoordY[26]=Y0+dy*4 bName[27]="Stoneskin" ;14'!!! "0x0964"- bCoordX[27]=X0+dx*6 bCoordY[27]=Y0+dy*4 ;----------6 ряд ------------- bName[28]="Lesser Explosion" ;15 '"0x0B99" type=0x0F0D - bCoordX[28]=X0+dx*1 bCoordY[28]=Y0+dy*5 bName[29]="Greater Explosion" ;15-"0x0B99" bCoordX[29]=X0+dx*2 bCoordY[29]=Y0+dy*5 bName[30]="Explosion" ;15 '"0x0B99" bCoordX[30]=X0+dx*3 bCoordY[30]=Y0+dy*5 bName[31]="Lava Bomb" ;15'!!! "0x09DA" - bCoordX[31]=X0+dx*4 bCoordY[31]=Y0+dy*5 bName[32]="Antifreeze" ;16'!!! Colour: 0x09CF Type=0x0F03 - bCoordX[32]=X0+dx*5 bCoordY[32]=Y0+dy*5 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') if totalB==0 then ; -------------------- UO.Print('Выбери Бутылку (Bottle)') UO.Exec('addobject Item') while UO.Targeting() wait(100) wend UO.click('Item') wait(200) ItemType = UO.GetGraphic('Item') ; берем тип выбранного object ItemColor=uo.getcolor('Item') Itemname=Uo.GetName('Item') PrintInColor("ItemType="+ItemType, clw) PrintInColor("ItemColor="+ItemColor, clw) PrintInColor("ItemName="+ItemName, clw) else ItemColor="-1" ItemType =typeBottle end if ;------------------------------- var Tidx, k, TCount=3 ; cколько типов бутылок обрабатывать. Зависит от флага totalB. Если totalB=1, то перетаскивать все три типа бутылок. Если totalB=0 - то только выбранный тип. if totalB==1 then TCount=3 Tidx=0 else bType[0]=ItemType TCount=0 Tidx=0 end if cIdx=0 for k=Tidx to TCount-1 ;============================= ItemType=bType[k] UO.FindType(ItemType,ItemColor,'istok') If UO.FindCount() > 0 then repeat uo.click('finditem') wait(200) Itemname=Uo.GetName('finditem') PrintInColor(ItemName, cla) for i=0 to 32 if instr(Itemname,bName[i]) >-1 then ######## ИСПРАВИТЬ - выделить имя и сравнивать без количества cIdx=i ;i=15 end if next x=bCoordX[cIdx] y=bCoordY[cIdx] UO.MoveItem('finditem', '1111', 'priem',x,y,'0') wait(700) CheckLag() UO.FindType(ItemType,ItemColor,'istok') wait(400) until not UO.FindCount() UO.Print('Complete...') else UO.Print('Nothing to transfer...') endif next ;============================= end sub ############################################################ Sub CheckLag() UO.DeleteJournal() UO.Click('backpack') repeat Wait(250) until UO.InJournal('backpack') end sub ########################################### 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
|