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

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
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
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 кучу падать.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
Post Reply