Мининг Ветра и переделанный мной...

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Мининг Ветра и переделанный мной...

Post by tylllkah »

Проблема в мининге ветра иногда сбивается из-за GoTo:
в моем проблема, копает и резко останавливается
ветра

Code: Select all

sub maning()
   var mx, my, mz, i, j, jor, ser, noto
   na4alo:
   noto=0
   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
         while not UO.Hidden()
            UO.Warmode(0)
            uo.print("Прячемся...")
            UO.UseSkill("Hiding")
            wait(2500)
         wend
         UO.Print("Копаем в координатх: "+str(mx-i)+" "+str(my-j))
         while not UO.InJournal("no ore here|location|far away|in rock|Iron Ore|Copper|Rusty Ore")
            UO.DeleteJournal()
            if uo.waiting() then
               uo.canceltarget()
            endif
            UO.Waittargettile("1341", str(i), str(j), str(mz))
            If uo.count(Shovel) then
            uo.usetype(Shovel)
            end if
            if uo.injournal('You loosen some rocks but fail') then
               wait(10000)
            endif
            while not UO.InJournal("You put|heavy|location|no ore|but fail|far away|in rock")
               wait (500)
               for jor = 0 to 9
                  ser = uo.journalserial(jor)
                  if ser == uo.getserial('self') then
                     noto = 0
                  else
                     noto = uo.getnotoriety(ser)
                  endif
               next
            wend
            if uo.weight > 500 then # Максимальный вес
               goto end
            endif
         wend
         UO.DeleteJournal()
      next
   next
   goto na4alo
   end:
   if uo.waiting() then
     uo.canceltarget()
   endif
while not UO.Hidden()
UO.Warmode(0)
uo.print("Прячемся...")
UO.UseSkill("Hiding")
wait(2500)
wend
reccal:
uo.deletejournal()
if uo.waiting() then
uo.canceltarget()
endif
wait(500)
goto na4alo
end sub


мой

Code: Select all

sub maning()
   var mx, my, mz, i, j, jor, ser, noto
while not uo.dead()
#repeat
   noto=0
   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
         while not UO.Hidden()
            UO.Warmode(0)
            uo.print("Прячемся...")
            UO.UseSkill("Hiding")
            wait(2500)
         wend
         UO.Print("Копаем в координатх: "+str(mx-i)+" "+str(my-j))
         while not UO.InJournal("no ore here|location|far away|in rock|Iron Ore|Copper|Rusty Ore")
            UO.DeleteJournal()
            if uo.waiting() then
               uo.canceltarget()
            endif
            UO.Waittargettile("1341", str(i), str(j), str(mz))
            If uo.count(Shovel) then
            uo.usetype(Shovel)
            end if
            if uo.injournal('You loosen some rocks but fail') then
               wait(10000)
            endif
            while not UO.InJournal("You put|heavy|location|no ore|but fail|far away|in rock")
               wait (500)
               for jor = 0 to 9
                  ser = uo.journalserial(jor)
                  if ser == uo.getserial('self') then
                     noto = 0
                  else
                     noto = uo.getnotoriety(ser)
                  endif
               next
            wend
            if uo.weight > 500 then # Максимальный вес
               end()
            endif
         wend
         UO.DeleteJournal()
      next
   next
wend
#until uo.dead()
end sub

sub end()
   if uo.waiting() then
     uo.canceltarget()
   endif
while not UO.Hidden()
             UO.Warmode(0)
             uo.print("Прячемся...")
             UO.UseSkill("Hiding")
             wait(2500)
wend
       uo.deletejournal()
            if uo.waiting() then
               uo.canceltarget()
            endif
wait(500)
end sub
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мининг Ветра и переделанный мной...

Post by Mirage »

Code: Select all

               if uo.injournal('You loosen some rocks but fail') then
                  wait(10000)
               endif

В твоем скрипте в случае неудачи чар будет стоять 10 секунд.
Это на вскидку.
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг Ветра и переделанный мной...

Post by tylllkah »

Мираж спасибо буду пробывать! Помнишь я уже обращался с такой ошибкой? Вот вопрос такой у меня скрипт этот повторяется пока я не умер, то есть остальные скрипты я могу изменить включение с эксес на обычные?
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Мининг Ветра и переделанный мной...

Post by ZeroDX »

Mirage wrote:В твоем скрипте в случае неудачи чар будет стоять 10 секунд.

а ещё тут черт ногу сломит
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг Ветра и переделанный мной...

