Хелп с ПВМ

Ask for help

Moderators: Murderator+, Murderator

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

Хелп с ПВМ

Post by slonopotam »

Пробовал написать скрипт на догонялку мобов и их килл, чтот никак.
Нужно чтоб подошол к мобу 0х0000 в плотную и убил его. Да и финдистанс максимум чтоб
(тоесть не только если моб рядом). Если кому не сложно, подскажите пожалуйста.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
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
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
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 »

Это к чему??
Моб не умер еще, при чем тут его боди? Мне нужно его по типу найти на максимальном расстоянии, подойти и убить.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
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 »

Да по отдельности почти все есть, думаю что со сборкой тоже вопросов небудет. Незнаю как подходить в плотную и бить. Покажите на примере выше написаного.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
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()
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
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 »

viewtopic.php?p=44296#44296

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

Post by slonopotam »

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

Post by slonopotam »

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

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

Post by Nmy »

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

P.S. Все. Спасибо. Сделал, работает отлично.


viewtopic.php?p=52928#52928
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Я в смысле на моем примере показать :) но всеравно спасибо.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
Post Reply