Хелп с ПВМ

Ask for help

Moderators: Murderator+, Murderator

Post Reply
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Хелп с ПВМ

Post by slonopotam »

Пробовал написать скрипт на догонялку мобов и их килл, чтот никак.
Нужно чтоб подошол к мобу 0х0000 в плотную и убил его. Да и финдистанс максимум чтоб
(тоесть не только если моб рядом). Если кому не сложно, подскажите пожалуйста.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Помогите хотябы немного переделать готовый. Просто нужно чтоб после убийства 1 зверюшки скрипт вырубалсябы.

Code: Select all

sub Attack() 
uo.set('finddistance','10')
DIM R[5] 
R[1] = 0x0006 # Тип зверя.
R[2] = 0x0006
R[3] = 0x0006
R[4] = 0x0006
R[5] = 0x0006
VAR LastTimer, Attack
var a 
repeat
for a=1 to 5
UO.DeleteJournal() 
UO.FindType(R[a],-1,'ground') 
if UO.FindCount("finditem")>0 then 
Attack=UO.GetSerial('finditem')
UO.Exec('warmode 1')
UO.Attack(Attack)
WalkN(0,0,Attack)
LastTimer=UO.Timer()
repeat 
wait(2000)
until uo.dead(Attack) or UO.InJournal('Body') OR LastTimer+150<UO.Timer() 
endif
wait(500)
next
wait(200)
until uo.dead()
end sub

sub Ranger()
var skin = 1; êà÷àòü ñêèíèíã
var loot = 0; ëóòèòü òåëî
var loop = 1; àâòîìàò
var dagger = 0x0F51
var body

UO.DeleteJournal()
repeat
repeat 
wait(100)
until UO.InJournal("Body of")
body = UO.JournalSerial(UO.InJournal("Body of")-1)
UO.DeleteJournal()
if skin then
if UO.GetDistance(body) <= 2 then
UO.WarMode(0)
UO.SetArm('skin')
UO.WaitTargetObject(body)
UO.UseType(dagger)
wait(1000)
else
endif
UO.WarMode(0)
UO.SetArm('skin')
UO.WaitTargetObject(body)
UO.UseType(dagger)
wait(1000)
endif

if loot then
if UO.GetDistance(body) <= 2 then
F_Loot()
else
endif
endif

if skin then
UO.Arm('Weapon')# Íàäåíüòå îðóæèå áëèæíåãî áîÿè ââåäèòå ñëîâà ,setarm Weapon
endif
UO.WarMode(1)
until not loop
endsub


sub F_Loot()
DIM R[14] 
var c 
R[1]=0x0df8; øåðñòü 
R[2]=0x1078; êîæà
R[3]=0x0EED; äåíüãè 
R[4]=0x09AA; ïàíäîðû
R[5]=0x0F85; GI
R[6]=0x0F7B; BM
R[7]=0x0F8C; SA
R[8]=0x0F7A; BP
R[9]=0x0F84; GA
R[10]=0x0F88; NS
R[11]=0x0F8D; SS
R[12]=0x0F86; MR
R[13]=0x1BD1; ïåðüÿ
R[14]=0x0F8F; Volcanic Ash

for c=1 to 14
repeat
uo.findtype(R[c],"-1","lastcorpse") 
if UO.FindCount()>0 and Uo.GetDistance("lastcorpse")<=4 then 
UO.Grab("0","finditem") 
wait(1200) 
end if 
until UO.FindCount()<1
wait(10) 
next 
endsub

sub Numb(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub

sub WalkN(x,y,Target) 
VAR i,StepSucess 
VAR dx,dy,Exit=0 

While Exit<>1 
If Target<>"" Then 
dx=UO.GetX(Target)-UO.GetX() 
dy=UO.GetY(Target)-UO.GetY() 
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 
StepSucess=Go(3,40,300);SE - DownArrow 
Endif 

If dx>0 AND dy<0 Then 
StepSucess=Go(1,39,300);NE - RightArrow 
Endif 

If dx<0 AND dy>0 Then 
StepSucess=Go(5,37,300);SW - LeftArrow 
Endif 

If dx<0 AND dy<0 Then 
StepSucess=Go(7,38,300);WN - UpArrow 
Endif 

Endif 

If dx<>0 AND dy==0 Then 
If dx>0 Then 
StepSucess=Go(2,34,300);E - PgDown 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300);SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300);NE - RightArrow 
Endif 
Endif 
Endif 

