Yoko

All sides of Injection
It is currently 2024-04-18 14:01:20

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: 2012-03-20 15:22:54 
Offline
User avatar

Joined: 2012-03-20 00:32:06
Posts: 243
Location: РФ, г. Москва
Беда

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


Last edited by tylllkah on 2012-11-02 05:39:54, edited 1 time in total.

Top
   
PostPosted: 2012-03-20 15:29:42 
Offline
User avatar

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

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


Top
   
PostPosted: 2012-03-20 16:04:35 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Мастеров почти не осталось. Одни модераторы :mrgreen:

Визуально у тебя в
Code:
sub Loottrup() 
UO.UseObject('lastcorpse')
if UO.GetQuantity('lastcorpse') then
wait(700)
VAR g,Exit 
DIM Loot[56]     
Loot[0]='0x19B9' ;
Loot[1]='0x19B7' ;
Loot[2]='0x19BA' ;
Loot[3]='0x19B8' ;
Loot[4]='0x0F26' ;
Loot[5]='0x0F18' ;
Loot[6]='0x0F10' ;
Loot[7]='0x0F11' ;
Loot[8]='0x0F15' ;
Loot[9]='0x0F0F' ;
Loot[10]='0x0F16' ;
Loot[11]='0x0EED' ;
Loot[12]='0x0F3F' ;
Loot[13]='0x0F39' ;
Loot[14]='' ;
For i=0 to 13 # последнее значение Loot
      Exit=0
      repeat
       UO.FindType(Loot[g],-1,'lastcontainer')           
        if UO.GetQuantity('finditem') then
         UO.Grab('lastcontainer','finditem')
          wait(1000)
          Else
         Exit=1
        endif
      until Exit==1 OR uo.injournal("not loot")
   Next 
UO.UnSetReceivingContainer()
; вот тут
end sub

не хватает endif - прогоняй длинные скрипты через вторую строку моей подписи.

Попробуй добавить checklag() в
sub Mining()
перед первым for

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


Top
   
PostPosted: 2012-03-20 16:18:34 
Offline
User avatar

Joined: 2012-03-20 00:32:06
Posts: 243
Location: РФ, г. Москва
Яж прям весь растерялся)) не ожиданно, всегда зоходил искал, а тут вообще ни где нет так, как скипт частями собраню Спасибо Мираж, а по поводу ресалки можешь что-нибудь сказать?

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


Top
   
PostPosted: 2012-03-20 16:27:58 
Offline
User avatar

Joined: 2012-03-20 00:32:06
Posts: 243
Location: РФ, г. Москва
И ещё вопросы если не трудно ответить конечно, щас поставил теститься, но до этого сбивался, копал в одном таиле типо 4 -3 и потом бежит строчка бысто типо он ещё раз там хочетт найти не переходя на другой, это ну жно было чеклаг поставить как сказал Мираж?
по поводу капало я нашел две одна ВЕТЕРАНа другая Енеми какая лучше?
Code:
by BETEPAH
sub maning()
var mx, my, mz, i, j, jor, ser, noto
Uo.exec("set norbcheck 1");
uo.exec("set norbcalc 1");


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(2000)
wend
UO.Print("Копаем в координатх: "+str(mx-i)+" "+str(my-j))
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore")
UO.DeleteJournal()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Useobject("Shovel")
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock")
wait (500)
if uo.injournal("heavy") or uo.dead() then
pwav()
endif
end sub

И
Code:
by Enemy
sub Mining()
var mx, my, mz, i, j, f
GetPickaxe()
while 1
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
CheckLag()
for i = mx-4 to mx+4
for j = my-4 to my+4
repeat
if uo.injournal('but fail') then
wait(10000)
end if
Tohide()
UO.Print('Копаем в координатах: '+str(mx-i)+' '+str(my-j))
DigAhole(i,j,mz)
until uo.injournal('no ore here|far away')
next
next
wend
end sub

sub GetPickaxe()
var n
dim instrument[4]
instrument[1]='0x0F39'
instrument[2]='0x0F3A'
instrument[3]='0x0E86'
instrument[4]='0x0E85'
for n=1 to 1
uo.findtype(instrument[n],-1,'my')
if uo.findcount() then
pickaxe=uo.getserial('finditem')
return
endif
next   
while 1
uo.print(' pickaxe not found ')
wait(3000)
wend
end sub

