valenciennes

Anything and all.

Moderators: Murderator+, Murderator

Locked
LordTom
Posts: 256
Joined: 2006-02-03 11:32:16
Location: ND
Contact:

valenciennes

Post by LordTom »

Nmy: автор молодец - удалил скрипт

Code: Select all

sub WalkN(x,y,Target) ########################################## Ходилка 
	VAR LastTimer 
	LastTimer=UO.Timer() 
	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"
	uo.say('')	
	While Exit<>1    
		If Target<>"" Then 
			dx=UO.GetX(Target)-UO.GetX() 
			dy=UO.GetY(Target)-UO.GetY()         
			If UO.GetDistance(Target)<3 OR LastTimer+200<UO.Timer() Then 
				wait(1000) 
				return
			Endif 
		Else 
			dx=x-UO.GetX() 
			dy=y-UO.GetY() 
			If dx==0 AND dy==0 OR LastTimer+200<UO.Timer() Then 
				return 
			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=100
	VAR ErrLevel=0 
	If UO.GetDir()<>dir Then 
		UO.Press(key) 
		wait(walkwait) 
		If UO.GetDir()<>dir Then 
			CheckLag() 
		Endif 
	Endif 
	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=100 
	VAR ErrLevel=0 
	If UO.GetDir()<>dir Then 
		UO.Press(key) 
		wait(walkwait) 
		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 
		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 checklag() 
	repeat
		UO.DeleteJournal() 
		UO.Click('backpack') 
	until backpack()==1
endsub 
sub backpack()
	var n
	for n=0 to 200
		if uo.injournal('a backpack') then
			return 1
		endif
		wait(200)
	next
endsub 
Last edited by LordTom on 2009-12-11 11:50:23, edited 1 time in total.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Тут я. Сложно будет переделать, у этой ходилки другое назначение. Попробуй беёндера ходилку.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Здесь надо складывать по модулю координаты твои и координаты цели потом проверять на прецессион...

Code: Select all

   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 
            Exit=1 
         Endif 
      Else 
         dx=x-UO.GetX() 
         dy=y-UO.GetY() 
         If dx==0 AND dy==0 Then 
            Exit=1 
         Endif 

      Endif 
Locked