Post by tylllkah »

ZeroDX wrote:
Mirage wrote:В твоем скрипте в случае неудачи чар будет стоять 10 секунд.

а ещё тут черт ногу сломит

Почему?
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг Ветра и переделанный мной...

Post by tylllkah »

Еще объясните за что отвечают эти строчки

Code: Select all

          for jor = 0 to 9
              ser = uo.journalserial(jor)
              if ser == uo.getserial('self') then
                 noto = 0
             else
                 noto = uo.getnotoriety(ser)
             endif
          next

Исходник выглядит так:

Code: Select all

for jor = 0 to 9    
ser = uo.journalserial(jor)
noto = uo.getnotoriety(ser)
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then
if uo.waiting() then
uo.canceltarget()
endif
wait(600) ; время в секундах при ожидании пока уйдет ПК
loot()
wait(3000)
end()
endif
next

Как я понял это связанно с появлением пка, не с элементом...

И такой вопрос, если программа которая типо как инжа, но не заходит в игру а просто прогоняет весь скрипт, с различными условиями и пишет где ошибки, при этом работает не от ультимы или вообще автономно? Я видел тут, но пока не скачивал это чтоы выше описал или почти?
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Мининг Ветра и переделанный мной...

Post by ZeroDX »

tylllkah wrote:
ZeroDX wrote:
Mirage wrote:В твоем скрипте в случае неудачи чар будет стоять 10 секунд.

а ещё тут черт ногу сломит

Почему?

потомучто исходник - сама древность. почему в поиске преобладают именно огромные без отстувов старые скрипты с goto и поиском пк по "злобности"?

вот например

Code: Select all

If uo.count(Shovel) then
   uo.usetype(Shovel)
end if

зачем это условие? ну не будет лопаты\кирки, дальше что? ничего! встранет также, как если бы этого условия не было. хайд повторяется 2 раза - не проще ли было вынести в отдельную функцию с динамической паузой и всеми наворотами. таймеры отсутствуют наглухо... а зря
tylllkah wrote:Как я понял это связанно с появлением пка, не с элементом...

направление верное, но как бы сказать странно смотрится =D

Code: Select all

wait(600) ; время в секундах при ожидании пока уйдет ПК

в секундах? :roll: норм идея... подождать 10 мин в шахте, пока не уйдёт нечто, обнаруженное по скану журнала.

и ещё

Code: Select all

if uo.waiting() then
  uo.canceltarget()
endif
ставить такую конструкцию перед ловушкой - это как минимум бессмысленно. ловушки не ставятся в очередь или стек

ЗЫ сорри если пост выглядит как что-то злобное. всё было написано нежными руками с любовью :lol:
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг Ветра и переделанный мной...

Post by tylllkah »

По поводу лопаты, туда можно вставить скрипт на ее добро если нету или она сломалась, я просто кратенько написал копалку. По поводу го ту у меня на 5 инже посыпались ошибки типа не правельно указан оператор го ту, по скольку это древняя версия. И поповоду неста я так и не понял что он пытается найти в журнале. Думаю это бесполезно))
Паузы? А смысл если проверка соблюдения условия занимает время то зачем еще добавлять?
Второй хайд забыл убрать так как скрип вырезал там где есть вопросы и для примера))
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мининг Ветра и переделанный мной...

Post by Mirage »

ZeroDX снял с языка :)
Ребят ну вы учитесь, стараетесь, молодцы, но вы хотя бы логически представляйте для чего вы ЭТО делаете и КАК оно должно работать. И запоминайте хотя бы элементарные правила написания.

Если есть цикл с проверкой на журнал - добавляйте счетчик или таймер для выхода из цикла.
Если есть
If uo.count(Shovel) then
uo.usetype(Shovel)
end if
вставляйте else return иначе конструкция лишена смысла.
Зачем использовать проверку на notoriety если не понятно для чего она нужна? Вас так часто травят ПК в шахтах? И это так существенно?

Скачки типа
if uo.weight > 500 then # Максимальный вес
goto end
endif
вообще жесть. Есть же return - завершение процедуры. В нижнем выехали хотя бы.

какой вот в этом смысл:

Code: Select all

while not uo.dead()
#repeat
wend
#until uo.dead()
Эта конструкция имеет место быть только если ты часто запускаешь скрипт призраком. Ты это делаешь? О_о
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Мининг Ветра и переделанный мной...

Post by ZeroDX »

Mirage wrote:какой вот в этом смысл:

Code: Select all

