Lumber ??? ??????? (DRW)

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
lexxxxx
Posts: 8
Joined: 2004-09-08 05:17:37

Lumber ??? ??????? (DRW)

Post by lexxxxx »

????

Code: Select all

##############################################
#Crafted by 08          -          17j,2010                                             #
#For DRW.ru Shard    Injection 505.18 Vendor                                  #
#Lumberjacking v 7.1                                                                     #
#?????? ????? ? ?????/??????                                                     #
#????? ????????? ??? ????????? ????,                                         #
#??? ??????? ?????? ?????.                                                          #
#??? ?????? ????? ??? ?????                                                        #
#???????,?????????????                                                               #
#??????? ??? ???????? ???????                                                  #
#############################################
#              ??? ?????                                                                    #
# 1= S???(1 ??),????? ? ???????? ? ???(1??)                               #
# 2=???(pigs),?????(??? ? ????? ? ????????)                               #
# 3=       ?????? ?????? ????(????????)                                     #
#       "battle axe" * "executioners axe"                                          #
#  "a large battle axe" * "a two handed axe"                                   #
# 4=???? ? ????? ? ?????(9 ???? ?? ?????????)                         #
#############################################
#                  FaQ                       #
#############################################
#?????????? ???? ? ??????,? ???????? ?????                                 #
#[][][][][][][][][][][][][][][][][][][][][][]                                          #
#???????? ????? ?????? ?????????? ????????                          #
#??? ????? ??????? ,infotile                                                         #
#??? .dat ?????,???????? ? ?????? ????? C:\                              #
#???????? ????? ? ??????? ??????? ?????-                               #
#       tr0.dat   tr1.dat    tr2.dat                                                     #
#? ?????? ????????? ????,??? ?????? ???? ?????                       #
#?? ?????????(??????? ?????????? ??? ??? ?????                       #
#? ?????? ?????? ????).                                                             #
#[][][][][][][][][][][][][][][][][][][][][][]                                        #
#???????? AUTORUN ? ?????????? ???? ??? ?????                      #
#?????????? ??????? AR_On().?????? ? ??????                          #
#????????? ?????????? ??? ????.                                              #
#?????.???????????? ? ????????? ???????? "!"                       #
############################################
#                 ????????!                                                               #
#        ?????????????? ????? ? ????                                         #
#          ????????????? ???????!                                                #
#    ????????? ??????? ??????? ? ?????? ???                           # 
#        ?? ?????? ????? ????? ???????                                        #
############################################
#                 ??????????                 #
############################################
#     ???????????? ?????? HELP                                                 #
var helpX=980 # ?????????? ??? ???????!                                #
var helpY=55 # ?????????? ??? ???????!                                  #
############################################
var Runebook='0x404ACE9F' # ??? ?????? ?????.                       #  !
var Runenr='1025' # ????? ???? ? ?????.                                   # !
var food='0x09BB' #  ??? ???(??????!)                                      #
var band='0x0E21' #??? ??????                                                  #
var sunduk='0x40556A9D'   #????                                             #!
var sumka_axe='0x4021CB0B'#????? ? ????????                        #!
var homeX=1111#?????????? X ????? ? ????????                       #!
var homeY=1111#?????????a Y ????? ? ????????                        #! 
var homeXreserv=1112#????????? ??????????                           #!
var homeYreserv=1112#????????? ??????????                           #!
#????????? ?????.=?????.X,Y,?????????? ?? 1                         #
var StepTimeOut=350 #??????? ????                                           #     
############################################
sub main()
uo.set('quiet', '1')          #?????????? ????????? 0 ????? ??????? ?????
uo.set('finddistance','8')
xy()
Open(sunduk) 
Open(sumka_axe)
wait(500)
tallq()
DropLogs()
uo.exec('exec lumbera')
uo.exec('exec Reconnector')
uo.exec('exec Resurrector')
endsub
####################LUMBER######################
#[][][][][][][][][][][][][][][][][][][]LUMBER_A[][][][][][][][][][][][][][][][]
###############################################
sub lumbera()
var f=file("C:\tr0.dat"),TreeCount=0,i
dim TreeX[500],TreeY[500],TreeT[500]
f.open()
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
uo.exec('terminate cheker')
uo.exec('terminate lumberc')
uo.exec('exec cheker')
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
 TreeT[i]=safe call f.ReadNumber()
 TreeX[i]=safe call f.ReadNumber()
 TreeY[i]=safe call f.ReadNumber()
next
f.close()
while not uo.dead()
 for i=1 to TreeCount 
 uo.Print('Lumber1=???? ? ?????? ????? '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
 walker(treex[i],treey[i],1)
  GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz())) 
 next
 DropLogs()
 uo.exec('exec lumberb')
wend
endsub
#[][][][][][][][][][][][][][][][][][][]LUMBER_B[][][][][][][][][][][]
sub lumberb()
var f=file("C:\tr1.dat"),TreeCount=0,i
dim TreeX[500],TreeY[500],TreeT[500]
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
uo.exec('terminate cheker')
uo.exec('terminate lumbera')
f.open()
uo.exec('exec cheker1')
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
 TreeT[i]=safe call f.ReadNumber()
 TreeX[i]=safe call f.ReadNumber()
 TreeY[i]=safe call f.ReadNumber()
next
f.close()
while not uo.dead()
 for i=1 to TreeCount 
 uo.Print('Lumber2=???? ? ?????? ????? '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
   walker(treex[i],treey[i],1)
 # ToHide() 
  GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz())) 
 next
 DropLogs()
  uo.exec('exec lumberc')
wend
endsub
#[][][][][][][][][][][][][][][][][][][]LUMBER_C[][][][][][][][][][][]
sub lumberc()
var f=file("C:\tr2.dat"),TreeCount=0,i
dim TreeX[500],TreeY[500],TreeT[500]
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
uo.exec('terminate cheker')
uo.exec('terminate lumberb')
uo.exec('exec cheker2')
f.open()
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
 TreeT[i]=safe call f.ReadNumber()
 TreeX[i]=safe call f.ReadNumber()
 TreeY[i]=safe call f.ReadNumber()
next
f.close()
while not uo.dead()
 for i=1 to TreeCount 
 uo.Print('Lumber3=???? ? ?????? ????? '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i]))
   walker(treex[i],treey[i],1)
 # ToHide() 
  GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz())) 
 next
 DropLogs()
 uo.exec('exec lumbera')
wend
endsub
#[][][][][][][][][][][][][][][][][][][]GET_TREE[][][][][][][][][][][][]
Sub GetTree(type,x,y,z)
var ms1="logs in your pack"
var ms2="logs here to chop"
var ms3="log in your pack"
var ms4="You hack"
var ms5="That is too far away"
var ms6="You can't reach this"
var Time
Time=uo.Timer()
wait(200)
repeat
 uo.deletejournal()
 uo.waittargettile(type,x,y,z)
 uo.useobject('axe')
#cheker()
 repeat
  wait(100)
until uo.injournal(ms1) or uo.injournal(ms2) or uo.injournal(ms3) or uo.injournal(ms4) or uo.injournal(ms5) or uo.injournal(ms6) or Time+80<uo.Timer()
until uo.injournal(ms2) or uo.injournal(ms5) or uo.injournal(ms6) or uo.injournal(ms4) or Time+50<uo.Timer()
end sub
#[][][][][][][][][][][][][][][][][][][]DROP_LOGS[][][][][][][][][][][][][]
sub DropLogs()
var a,Exit,Logs='0x1BDD'
xy()
ToHide()
uo.findtype(Logs,'-1','backpack')
while uo.findcount()>0
 uo.moveitem('finditem','all',sunduk)
 wait(3000)
 uo.findtype(Logs,'-1','backpack')
