Page 1 of 1

помогите со стекированием

Posted: 2006-11-19 13:41:00
by GrandMaster Ranger
чтото у меня скрипт не клеится :) если он очень кривой- не ругайте сильно, я в инже не проффесионал :)
кароче, есть скрипт на мининг с тотемом. крафт облетает по рб шахтыи сносит все в кастл. пишет под крышей дроп, тотем скидывает все на пол и улетает себе дальше копать. но итемов то которые он скидывает ( руда ) очень много. за ночь ОЧЕЕНЬ даже много :) вручную все это стекировать очень нудно. попытался написать скрипт который разложит все эте итемы по ЦВЕТАМ в 1 кучку. не получилось. возможно я пошёл вобще по невозможному пути... однако помогите :roll:

Code: Select all

sub Stack()
   var GroundItem, PackItem, i, ruda
   PackItem = ''
   GroundItem = ''
   ruda = '0x19B9'
   Dim Ore[3]
Ore[1]= 0x0042 ;  #цвет руды#
Ore[2]= 0x0602 ; 
Ore[3]= 0x0000 ;
UO.exec('set distance 2')
UO.exec('set finddistance 2')
while uo.weight < 3000
   UO.FindType(ruda,'-1','ground')
   while UO.FindCount() > 5
   for i=1 to 4
   uo.FindType(ruda,Ore[i],'ground')
   if UO.CountGround(ruda) then
      PackItem = '^'+ruda
      Uo.ignore('finditem')
      uo.FindType(ruda,Ore[i],'ground')
   if UO.CountGround(ruda) then
      GroundItem = '~'+ruda
      wait(500)
   if ((PackItem <> '') and (GroundItem <> '')) then
      UO.MoveItem(PackItem,STR(UO.GetQuantity(PackItem)),GroundItem,'0','0','0')
     i = i + 1
     wend
     end if
end sub

Posted: 2006-11-19 14:24:35
by Scripts Writer
Намудрил выше крыши.

Напиши четко свою задачу, разберись как и что должно делаться и будет проще. Я помогу если всё понятно напишешь по пунктам.

Очередной пример как никогда не надо писать скрипты. Для новичков поясняю: Табуляция выглядит следующим образом:

Code: Select all

while not uo.Dead()
  if ... then
    for i = 0 to 5
      repeat
        wait(100)
        if ... then
          uo.Print('Hi')
        else
          while uo.FindCount()
            wait(500)
          wend
        end if
      until
    next
  end if
wend

Для каждого оператора выбора условия или же цикла, должно соблюдаться определённое правило. У этих операторов всегда должны быть начало и конец( if - end if, while - wend , for - next , repeat - until ). Для удобности чтения, существует табуляция(отступы) -наглядно показано на примере скрипта выше.
Чтобы небыло ситуации написаной ниже, удобнее делать отступы и смотреть что,где и как надо закрывать.

п.с. Автор, выкинь скрипт и начни дай новую жизнь скрипту здесь.
А Вот так писать не надо:

Code: Select all

while uo.weight < 3000 
   UO.FindType(ruda,'-1','ground')
   while UO.FindCount() > 5
     for i=1 to 4
       uo.FindType(ruda,Ore[i],'ground')
       if UO.CountGround(ruda) then
         PackItem = '^'+ruda
         Uo.ignore('finditem')
         uo.FindType(ruda,Ore[i],'ground')
         if UO.CountGround(ruda) then
          GroundItem = '~'+ruda
          wait(500)
          if ((PackItem <> '') and (GroundItem <> '')) then
            UO.MoveItem(PackItem,STR(UO.GetQuantity(PackItem)),GroundItem,'0','0','0')
            i = i + 1
  ??   wend    ??
  ??   end if   ??

Posted: 2006-11-19 14:45:06
by GrandMaster Ranger
- на полу лежит руда разных цветов
- радиус 2 тайла от чара
- руды очень большое количество, но она лежит маленькими порциями друг на друге ( то есть итемов очень много )
- задача скрипта- разтолкать все эти маленькие стопки в одну, тоесть чтобы на полу осталась лишь по одной стопке данного цвета.
- скорее всего маленькие стопки, что лежат на полу, в бекпак не влезут, то есть "собирать в кучу" их прийдется не кладя в бекпак изначально.

спасибо что уже пытаешься чемто помочь :roll:

Posted: 2006-11-19 22:46:35
by Edred
Сходу не разбираясь вижу что:

1. у цикла for нет конца (next)

2. While и If пересекаются, то есть:

Code: Select all

while...
...
if...
...
wend
...
endif

Это недопустимая ситуация.

3. На три if приходится один endif

Posted: 2006-11-20 20:11:41
by Scripts Writer
Edred wrote:Сходу не разбираясь вижу что:

1. у цикла for нет конца (next)

2. While и If пересекаются, то есть:

Code: Select all

while...
...
if...
...
wend
...
endif

Это недопустимая ситуация.

3. На три if приходится один endif

В след. раз прочитай содержимое темы.

Posted: 2006-11-20 23:00:48
by slonopotam
Попробуй на пол бросить несколько мешков и чтоб чар сбрасывал каждую руду в свой мешок. По определению руда при перетаскивании на мешок, должна там изначально в 1 кучу падать.