спарринг

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
ausLINX
Posts: 12
Joined: 2008-06-17 12:54:46

спарринг

Post by ausLINX »

Доброго времени суток. Вобщем вот скрипт:

Code: Select all

    
sub fight()

while 1
   gotoxy(2212,895,0) # координаты куда подходить к противнику
   wait(1000)
   UO.usetype("0x1B76") # тип щита
   uo.usetype("0x0EC2") # тип оружия
   UO.Exec("attack 0x00339653") # айди 2-го чара
   wait (1000)
   if uo.injournal("destroyed")then
   UO.usetype('0x0EC2') # тип оружия
   uo.deletejournal()
   endif
   repeat
   if UO.life < 100 Then
   UO.Exec("warmode 0") # выключаем вар мод
   wait(200)
   UO.Press(35) # код клавиши End
   wait(100)
   UO.Press(35) # код клавиши End
   until (uo.GetY() < 896)# координаты по Y куда отходить чтобы лечить(ся)
   wait(200)
     repeat
	 if UO.life < 140 then
     wait(3000)
	 until UO.Bandageself()
	 wait(300)
	 endif
   endif
wend
end sub

sub gotoxy(x,y,prec)
var ld=0,ldc=0
var dx,dy
var mx,my
var ox,oy,mk,k
#uo.print(">")
#uo.track("1",str(x),str(y))
start:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if not ldc then
uo.print(STR(dx))
end if
if dx<3 then
mk=70
else
mk=15
end if
ox=mx
oy=my
for k=1 to mk
mx=UO.GetX()
my=UO.GetY()
if mx<>ox or my<>oy then
goto sdidapl
end if
wait(10)
next
sdidapl:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if ld==dx then
ldc=ldc+1
if ldc>100 then
uo.print("Can not reach location!")
return
end if
else
ld=dx
end if
if mx==x then
if my==y then
return
endif
if my>y then
#UO.Print("UR")
UO.Press(33)
goto start
endif
#UO.Print("DL")
UO.Press(35)
goto start
end if
if mx<x then
if my>y then
#UO.Print("R")
UO.Press(39)
goto start
endif
if my==y then
#UO.Print("DR")
UO.Press(34)
goto start
endif
#UO.Print("D")
UO.Press(40)
goto start
end if
if my<y then
#UO.Print("L")
UO.Press(37)
goto start
endif
if my==y then
#UO.Print("LU")
UO.Press(35)
goto start
endif
#UO.Print("U")
UO.Press(38)
goto start
end sub
это на первом компе. На втором точно такой же за исключением координат и ИД персонажа естественно. И еще вместо ходилки на клавише END во 2ом скрипте просто указано gotoxy(координаты).
Суть проблемы:
персонажи сходятся, когда у них снижается ХП до 100 расходятся, второй персонаж хилит себя на ура. Мой же, с этим скриптом хилится 2-3 раза, а бывает что отходит и вовсе не хилится, ждет пока ХП поднимется до 100 и идет атачить, получил 1-2 удара отходит и либо хилится, либо о5 стоит ждет пока хп поднимется до 100.
В чем проблема не пойму, вроде практически 2 одинаковых скрипта, на 2ом персонаже ни разу не сбивался хилинг.

подправьте плз или подскажите где и в чем может быть проблема
З.Ы. я нуб в написании скриптов так что сильно не материтесь =) :roll: но кое что уже умею :D
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Re: спарринг

Post by Savage »

Он и не будет хилиться. В блоке лечения путаница с командами цикла и условия.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: спарринг

Post by Mirage »

чет я взялся править... и забил. :shock:

Code: Select all

sub fight()
	uo.deletejournal()
	while 1
		gotoxy(2212,895,0) # координаты куда подходить к противнику
		wait(1000)
		UO.usetype("0x1B76") # тип щита
		uo.usetype("0x0EC2") # тип оружия
		UO.Exec("attack 0x00339653") # айди 2-го чара
		wait (1000)
		if uo.injournal("destroyed")then
			UO.usetype('0x0EC2') # тип оружия
			uo.deletejournal()
		endif
		repeat
			if UO.life < 100 Then
				UO.Exec("warmode 0") # выключаем вар мод
				wait(200)
				UO.Press(35) # код клавиши End
				wait(100)
				UO.Press(35) # код клавиши End
			until (uo.GetY() < 896)# координаты по Y куда отходить чтобы лечить(ся)
			wait(200)
			repeat
				if UO.life < 140 then
					wait(3000)
				until UO.Bandageself()
				wait(300)
			endif
		endif
	wend
end sub
Даже с трудом представляю КАК оно ДОЛЖНО работать...
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Re: спарринг

Post by Savage »

Вот так оно должно работать:

Code: Select all

sub fight()

while 1
	gotoxy(2212,895,0) # координаты куда подходить к противнику
	wait(1000)
	UO.usetype("0x1B76") # тип щита
	uo.usetype("0x0EC2") # тип оружия
	UO.Exec("attack 0x00339653") # айди 2-го чара
	wait (1000)


	While UO.life > 100
		if uo.injournal("destroyed")then
			UO.usetype('0x0EC2') # тип оружия
			uo.deletejournal()
		endif
		wait(500)
	Wend

	repeat
		UO.Exec("warmode 0") # выключаем вар мод
		wait(200)
		UO.Press(35) # код клавиши End
		wait(100)
		UO.Press(35) # код клавиши End
	until (uo.GetY() < 896)# координаты по Y куда отходить чтобы лечить(ся)
	wait(200)

	While UO.life < 140
		UO.Bandageself()
		wait(3000)
	Wend
wend
end sub
ausLINX
Posts: 12
Joined: 2008-06-17 12:54:46

Re: спарринг

Post by ausLINX »

Savage wrote:Вот так оно должно работать:
Отходит но не лечиться, ждал пока хп отрегенится до 105 и ниче не происходило.

Ладно спасибо всем, сам чучка подправил теперь норм хилится.

З.Ы. как я и говорил я пока что нуб в скриптонаписании, поэтому все так и замудрил =) Нашел здесь на форуме скрипт и переделал его в эту форму, ибо тот вобще не работал у меня =)
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Re: спарринг

Post by Savage »

Значит блок отхода не завершается, надо править координату Y по которой идёт проверка. Скорее всего чар упирается в препядствие.
Post Reply