Page 1 of 1

преследование нпц

Posted: 2005-01-04 15:35:58
by колхоз
Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?

Re: преследование нпц

Posted: 2005-01-04 15:40:33
by Sfagnum
Lobster wrote:Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?
да ;)

Re: преследование нпц

Posted: 2005-01-04 15:47:58
by колхоз
Sfagnum wrote:
Lobster wrote:Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?
да ;)
Кто знает, помогите пожалуйста 8)

Re: преследование нпц

Posted: 2005-01-04 15:54:31
by Sfagnum
Lobster wrote:
Sfagnum wrote:
Lobster wrote:Реально ли на инжекте сделать что-бы чар ходил за каким-то нпц?
да ;)
Кто знает, помогите пожалуйста 8)
берёшь любую понравившуюся тебе ходилку и к ней привязываешь опрос координат НПЦ в цикле, и эти координаты передаёшь ходилке.

Posted: 2005-01-04 19:22:11
by Savage
Выглядит убого, но работает в поле неплохо - в лесу не проверял. Я так догонял элемов в вип шахте...
запускать: walkn(0,0.'серийник того нпс')

Code: Select all

sub GoW()
	VAR walkwait=300
	VAR x,y,dir=6
	VAR key=36 ; Home key
	x=UO.GetX()
	y=UO.GetY()
	while UO.GetDir()<>dir
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	wend
	UO.Press(key)

	wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
	
	If UO.GetX()+1==x Then
		return -1
	Else
		return 1
	Endif
end sub


sub GoN()
	VAR walkwait=300
	VAR x,y,dir=0
	VAR key=33 ; PgUp
	x=UO.GetX()
	y=UO.GetY()
	while UO.GetDir()<>dir
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	wend
	UO.Press(key)

	wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
	
	If UO.GetY()+1==y Then
		return -1
	Else
		return 1
	Endif
end sub


sub GoE()
	VAR walkwait=300
	VAR x,y,dir=2
	VAR key=34 ; PgDown
	x=UO.GetX()
	y=UO.GetY()
	while UO.GetDir()<>dir
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	wend
	UO.Press(key)

	wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
	
	If UO.GetX()-1==x Then
		return -1
	Else
		return 1
	Endif
end sub


sub GoS()
	VAR walkwait=300
	VAR x,y,dir=4
	VAR key=35 ; End
	x=UO.GetX()
	y=UO.GetY()
	while UO.GetDir()<>dir
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	wend
	UO.Press(key)

	wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
	
	If UO.GetY()-1==y Then
		return -1
	Else
		return 1
	Endif
end sub


sub GoWN()
	VAR walkwait=300
	VAR x,y,dir=7
	VAR key=38 ; UpArrow
	x=UO.GetX()
	y=UO.GetY()

	If UO.GetDir()<>dir Then
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	Endif

	If UO.GetDir()==dir Then
		UO.Press(key)
		wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
		If UO.GetDir()==dir Then
			return -1
		Else
			return UO.GetDir()
		Endif
	Else
		return UO.GetDir()
	Endif
end sub


sub GoNE()
	VAR walkwait=300
	VAR x,y,dir=1
	VAR key=39 ; RightArrow
	x=UO.GetX()
	y=UO.GetY()

	If UO.GetDir()<>dir Then
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	Endif

	If UO.GetDir()==dir Then
		UO.Press(key)
		wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
		If UO.GetDir()==dir Then
			return -1
		Else
			return UO.GetDir()
		Endif
	Else
		return UO.GetDir()
	Endif
end sub


sub GoSE()
	VAR walkwait=300
	VAR x,y,dir=3
	VAR key=40 ; DownArrow
	x=UO.GetX()
	y=UO.GetY()

	If UO.GetDir()<>dir Then
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	Endif

	If UO.GetDir()==dir Then
		UO.Press(key)
		wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
		If UO.GetDir()==dir Then
			return -1
		Else
			return UO.GetDir()
		Endif
	Else
		return UO.GetDir()
	Endif
end sub


sub GoSW()
	VAR walkwait=300
	VAR x,y,dir=5
	VAR key=37 ; LeftArrow
	x=UO.GetX()
	y=UO.GetY()

	If UO.GetDir()<>dir Then
		UO.Press(key)
		wait(walkwait)
		If UO.GetDir()<>dir Then
			CheckLag()
		Endif
	Endif

	If UO.GetDir()==dir Then
		UO.Press(key)
		wait(walkwait)
		If x==UO.GetX() AND y==UO.GetY() Then
			CheckLag()
		Endif
		If UO.GetDir()==dir Then
			return -1
		Else
			return UO.GetDir()
		Endif
	Else
		return UO.GetDir()
	Endif
end sub


#==============================================================
#  WalkN(X,Y,Serial) - char is walking by dX and dY step
#                sub using Home, End, PgUp, PgDown keys
#                d'not rebind this key from default action!
#     walkwait - delay after keypress
#--------------------------------------------------------------
sub WalkN(x,y,Target)
	VAR i
	VAR dx,dy,Exit=0
	
	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
	
		If dx<>0 AND dy<>0 Then
			If dx>0 AND dy>0 Then
				GoSE()
			Endif

			If dx>0 AND dy<0 Then
				GoNE()
			Endif

			If dx<0 AND dy>0 Then
				GoSW()
			Endif

			If dx<0 AND dy<0 Then
				GoWN()
			Endif

		Endif
	
		If dx<>0 AND dy==0 Then
			If dx>0 Then
				GoE()
			Endif
			
			If dx<0 Then
				GoW()
			Endif
		Endif


		If dx==0 AND dy<>0 Then
			If dy>0 Then
				GoS()
			Endif
			
			If dy<0 Then
				GoN()
			Endif
		Endif
	Wend
end sub

#==============================================================
#  CheckLag() - click on backpack and awaiting "backpack"
#               message in journal.
#
#  Journal has been deleted!!!
#--------------------------------------------------------------
sub CheckLag()
	UO.DeleteJournal()
	UO.Click('backpack')

	repeat
		wait(500)
	until UO.InJournal('backpack')
end sub