while not uo.dead()
#repeat
wend
#until uo.dead()
Эта конструкция имеет место быть только если ты часто запускаешь скрипт призраком. Ты это делаешь? О_о

и то и то будут выполнятся пока чар жив... из двух операторов выбран логически правильный, хотя в данном случае это пофиг
To tylllkah:
объясни, почему выбрал именно while?, и чего после выбора не удалил repeat?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мининг Ветра и переделанный мной...

Post by Mirage »

если условие не выполнено (мертвый чар) repeat выполнит один цикл и остановится.
while ни одного цикла не выполнит.

повторять
съесть яблоко
пока не насытился (голоден)

до тех пор пока не насытился (голоден)
есть яблоко

Мне лично больше нравится 1 вариант - repeat - смотрится логичнее.
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Мининг Ветра и переделанный мной...

Post by Juicy Fruit »

Mirage wrote:Мне лично больше нравится 1 вариант - repeat - смотрится логичнее.

Рипит не актуален, т.к. если чар мертв - он ничего не сможет сделать из цикла (кроме авторесса, если бы он был)
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Мининг Ветра и переделанный мной...

Post by ZeroDX »

Juicy Fruit wrote:
Mirage wrote:Мне лично больше нравится 1 вариант - repeat - смотрится логичнее.

Рипит не актуален, т.к. если чар мертв - он ничего не сможет сделать из цикла (кроме авторесса, если бы он был)


Вот! но скрипт запускается на живую =) и умирает в процессе, ни тот, ни другой оператор не запустит следующий прогон, выбор оператора будет актуален, если перед циклом будут какие-либо действия, при которых чар могёт сдохнуть :)
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Мининг Ветра и переделанный мной...

Post by Juicy Fruit »

Если там будет реконнектор - он будет перезапускать скрипт, чар вполне может быть дохлым при перезапуске))
Да и вообще, лишний раз перестраховаться - не повредит)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мининг Ветра и переделанный мной...

Post by Mirage »

Ну вот в конкретно данном случае (скрипт номер 2) while все таки предпочтительнее.

Code: Select all

sub main()
repeat
uo.msg('Я труп')
wait(100)
         while not UO.Hidden()
            UO.Warmode(0)
            UO.UseSkill("Hiding")
            wait(2500)
         wend
until uo.dead()
end sub


если запустить мертвым скрипт зациклится.
С while вначале скрипт не запустится. Другое дело - кто запускает мининг гостом? И опять же нужны выходы из циклов или расширенные условия для цикла.
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг Ветра и переделанный мной...

Post by tylllkah »

Mirage wrote:ZeroDX снял с языка :)
Ребят ну вы учитесь, стараетесь, молодцы, но вы хотя бы логически представляйте для чего вы ЭТО делаете и КАК оно должно работать. И запоминайте хотя бы элементарные правила написания.

Если есть цикл с проверкой на журнал - добавляйте счетчик или таймер для выхода из цикла.
Если есть
If uo.count(Shovel) then
uo.usetype(Shovel)
end if
вставляйте else return иначе конструкция лишена смысла.
Зачем использовать проверку на notoriety если не понятно для чего она нужна? Вас так часто травят ПК в шахтах? И это так существенно?

как я понял надо везде так писать?

Code: Select all

If uo.count(Shovel) then
   uo.usetype(Shovel)
else
   return
end if

если скрипт и так работает зачем писать лишние строчки?
это тиво ка в иностраных языках мы ведь не говорим: "я есть дома написать скрипт"
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мининг Ветра и переделанный мной...

Post by Mirage »

Но ты так именно и пишешь :!:

У тебя получается:
Если в рюкзаке есть лопата - копаем.
И все! А если нет лопаты? А ХЗ... Наверное писаем/сажаем грядки/смотрим на солнце/свистим.

И смирись - это НЕ русский язык. У англичан такая дурацкая черта есть - все уточнять. По этому так и пишутся скрипты. Вот если бы ты в 1С писал - там да, такие конструкции не нужны бывают.
А уточнения у цикла нужны чтобы этот цикл не зацикливался до бесконечности.

Копаем пока не умерли/не перегружены/не нанесен урон/не голодаем/есть инструмент/не прошло несколько секунд.
этим ты выходишь из цикла при любой не стандартной ситуации.
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг Ветра и переделанный мной...

Post by tylllkah »

По поводу лопаты, туда можно вставить скрипт на ее добро если нету или она сломалась, я просто кратенько написал копалку.
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Post Reply