sub DigAhole(i,j,mz)
var f
for f=0 to 10
checklag()
uo.waittargettile('1341',i,j,mz)
uo.useobject(pickaxe)
if waitforore()==1 then
return
endif
next
endsub

sub waitforore()
var n
for n=0 to 50
if uo.injournal('no ore here|location|far away|in rock|You have been revealed|You put') then
return 1
endif
if uo.injournal('but fail') then
return
endif
wait(500)
next
endsub

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


Top
   
PostPosted: 2012-03-20 16:33:43 
Offline
User avatar

Joined: 2012-03-20 00:32:06
Posts: 243
Location: РФ, г. Москва
ситуация стала хуже((
теперь при выгрузке, не добегая до дома пишет:
Unhandled exception in parser

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


Top
   
PostPosted: 2012-03-20 18:07:09 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
мой черновик для обкопа небольшой шахты когда домик стоит рядом и не надо реколиться.

Code:
var bag = '0x4018A728'  ; сундук куда скидывать руду и откуда брать инструменты
var instr = 'тип кирки или лопаты'
var ore1 = '0x19B7'
var ore2 = '0x19BA'
var ore3 = '0x19B8'
var ore4 = '0x19B9'
var Lasttimer
sub main()
   repeat
      walker(1874, 267, 0)
      UO.UseObject(bag)
      wait(1000)
      putore()    ; скидываем руду
      getinstr()  ; добираем инструменты
      walker(1874, 267, 0)  ; координаты до шахты
      walker(1874, 271, 0)
      walker(1887, 271, 0)
      walker(1897, 271, 0)
      walker(1904, 271, 0)
      Mine()
      walker(1912, 273, 0)
      Mine()
      walker(1916, 281, 0)
      Mine()
      walker(1921, 276, 0)
      Mine()
      walker(1921, 269, 0)
      Mine()
      walker(1924, 264, 0)
      Mine()
      walker(1917, 271, 0)
      walker(1901, 271, 0)
      walker(1887, 271, 0)
      walker(1874, 271, 0)
      walker(1874, 267, 0)  ; координата у домика
   until UO.Dead()
end sub
Sub getinstr()
   get(instr, bag, 3, 1)
   get(instr, bag, 3, 1)
   get(instr, bag, 3, 1)
endsub
Sub putore()
   put(ore1,bag)
   put(ore2,bag)
   put(ore3,bag)
   put(ore4,bag)
end sub
################ Рудокоп #################
Sub Mine()
   VAR Shovel1   = '0x0F39'
   VAR Shovel2   = '0x0F3A'
   VAR Pickaxe1   = '0x0E85'
   VAR Pickaxe2   = '0x0E86'
   VAR MaxRange = 2
   VAR X, Y, Z, Tiles
   VAR mX, mY, mZ
   VAR MaxVes = 610
   mX = UO.GetX('self')
   mY = UO.GetY('self')
   mZ = UO.GetZ('self')
   for Y = MaxRange - ( MaxRange * 2 ) to MaxRange
      for X = MaxRange - ( MaxRange * 2 ) to MaxRange
         Tiles = MiningTiles(mX+X, mY+Y)
         if Tiles then
            UO.DeleteJournal()
            repeat
               ############################
               #ПЕРЕГРУЗ!!!#
               ############################
               If UO.Weight > MaxVes Then
                  UO.Print('Перегруз!')
                  return
               endif
               ############################
               UO.Set('quiet','1')
               UO.DeleteJournal()
               UO.Warmode(0)
               UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ)
               UO.FindType(Shovel1,-1,'my')
               if UO.FindCount() then
                  UO.UseType(Shovel1)
               else
                  UO.FindType(Shovel2,-1,'my')
                  if UO.FindCount() then
                     UO.UseType(Shovel2)
                  else
                     UO.FindType(Pickaxe1,-1,'my')
                     if UO.FindCount() then
                        UO.UseType(Pickaxe1)
                     else
                        UO.FindType(Pickaxe2,-1,'my')
                        if UO.FindCount() then
                           UO.UseType(Pickaxe2)
                        else
                           UO.Set('quiet','0')
                           UO.Print("ERROR: Нечем копать!!!")
                           return
                        endif
                     endif
                  endif
               endif
               LastTimer=UO.Timer()
               repeat
                  wait(100)
               until UO.InJournal("%|destroyed|useable|выкопали|0xAD00|0xA867|0xA2DE|0xAD03|0x5DE0|0x5DE1|0x5DE2|0x5DE3|0x5DE4|0x5DE5|0x5DE6|0x5DE7|Вы положили|put the|is nothing here to mine|Wthere do you|Вам не удалось|У вас нет|have no line|ничего|Тут ничего|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+100 || UO.Weight > MaxVes || UO.Dead()
            until UO.InJournal("%|destroyed|0xAD00|0xA867|0xA2DE|Тут ничего|is nothing here to mine|нет руды|У вас нет|have no line|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+500 || UO.Weight > MaxVes || UO.Dead()
            ############################
            #ПЕРЕГРУЗ!!!#
            ############################
            If UO.Weight > MaxVes Then
               UO.Print('Перегруз!')
               return
            endif
            ############################
         endif
      next
   next
   UO.Set('quiet','0')
   UO.Print("Все")
   UO.Sound(100)
   return 0
end sub
Sub MiningTiles(X,Y)
   var i
   if UO.PrivateGetTile(X, Y, -1, 616, 618) then
      for i=616 to 618
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 1339, 1363) then
      for i=1339 to 1363
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 2272, 2282) then
      for i=2272 to 2282
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 4963, 4973) then
      for i=4963 to 4973
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 6001, 6012) then
      for i=6001 to 6012
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 13121, 13369) then
      for i=13121 to 13369
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 13446, 13455) then
      for i=13446 to 13455
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 13484, 13492) then
      for i=13484 to 13492
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   if UO.PrivateGetTile(X, Y, -1, 13625, 13628) then
      for i=13625 to 13628
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   return 0; No Mining Tiles
end sub
Sub GET(item, cont, min, max)
   If UO.Count( item ) < min Then
      #       UO.Print("Кончилось сырье в рукзаке")
      UO.FindType( item, '-1', cont )
      if UO.FindCount() > 0 Then
         #        UO.Print('Сырья в сундуке: ' + Str( UO.FindCount( item ) ) )
         uo.moveitem('finditem', max, 'backpack')
         checklag()
      else
         #           UO.Print( 'Полностью кончилось сырье' )
         UO.CancelMenu()
         return
      endif
   Endif
