мининг

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

мининг

Post by Irina E »

ап
Last edited by Irina E on 2011-04-12 14:35:43, edited 2 times in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: мининг

Post by Mirage »

если прогнать скрипт через CodeSweeper то проблемный участок сразу видно ;)

в Sub COL()
закрывашка

for n=1 to 21
endsub
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: мининг

Post by Irina E »

Mirage wrote:если прогнать скрипт через CodeSweeper то проблемный участок сразу видно ;)

в Sub COL()
закрывашка

for n=1 to 21
endsub

удалил смотри выше :(
и за Эту ошибку и крЭша даже не охота играть
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: мининг

Post by Mirage »

куда ты торопишься? Просмотри медленно скрипт. я просто глядя заметил 3 опечатки.
1) sub mining()
опять шурум бурум с циклами. Открыт repeat, until не видать, for next пляшут. Прогони через расставлялку отступов.
2) скидывалка руды
dim 9 а элементов 10
3) таже скидывалка руды
dim 01 02 03... зачем фантазировать если есть правила?
Не спеши, внимательнее просматривай, все равно не убежит скрипт.

Приведи мысли в порядок, продумай что и зачем делает скрипт (прямо на бумаге набросай с рисунками и чертежами):
1) стартую у дома - кусок набора инструментов
2) прилетел на место - начал добычу
3) набрал пак - полетел домой - сбросил...
и так далее.
Потом по кускам просматривай каждую процедуру отдельно постепенно наполняя один большой файл со скриптом. Сначала самое необходимое - полеты, копку, ходилку, скидывалку. Потом уже всякие дополнительные логирования убегалки и прочую косметику. И все будет тип топ.
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: мининг

Post by Irina E »

я с этими repeat не понимаю вопще нифега зделай ты этот кусок sub mining() а дальше я доделаю
да и скинь сылку или ту прогу чтобы проганять скрипт
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: мининг

Post by Mirage »

Программа для отступов во второй строке моей подписи.
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: мининг

Post by Irina E »

убрал репеат и тоже самое ошибка и крэш сразу

помоги пожалуста со скриптом
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: мининг

Post by Mirage »

Сделать за тебя я не могу так как тебе лучше знать что ты от скрипта хочешь получить. Я такими скриптами никогда не копал и не рубил. Я могу объяснить где ошибки (которые ты кстати даже не постарался разобрать сам). Итак поехали:
Пропускаем скрипт через утилиту в моей подписи. В "кошерном" скрипте все sub четотам()...endsub должны находиться по левому краю. Соответственно ВИДИМ что проблема начинается с sub mining(). Если его удалить скрипт по крайней мере принимает пищеварительный вид и все циклы в нем на местах. Давай ломать твою копалку.

Code: Select all

