Page 1 of 1

Помогите разобраться с минингом

Posted: 2013-01-31 16:01:59
by klim_killer

Code: Select all

sub main()
   var i
   uo.print("поехали")
   While UO.Life>0
      for i=1 to 17
         kopat()
         uo.press(34)
         wait(200)
         uo.press(34)
      next
      uo.print("GO назад =)")
      kopat()
      for i=1 to 17
         wait(500)
         uo.press(36)
      next
      uo.press(34)
   wend
end sub
sub kopat()
   var where_x,where_y,coords,i
   InfoLogs()
   UO.DeleteJournal()
   where_x=uo.getx()
   where_y=uo.gety()
   for i=-2 to 2
      uo.print("Тайл "+str(i+3)+"/5")
      coords="waittargettile "+" 1343 "+str(where_x)+" "+str(where_y+i)+" 0"
      uo.exec(coords)
      uo.exec("usetype '0x0E85'") # Здесь прописываем тип кирки
      UO.DeleteJournal()
      while (not (UO.InJournal("stop mining") or UO.InJournal("far")))
         wait(1000)
         ArmsLore()
      wend
   next
end sub
sub ArmsLore()
   while (uo.count('0x0E85')<1)
      uo.waittargettype('0x0f51')
      uo.useskill('Arms Lore')
      wait(10000)
   wend
end sub

Re: Помогите разобраться с минингом

Posted: 2013-02-01 14:56:00
by klim_killer
Вроде нашел ошибку, и буду тестить сегодня:

Code: Select all

sub kopat()
   var where_x,where_y,coords,i
   InfoLogs()
   UO.DeleteJournal()
   where_x=uo.getx()
   where_y=uo.gety()
   for i=-2 to 2
      uo.print("Тайл "+str(i+3)+"/5")
       coords="waittargettile "+" 1343 "+str(where_x)+" "+str(where_y+i)+" 0"
      uo.exec(coords)
                uo.deletejournal()
                  repeat
         uo.exec("usetype '0x0E85'") # Здесь прописываем тип кирки
        until uo.injournal('stop')
      wait(1000)
   next
end sub

Re: Помогите разобраться с минингом

Posted: 2013-02-01 15:10:48
by Mirage
Не плохо бы еще озвучивать вопрос чтобы получить ответ ;)

Re: Помогите разобраться с минингом

Posted: 2013-02-02 08:55:21
by klim_killer
Постоянно крашит скрипт... мое решение оказалось неверным).

Re: Помогите разобраться с минингом

Posted: 2013-02-02 11:00:31
by Mirage

Code: Select all

sub ArmsLore()
   while (uo.count('0x0E85')<1)
      uo.waittargettype('0x0f51')
      uo.useskill('Arms Lore')
      wait(10000)
   wend
end sub


while (uo.count('0x0E85')<1)
Не важно одета кирка или лежит в паке - она все равно посчитается в коунте.
Следовательно качание скилла не будет работать, следовательно

Code: Select all

      while (not (UO.InJournal("stop mining") or UO.InJournal("far")))
         wait(1000)
         ArmsLore()
      wend

не имеет смысла потому что сообщения stop mining не будет. Застрянет в вечном цикле. У тебя нет таймера для выхода из циклов.
По крайней мере так на серверах где я играл.

PS процедуры InfoLogs нет в скрипте.

Re: Помогите разобраться с минингом

Posted: 2013-02-02 12:05:46
by klim_killer

Code: Select all

      while (not (UO.InJournal("stop mining") or UO.InJournal("far")))
         wait(1000)
         ArmsLore()
      wend


Я вчера тоже так подумал, но. Данная процедура while идет сразу после попытки копать. Соответственно, пока есть кирки, он будет просто ждать по одной секунде, пока не выкопает всю руду. Потом копнет в след. тайле. Проверка количества кирок нужна для того, что бы в случае, если они закончились, начал качаться армслор.

Code: Select all

sub InfoLogs()

    uo.Print('Ó âàñ âñåãî '+str(uo.Count('0x19B9'))+' áóäóùèõ èíãîòîâ')
    uo.Print('Îñòàëîñü '+str(uo.Count('0x0E85'))+' êèðîê')
end sub


Причем если виснит скрипт (перестает копать, или просто крашит клиент), то происходит это по всей видимости на 5-м шаге (i=5).

Re: Помогите разобраться с минингом

Posted: 2013-02-02 15:19:53
by Mirage
чар ударил киркой и ждет сообщения в журнале пока не пролетит следующие сообщения:

Code: Select all

      while (not (UO.InJournal("stop mining") or UO.InJournal("far")))
         wait(1000)
         ArmsLore()
      wend

Из этого цикла чар выйдет. Потому что ожидаются сообщения - "по каким то причинам перестал копать" и "это далеко". Далеко это быть не может - координаты же прописаны, а стоп копанию может быть если армслора задействуется или ктото нападет. => вечный цикл.

Re: Помогите разобраться с минингом

Posted: 2013-02-02 15:50:55
by klim_killer
Играю на зулу. Стоит автолуп(на сервере), когда чар выкапывает все что можно в определенном месте, либо фэйл копания, выдается сообщение, "You stop mining."

Re: Помогите разобраться с минингом

Posted: 2013-02-03 10:31:11
by ZeroDX

Code: Select all

uo.exec("usetype '0x0E85'")

почему народ стал использовать такую форму вызова функций?

Re: Помогите разобраться с минингом

Posted: 2013-02-04 10:30:52
by klim_killer
Вроде нашел, на чем стопиться скрипт:

Code: Select all

while (not (UO.InJournal("stop mining") or UO.InJournal("far")))


В случае, если появляется надпись "It is too far away", чар перестает копать и стоит.

Re: Помогите разобраться с минингом

Posted: 2013-02-04 10:35:34
by Mirage
klim_killer wrote:Вроде нашел, на чем стопиться скрипт:

Маладэц.
А теперь прочитай что я написал чуть выше.

Re: Помогите разобраться с минингом

Posted: 2013-02-04 10:48:10
by klim_killer
Mirage, я не до конца понял, что ты написал, т.к. на других серверах, кроме зулу почти не играл. Особенности шарда: Бесконечный автолуп (в случае с минингом, до того момента, как все выкопаешь, либо фэйл случится. В обоих случаях, в конце появится сообщение: You stop mining). В шахте, где я копаю, атачить нельзя(Anti harm Area). Т.О. стоп копанию будет в каждом тайле. Армслор задействуется только в случае, когда закончились Кирки. Но вот почему в 2-х местах периодически появляется надпись It is too far away, я не знаю. И почему то мой скрипт на нее не реагирует.
Сегодня пришла мысль, запустить отдельный скрипт:

Code: Select all

sub main()
   while not uo.dead()
      if uo.injournal('far') then
       uo.say('Stop mining')
       wait(500)
      else
       wait(500)
      end if
   wend
end sub

Или я чего то не понимаю?

Просто в моем понимании, сейчас, скрипт реагирует на надпись stop, но не реагирует на надпись far. Или я просто туплю?