end sub
Sub PUT(item, cont)
   while UO.Count( item ) > 0
      UO.FindType( item, -1, -1 )
      UO.MoveItem( 'finditem', 0, cont )
      checklag()
   wend
end sub
Sub DeleteJournal(msg)
   While UO.InJournal(msg)
      UO.SetJournalLine(UO.InJournal(msg) - 1,'')
   wend
endsub
Sub MyTerminate()
   UO.Set('quiet','1')
   UO.CancelMenu()
   UO.IgnoreReset()
   UO.Set('quiet','0')
   UO.Exec('terminate all')
end sub
Sub checklag()
   DeleteJournal("ackpack")
   UO.Click("backpack")
   repeat
      wait(100)
   until UO.InJournal("ackpack")
end sub
########################################## ХОДИЛКА 3 ##########################
#var Prec=3 # Как близко следует подойти к цели (Precision)
#var MaxTraceDistance=15 # Максимальная длина обхода. Желательно ставить с расчета возможных препятсвий. Если ставить очень #большие числа, кодилка может пойти в обход пол мира чтобы дойти к соседнему дереву.
#var Speed=2 # Длина шага. Сколько шагов делать за раз. Выше 3 ставить смысла нет. Тоесть тупое умножение шагов. Для ламбера #идеально 3, для майнинга - 1.
#var StepTimeOut=400 # Если уперлись в неопознанный обьект, сколько мсек ждать сдвига с места. Если по простому - таймаут #шага. Если поставить сильно маленькие, ходилка начнет трассировать пустые места.
#UO.SetGlobal("Logging","1")  # - показывать отладочные сообщения.
#UO.SetGlobal("BlindWalk","0") # - не использовать проверку тайлов, а использовать ходьбу наощупь. Для майнинга ОБЯЗАТЕЛЬНО #ВКЛЮЧИТЬ.
#В функции IsPass, содержиться список проходимых тайлов.
#Walker(X,Y,Prec) - идем к цели с координатами X,Y. Возвращает 1 в случае успешного достижения цели, и 0 - при невозможном обходе (путь не найден)
#Tracer(StartDir,Direction) - трассировка 1 шага. Возвращает направление по которому получилось сдвинуться с места. StartDir #- направление последнего движения, Direction (-1 или +1) направление обхода. -1 - по часовой стрелке, +1 против часовой #стрелки. Направления скрипт использует личного формата:
#1 - влево вниз
#2 - вниз
#3 - вправо вниз
#4 - вправо
#5 - вправо вверх
#6 - вверх
#7 - влево вверх
#8 - влево
#Tracer(StartDir,Direction) - идеально подходит для рыбалки вдоль берега так как она будет обходить берег бесконечно (1 #запуск функции = 1 шаг обхода).
#####################################################
# WW  W  WW   AA    LL     Kk KK  EE  EE  RRR       #
# WW  W  WW  AA A   LL     Kk K   EEE     R  R      #
# WW  W  WW  AA A   LL     KKK    EEEEE   R R       #
# WW WW  WW  AAAA   LL     KKK    EEE     RRR       #
#  WWW WWW  AA   A   LLLL  KK Kk  EE  EE  R  RR     #
####################################################
var MaxTraceDistance=10
var TraceLoopIncrease=5 #Увеличение MaxTraceDistance при исчерпании количества ходов
var LimitTrace=20 #Сколько шагов в ОБЕ стороны от начальной точки обхода прекращают ходилку (выхода нет).
var Speed=1
var StepTimeOut=300 #Таймаут шага. Устанавливать не в размер пинга, а в размер шага + размер пинга.
# Для ходьбы - 500+Ping
# Для бега/ходьбы на лошади - 300+Ping
# Бег на лошади - 150 + Ping
var CheckCnt=2 #Количество слепых проверок. УВЕЛИЧИВАЕТ В СТОЛЬКО РАЗ ТАЙМАУТ. Использовать только на БЫСТРОМ но НЕСТАБИЛЬНОМ коннекте. При большом пинге будет УЖАС.
var DynamicPause=30 #Минимальные паузы в циклах. Чем меньше число - тем меньше рывков и тем больше нагрузка процессора.
Sub ttt()
   walker(1165,1661,1)