sub mining()
   VAR Kirka = '0x0F39'   ; это как я понимаю объявление инструмента. Запомним эту строку - потом вернемся сюда.
   VAR MaxVes = 500   ; максимальный вес - используется в скрипте ниже.
   VAR TileNum = '1339'   ; номер тайла с рудой (хотя рудонесущих тайлов несколько десятков... Но можно и так по старинке.)
   VAR x, y, t, k, i, f  ; тут бла бла бла...
   Dim gox[14] ; это как я понимаю координаты перемещения по пещере. Зачем то прописанные в копалке, но пес с ними.
   gox[0] = 353
   gox[1] = 358
   gox[2] = 352
   gox[3] = 357
   gox[4] = 362
   gox[5] = 370
   gox[6] = 375
   gox[7] = 380
   gox[8] = 384
   gox[9] = 379
   gox[10] = 375
   gox[11] = 366
   gox[12] = 357
   gox[13] = 353
   Dim goy[14]
   goy[0] = 1453
   goy[1] = 1448
   goy[2] = 1448
   goy[3] = 1439
   goy[4] = 1439
   goy[5] = 1437
   goy[6] = 1433
   goy[7] = 1429
   goy[8] = 1432
   goy[9] = 1441
   goy[10] = 1436
   goy[11] = 1439
   goy[12] = 1439
   goy[13] = 1446
   while 1 ; цикл живет пока 1. Мощно но не учитывает многие моменты.
      for i = 0 to 13 ; тут все пуском
         WalkME(gox[i],goy[i],'') ;  ходим по координатам
         for y=-4 to 4
            for x=-4 to 4
               while not UO.Hidden() ; тут прячемся перед совершением действия. В принципе расписывать не нужно - в скрипте есть процедура пряталка.
                  UO.Warmode("0")
                  uo.print("Ïðÿ÷åìñÿ...")
                  UO.UseSkill("Hiding")
                  wait(4000)
               wend
               repeat ; ВОТ наш больной. Повторять до тех пор пока... ХЗ что именно должно произойти - условия завершения цикла несуществует и оно извесно только тебе так как это ты его сломал. Ищи исходник оригинального скрипта.
                  for f=1 to 10 ; это походу 10 попыток на копку. Через забор но пусть...
                     if uo.count('0x0F39')==0 and uo.count('0x0F3A')==0 and uo.count('0x0E86')==0 and uo.count('0x0E85')==0 then ; вот это ФИГНЯ. У тебя вс крипте выше указана КИРКА. Зачем проверять просто так есть ли в паке лопаты?
                        return
                     endif
                     UO.DeleteJournal()
                     UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0) ; забегая вперед (или назад) скажу - зачем дублировать прицел который есть в sub DigAhole?
                     DigAhole(x,y) ; собсно лопаткой тресь в тайл
                     if waitforore()==1 then ; если выполняется какое то условие то попытка = 10... Мне кажется лучше сделать return
                        f=10
                     endif
                     If UO.Weight > 495 Then ; это место запомним. Тут скидывается мусорное железо.
                        UO.Print('Ïåðåãðóç!')
                        sbroska()
                     endif
                     if flagpk==1 then ; если нашли ПК прерываем копку - логично.
                        return
                     endif
                     if uo.injournal('You have been revealed') and flaginvis==1 then ; если раскрылись - прячемся и зачем то прерываем копку.
                        flaginvis=0
                        invis()
                        return
                     endif
                  next
                  if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then ; если неудачно выкопали руду - ждем 10 секунд. Зачем? Специфика шарда - единственное что приходит на ум. Если нет - в топку.
                     wait(10000)
                  endif
                  if checkelem()==1 then ; если вылез элементаль - прерываем копку, спорно но пусть.
                     return
                  endif
                  If UO.Weight > MaxVes Then ; ОП повторный сканер веса.
                     UO.Print(" Overweight!" )
                     return
                  Endif
               next
            next
         next
      wend
   endsub ; вот тут видно что какойто цикл сбит

если немного подкорректировать эту тему то получим примерно следующее:

Code: Select all

VAR Kirka = '0x0F39' ; выше sub потому что используются в нескольких процедурах.
VAR MaxVes = 500
VAR TileNum = '1339'
sub mining()
   VAR x, y, t, k, i, f
   Dim gox[14]
   gox[0] = 353
   gox[1] = 358
   gox[2] = 352
   gox[3] = 357
   gox[4] = 362
   gox[5] = 370
   gox[6] = 375
   gox[7] = 380
   gox[8] = 384
   gox[9] = 379
   gox[10] = 375
   gox[11] = 366
   gox[12] = 357
   gox[13] = 353
   Dim goy[14]
   goy[0] = 1453
   goy[1] = 1448
   goy[2] = 1448
   goy[3] = 1439
   goy[4] = 1439
   goy[5] = 1437
   goy[6] = 1433
   goy[7] = 1429
   goy[8] = 1432
   goy[9] = 1441
   goy[10] = 1436
   goy[11] = 1439
   goy[12] = 1439
   goy[13] = 1446
   while not UO.Dead() ; пока чар живой
      for i = 0 to 13
         WalkME(gox[i],goy[i],'')
         for y=-4 to 4
            for x=-4 to 4
               Tohide() ; запустили проверку на спрятался нет
               ;   repeat ;пока ее закомментируем.
               for f=1 to 10
                  CAll() ; проверка на все случаи жизни
                  UO.DeleteJournal()
                  UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
                  DigAhole(x,y)
                  if waitforore()==1 then
                     f=10
                  endif
                  CAll(); проверка на все случаи жизни
               next
               if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then
                  wait(10000)
               endif
            next
         next
      next
   wend
