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

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