end sub
Sub Walker(GoX,GoY,Prec)
   UO.SetGlobal("Logging","0")
   UO.SetGlobal("BlindWalk","1")
   var LastDir
   var MoveRes
   var TracerCnt
   UO.SetGlobal("GlobalGoX",str(GoX))
   UO.SetGlobal("GlobalGoY",str(GoY))
   while not IsEnd(GoX,GoY,Prec)
      TracerCnt = MaxTraceDistance
      repeat
         LogInfo('Just walking')
         LastDir=GoUntilHit(GoX,GoY,Prec)
         
         if IsEnd(GoX,GoY,Prec) then
            return 1
         end if
         
         LogInfo('Tracing')
         MoveRes = FullAroundTrace(LastDir,GoX,GoY,Prec,TracerCnt)
         if TracerCnt > LimitTrace then
            return 0
         endif
         TracerCnt = TracerCnt + TraceLoopIncrease
      until MoveRes == 1
   wend
   return 1
end sub
Sub FullAroundTrace(StartDir,GoX,GoY,Prec,MaxTrace)
   var LineX=UO.GetX()
   var LineY=UO.GetY()
   var CurDir=StartDir
   var Direction=CountDirection(GoX,GoY,CurDir,Prec)
   var StartX,StartY
   var MovesDone=0
   repeat
      StartX=UO.GetX()
      StartY=UO.GetY()
      CurDir=Tracer(CurDir,Direction,Prec)
      if (CurDir==GetDir(GoX,GoY,Prec)) then
         return 1
      endif
      if MovesDone>0 and PrevMoveCross(GetDirToDir(UO.GetDir(),Prec),LineX,LineY,GoX,GoY,StartX,StartY,Prec) then
         return 1
      end if
      MovesDone=MovesDone+1
      CurDir=AddToDir(CurDir,-Direction,Prec)
   until MovesDone>MaxTrace
   return 0
