Убийство заданного типа моба. В загончике

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Demos
Posts: 28
Joined: 2004-11-29 12:11:02
Contact:

Убийство заданного типа моба. В загончике

Post by Demos »

Раскажу по порядку.

Чар ищет овцу в загоне, подходит снимает шерсть ( таргет от ножа на неё ) убивает, режет, лутит еше шерсть. И так по кругу. Если хп < 100 гвардс.

Все что нашел на форуме не подходит, даже после переделки.
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Code: Select all

sub Abs(num)
	if num < 0 then
		return -num
	end if
	return num
end sub

sub Sig(num)
if num < 0 then 
	return -1
else
	if num == 0 then
		return 0
	endif
endif
return 1
end sub 
		 
sub MoveToXY(x, y, prec)
	var dx, dy
	dim Key[9]
		Key[0]=37
		Key[1]=35
		Key[2]=40
		Key[3]=36
		Key[4]=12
		Key[5]=34
		Key[6]=38
		Key[7]=33
		Key[8]=39
		dx=x-uo.GetX()
		dy=-y+uo.GetY()
	while (Abs(dx) > prec) or (Abs(dy) > prec)
		dx=x-uo.GetX()
		dy=-y+uo.GetY()
		uo.Press(Key[(sig(dy)+1)*3+1+sig(dx)])
		wait(10)
	wend
end sub	

sub MoveTo(object, prec)
	var dx, dy
	dim Key[9]
		Key[0]=37
		Key[1]=35
		Key[2]=40
		Key[3]=36
		Key[4]=12
		Key[5]=34
		Key[6]=38
		Key[7]=33
		Key[8]=39
	while uo.GetDistance(object) > prec
		dx=uo.GetX(object)-uo.GetX()
		dy=-uo.GetY(object)+uo.GetY()
		uo.Press(Key[(sig(dy)+1)*3+1+sig(dx)])
		wait(10)
	wend
end sub	

sub KillIt()
var animal=0x00CF
var n=1
var x=uo.GetX()
var y=uo.GetY()
uo.ignorereset()
uo.forget('far')
uo.forget('counters')
uo.SetGlobal('KillCount', 0)

Repeat
	wait(10)
	uo.Set('finddistance', n)
	uo.FindType(animal, -1, 'ground')
	if uo.FindCount() then
		wait(100)
		if uo.IsNPC('finditem') then
			uo.info('finditem')
			while uo.IsNPC('finditem')
				if uo.GetDistance('finditem') > 1 then
					MoveTo('finditem', 1)
					uo.attack('finditem')
				end if
				wait(100)
			wend
			uo.SetGlobal('KillCount', val(uo.GetGlobal('KillCount'))+1)
			uo.forget('finditem')
			uo.warmode(0)
			uo.waittargetobject('lastcorpse')
			uo.usetype(0x0F51)
			while uo.waiting()
				wait(100)
			wend
			uo.disarm()
			n=1
		else
			uo.Ignore('finditem')
		end if
	else
		n=n+1
		if n > 20 then
			if (uo.GetX() <> x) or (uo.GetY() <> y) then
				MoveToXY(x, y, 1)
			end if
			n=1
		end if
	end if
Until uo.Dead()
end sub

sub Stat()
	uo.charprint(257, 'От ваших рук погибло: '+uo.GetGlobal('KillCount')+' невинных овец')
end sub
старый скрипт... под абис вроде и писал...
или нет под дрв вроде.
Запускать ясно вроде что;))
Demos
Posts: 28
Joined: 2004-11-29 12:11:02
Contact:

Post by Demos »

отлично ;) чуть переделали и всё работает
Post Reply