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
нет, у меня стопку ложится
я немного подумав, понял, есл использовать moveitem то придется каждый раз получать ID каждой стопки руды
ноя не знаю как это сделать
Posted: 2006-11-22 16:34:55
by Mihail
объясните мне что он хочет?:(
Posted: 2006-11-22 16:41:04
by 098
прдеставь что я -скрипт
1открыл банк
2открыл в банке сумочку
3 нашел там руду
4получаю ИД руды, лежащей в сумочке
5 uo.moveitem руды, лежащей в бепаке НАА РУДУ Лежащую в сумоче банка, делается это по полученному ранее ИД
понятно?
короче говоря моя проблема в том что емкость БАНКА ОГРАНИЧЕНА
А
если положить стопку НА стопку то она положится..,такой финт работает и с рудой
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
нет(((
он зацикливается
и вот что получеатся

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 в кавычках стоял

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
аа вы уже разобрались

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