Raketchik wrote:Спасибо, твой скрипт единственный, который правильно работает
ХЗ у мя на ДРВ и мой работает норм ))
У меня аттачит одного врага, но не повторяет этого на реснувшемся.
ОНИ РАБОТАЮТ
а можно по подробнее? что тут такого удивительного?
А у меня повторяет, может ты вместо Типа написал ID или у тя инжа другой версии? Только что десяток лучников повалил за бритой и норм, ни разу не сбился
sub autoattack()
sub mob
repeat
wait(500)
If UO.InJournal('is attacking you') then
mob=uo.getserial(UO.JournalSerial(UO.InJournal('is attacking you')-1))
uo.attack(mob)
endif
UO.DeleteJournal('is attacking you')
Until not UO.Dead()
sub autoattack()
sub mob
repeat
wait(500)
If UO.InJournal('is attacking you') then
mob=uo.getserial(UO.JournalSerial(UO.InJournal('is attacking you')-1))
uo.attack(mob)
endif
UO.DeleteJournal('is attacking you')
Until not UO.Dead()
пару недочетов:
1. Перед атакой неплохо бы проверить , чтоб моб не равнялся нулю.
2. Делит журнала нада в ифе писать, а не после(да и команда параметров кажись не имеет) :
sub autoattack()
var mob
repeat
If UO.InJournal('is attacking you') then
mob=uo.getserial(UO.JournalSerial(UO.InJournal('is attacking you')-1))
UO.DeleteJournal()
if mob<>0 and mob<>uo.getserial('self') then
uo.attack(mob)
wait(1000)
end if
endif
wait(500)
Until not UO.Dead()
sub autoattack()
var mob
repeat
If UO.InJournal('is attacking you') then
mob=uo.getserial(UO.JournalSerial(UO.InJournal('is attacking you')-1))
UO.DeleteJournal()
if mob<>"0x00000000" and mob<>uo.getserial('self') then
uo.attack(mob)
wait(1000)
end if
endif
wait(500)
Until UO.Dead()
sub autoattack()
var mob
repeat
If UO.InJournal('is attacking you') then
mob=uo.getserial(UO.JournalSerial(UO.InJournal('is attacking you')-1))
UO.DeleteJournal()
if mob<>"0x00000000" and mob<>uo.getserial('self') then
uo.attack(mob)
wait(1000)
end if
endif
wait(500)
Until UO.Dead()
end sub
На дрв на скок я понял, вообще в последнем скрипте, который отпостили, условие того что скрипт может вернуть твой ID а не моба предусмотрено.
Заз на ДРВ, то хз что у него не пашет...
Нащёт моего предыдущего поста, на ранУО когда тебя атачит чел то в журнале получается строка (мой ник будит ником того кого атчат):
SLAK: Sanch is attacking you.
И если проверить через джорнал сериал, то месага вернёт ИД Слака, хоть бьёт его Санч
А проверка в скрипте : не я ли сказал, из-за того, что на некоторых шардах есть киллселф, попробуй прописать : ,attack self .
sub GrimKill()
Var hrsT, hrsC
hrsT = "0x03CA" # тип зверька
hrsC = "0x0901" # его цвет
repeat
UO.FindType(hrsT, hrsC, "ground")
If UO.FindCount() > 0 Then
UO.WarMode(1)
walk(0,0,'finditem')
wait(100)
UO.Attack('finditem')
Else
End If
wait(10000)
until UO.dead()
end sub
sub Walk(X,Y,Target)
var Targeting=''
var Result
var DX,DY,GLX,GLY
var DirW=0
var exit=0
while exit<>1
if Target<>'' then
Targeting=Target
DX=uo.GetX(Target)-uo.GetX()
DY=uo.GetY(Target)-uo.GetY()
if uo.GetDistance(Target)<2 then
exit=1
end if
else
DX=X-uo.GetX()
DY=Y-uo.GetY()
GLX=DX
GLY=DY
if DX==0 and DY==0 then
exit=1
end if
end if
if exit==0 then
if DX>0 and DY>0 then
DirW=9
end if
if DX>0 and DY<0 then
DirW=7
end if
if DX<0 and DY>0 then
DirW=3
end if
if DX<0 and DY<0 then
DirW=5
end if
if DX<>0 and DY==0 then
if DX>0 then
DirW=8
else
DirW=4
end if
end if
if DX==0 and DY<>0 then
if DY>0 then
DirW=2
else
DirW=6
end if
end if
Result=Go(DirW)
if Result==0 then
Result=Go(DirW-2)
if Result==0 then
Result=Go(DirW+2)
end if
end if
end if
wend
end sub
sub Go(dir)
var WalkWait=100
var Targeting=''
var X,Y,GLX,GLY
var check=1
var StartingDir=uo.GetDir()
X=uo.GetX()
Y=uo.GetY()
dim MoveKey[12]
MoveKey[0]=34
MoveKey[1]=40
MoveKey[2]=35
MoveKey[3]=37
MoveKey[4]=36
MoveKey[5]=38
MoveKey[6]=33
MoveKey[7]=39
MoveKey[8]=34
MoveKey[9]=40
MoveKey[10]=35
MoveKey[11]=37
dim StartDir[12]
StartDir[0]=2
StartDir[1]=3
StartDir[2]=4
StartDir[3]=5
StartDir[4]=6
StartDir[5]=7
StartDir[6]=0
StartDir[7]=1
StartDir[8]=2
StartDir[9]=3
StartDir[10]=4
StartDir[11]=5
while uo.GetDir()<>StartDir[dir]
uo.Press(MoveKey[dir])
wait(WalkWait)
if uo.GetDir()==StartingDir then
end if
if (Targeting<>'' and uo.GetDistance(Targeting)<2) or (GLX==0 and GLY==0) then
return 1
end if
wend
uo.Press(MoveKey[dir])
wait(WalkWait)
if X==uo.GetX() and Y==uo.GetY() then
uo.Press(MoveKey[dir])
wait(WalkWait)
wait(100)
end if
if X==uo.GetX() and Y==uo.GetY() then
return 0
else
return 1
end if
end sub
Церковь совсем рядом, но дорога уж очень скользкая.
Кабак далеко, но мы будем шагать очень внимательно.
sub GrimKill()
Var hrsT, hrsC
hrsT = "0x03CA" # тип зверька
hrsC = "0x0901" # его цвет
repeat
UO.FindType(hrsT, hrsC, "ground")
If UO.FindCount() > 0 Then
UO.WarMode(1)
walk(0,0,'finditem')
wait(100)
UO.Attack('finditem')
Else
End If
wait(10000)
until UO.dead()
end sub
sub Walk(X,Y,Target)
var Targeting=''
var Result
var DX,DY,GLX,GLY
var DirW=0
var exit=0
while exit<>1
...