end sub
Sub CountDirection(GoX,GoY,StartDir,Prec)
   var GoDir=GetDir(GoX,GoY,Prec)
   var MyX=UO.GetX()
   var MyY=UO.GetY()
   if GoDir<StartDir then
      return -1
   end if
   if GoDir>StartDir then
      return 1
   end if
   if Abs(MyX-GoX)>Abs(MyY-GoY) then
      if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then
         return -1
      else
         return 1
      end if
   else
      if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then
         return -1
      else
         return 1
      end if
   end if
end sub
Sub PrevMoveCross(Dir,x1,y1,x2,y2,StartX,StartY,Prec)
   var x3,y3,x4,y4
   x3=StartX
   y3=StartY
   x4=StartX+(XFromDir(Dir)-StartX)*Speed
   y4=StartY+(YFromDir(Dir)-StartY)*Speed
   return LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec)
end sub
Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec)
   if x1==x3 and y1==y3 then
      return false
   end if
   var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1)
   var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1)
   if z1*z2>0 then
      return false
   else
      LogInfo('Vector info:')
      LogInfo('x1= '+str(x1))
      LogInfo('y1= '+str(y1))
      LogInfo('x2= '+str(x2))
      LogInfo('y2= '+str(y2))
      LogInfo('x3= '+str(x3))
      LogInfo('y3= '+str(y3))
      LogInfo('x4= '+str(x4))
      LogInfo('y4= '+str(y4))
      return true
   end if
end sub
Sub IsDiap(X,X0,X1,Prec)
   if X<=X0+Prec and X>=X1-Prec OR X>=X0-Prec and X<=X1+Prec then
      return true
   end if
   return false
end sub
Sub GoUntilHit(GoX,GoY,Prec)
   var LastDir
   LastDir=GetDir(GoX,GoY,Prec)
   var CouldMove
   repeat
      LastDir=GetDir(GoX,GoY,Prec)
      if LastDir<>0 and not IsEnd(GoX,GoY,Prec) then
         CouldMove=TryDir(LastDir,Prec)
      end if
   until LastDir==0 or IsEnd(GoX,GoY,Prec) or not CouldMove
   return LastDir
end sub
Sub IsEnd(GoX,GoY,Prec)
   if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then
      LogInfo('END FOUND')
      return true
   else
      return false
   end if
end sub
Sub GetDir(GoX,GoY,Prec)
   var MyX=UO.GetX()
   var MyY=UO.GetY()
   var DiffX=Abs(UO.GetX()-GoX)
   var DiffY=Abs(UO.GetY()-GoY)
   var GoDir=0
   if (DiffX/(DiffY+0.1))>=2 then
      if (MyX>GoX) then
         GoDir=7
      else
         GoDir=3
      end if
   else
      
      if (DiffY/(DiffX+0.1))>=2 then
         if (MyY>GoY) then
            GoDir=5
         else
            GoDir=1
         end if
      else
         
         if (MyX>GoX) and (MyY>GoY) then
            GoDir=6
         else
            if (MyX>GoX) and (MyY<GoY) then
               GoDir=8
            else
               if (MyX<GoX) and (MyY>GoY) then
                  GoDir=4
               else
                  if (MyX<GoX) and (MyY<GoY) then
                     GoDir=2
                  end if
               end if
            end if
         end if
      end if
   end if
   return GoDir
end sub
Sub Tracer(StartDir,Direction,Prec)
   var CurDir=StartDir
   var Result
   repeat
      Result=TryDir(CurDir,Prec)
      if not Result then
         CurDir=AddToDir(CurDir,Direction,Prec)
      end if
   until Result
   return Result
end sub
Sub AddToDir(Dir,Cnt,Prec)
   var NewDir=Dir
   NewDir=NewDir+Cnt
   while NewDir>8
      NewDir=NewDir-8
   wend
   while NewDir<1
      NewDir=NewDir+8
   wend
   return NewDir
end sub
Sub TryDir(Dir,Prec)
   var BegX=UO.GetX() # Ia?aeuiia O
   var BegY=UO.GetY() # Ia?aeuiia Y
   var Counter=0
   var GoX=BegX
   var GoY=BegY
   GoX=XFromDir(Dir)
   GoY=YFromDir(Dir)
   if not IsPass(GoX,GoY) then
      LogInfo(str(GoX)+':'+str(GoY)+' is not passable')
      return false
   end if
   return TurnAndGoDir(Dir,Prec)
