Page 1 of 2

опять переброс руды в банк

Posted: 2006-11-22 16:20:45
by 098
такая тема:

данный скрипт работает нормально
что он делает:

открывает банк(он в виде обычного сундука), берет всю руду, перекидывает в банк, в сумку,
но когда предел банка достигается, скрипт пытается пихнуть руду в банк, но она падает в бакпак и на этом зацикливается

ЦЕЛЬ:
*допустим что контрейнер банка уже открыт

итак: берет руду, открывает сумочку в банке, и перетаскивает руду НА руду(которая там предварительно лежит), таким образом руда запихивается...

Code: Select all

sub DropOre() 
var o,exit 
dim Ore[14] 
Ore[0]=0x19B9 
Ore[1]=0x19B7 
Ore[2]=0x19BA 
Ore[3]=0x19B8 
Ore[4]=0x0F11 
Ore[5]=0x0F16 
Ore[6]=0x0F18 
Ore[7]=0x0F15 
Ore[8]=0x0F10 
Ore[9]=0x0F0F 
Ore[10]=0x0F26 
Ore[11]=0x1F4C 
Ore[12]=0x0EED 
Ore[13]=0x0F20 
 
if uo.Waiting() then 
uo.CancelTarget() 
end if 
uo.useobject('0x4001CCB1')
wait(500) 
for o=0 to 13 
exit=0 
repeat 
uo.FindType(Ore[o]) 
if uo.GetQuantity('finditem')>0 then 
uo.moveitem('finditem', -1 ,'id_сумочки_в_банке') 
wait(500) 
else 
exit=1 
end if 
until exit==1 
next 

end sub

Posted: 2006-11-22 16:27:56
by Mihail
на руду? а смысл? в стопку она от эжтого не сложистя - просто будет 2 предмета друг на друга..
афтар перефразируй что ты хочешь

Posted: 2006-11-22 16:31:38
by 098
нет, у меня стопку ложится :o :)
я немного подумав, понял, есл использовать moveitem то придется каждый раз получать ID каждой стопки руды
ноя не знаю как это сделать

Posted: 2006-11-22 16:34:55
by Mihail
объясните мне что он хочет?:(

Posted: 2006-11-22 16:41:04
by 098
прдеставь что я -скрипт :D :D :D :)

1открыл банк
2открыл в банке сумочку
3 нашел там руду
4получаю ИД руды, лежащей в сумочке
5 uo.moveitem руды, лежащей в бепаке НАА РУДУ Лежащую в сумоче банка, делается это по полученному ранее ИД

понятно? :roll:

короче говоря моя проблема в том что емкость БАНКА ОГРАНИЧЕНА
А
если положить стопку НА стопку то она положится..,такой финт работает и с рудой

Posted: 2006-11-22 16:52:02
by omi4
примерно так

Code: Select all

sub DropOre(bank)
	dim ore[4]
	var ores
	ore[0]=0x19B7 ; 1 ore
	ore[1]=0x19BA ; 2 ore
	ore[2]=0x19B8 ; 3 ore
	ore[3]=0x19B9 ; 4 and more ore

	for var i = 0 to i > 4
		while UO.Count(ore[i])
			ores = UO.GetSerial('^' + ore[i])
			UO.FindType(ore[3], UO.GetColor(ores), bank)
			if UO.FindCount() then
				UO.MoveItem(ores, 0, 'finditem')
			else
				UO.MoveItem(ores, 0, bank)
			endif
		wend
	next
end sub

Posted: 2006-11-22 16:55:45
by 098
пишет Invalid Number of Arguments(послденяя строчка)

и Variable Undefied- Ores
все строчки где есть Ores

