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
НЕТ
МЫ НЕ РАЗОБРАЛИСЬ ЕЩЕ!
ПЛИЗ ПОМОГИ