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

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
klim_killer
Posts: 20
Joined: 2006-03-27 00:03:20

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

Post 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
klim_killer
Posts: 20
Joined: 2006-03-27 00:03:20

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

Post 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
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post by Mirage »

Не плохо бы еще озвучивать вопрос чтобы получить ответ ;)
klim_killer
Posts: 20
Joined: 2006-03-27 00:03:20

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

Post by klim_killer »

Постоянно крашит скрипт... мое решение оказалось неверным).
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post 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 нет в скрипте.
klim_killer
Posts: 20
Joined: 2006-03-27 00:03:20

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

Post 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).
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post by Mirage »

чар ударил киркой и ждет сообщения в журнале пока не пролетит следующие сообщения:

Code: Select all

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

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

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

Post by klim_killer »

Играю на зулу. Стоит автолуп(на сервере), когда чар выкапывает все что можно в определенном месте, либо фэйл копания, выдается сообщение, "You stop mining."
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

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

Post by ZeroDX »

Code: Select all

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

почему народ стал использовать такую форму вызова функций?
klim_killer
Posts: 20
Joined: 2006-03-27 00:03:20

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

Post by klim_killer »

Вроде нашел, на чем стопиться скрипт:

Code: Select all

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


В случае, если появляется надпись "It is too far away", чар перестает копать и стоит.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post by Mirage »

klim_killer wrote:Вроде нашел, на чем стопиться скрипт:

Маладэц.
А теперь прочитай что я написал чуть выше.
klim_killer
Posts: 20
Joined: 2006-03-27 00:03:20

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

Post 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. Или я просто туплю?
Post Reply