Yoko
http://forum.yoko.com.ua/

Мининг Ветра и переделанный мной...
http://forum.yoko.com.ua/viewtopic.php?f=17&t=17207
Page 1 of 1

Author:  tylllkah [ 2013-03-08 11:49:23 ]
Post subject:  Мининг Ветра и переделанный мной...

Проблема в мининге ветра иногда сбивается из-за GoTo:
в моем проблема, копает и резко останавливается
ветра
Code:
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:
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

Author:  Mirage [ 2013-03-08 14:51:21 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

Author:  tylllkah [ 2013-03-08 15:24:36 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

Мираж спасибо буду пробывать! Помнишь я уже обращался с такой ошибкой? Вот вопрос такой у меня скрипт этот повторяется пока я не умер, то есть остальные скрипты я могу изменить включение с эксес на обычные?

Author:  ZeroDX [ 2013-03-08 16:38:15 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

Author:  tylllkah [ 2013-03-08 21:58:07 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

Почему?

Author:  tylllkah [ 2013-03-08 22:03:23 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

Еще объясните за что отвечают эти строчки
Code:
          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:
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

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

И такой вопрос, если программа которая типо как инжа, но не заходит в игру а просто прогоняет весь скрипт, с различными условиями и пишет где ошибки, при этом работает не от ультимы или вообще автономно? Я видел тут, но пока не скачивал это чтоы выше описал или почти?

Author:  ZeroDX [ 2013-03-08 23:05:01 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

Почему?

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

вот например
Code:
If uo.count(Shovel) then
   uo.usetype(Shovel)
end if

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

направление верное, но как бы сказать странно смотрится =D
Code:
wait(600) ; время в секундах при ожидании пока уйдет ПК

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

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

ЗЫ сорри если пост выглядит как что-то злобное. всё было написано нежными руками с любовью :lol:

Author:  tylllkah [ 2013-03-09 01:11:32 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

По поводу лопаты, туда можно вставить скрипт на ее добро если нету или она сломалась, я просто кратенько написал копалку. По поводу го ту у меня на 5 инже посыпались ошибки типа не правельно указан оператор го ту, по скольку это древняя версия. И поповоду неста я так и не понял что он пытается найти в журнале. Думаю это бесполезно))
Паузы? А смысл если проверка соблюдения условия занимает время то зачем еще добавлять?
Второй хайд забыл убрать так как скрип вырезал там где есть вопросы и для примера))

Author:  Mirage [ 2013-03-09 10:29:04 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

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

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

Author:  ZeroDX [ 2013-03-09 13:47:12 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

и то и то будут выполнятся пока чар жив... из двух операторов выбран логически правильный, хотя в данном случае это пофиг
To tylllkah:
объясни, почему выбрал именно while?, и чего после выбора не удалил repeat?

Author:  Mirage [ 2013-03-09 16:21:08 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

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

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

Author:  Juicy Fruit [ 2013-03-09 17:19:08 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

Author:  ZeroDX [ 2013-03-09 17:25:14 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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


Вот! но скрипт запускается на живую =) и умирает в процессе, ни тот, ни другой оператор не запустит следующий прогон, выбор оператора будет актуален, если перед циклом будут какие-либо действия, при которых чар могёт сдохнуть :)

Author:  Juicy Fruit [ 2013-03-09 18:15:14 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

Если там будет реконнектор - он будет перезапускать скрипт, чар вполне может быть дохлым при перезапуске))
Да и вообще, лишний раз перестраховаться - не повредит)

Author:  Mirage [ 2013-03-09 18:29:42 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

Code:
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 вначале скрипт не запустится. Другое дело - кто запускает мининг гостом? И опять же нужны выходы из циклов или расширенные условия для цикла.

Author:  tylllkah [ 2013-03-09 18:45:55 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

как я понял надо везде так писать?
Code:
If uo.count(Shovel) then
   uo.usetype(Shovel)
else
   return
end if

если скрипт и так работает зачем писать лишние строчки?
это тиво ка в иностраных языках мы ведь не говорим: "я есть дома написать скрипт"

Author:  Mirage [ 2013-03-09 18:56:45 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

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

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

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

Копаем пока не умерли/не перегружены/не нанесен урон/не голодаем/есть инструмент/не прошло несколько секунд.
этим ты выходишь из цикла при любой не стандартной ситуации.

Author:  tylllkah [ 2013-03-09 19:16:39 ]
Post subject:  Re: Мининг Ветра и переделанный мной...

По поводу лопаты, туда можно вставить скрипт на ее добро если нету или она сломалась, я просто кратенько написал копалку.

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/