Различия между готу и ВалкМе

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
bitnerik
Posts: 20
Joined: 2009-03-21 18:18:45

Различия между готу и ВалкМе

Post by bitnerik »

Собственно очнь интересует чем отличается тут функция Goto от WalkMe. Если можно поясните почему,и где и как это заметно.Что нужно прописывать под Goto а что под WalkMe ???

Code: Select all

sub main2() 
uo.ignorereset()
uo.ignore('self')
uo.set('distance',1)
   VAR DigDistance, TileNum, LastTimer 
   DIM BaseX[11], BaseY[11]	## ????????????? ????? ? ?????????, ( ??????? ?? ? ??? )?
   VAR BaseZ, WayPoint, WayPoints 
   VAR MaxWeight, KillElemental 

   KillElemental='No' 
   MaxWeight=550
   DigDistance=2 
   WayPoints=10  ## ????????????? ????? ? ?????????, ( ??????? ?? ? ??? )?

## ??? ????? ?????????? ????? ??? ??? ????? ???????? ? ???????? ??????, ?????? ?????? ??????????: 1111,2222 , ?????? ??????????: BaseX[0]=1111 , BaseY[0]=2222. ???? ??? ???? ????? ????? ??? ???? ?? ?????? ???? ???????? ?????( ?????? ???????? ????? ????? ??? ??? ???????????? ????? ?? ?????).

## ?????????? ?1



## ?????????? ?2
BaseX[1]=3434
BaseY[1]=3454


    
      For WayPoint=1 to WayPoints-1
         WalkMe(BaseX[WayPoint],BaseY[WayPoint],'')
         digitstay(MaxWeight,DigDistance,KillElemental,BaseX[WayPoint],BaseY[WayPoint])
      Next
   wend
end sub



;-------------------- Try to mine under self ------------------

sub digitstay(MaxWeight,MaxDistance,KillElemental,BaseX,BaseY) 
   VAR x,y,z='0',TileNum='1339' 
   VAR Last=0, LastTimer 
   VAR MaxTimer=110 
   var myx, myy
   For x=-MaxDistance to MaxDistance 
      uo.print('adasd')
         Repeat 
        Del('You put|You are hungry|You loosen|is nothing|line of sight to that|That is too|You cannot|Try mining') 
           dig:      
           checklag()
            UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) 
          
            LastTimer=UO.Timer() 
 
            Repeat 


					uo.deletejournal()
					repeat

					wait(100)


            until UO.InJournal('is nothing|You are hungry|line of sight to that|That is too|You cannot|Try mining')  OR LastTimer+250<UO.Timer() #OR uo.life < uo.str 

         Until UO.InJournal('is nothing|line of sight to that|That is too|You cannot|Try mining') OR LastTimer+60<UO.Timer()


         if uo.weight>300 then
         plavka()
         end if
      Next 
   Next 
end sub 



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;; W A L K E R ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

################# W A L K E R ###################### 

sub WalkME(x,y,Target) 
   VAR i 
   VAR dir,ldir,rdir,key,olddir 
   VAR dx,dy,Exit=0 
   VAR CacheLimit=9,CacheIndex="Text" 
   DIM CacheX[10], CacheY[10] 
    
   CacheX[0]="Test" 
   While Exit<>1    
      If Target<>"" Then 
         dx=UO.GetX(Target)-UO.GetX() 
         dy=UO.GetY(Target)-UO.GetY() 
