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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
GrandMaster Ranger
Posts: 73
Joined: 2005-01-14 13:41:05
Location: Одесса - мама
Contact:

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

Post 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
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post 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   ??
GrandMaster Ranger
Posts: 73
Joined: 2005-01-14 13:41:05
Location: Одесса - мама
Contact:

Post by GrandMaster Ranger »

- на полу лежит руда разных цветов
- радиус 2 тайла от чара
- руды очень большое количество, но она лежит маленькими порциями друг на друге ( то есть итемов очень много )
- задача скрипта- разтолкать все эти маленькие стопки в одну, тоесть чтобы на полу осталась лишь по одной стопке данного цвета.
- скорее всего маленькие стопки, что лежат на полу, в бекпак не влезут, то есть "собирать в кучу" их прийдется не кладя в бекпак изначально.

спасибо что уже пытаешься чемто помочь :roll:
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Сходу не разбираясь вижу что:

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

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

Code: Select all

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

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

3. На три if приходится один endif
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Edred wrote:Сходу не разбираясь вижу что:

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

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

Code: Select all

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

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

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

В след. раз прочитай содержимое темы.
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Попробуй на пол бросить несколько мешков и чтоб чар сбрасывал каждую руду в свой мешок. По определению руда при перетаскивании на мешок, должна там изначально в 1 кучу падать.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
Post Reply