endsub
Sub CAll()
   if uo.count( Kirka )<1 or UO.Weight > MaxVes or flagpk==1 or checkelem()==1 then
      return
   endif
   if uo.injournal('You have been revealed') and flaginvis==1 then
      flaginvis=0
      invis()
      return
   endif
   If UO.Weight > 495 Then
      UO.Print('Ïåðåãðóç!')
      sbroska()
   endif
endsub

Стало короче и красивше. Это всего скорее не полноценно рабочий вариант, нужно тебе самому разобраться с repeat и протестировать то что получится. Но вроде ход моих мыслей должен быть понятен.
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: мининг

Post by Irina E »

Code: Select all

VAR MaxVes = 500
VAR TileNum = '1339'
sub mining()
   VAR x, y, t, k, i, f
   Dim gox[14]
   gox[0] = 1799
   gox[1] = 1804
   gox[2] = 1809
   gox[3] = 1808
   gox[4] = 1803
   gox[5] = 1808
   gox[6] = 1805
   gox[7] = 1799
   gox[8] = 1805
   gox[9] = 1808
   gox[10] = 1805
   gox[11] = 1810
   gox[12] = 1803
   gox[13] = 1799
   Dim goy[14]
   goy[0] = 1060
   goy[1] = 1057
   goy[2] = 1055
   goy[3] = 1050
   goy[4] = 1049
   goy[5] = 1044
   goy[6] = 1039
   goy[7] = 1033
   goy[8] = 1039
   goy[9] = 1044
   goy[10] = 1049
   goy[11] = 1054
   goy[12] = 1058
   goy[13] = 1053
   while not UO.Dead() ; ïîêà ÷àð æèâîé
      for i = 0 to 13
         WalkME(gox[i],goy[i],'')
         for y=-4 to 4
            for x=-4 to 4
               Tohide() ; çàïóñòèëè ïðîâåðêó íà ñïðÿòàëñÿ íåò
               ;   repeat ;ïîêà åå çàêîììåíòèðóåì.
               for f=1 to 10
               
                  CAll() ; ïðîâåðêà íà âñå ñëó÷àè æèçíè
                  UO.DeleteJournal()
                  UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
                  DigAhole(x,y)
                  if waitforore()==1 then
                     f=10
                  endif
                  CAll(); ïðîâåðêà íà âñå ñëó÷àè æèçíè
                             if flagpk==1 then
               return
            endif
               next
               if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then
                  wait(10000)
               endif
            if checkelem()==1 then
            return
         endif
                  If UO.Weight > MaxVes Then
            UO.Print(" Overweight!" )
            return
         Endif
            next
         next
      next
   wend
endsub
Sub CAll()
            if uo.count('0x0F39')==0 and uo.count('0x0F3A')==0 and uo.count('0x0E86')==0 and uo.count('0x0E85')==0 then
               return
            endif
   if uo.injournal('You have been revealed') and flaginvis==1 then
      flaginvis=0
      invis()
      return
   endif
   If UO.Weight > 495 Then
      UO.Print('Ïåðåãðóç!')
      sbroska()
   endif
endsub

вот тот 2 вариант твой я маленько переделал его вот что получилось пока работает посмотрим дальше что будет

потом отпешусь как работает крЭшит или нет

в твоем скрипте после убиства елема копает дальше а мне надо чтобы он улетал
после того как улетел от пк то он дома пытаица копать дальше

И спс тебе большое что помогаиш и извини но у меня не получаеца писать я то ко их маленько переделаю
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: мининг

Post by Irina E »

Code: Select all

 UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)


может ли от этого выдавать ошибку и крэшить если он 2 раза в скрипте
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: мининг

Post by Irina E »

уважаемый Мираж помоги пожалуйста со скриптом а то у меня крыша едит уже
Post Reply