;         UO.Print("Target locked!") 
         If UO.GetDistance(Target)<2 Then 
            return 
         Endif 
      Else 
         dx=x-UO.GetX() 
         dy=y-UO.GetY() 
         If dx==0 AND dy==0 Then 
            Exit=1 
         Endif 

      Endif 
    
      If dx<>0 AND dy<>0 Then 
         If dx>0 AND dy>0 Then ; GoSE 
            dir=3 
            ldir=2 
            rdir=4 
            key=40 ; DownArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==2 Then ; GoNE 
                  dir=1 
                  ldir=0 
                  rdir=1 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=5 
                  rdir=6 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 

         If dx>0 AND dy<0 Then ; GoNE 
            dir=1 
            ldir=0 
            rdir=2 
            key=39 ; RightArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==0 Then ; GoWN 
                  dir=7 
                  ldir=6 
                  rdir=7 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSE 
                  dir=3 
                  ldir=3 
                  rdir=4 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 

         If dx<0 AND dy>0 Then ; GoSW 
            dir=5 
            ldir=4 
            rdir=6 
            key=37 ; LeftArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==6 Then ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=0 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSE 
                  dir=3 
                  ldir=2 
                  rdir=3 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 

         If dx<0 AND dy<0 Then ; GoWN 
            dir=7 
            ldir=6 
            rdir=0 
            key=38 ; UpArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==0 Then ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=2 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=4 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 
    
      If dx<>0 AND dy==0 Then 
         If dx>0 Then ; GoE 
            dir=2 
            key=34 ; PgDown 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoSE 
                  dir=3 
                  ldir=3 
                  rdir=4 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=0 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
          
         If dx<0 Then ; GoW 
            dir=6 
            key=36 ; Home key 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==0 Then ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=0 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=4 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 

      If dx==0 AND dy<>0 Then 
         If dy>0 Then ; GoS 
            dir=4 
            key=35 ; End 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoSE 
                  dir=3 
                  ldir=2 
                  rdir=3 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=6 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
          
         If dy<0 Then ;GoN 
            dir=0 
            key=33 ; PgUp 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=2 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=6 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 
   Wend 
end sub 


sub StepEdit(x,y,dir,key) 
   VAR walkwait=300 
   VAR ErrLevel=0 
   If UO.GetDir()<>dir Then 
         checkstam() 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()<>dir Then 
         CheckLag() 
      Endif 
   Endif 
         checkstam() 
   UO.Press(key) 
   wait(walkwait) 
   If x==UO.GetX() AND y==UO.GetY() Then 
      CheckLag() 
      If x==UO.GetX() AND y==UO.GetY() Then 
;zatik 
         ErrLevel=1 
      Endif 
   Endif 
   Return ErrLevel 
end sub 


sub StepArrow(x,y,dir,ldir,rdir,key) 
   VAR walkwait=300 
   VAR ErrLevel=0 
   If UO.GetDir()<>dir Then 
      checkstam() 
      UO.Press(key)
      If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then 
         CheckLag() 
      Endif 
   Endif 

   If UO.GetX()==x AND UO.GetY()==y Then 
      checkstam() 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then 
         CheckLag() 
         If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then 
; zatik          
            ErrLevel=1 
         Endif 
      Endif 
   Endif 
   Return ErrLevel 
end sub 

sub checkstam() 
var refresh = '0x0F0B' 
if uo.stamina < 10 then 
   uo.findtype(refresh,-1,'backpack') 
   if uo.findcount() then 
      uo.usetype(refresh) 
      wait(1000) 
   else 
      uo.print("Nety Refreshey! Stoim...") 
   repeat 
      wait(500) 
   endif 
else 
endif 
endsub 

Sub CHECKLAG() 
var i=0
   del('backpack') 
   uo.click('backpack') 
   repeat 
   wait(10) 
   until uo.injournal('backpack') or i>1000
   del('backpack') 
endsub 

Sub DEL(msg) 
   uo.setJournalLine(uo.injournal(msg)-1,"Is Empty!") 
   wend 
endsub 