end sub
Sub XFromDir(Dir)
   if Dir==2 OR Dir==3 Or Dir==4 then
      return (UO.GetX()+1)
   end if
   if Dir==6 OR Dir==7 Or Dir==8 then
      return (UO.GetX()-1)
   end if
   return (UO.GetX())
end sub
Sub YFromDir(Dir)
   if Dir==8 OR Dir==1 Or Dir==2 then
      return (UO.GetY()+1)
   end if
   if Dir==4 OR Dir==5 Or Dir==6 then
      return (UO.GetY()-1)
   end if
   return (UO.GetY())
end sub
Sub TurnAndGoDir(Dir,Prec)
   var StartDir=GetDirToDir(UO.GetDir(),Prec)
   var StartX=UO.GetX()
   var StartY=UO.GetY()
   var EndDir
   var Counter=0
   var TestCounter=CheckCnt
   
   #Direction Test
   repeat
      Counter = 0
      LogInfo('Dir: '+str(StartDir)+' Counter: '+str(Counter))
      PressDir(Dir)
      repeat
         EndDir=GetDirToDir(UO.GetDir(),Prec)
         wait(DynamicPause)
         Counter=Counter+1
      until StartDir<>EndDir or StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause
      TestCounter = TestCounter - 1
      LogInfo('Dir: '+str(EndDir)+' Counter: '+str(Counter))
   until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause
   
   if Counter>=StepTimeOut/DynamicPause  then
      LogInfo('Direction timeout reached')
      return 0
   end if
   #End direction Test
   
   if StartY<>UO.GetY() or StartX<>UO.GetX() then
      return Dir
   end if
   
   #Start Primary test
   TestCounter=CheckCnt
   repeat
      GoDir(Dir,Prec)
      Counter=0
      repeat
         wait(DynamicPause)
         Counter=Counter+1
      until StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause
      TestCounter = TestCounter - 1
   until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause
   #End primary test
   
   if Counter>=StepTimeOut/DynamicPause then
      LogInfo('Step timeout reached')
      return 0
   else
      return Dir
   end if
end sub
Sub GetDirToDir(GotDir,Prec)
   var ChangedDir=-GotDir
   ChangedDir=AddToDir(ChangedDir,5,Prec)
   return ChangedDir
end sub
Sub DirToInj(Dir)
   dim Dirs[9]
   Dirs[1]=1
   Dirs[2]=2
   Dirs[3]=3
   Dirs[4]=6
   Dirs[5]=9
   Dirs[6]=8
   Dirs[7]=7
   Dirs[8]=4
   
   return (Dirs[Dir])
end sub
Sub PressDir(Dir)
   dim Dirs[9]
   Dirs[1]=35
   Dirs[2]=40
   Dirs[3]=34
   Dirs[4]=39
   Dirs[5]=33
   Dirs[6]=38
   Dirs[7]=36
   Dirs[8]=37
   
   UO.Press(Dirs[Dir],1)
end sub
Sub GoDir(Dir,Prec)
   dim Dirs[9]
   Dirs[1]=35
   Dirs[2]=40
   Dirs[3]=34
   Dirs[4]=39
   Dirs[5]=33
   Dirs[6]=38
   Dirs[7]=36
   Dirs[8]=37
   
   var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX")))
   var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY")))
   var GoDistance
   if (DistanceX-Prec)<Speed then
      GoDistance=DistanceX-Prec
   else
      if (DistanceY-Prec)<Speed then
         GoDistance=DistanceY-Prec
      else
         GoDistance=Speed
      endif
   endif
   
   UO.Press(Dirs[Dir],GoDistance)
