Yoko

All sides of Injection
It is currently 2026-01-16 10:47:03

All times are UTC+02:00




Post new topic  Reply to topic  [ 11 posts ] 
Author Message
 Post subject: мининг
PostPosted: 2011-04-09 17:31:40 
Offline

Joined: 2009-06-12 20:10:00
Posts: 240
Location: Vasa Smerti(RASToMAN) DRW
ап


Last edited by Irina E on 2011-04-12 14:35:43, edited 2 times in total.

Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-10 20:10:37 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
если прогнать скрипт через CodeSweeper то проблемный участок сразу видно ;)

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

for n=1 to 21
endsub

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-10 20:59:52 
Offline

Joined: 2009-06-12 20:10:00
Posts: 240
Location: Vasa Smerti(RASToMAN) DRW
Mirage wrote:
если прогнать скрипт через CodeSweeper то проблемный участок сразу видно ;)

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

for n=1 to 21
endsub

удалил смотри выше :(
и за Эту ошибку и крЭша даже не охота играть


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-10 22:55:38 
Offline
User avatar

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

Приведи мысли в порядок, продумай что и зачем делает скрипт (прямо на бумаге набросай с рисунками и чертежами):
1) стартую у дома - кусок набора инструментов
2) прилетел на место - начал добычу
3) набрал пак - полетел домой - сбросил...
и так далее.
Потом по кускам просматривай каждую процедуру отдельно постепенно наполняя один большой файл со скриптом. Сначала самое необходимое - полеты, копку, ходилку, скидывалку. Потом уже всякие дополнительные логирования убегалки и прочую косметику. И все будет тип топ.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-11 06:44:29 
Offline

Joined: 2009-06-12 20:10:00
Posts: 240
Location: Vasa Smerti(RASToMAN) DRW
я с этими repeat не понимаю вопще нифега зделай ты этот кусок sub mining() а дальше я доделаю
да и скинь сылку или ту прогу чтобы проганять скрипт


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-11 10:09:23 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Программа для отступов во второй строке моей подписи.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-11 14:27:12 
Offline

Joined: 2009-06-12 20:10:00
Posts: 240
Location: Vasa Smerti(RASToMAN) DRW
убрал репеат и тоже самое ошибка и крэш сразу

помоги пожалуста со скриптом


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-11 18:33:24 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Сделать за тебя я не могу так как тебе лучше знать что ты от скрипта хочешь получить. Я такими скриптами никогда не копал и не рубил. Я могу объяснить где ошибки (которые ты кстати даже не постарался разобрать сам). Итак поехали:
Пропускаем скрипт через утилиту в моей подписи. В "кошерном" скрипте все sub четотам()...endsub должны находиться по левому краю. Соответственно ВИДИМ что проблема начинается с sub mining(). Если его удалить скрипт по крайней мере принимает пищеварительный вид и все циклы в нем на местах. Давай ломать твою копалку.
Code:
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:
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 и протестировать то что получится. Но вроде ход моих мыслей должен быть понятен.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-11 18:56:49 
Offline

Joined: 2009-06-12 20:10:00
Posts: 240
Location: Vasa Smerti(RASToMAN) DRW
Code:
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 вариант твой я маленько переделал его вот что получилось пока работает посмотрим дальше что будет

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

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

И спс тебе большое что помогаиш и извини но у меня не получаеца писать я то ко их маленько переделаю


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-12 07:37:55 
Offline

Joined: 2009-06-12 20:10:00
Posts: 240
Location: Vasa Smerti(RASToMAN) DRW
Code:
 UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)


может ли от этого выдавать ошибку и крэшить если он 2 раза в скрипте


Top
   
 Post subject: Re: мининг
PostPosted: 2011-04-15 08:38:20 
Offline

Joined: 2009-06-12 20:10:00
Posts: 240
Location: Vasa Smerti(RASToMAN) DRW
уважаемый Мираж помоги пожалуйста со скриптом а то у меня крыша едит уже


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 11 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited