Подскажите как доделать ходилку.

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
Betrazen
Posts: 1
Joined: 2010-04-28 20:20:32

Подскажите как доделать ходилку.

Post by Betrazen »

Прошу подсказать какую и куда команду нужно добавить чтобы он как наберёт полный пак шол назад по кординатам и ложил в банк руду.
В этом скрипте если его запустить он открывает банк берёт кирку и стейки и идёт копать по определёным координатам. Но как пак становится полный нечего не происходит он просто дальше копает.
Прошу помочь мне доделать этот скриптик.

Code: Select all

  VAR Sunduk = '0x00000000'; сундук с инструментом (кирка)
; туда же кладем фиш стейки
   VAR Sunduk2 = '0x00000000'; сундук для руды
   VAR SteikFat = '0x097B';фиш стейки
   VAR Picsar = '0x0E85';кирка
sub start()
uo.exec('exec ahtung')
uo.exec('exec main')
end sub
Sub main()
GoToTile( 5975, 1492, 1, False )
wait( 5000 ) 
UO.Say( 'Bank' )
wait( 5000 )
    If UO.Count( SteikFat ) < 10 Then
        UO.FindType( SteikFat,'-1',Sunduk)
    If UO.FindCount () > 0 Then
        UO.MoveItem( 'finditem','10' )
    wait (1000)
    Else
        UO.Print( 'Нет стейков' )
    Endif
    Endif
    If UO.Count( Picsar ) < 2 Then
        UO.FindType( Picsar,'-1',Sunduk)
    If UO.FindCount () > 0 Then
        UO.MoveItem( 'finditem','10' )
wait (1000)
    Else
        UO.Print( 'Нет кирки' )
    Endif
    Endif
   GoToTile( 5977, 1494, 1, False )
   GoToTile( 5977, 1505, 1, False ) 
   GoToTile( 5974, 1504, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
    GoToTile( 5989, 1503, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
    GoToTile( 5995, 1497, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6004, 1506, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
    GoToTile( 6006, 1507, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6006, 1512, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6006, 1517, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6004, 1519, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)   
   GoToTile( 6004, 1504, 1, False )
   GoToTile( 6009, 1504, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6013, 1504, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)   
   GoToTile( 6013, 1500, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6013, 1495, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6009, 1495, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6007, 1500, 1, False )   
   GoToTile( 6006, 1495, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)
   GoToTile( 6002, 1496, 1, False )
    wait(3000)
UO.Warmode("0")
   Mining()
    wait(3000)   
   GoToTile( 5992, 1504, 1, False )
   GoToTile( 5984, 1499, 1, False )
   GoToTile( 5976, 1499, 1, False )
   GoToTile( 5975, 1492, 1, False )
    wait(5000)
        UO.Say( 'Bank' )
    wait( 3000 )
UO.FindType( '0x19B9' )
If UO.FindCount() > 0 Then
  UO.MoveItem( 'finditem','0','Sunduk2' )
Endif
    wait( 1000 )
        UO.Print( 'Закончили' )
uo.exec('terminate all')
end sub
Sub GoToTile( OX, OY, N, S )
    VAR myx, myy, MD, J
    VAR Lx1, Ly1
    VAR Lx2, Ly2
    VAR Sx, Sy
    VAR T
    VAR Des = N
    VAR MoveDelay = 100
   J = 1
   MD = MoveDelay * 1.5
   myx = uo.getx()
   myy = uo.gety()
   MoveOnce( GetDir( uo.getx(), uo.gety(), ox, oy), MD, False)
   Sx = 0
   Sy = 0
   Lx1 = uo.getx() / 2
   Ly1 = uo.gety() / 2
   Lx2 = Lx1 / 2
   Ly2 = Ly1 / 2
   T = UO.Timer()
   If (GetDistance(ox, oy) <> N) OR ( (NOT S) AND GetDistance(ox, oy) > N ) Then
      UO.Exec('exec PermResend')
   EndIf
   While ( (GetDistance(ox, oy) <> N) OR ((NOT S) and GetDistance(ox, oy) > N) ) and ( OX >= 0 ) and ( OY >= 0 )
      If ( (UO.Timer() - T) * 15 > MoveDelay ) Then
         T = UO.Timer()
         Lx2 = Lx1
         Ly2 = Ly1
         Lx1 = myx
         Ly1 = myy
         myx = uo.getx()
         myy = uo.gety()
      endIf
      MD=MoveDelay
      If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then
         MD = MD * 3 / GetDistance( ox, oy )
      EndIf
      wait(MD)
      If GetDistance( OX, OY ) > Des Then
         MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False)
      Else
         If S Then
            If GetDistance(OX,OY)<Des Then
               If GetDistance(OX,OY)<>0 Then
                  MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False)
               Else
                  MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False)
               EndIf
            EndIf
         EndIf
      EndIf
      If GetDistance(OX,OY)<>Des Then
         If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then
            If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then
               J=1
            EndIf
            J=J+1
            UO.Resend()
            Sx = uo.getx()
            Sy = uo.gety()
            Stun(ox,oy,J)
         EndIf
      EndIf
   Wend
   UO.Exec( 'terminate PermResend' )
endsub
Sub MoveOnce( Dir, Del, Rev )
   VAR Num
   Var MoveNumber = 1
   If Rev Then
      Num = MoveNumber + 1
   Else
      Num = MoveNumber
   EndIf
   If ( Num > 0 ) and ( Dir <> 0 ) Then
      If Dir == 1 Then
         UO.Press( 38, Num, Del )
      EndIf
      If Dir == 2 Then
         UO.Press( 33, Num, Del )
      EndIf
      If Dir == 3 Then
         UO.Press( 39, Num, Del )
      EndIf
      If Dir == 4 Then
         UO.Press( 34, Num, Del )
      EndIf
      If Dir == -1 Then
         UO.Press( 40, Num-1, Del )
      EndIf
      If Dir == -2 Then
         UO.Press( 35, Num, Del )
      EndIf
      If Dir == -3 Then
         UO.Press( 37, Num, Del )
      EndIf
      If Dir == -4 Then
         UO.Press( 36, Num, Del )
      EndIf
      If Rev Then
         If Dir <> -1 Then
            UO.Press( 40, 1, Del )
         EndIf
      EndIf
   EndIf
endsub
Sub GetDir( myx, myy, ox, oy )
   VAR I, J
   J = 0
   VAR X = ox - myx
   VAR Y = oy - myy
   I = GetQDir( Abs(X), Abs(Y) )
   If X >= 0 Then
      If Y >= 0 Then
         If I == 1 Then
            J = -2
         Else
            If I == 2 Then
               J = -1
            Else
               If I == 3 Then
                  J = 4
               EndIf
            EndIf
         EndIf
      Else
         If I == 1 Then
            J = 2
         Else
            If I == 2 Then
               J = 3
            Else
               If I == 3 Then
                  J = 4
               EndIf
            EndIf
         EndIf
      EndIf
   Else
      If Y >= 0 Then
         If I == 1 Then
            J = -2
         Else
            If I == 2 Then
               J = -3
            Else
               If I == 3 Then
                  J = -4
               EndIf
            EndIf
         EndIf
      Else
         If I == 1 Then
            J = 2
         Else
            If I == 2 Then
               J = 1
            Else
               If I == 3 Then
                  J = -4
               EndIf
            EndIf
         EndIf
      EndIf
   EndIf
   RETURN J
endsub
Sub GetQDir( x, y )
   VAR Ep = 0.172
   VAR J = 0
   If X == 0 Then
      J = 1
   Else
      If ( Y / X ) < Ep Then
         J = 3
      Else
         If ( X / Y ) < Ep Then
            J = 1
         Else
            J = 2
         EndIf
      EndIf
   EndIf
   RETURN J
endsub
Sub GetDistance( X, Y )
   VAR A, B, C
   A = abs( X - UO.GetX() )
   B = abs( Y - UO.GetY() )
   If A > B Then
      C = A
   Else
      C = B
   EndIf
   Return C
endsub
Sub Perp( Dir )
   VAR D = Dir
   If Dir == 1 Then
      D = 3
   EndIf
   If Dir == 2 Then
      D = 4
   EndIf
   If Dir == 3 Then
      D = -1
   EndIf
   If Dir == 4 Then
      D = -2
   EndIf
   If Dir == -1 Then
      D = -3
   EndIf
   If Dir == -2 Then
      D = -4
   EndIf
   If Dir == -3 Then
      D = 1
   EndIf
   If Dir == -4 Then
      D = 2
   EndIf
   RETURN D
endsub
Sub Stun( X, Y, N )
   VAR I
   VAR myx
   VAR myy
   VAR MoveDelay = 100
   myx = uo.getx()
   myy = uo.gety()
   For I=1 to N
      MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False)
   Next
   Wait(MoveDelay)
   UO.Resend()
   If (myx==uo.getx()) and (myy==uo.gety()) Then
      For I=1 to N
         MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False)
      Next
      Wait(MoveDelay)
      UO.Resend()
   EndIf
   If (myx==uo.getx()) and (myy==uo.gety()) Then
      For I=1 to N
         MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False)
      Next
      Wait(MoveDelay)
      Stun(x,y,N)
   EndIf   
endsub
Sub abs( a )
   VAR b
   If a < 0 Then
      b = -a
   Else
      b = a
   endif
   return b
endsub
Sub PermResend()
   Var Mn = 9
   VAR MoveDelay = 100
   Repeat
      UO.Resend()
      Wait( MoveDelay * Mn )
   Until ( 1 > 2 )
endsub
Sub Mining()
var x,y,z, n
VAR LastTimer
UO.Set('finddistance','2')
n=0
z=UO.GetZ("self")
  for x=-2 to 2
     for y=-2 to 2
        UO.Print(str(x)+" "+str(y))
        Repeat
           if UO.InJournal('TORMOZ') then
             pause()
           endif
           UO.DeleteJournal()
           UO.Warmode("0")
           UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),str(z))
           UO.UseType('0x0E85')
           LastTimer=UO.Timer()
           Repeat
              wait(500)
           Until UO.InJournal("Вы положили") or UO.InJournal("can't see") or UO.InJournal("heavy") or UO.InJournal("в другом") or UO.InJournal("ничего") or UO.InJournal("неудалось") or UO.InJournal("нет обзора") or UO.InJournal("in rock") or UO.InJournal("must wait") or UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("where it") OR UO.Timer()>LastTimer+200
           if UO.InJournal("Вы положили") then
               n=0
           else
              n=n+1
           endif
        Until UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("ничего") or UO.InJournal("location") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("where it") or n>=5
     next
  next
end sub
Sub ahtung()
repeat
panika()
wait(1000)
until uo.Dead()
end sub
Sub panika()
if uo.injournal("Golem") then
UO.Say ('AHTUNG')
wait( 100 )
UO.Say ('Guard')
wait( 100 )
UO.Say ('Guard')
wait( 100 )
UO.Say ('Guard')
wait( 100 )
UO.Say ('Guard')
wait( 100 )
UO.Say ('Поняковский брось курицу !!!!')
wait (500)
uo.DeleteJournal()
end if
end sub
Post Reply