end sub
Sub IsPass(X,Y)
   if UO.GetGlobal("BlindWalk") then
      return true
   endif
   
   dim Types[60]
   Types[1]=3
   Types[2]=25
   Types[3]=51
   Types[4]=63
   Types[5]=113
   Types[6]=140
   Types[7]=172
   Types[8]=219
   Types[9]=232
   Types[10]=235
   Types[11]=239
   Types[12]=243
   Types[13]=248
   Types[14]=251
   Types[15]=264
   Types[16]=267
   Types[17]=282
   Types[18]=289
   Types[19]=321
   Types[20]=379
   Types[21]=420
   Types[22]=440
   Types[23]=476
   Types[24]=499
   Types[25]=513
   Types[26]=542
   Types[27]=578
   Types[28]=586
   Types[29]=622
   Types[30]=700
   Types[31]=804
   Types[32]=1740
   Types[33]=1758
   Types[34]=1770
   Types[35]=1779
   Types[36]=1779
   Types[37]=1881
   Types[38]=1886
   Types[39]=1801
   Types[40]=1805
   Types[41]=1813
   Types[42]=1820
   Types[43]=1831
   Types[44]=1833
   Types[45]=1843
   Types[46]=1850
   Types[47]=1873
   Types[48]=1876
   Types[49]=1885
   Types[50]=1888
   Types[51]=1946
   Types[52]=1969
   Types[53]=2500
   Types[54]=2539
   
   for var i=1 TO 53 STEP 2
      if UO.PrivateGetTile(X,Y,-1,Types[i],Types[i+1]) then
         return true
      end if
   next
   return false
end sub
Sub LogInfo(Line)
   if not UO.GetGlobal("Logging")=="0" then
      UO.TextOpen()
      UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+Line);
   end if
end sub
Sub Abs(X)
   if X>0 then
      return X
   else
      return (-X)
   end if
end sub
########################################## КОНЕЦ ХОДИЛКИ 3 ##########################
sub Reconnector()
   var ReconnectTime, RFlag
   ReconnectTime = '0'
   RFlag = 1
   Repeat
      While (UO.ObjAtLayer('Bpack') == '')
         If RFlag Then
            ReconnectTime = MakeTime()
            RFlag = 0
         endif
         Wait(20000) # WorldSave Protection
         UO.Say('')
         Wait(3000)
         UO.Say('')
         Wait(3000)
         UO.Say('')
         Wait(3000)
         UO.LDblClick(357,164)
         UO.LClick(616,459)
         Wait(3000)       
      Wend
      Wait(3000)
      If (RFlag == 0) and (ReconnectTime <> '0') Then
         
         uo.TextOpen()
         uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
         RFlag = 1
         ReconnectTime = '0'
      End If
   Until false
end sub
Sub MakeTime()
   VAR D, T, Ret, i
   Ret = STR(UO.Time())
   T = ""
   For i = 0 To Len(Ret)
      T = Ret[Len(Ret)-i] + T
      If (I == 2) OR (I == 4) Then
         T = ":" + T
      EndIf
   Next
   Ret = STR(UO.Date())
   D = ""
   For i = 0 To Len(Ret)
      D = Ret[Len(Ret)-i] + D
      If (I == 2) OR (I == 4) Then
         D = "." + D
      EndIf
   Next   
   Ret = T + " @ " + D
   RETURN Ret
End Sub
sub TerminateAll()
   uo.Exec('Terminate All')
End Sub

Просто сейчас немного некогда разбирать твой скрипт. Попробуй сравнить с тем что я дал. Если проблема останется что позже либо я либо ктонибудь еще займется твоим скриптом.

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


Top
   
PostPosted: 2012-03-20 18:08:21 
Offline
User avatar

Joined: 2012-03-20 00:32:06
Posts: 243
Location: РФ, г. Москва
решил проблему, теперь вышебает только контрол Unhandled exception in parser
Code:
sub Control()
repeat
if uo.life < 1 then
uo.msg('\w Kot: Я МЁРТВ!')
uo.msg('\w Rekoshet: Я МЁРТВ!')
uo.exec('terminate Mining')
wait(1000)
Resurrector()
wait(500)
go(4810,3637, 0)
wait(200)
go(4809,3641, 0)
wait(200)
loottrup()
wait(100)
uo.exec('exec Mining')
#end if
else
if uo.InJournal('OOPS !!!')then
uo.msg('\w Kot: ЭЛЕМЕНТ!')
uo.msg('\w Rekoshet: ЭЛЕМЕНТ!')
wait(2000)
end if
end if
wait(500)
until uo.InJournal('Бл###')
end sub

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


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

All times are UTC+02:00


Who is online

Users browsing this forum: Google [Bot] and 13 guests


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