Майнинг останавливается

Ask for help

Moderators: Murderator+, Murderator

Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Майнинг останавливается

Post by Виталь »

Такая проблема:
Чар заканчивает обращение к клетке (будь то "You put", "too far", "loosen" — с любым результатом) и просто останавливается. Как будто проверку на сообщение в журнале вообще отключили. Проявляется это совершенно спонтанно — копал-копал и перестал, но скрипт висит.
Если копнуть вручную, действие выполняет и продолжает работу скрипта, как ни в чем не бывало.

Гляньте, пожалуйста. Мож я напортачил чего.

Code: Select all

sub mining()
   var mx, my, mz, i, j
   mining:
      uo.deletejournal()
      mx = uo.getx("self")
      my = uo.gety("self")
      mz = uo.getz("self")
      
      uo.deletejournal()
      for i = mx-4 to mx+4
      for j = my-4 to my+4
         
         uo.print("Копаем в координатах: "+str(mx-i)+" "+str(my-j))
         counter()
         
         while not UO.InJournal("no ore here|location|far away|in rock|beyond|loosen|target")   
            hide()
            
            if uo.waiting() then
               uo.canceltarget()
            endif
            
            uo.waittargettile("1341", str(i), str(j), str(mz))
            uo.usetype(Shovel)
            while not uo.injournal("You put|heavy|location|no ore|but fail|far away|in rock|nothing")
               wait (200)
            wend
            
            if uo.weight >= maxweight then
               end()
            endif
         wend
         uo.deletejournal()
      next
      next
      goto mining
end sub

sub hide()
   while not uo.hidden()
      uo.deletejournal()
      if uo.injournal("preoccupied") then
         uo.exec("warmode '1'")
         wait(100)
         uo.exec("warmode '0'")
      endif
      uo.print("Прячемся...")
      uo.useskill("Stealth")
      wait(4000)
   wend
end sub
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Ну, быстрее всего, не при любом сообщении, а именно при "loosen". Потому как в внутреннем цикле ожидания (динамической паузе) это сообщение не упомянуто. Поэтому когда оно выскочит, чар остановится и будет ждать. А когда снова копнешь вручную, появится другое сообщение, вот скрипт и продолжит работу.

Code: Select all

while not uo.injournal("You put|heavy|location|no ore|but fail|far away|in rock|nothing")
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

Edred, спасибо, что посмотрел!

Но останавливается на самом деле независимо от сообщения. Может выкопать и остановиться.

Хайдинг не может быть причиной?
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

"А может все было наоборот..."
Возможно длальше второго цикла никуда и не уходим... потому как сообщения не соответствуют действительность -> в журнали клилоки

wait (200) в полне достаточно чтобы паралельный скрипт стер журнал... но это 1 раз... каждый раз такое врятли удастся...
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Ха, так хайдинг запущен параллельно? Автору - напоминание: телепаты в отпуске. Нужна помощь - будь добр подробнейше описать все, что делается.

Журнал у инжекта один, если второй скрипт стирает журнал, то первому никаких сообщений не достанется. Проблема наверняка в этом. Решение - зачем во втором скрипте стирать журнал? Переделать.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Эд там цикл стирания раз в 4 сек...
унего же 0.2 сек проверка...
что бы совпало, надо постаратся.
grundick
Posts: 258
Joined: 2006-11-25 17:44:44

Post by grundick »

Хайд у него запускается не параллеьно, а перед самой копкой.так что все в норме. Автор, в первом While вставь еще проверку по таймеру ,чтоб он у тебя на одном тайле больше определенного времени не копал. Проблема отпадет...

Code: Select all

t=uo.Timer()
while not (UO.InJournal("bla bla bla") or ((t + 3000) < UO.Timer()))
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

Grin wrote:wait (200) в полне достаточно чтобы паралельный скрипт стер журнал... но это 1 раз... каждый раз такое врятли удастся...

Deletejournal стоял в майнинге, прямо перед хайдом. Я перенес его в хайд в надежде, что это решит проблему, правда сейчас смотрю - и понимаю, что проблемы это не решило и не решит xD

В смысле проблема осталась и после переноса делита в хайд.
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

Edred wrote:Нужна помощь - будь добр подробнейше описать все, что делается.

Описал настолько подробно, насколько я в курсе этой проблемы.
Чар может остановиться и на третьей клетке, после запуска скрипта, и на двадцать третьей. Хоть после третьего рекола в дом и последующего возврата в шахту.

Скрипт просто висит запущенным и ждет (насколько я понял) сообщения в журнале, как будто его не было.
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

Grin wrote:Эд там цикл стирания раз в 4 сек...
унего же 0.2 сек проверка...
что бы совпало, надо постаратся.

Стирание стояло непоследственно в начале цикла:

Code: Select all

while not UO.InJournal("no ore here|location|far away|in rock|beyond|loosen|target")
uo.deletejournal()
hide()


В хайде стирания вообще не было. Я перенес стирание в хайд в надежде, что это решит проблему. К тому же реакция на "preoccupied" не срабатывала.
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

grundick wrote:Автор, в первом While вставь еще проверку по таймеру ,чтоб он у тебя на одном тайле больше определенного времени не копал. Проблема отпадет...

Code: Select all

t=uo.Timer()
while not (UO.InJournal("bla bla bla") or ((t + 3000) < UO.Timer()))

Спасибо, а worldsave таймеру не помешает?
grundick
Posts: 258
Joined: 2006-11-25 17:44:44

Post by grundick »

а почему он ему должен помешать? ну даже если очень длинный будет сейв, перескочит он через пару клеток...300с=5мин...
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

Об этом я и спрашивал.
Ну, проблемы избежали, спасибо grundick. А как ее все-таки решить? Могут ли лаги быть виной тому, что сообщение-результат пропускается скриптом?
grundick
Posts: 258
Joined: 2006-11-25 17:44:44

Post by grundick »

Блин, проверку ВО ВТОРОМ WhiLe НАДО! Что то я туплю :) А хз что тому виной.Тоже сталкивался с такой проблемой.То ли от сервера мессага не приходит, то ли инжект её не читает. :roll:
grundick
Posts: 258
Joined: 2006-11-25 17:44:44

Post by grundick »

Гринушка, займись делом :) Прошу тебя :)
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Grin wrote:"А может все было наоборот..."
Возможно длальше второго цикла никуда и не уходим... потому как сообщения не соответствуют действительность -> в журнали клилоки
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

grundick wrote:Блин, проверку ВО ВТОРОМ WhiLe НАДО! Что то я туплю :)

Да всё в порядке, во второй бы и вставил *)
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

Grin wrote:"А может все было наоборот..."
Возможно длальше второго цикла никуда и не уходим... потому как сообщения не соответствуют действительность -> в журнали клилоки

Какие клилоки — я же написал, что останавливается совершенно спонтанно. Не после первого копания, и даже не после первой клетки. Это может быть «4,2» или «-2,3» — что угодно.
Виталь
Posts: 97
Joined: 2005-08-09 23:16:57
Contact:

Post by Виталь »

[quote="Grin"][/quote]
Извини, что-то резковато получилось *)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

"Подробнейше" - это значит, что начать стоит с версии инжекта, клиента, названия и адреса шарда. Так, для затравки.

Также меня весьма интересует, правда ли на этом шарде можно копать квадрат 9х9 вокруг чара, или, все-таки, 5х5 как на большинстве шардов, а автор просто ошибся. Потому как если последнее - то на самом деле чар не стоит, он пытается достать до указанных тайлов, но не может. Вот и стоит и перебирает их. 5х5 - это 25 тайлов, 9х9 - это 81. То есть 56 тайлов лишних.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Post Reply