sub GotoXY(x,y) 
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0 
for i=1 to 60 
myX=uo.getX(); 
myY=uo.getY(); 
if LastX==myX and LastY==myY then 
halt=halt+1 
else 
halt=0 
end if 
if halt>=10 then 
if uo.GetDir()==1 then 
for z=0 to 8 
uo.Press(40) 
next 
end if 
if uo.GetDir()==3 then 
for z=0 to 8 
uo.Press(37) 
next 
end if 
if uo.GetDir()==5 then 
for z=0 to 8 
uo.Press(38) 
next 
end if 
if uo.GetDir()==7 then 
for z=0 to 8 
uo.Press(39) 
next 
end if 
halt=15 
end if
if abs(x-myX)<=1 AND abs(y-myY)<=2 then 
return 1 
end if 
if x<=MyX then 
if y<=MyY then 
for z=0 to 2  
uo.press( 38 ) 
wait(50)
next 
else 
for z=0 to 2
uo.press(37)
wait(50)
next 
end if 
else 
if y<=MyY then 
for z=0 to 2 
uo.press(39) 
wait(50)
next 
else 
for z=0 to 2
uo.press(40) 
wait(50)
next 
end if 
end if 
lastX=myX 
lastY=myY 
wait(200) 
next 
return 0 
end sub


Sub Abs(X) 
if X>0 then 
return X 
else 
return (-X) 
end if 
end sub


sub plavka()
var con='45745B0AG53'


gotoxy(5907,2850)

uo.deletejournal()
repeat
	uo.say('bank')
	wait(3000)
until uo.injournal('Contains')



repeat
uo.findtype(0x19B9)
uo.moveitem('finditem','all',con)
wait(2000)
until uo.count(0x19B9)<1


endsub 


Sub CHECKLAG() 
var i=0
uo.deletejournal()
   uo.click('backpack') 
   repeat 
   i=i+1
   wait(10) 
   until uo.injournal('backpack') or i>1000
endsub 


sub test()
if uo.getgraphic('0x40062BC9')<>'0x06A6' then
uo.useobject(0x40062BC9)
checklag()
wait(100)
end if
end sub

sub smelt()

	
repeat
		uo.deletejournal()
		uo.findtype(0x19B9)
		uo.useobject('finditem')
		wait(2000)
		if uo.injournal('mining is too low') then
			uo.drop('all','0','0','0','finditem')
			wait(12000)
		end if
until not uo.findcount()
end sub

sub pereda4a()
var uolkov='0x0012F82B'
repeat
	uo.findtype(0x1BEF)
	uo.moveitem('finditem','all',uolkov)
	wait(800)
until not uo.findcount()
uo.TradeCheck( uo.TradeCount()-1, "left", true )
wait(1000)
repeat
wait(100)
until uo.TradeCheck( uo.TradeCount()-1, "right" )
end sub

sub walkme2(x,y,f) 
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0  
repeat
myX=uo.getX(); 
myY=uo.getY(); 
if abs(x-myX)<=0 AND abs(y-myY)<=0 then 
return 1 
end if 
if x<=MyX then 
if y<=MyY then 
for z=0 to 1  
uo.press( 38 ) 
wait(50)
next 
else 
for z=0 to 1
uo.press(37)
wait(50)
next 
end if 
else 
if y<=MyY then 
for z=0 to 1 
uo.press(39) 
wait(50)
next 
else 
for z=0 to 1
uo.press(40) 
wait(50)
next 
end if 
end if 
lastX=myX 
lastY=myY 
wait(200) 
until uo.dead()
end sub

sub rasplav() 

  VAR Cont='0x400ED43D' 

  Repeat 

     UO.FindType('0x19B9',-1,'backpack') 

     wait(200) 

     If UO.FindCount() Then 

        UO.MoveItem('finditem',0,Cont) 

     Endif 

     wait(200) 

  Until NOT UO.FindCount() 

   

  repeat 
;      ToHide() 

     UO.FindType('0x19B9',-1,Cont) 

     wait(200) 

     If UO.FindCount() Then 

        UO.MoveItem('finditem','1','backpack') 

     Endif 

     CheckLag() 



     UO.UseType('0x19B7') 

     wait(250) 

  until NOT UO.FindCount() 

   

end sub 

sub CheckLag() 

    UO.DeleteJournal() 

    UO.Click('backpack') 

    repeat 

         wait(250) 

    until UO.InJournal('backpack') 

end sub
[/code]
Post Reply