чорьте- я в инже мало разбираююсь :(

Posted: 2006-11-22 17:00:06
by Mihail
ищет руду в паке и перемещает на такой же тип руды в банке

Code: Select all

[code]var sunduk='0x4001CCB1' #сумка в банке

Dim Ore[14] 
Ore[0]=0x19B9 
Ore[1]=0x19B7 
Ore[2]=0x19BA 
Ore[3]=0x19B8 
Ore[4]=0x0F11 
Ore[5]=0x0F16 
Ore[6]=0x0F18 
Ore[7]=0x0F15 
Ore[8]=0x0F10 
Ore[9]=0x0F0F 
Ore[10]=0x0F26 
Ore[11]=0x1F4C 
Ore[12]=0x0EED 
Ore[13]=0x0F20 

sub DropOre()
#############
var i
uo.useobject(sunduk)
checklag()
for i=0 to 13 
repeat 
uo.FindType(Ore[i],-1,2)
if uo.findcount() then 
uo.moveitem('finditem',0,sunduk,itemxyz(i)) 
wait(500) 
end if 
until uo.findcount()==0 or uo.dead()
next 
uo.print('unloaded')
end sub 

sub itemxyz(i)
var xyz='0,0,0'
uo.findtype(Ore[i],-1,sunduk)
if uo.findcount() then
xyz=str(uo.getx('finditem'))+','+str(uo.gety('finditem'))+','+str(uo.getz('finditem'))
end if
return xyz
end sub
[/code]
ну че-та типа этого..
не забудь открыть банк перед запуском

Posted: 2006-11-22 17:05:42
by 098
Variable Undefied- FINDITEM
вот здес вот
xyz=str(uo.getx(finditem))+','+str(uo.gety(finditem))+','+str(uo.getz(finditem))

Posted: 2006-11-22 17:34:16
by Destruction
Кавычки поставь, это не переменная, а объект.

Posted: 2006-11-22 17:56:27
by 098
нет(((
он зацикливается

и вот что получеатся
Image

Posted: 2006-11-22 18:02:10
by Mihail

Code: Select all

var sunduk='0x4001CCB1' #сумка в банке

Dim Ore[14] 
Ore[0]=0x19B9 
Ore[1]=0x19B7 
Ore[2]=0x19BA 
Ore[3]=0x19B8 
Ore[4]=0x0F11 
Ore[5]=0x0F16 
Ore[6]=0x0F18 
Ore[7]=0x0F15 
Ore[8]=0x0F10 
Ore[9]=0x0F0F 
Ore[10]=0x0F26 
Ore[11]=0x1F4C 
Ore[12]=0x0EED 
Ore[13]=0x0F20 

sub DropOre()
#############
var i
uo.useobject(sunduk)
checklag()
for i=0 to 13 
repeat 
uo.FindType(Ore[i],-1,2)
if uo.findcount() then 
uo.moveitem('finditem',0,sunduk,itemxyz(i)) 
wait(500) 
end if 
until uo.findcount()==0 or uo.dead()
next 
uo.print('unloaded')
end sub 

sub itemxyz(i)
var xyz='0,0,0'
uo.findtype(Ore[i],-1,sunduk)
if uo.findcount() then
xyz=str(uo.getx('finditem'))+','+str(uo.gety('finditem'))+','+str(uo.getz('finditem'))
end if
return xyz
end sub
там случайно sunduk в кавычках стоял :oops:

Posted: 2006-11-22 18:10:50
by 098
я прально понимаю что надо переменную сундука и масси в пихнутьв тело скрипта DropOre?
ато иначе пишет Unhandled Exception in parser
далее

checklag- funckion not fuond (удалил строку)

sunduk- Variable Undefied (посадил в кавычки)
ore- Variable Undefied(посадил в кавычки)

теперь тоже самое- также циклится

Posted: 2006-11-22 18:15:35
by omi4
Для того чтобы стековать итемы, нужно не кидать по координатам, а кидать в стопку как в контейнер. При этом не забываем про цвет руды… А так кидать можно вечно.

Posted: 2006-11-22 18:41:25
by Mihail
098 wrote:checklag- funckion not fuond (удалил строку)
см. прилепленный топ "полезности"
sunduk- Variable Undefied (посадил в кавычки)
ore- Variable Undefied(посадил в кавычки)
молодец теперь он ищет предмет с ID=sunduk...


p.s.
5 uo.moveitem руды, лежащей в бепаке НАА РУДУ Лежащую в сумоче банка
вот я и спрашивал что значит "НА" руду.. тут не "на" а "в" надо..

p.p.s. кидание в руду лень писать - но используй в скрипте UO.SetReceivingCounatner('ID кучки руды')

Posted: 2006-11-22 20:32:05
by omi4
Все что нужно уже написал, разобратся в 15 строках с учебником не проблема

Posted: 2006-11-22 22:35:59
by Mihail
ладно афтар, сеня я добрый, на:

Code: Select all

var sunduk='0x40001AB7' #сумка в банке 


sub DropOre()
############# 
var i, j
Dim Ore[14] 
Ore[0]='0x19B9'
Ore[1]='0x19B7' 
Ore[2]='0x19BA' 
Ore[3]='0x19B8' 
Ore[4]='0x0F11' 
Ore[5]='0x0F16' 
Ore[6]='0x0F18' 
Ore[7]='0x0F15' 
Ore[8]='0x0F10' 
Ore[9]='0x0F0F' 
Ore[10]='0x0F26'
Ore[11]='0x1F4C' 
Ore[12]='0x0EED' 
Ore[13]='0x0F20'
uo.useobject(sunduk) 
checklag() 
for i=0 to 13 
repeat 
uo.FindType(Ore[i],-1,2) 
if uo.findcount() then
j=uo.getserial('finditem')
uo.setreceivingcontainer(item(uo.getgraphic('finditem'),uo.getcolor('finditem')))
uo.grab('0',j)
wait(500)
uo.ignore('finditem')
end if 
until uo.findcount()==0 or uo.dead() 
next 
uo.ignorereset()
uo.print('unloaded') 
end sub 

sub item(type,color)
uo.findtype(type,color,sunduk)
if uo.findcount() then 
return uo.getserial('finditem')
else
return 'backpack'
end if 
end sub

Posted: 2006-11-23 10:02:43
by 098
теперь руда куда пропадает на 10 секунд и опять ложится в бэкпак

Posted: 2006-11-23 13:32:10
by Nmy
аа вы уже разобрались :roll:

Posted: 2006-11-23 13:41:14
by 098
НЕТ
МЫ НЕ РАЗОБРАЛИСЬ ЕЩЕ!
ПЛИЗ ПОМОГИ