Переклад и расклад

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
kobol
Posts: 119
Joined: 2012-12-15 12:03:25
Location: C-Петербург

Переклад и расклад

Post by kobol »

Хочу здесь выкладывать скрипты на тему переклада вещей с одного места на другое, их сортировки и расклада по координатам в контейнере.
Например
Переклад драгкамней.
Работа:
Таргет на сундук-источник, таргет на сундук-приемник.

Code: Select all

###########################################
sub perekladGEM()
   #****ДРВ*****#
   # (C) Cooper
   #modified by Kobol 2013
   #****v1.0****#
   VAR Ttov, tovar
   var i
   uo.charprint('1069','Берем другую сумку') ; = красивая надпись над персонажем видимая только хозяину.
   dim gem[34]
   gem[0]=0x0F10 ;emerald
   gem[1]=0x0F11 ;a sapphire
   gem[2]=0x0F12 ;Краска для волос
   gem[3]=0x0F13 ;Краска для волос
   gem[4]=0x0F14 ;Краска для волос
   gem[5]=0x0F15 ;citrin
   gem[6]=0x0F16 ;Краска для волос
   gem[7]=0x0F17 ;Краска для волос
   gem[8]=0x0F18 ;Турмалины
   gem[9]=0x0F19 ;Сапфиры
   gem[10]=0x0F1A ;Турмалины
   gem[11]=0x0F1B ;Турмалины
   gem[12]=0x0F1C ;Турмалины
   gem[13]=0x0F1D ;Турмалины
   gem[14]=0x0F1E ;Турмалины
   gem[15]=0x0F1F ;Сапфиры
   gem[16]=0x0F20 ;diamond
   gem[17]=0x0F21 ;diamond
   gem[18]=0x0F22 ;amethist
   gem[19]=0x0F23 ;Ситрины citrin
   gem[20]=0x0F24 ;Ситрины citrin
   gem[21]=0x0F25 ;an piece of amber
   gem[22]=0x0F26 ;diamond
   gem[23]=0x0F27 ;diamond
   gem[24]=0x0F28 ;a diamond
   gem[25]=0x0F29 ;a diamond
   gem[26]=0x0F2A ;a ruby
   gem[27]=0x0F2B ;a ruby
   gem[28]=0x0F2C ;a ruby
   gem[29]=0x0F2D ;a tourmaline
   gem[30]=0x0F2E ;emerald
   gem[31]=0x0F2F ;star sapphire
   gem[32]=0x0F30 ;diamonds
   gem[33]=0x0F0F ;star sapphire
   UO.Print('Выбери ИСТОЧНИК')
   UO.Exec('addobject istok')
   while UO.Targeting()
      wait(100)
   wend
   UO.UseObject('istok')
   UO.Print('Выбери ПРИЕМНИК')
   UO.Exec('addobject priem')
   while UO.Targeting()
      wait(100)
   wend
   ;UO.Print('Выбери ТОВАР')
   ;UO.Exec('addobject tovar')
   ;while UO.Targeting()
   ;wait(100)
   ;wend
   for i=0 to 33
      tovar=gem[i]
      ;TTov = UO.GetGraphic('tovar')
      UO.Print('tovar ='+str(tovar ))
      UO.FindType(tovar,'-1','istok')
      UO.Print('Found '+str(UO.FindCount())+' gem N '+str(i))
      If UO.FindCount() > 0 then
         repeat
            UO.MoveItem('finditem', '0', 'priem')
            wait(1000)
            UO.FindType(tovar,'-1','istok')
         until not UO.FindCount()
         UO.Print('Finished gem N '+str(i))
      else
         UO.Print('Not found gem N ' +str(i))
      endif
   next
   UO.Print('pereklad complete ' )
end sub
kobol
Posts: 119
Joined: 2012-12-15 12:03:25
Location: C-Петербург

Re: Переклад и расклад

Post by kobol »

Переклад бутылок с раскладом по координатам.

Code: Select all

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

kobol
Posts: 119
Joined: 2012-12-15 12:03:25
Location: C-Петербург

Re: Переклад и расклад

Post by kobol »

Для старой инжи.
Переклад вандов с раскладкой по координатам. Но все равно вручную найти нужный ванд невозможно )
Указывем источник, указываем приемник.
Если попадается нераспознанный ванд, автоматически юзается Item Identification.
Координаты жестко привязаны к именам вандов, задаются в массиве.

Code: Select all

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


tuxuu1988
Posts: 9
Joined: 2014-02-10 21:35:42

Re: Переклад и расклад

Post by tuxuu1988 »

можно ли к етому скрипту приделать так чтоб он например перетаскивал токо то количество бутылок каторое надо мне
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Переклад и расклад

Post by Mirage »

к этому какому? Тут 3 скрипта. А так можно :roll:
tuxuu1988
Posts: 9
Joined: 2014-02-10 21:35:42

Re: Переклад и расклад

Post by tuxuu1988 »

к 2 скрипту где с алхимиеи а то я вот делаю вар паки специально для продажи было бы хорошо если было бы по количеству
Post Reply