wend
CheckLag()
checkhpS()
Getaxe()
toeat()
end sub
#[][][][][][][][][][][][][][][][][][][]GOTO_XY[][][][][][][][][][][][][][][]
#???? ? ???????,???????? ?? ????????
sub xy()
while not uo.InJournal('Contains')
repeat
walker(homeX,homeY,1)
Open(sunduk)
Open(sumka_axe)
ToHide()
if uo.injournal('reach that') or uo.injournal('You can') then
walker(homeXreserv,homeYreserv,1)
ToHide()
endif
wend
UO.DeleteJournal()
endsub
#[][][][][][][][][][][][][][][][][][][]GET_AXE[][][][][][][][][][][][][][][]
sub Getaxe()
   var n
   dim instrument[4]
   instrument[1]='0x1442'       #?????? ???? ??????.
   instrument[2]='0x0F45'
   instrument[3]='0x0F47'
   instrument[4]='0x13FA'
   if uo.count('0x13FA')==0 and uo.count('0x0F47')==0 and uo.count('0x0F45')==0 and uo.count('0x1442')==0 then
      for n=1 to 4
         uo.findtype(instrument[n],-1,'0x4021CB0B')
         if uo.findcount() then
            Uo.exec("addobject axe finditem")
            uo.moveitem('finditem',0,'backpack')
            uo.print('axe found!')
            save()
            checklag()
            wait(700)
            return
         endif
      next
   else
      for n=1 to 4
         uo.findtype(instrument[n],-1,'my')
         if uo.findcount() then
            Uo.exec("addobject axe finditem")
            uo.print('axe found in pack!')
            save()
            return
         endif
      next   
   endif
   while 1
      uo.print(' axe not found ')
      wait(3000)
   wend
endsub
##############################################
#[][][][][][][][][][][][][][][][][][][]CHECKER[][][][][][][][][][][][][][][][]
##############################################
sub cheker()
while true
if CheckIfTree() ==1 then
uo.exec('terminate lumbera')
UO.DeleteJournal()
uo.ignorereset()
DropLogs()
wait(15000)
uo.exec('exec lumberb')
end if
repeat
wait(2000)
wend
end sub
#[][][][][][][][][][][][][][][][][][][]CHECKER1[][][][][][][][][][][][][][]
sub cheker1()
while true
if CheckIfTree() ==1 then
uo.exec('terminate lumberb')
UO.DeleteJournal()
uo.ignorereset()
DropLogs()
wait(15000)
uo.exec('exec lumberc')
end if
repeat
wait(1000)
wend
end sub
#[][][][][][][][][][][][][][][][][][][]CHECKER2[][][][][][][][][][][][][][][]
sub cheker2()
while true
if CheckIfTree() ==1 then
uo.exec('terminate lumberc')
UO.DeleteJournal()
uo.ignorereset()
DropLogs()
wait(150000)
uo.exec('exec lumbera')
end if
repeat
wait(1000)
wend
end sub
################################################
#[][][][][][][][][][][][][][][][][][][]HEAL[][][][][][][][][][][][][][][][][][][]#
###############################################
#Mihail
var rn, max = uo.getmaxhp(object)/100
rn = uo.gethp(object)/max
Return rn
End Sub

sub checkhpS()
if uo.life < 90   then
getBND()
       while  uo.life < 90
         uo.WarMode(false)
            uo.WaitTargetObject('self')
            uo.UseType('band')
            wait(3500)
            CheckLag()
         wend
         dropBND()
endif
end sub

sub getBND()
uo.findtype(band,-1,sumka_axe)
      if uo.findcount() then
         uo.moveitem('finditem','15','backpack')
         wait(600)
endif
endsub

sub dropBND()
 uo.findtype(band,-1,'backpack')
   if uo.findcount() then
      uo.moveitem('finditem',0,sumka_axe)
      wait(600)
   endif   
   endsub

##############################################
#[][][][][][][][][][][][][][][][][][][]OTHER[][][][][][][][][][][][][][][][][]
##############################################
sub CheckIfTree()
uo.findtype('0x002F',-1,'ground')
   if uo.findcount() then
 return 1
   endif
endsub
#[][][][][][][][][][][][][][][][][][]TO_EAT[][][][][][][][][][][][][][][]
sub toeat()
      uo.findtype(food,-1,sumka_axe)
      if uo.findcount() then
         uo.moveitem('finditem','1','backpack')
         checklag()
         wait(600)
            uo.usetype(food)
            wait(500)
   uo.findtype(food,-1,'backpack')
   if uo.findcount() then
      uo.moveitem('finditem',0,sumka_axe)
      checklag()
      wait(600)
   endif   
endif
endsub
#[][][][][][][][][][][][][][][][][][][]AUTORUN[][][][][][][][][][][][][][][]
sub AR_On()
   if uo.GetRun('self')==0 then
   uo.press(122)
   endif
      uo.print('??? ???????')