If dx<0 Then 
StepSucess=Go(6,36,300);W - Home 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300);WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300);SW - LeftArrow 
Endif 
Endif 
Endif 
Endif 


If dx==0 AND dy<>0 Then 
If dy>0 Then 
StepSucess=Go(4,35,300);S - End 
If StepSucess==-1 Then 
StepSucess=Go(3,40,300);SE - DownArrow 
If StepSucess==-1 Then 
StepSucess=Go(5,37,300);SW - LeftArrow 
Endif 
Endif 
Endif 

If dy<0 Then 
StepSucess=Go(0,33,300);N - PgUp 
If StepSucess==-1 Then 
StepSucess=Go(7,38,300);WN - UpArrow 
If StepSucess==-1 Then 
StepSucess=Go(1,39,300);NE - RightArrow 
Endif 
Endif 
Endif 
Endif 
Wend 
end sub 


sub Go(dir,key,walkwait) 
VAR x,y 

x=UO.GetX() 
y=UO.GetY() 

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

UO.Press(key) 
wait(walkwait) 

If x==UO.GetX() AND y==UO.GetY() Then 
Endif 

If x==UO.GetX() AND y==UO.GetY() Then 
return -1 
Else 
return 1 
Endif 
end sub
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

отвечу по теме...

Code: Select all

if uo.injournal('body') then
uo.deletejournal()
..
endif
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Это к чему??
Моб не умер еще, при чем тут его боди? Мне нужно его по типу найти на максимальном расстоянии, подойти и убить.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

Просто нужно чтоб после убийства 1 зверюшки скрипт вырубалсябы.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

NMY wrote:
Просто нужно чтоб после убийства 1 зверюшки скрипт вырубалсябы.
Он думает как подойти, а не как скрипт закончить видимо.

2Поиск + если найдено то готу(файндайтим) уже не модно нынче? + вармод. А вообще-смотри аналог в скрипте на кил ентов. Там есть что посмотреть.
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Да по отдельности почти все есть, думаю что со сборкой тоже вопросов небудет. Незнаю как подходить в плотную и бить. Покажите на примере выше написаного.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

В журнале регистр имеет значение?

Code: Select all

until uo.dead(Attack) or UO.InJournal('Body') OR LastTimer+150<UO.Timer()
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Нашел в закромах родины, не помню под какой шард писал. Ищет и убивает бижайших овец режит их... Стоит под коректировать.
На том шарде нельзя было резать пока не будешь в ПИСЕ
Убивались овци с кулака (это было очень быстро чем с кинжала, даи ломалось там оружие хорошо)
Был еще прикол что по полю на чем то подобном бегали другие люди, поэтому было решено бижать ближайшей во что бы то не стало;) и если ее убъют раньше то шерсть мы снимим все равно первыми%)
По умолчанию иследуется радиус 20 от точки на котороит стоит чар. если даже в той точке где он стоит в радиусе 20 никого не было найдено то он возвращается на свое место, откуда был запущен скрипт.
Ходилка самое быстрое что может быть без проверок, без супер обходов;) только на нормальных пространставх;)

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
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

https://yoko.uokit.com/viewtopic.php?p=44296#44296

В ходилке ставим вайттайм = 0 и включаем алвайс ран.
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Это на антарес =)))
Все работает кул. Спасибо.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

А можно сделать чтоб скрипт тот что я привел в пример, после сообщения "Body", вырубалсябы ????

P.S. Все. Спасибо. Сделал, работает отлично.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

slonopotam wrote:А можно сделать чтоб скрипт тот что я привел в пример, после сообщения "Body", вырубалсябы ????

P.S. Все. Спасибо. Сделал, работает отлично.
https://yoko.uokit.com/viewtopic.php?p=52928#52928
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Я в смысле на моем примере показать :) но всеравно спасибо.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
Post Reply