end sub
#[][][][][][][][][][][][][][][][][][][]TOHIDE[][][][][][][][][][][][][][][][]
Sub ToHide()
while not UO.Hidden()
uo.WarMode(false)
 uo.deletejournal()
 UO.UseSkill("Stealth")
 wait(3500)
wend
end sub
#[][][][][][][][][][][][][][][][][][][]NUMB[][][][][][][][][][][][][][][][][]
Sub Numb(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub
#[][][][][][][][][][][][][][][][][][][]CHECKLAG[][][][][][][][][][][][][][][]
Sub CheckLag()
    UO.DeleteJournal()
    UO.Click('backpack')
    repeat
       wait(150)
    until UO.InJournal('backpack')
end sub
#[][][][][][][][][][][][][][][][][][][]WRITELOG[][][][][][][][][][][][][][][]
sub writeLog()
   var ser
    var n
    for n=0 to 0
      ser=uo.journalserial(n)
       uo.TextOpen()
      uo.TextPrint(uo.getname(ser)+' @ '+MakeTime())
      endif
   next
   endsub
#[][][][][][][][][][][][][][][][][][][]SAVE[][][][][][][][][][][][][][][][][]
sub save()
uo.exec('saveconfig')
endsub
#[][][][][][][][][][][][][][][][][][][]TERM_OTHER[][][][][][][][][][][][][][]
sub tall()
uo.exec('terminate main')
uo.exec('terminate Reconnector')
uo.exec('terminate lumbera')
uo.exec('terminate lumberb')
uo.exec('terminate lumberc')
uo.exec('terminate cheker')
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
endsub

sub tallq()
uo.exec('terminate Resurrector')
uo.exec('terminate Reconnector')
uo.exec('terminate lumbera')
uo.exec('terminate lumberb')
uo.exec('terminate lumberc')
uo.exec('terminate cheker')
uo.exec('terminate cheker1')
uo.exec('terminate cheker2')
endsub
#[][][][][][][][][][][][][][][][][][]RESSURECTOR[][][][][][][][][][][][][][][][]
sub Resurrector()
   var oldX,oldY
   while 1
      if uo.dead() then
        tall()
        # uo.TextOpen()
         uo.TextPrint('- dead - @ '+MakeTime())
         wait(5000)
         oldX = Uo.GetX()
         oldY = Uo.GetY()
         uo.useobject('self')
         checklag()
         wait(700)
         repeat
            uo.lclick(helpX,helpY)
            checklag()
            wait(700)
            uo.lclick(264,308)
            checklag()
            wait(700)       
            uo.lclick(175,203)
            checklag()
            wait(5000)   
         until oldX<>UO.GetX() OR oldY<>UO.GetY()
         repeat
            uo.press(39)
            wait(2000)
         until UO.GetY()<534
         repeat
            uo.useobject('0x4001BDF0')
            wait(3000)
         until uo.life>0
         Open(uo.getserial('backpack'))
         wait(300000)
         oldX = Uo.GetX()
         oldY = Uo.GetY()         
         uo.recall(Runebook,Runenr)
         repeat
            wait(700)
         until oldX<>uo.getx('self') && oldY<>uo.gety('self')
         Open(sunduk)
         if uo.waiting() then
            uo.canceltarget()
         endif
         uo.exec('exec main')
      endif
      wait(5000)
   wend
endsub
#[][][][][][][][][][][][][][][][][][][]OPEN[][][][][][][][][][][][][][][][][][][]
sub Open(what)
   uo.useobject(what)
   checklag()
   wait(700)
endsub
#[][][][][][][][][][][][][][][][][][][]COUNT_LOGS[][][][][][][][][][][][][][][][]
sub Get_Logs_Count()
  var type='0x1BDD'
  var i
  uo.FindType(type,'-1','0x40556A9D')
  uo.TextClear() 
  for i = 0 to uo.FindCount() - 1
    uo.FindType(type,'-1','0x40556A9D')
    uo.Click('finditem')
    uo.Print(uo.GetName('finditem'))
    wait(100)
    uo.TextOpen()
    uo.TextPrint(uo.GetName('finditem'))
    uo.Ignore('finditem')
  next
  uo.IgnoreReset()
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=3
#var StepTimeOut=350 #??????? ????. ????????????? ?? ? ?????? ?????, ? ? ?????? ???? + ?????? ?????.
# ??? ?????? - 500+Ping
# ??? ????/?????? ?? ?????? - 300+Ping
# ??? ?? ?????? - 150 + Ping

var CheckCnt=2 #?????????? ?????? ????????. ??????????? ? ??????? ??? ???????. ???????????? ?????? ?? ??????? ?? ???????????? ????????. ??? ??????? ????? ????? ????.
var DynamicPause=30 #??????????? ????? ? ??????. ??? ?????? ????? - ??? ?????? ?????? ? ??? ?????? ???????? ??????????.


Sub Walker(GoX,GoY,Prec)
  UO.SetGlobal("Logging","0")
  UO.SetGlobal("BlindWalk","0")
  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(1000)
         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.Exec('terminate all')
         ;UO.Exec('exec autoload')
         UO.TextOpen()
         UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
         RFlag = 1
         ReconnectTime = '0'
      endif
   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
##############################################
#                  Readme                    #
##############################################
#?????? ??? ? ?????
#uo.recall(RuneBook,'21') ; 1-?
#uo.recall(RuneBook,'33') ; 2-?
#uo.recall(RuneBook,'46') ; 3-?
#uo.recall(RuneBook,'58') ; 4-?
#uo.recall(RuneBook,'64') ; 5-?
#uo.recall(RuneBook,'73') ; 6-?
#uo.recall(RuneBook,'88') ; 7-?
#uo.recall(RuneBook,'94') ; 8-?
#uo.recall(RuneBook,'1025');9-?
###############################################
#???????? ???? ??????? ????? ???????? ,info   
#?????? ??????? ,info                         
###############################################
#ID=0x40369130 Type=0x1BDD ESVMRMD Name=     
#Quantity: 8  Colour: 0x0014  Layer: 0  Has: 1
#X=55 Y=76 Z=0 C=0x400BEF55 F=0x00           
###############################################
#???-ID=0x40369130=?????? ????? ????????     
###############################################
#?????????? ????? ????? ????? ? ???? ??????? 
#??????? ?????? ??? "4343 3434 YokoInjection"
#?????? ??? ?????????? ???????? ????? ?????????
#? ?????????,??? ?? ????? ?????               
#http://forum.yoko.com.ua                     
#????????? ???????? ???????,?? ?????? ????????
#???? C:\ltitles.txt. ??????????????? ??? ?   
#tr0.dat ? ????????? ?????? ???????,?? ??????
#??????? ????.???????? ??? ????? ????? ???????
#(tr0.dat  tr1.dat   tr2.dat)                 
#??????? ????? ? ?????? ????? C:\             
#(C:\tr0.dat)(C:\tr1.dat)(C:\tr2.dat)         
###############################################
#??????.
#??? ????????????? ??????,??? ? ?????? ????
#?????? ??????????,????? ????????? ??????????
#? ?????? ??????? ?? ???????????.
#?????????? ????? ??????? ? ????????,????? ???
#?????????? ???????????? ??????? ??? ????.
#???? ? ??? ?????? ???? ??? ??? ????? ???????????
#?? ????????? ???? ?? ???????
#????-?????????-????? cmd,???? ????
#????? ????? ping ? ?? ????? ???????
#?? ?????? ????? ?????? ? ???????
#?????? - Ping 89.222.192.234
#??? ????? ????? ?????? ?? ???????
#??????? ?????? ?????????? var StepTimeOut=350
#?????? ?? ??????? 300+???? ????? ??????
#??????-???? ??????? ?????=136 ??
#?????? ?????????? ????????? ???????? 300+136=436
#??? ???? ??? ????? ?????????? ?????? ??? ???? ????
#?????????? ??? ?? ??????? ????? ????? ?? ????
#? ?????????? ???????? ?? ????? ??? ???? ??????
################################################
#PC.??????? ????????????? ?? ??????????????? ???????
#Beyonder,Edred,Mikhail,Destruction,Dark Enemy.
#? ???? ??? ??? ?? ????? ??? ????? Ultima Online.
#by 08 17j,2010/18:40/Luxembourg.
Post Reply