Вот выкладываю скрипт, чей он я без понятия, ктото кинул давно уже, много раз видимо переделывался, да и я там поковырялся немного...
P.S.> Если не сложно то удалите что лишние там ещё... хилинг там, чтобы чар убивал элемок и ну ещё чтото не нужное вроде там есть...
Зарание спасибо!
Code: Select all
#При работе должна быть "отжата" кнопка NumLock
Var MoveDelay=300 # Промежуток между шагами
Var MoveNumber=1 # Количество шагов при смене дислокации
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбалансированный.
Var FileName='C:\TILE3.txt' # В каждой строке файла тайл точки с рудой.
Sub Main()
UO.DeleteJournal()
UO.Exec('exec Lumb')
EndSub
Sub Lumb()
Var Tl,T,X,Y,Z
UO.SetGlobal('process','yes')
Var F=File(FileName)
F.Open()
GoToTile(1921,374,0,False) #Точки от сундука к шахте
GoToTile(1913,374,0,False) #Точки от сундука к шахте
GoToTile(1908,368,0,False) #Точки от сундука к шахте
GoToTile(1901,367,0,False) #Точки от сундука к шахте
wait(6000)
Beg:
presledovanie()
if uo.weight>410 then
GoTo Konec
EndIf
DeleteJournal('0xAD00')
Tl=safecall F.Readln()
Tl=Trim(Tl)
If Tl=='File read error' Then
GoTo Ext
EndIf
T=GetNumb(Tl,0)
X=GetNumb(Tl,1)
Y=GetNumb(Tl,2)
Z=GetNumb(Tl,3)
UO.Print('NEXT IRON!')
UO.Print('Tile '+Tl)
GoToTile(X,Y,1,False)
UO.Exec("useskill Hiding")
uo.deletejournal()
while not (UO.InJournal('cliloc# 0xA867') or UO.InJournal('cliloc# 0xA2DE') or UO.InJournal('cliloc# 0xA20D') or UO.InJournal('cliloc# 0xAD00') or UO.InJournal('cliloc# 0xAD01'))
uo.deletejournal()
UO.WaitTargetTile(Str(t),Str(x),Str(y),Str(z))
wait(700)
UO.Usetype('0x0E86')
Wait(500)
presledovanie()
wend
If UO.InJournal('0xAD00') Then
UO.Print('NO IRON!')
endif
GoTo Beg
Ext:
F.Close()
UO.SetGlobal('process','no')
GoTo Nachalo
Konec:
GoToTile(1921,374,0,False) #Точки от шахты к сундуку
GoToTile(1937,374,0,False) #Точки от шахты к сундуку
GoToTile(1941,376,0,False) #Точки от шахты к сундуку
GoToTile(1943,376,0,False) #Точки от шахты к сундуку
wait(6000)
uo.findtype(0x19B9)
uo.print(uo.FindCount())
while uo.FindCount() > 0
uo.MoveItem("finditem","-1","0x402A1670") #ID'шник сундука куда будет складываться вся руда
wait(2000)
uo.findtype(0x19B9)
wend
dobor()
GoToTile(1921,374,0,False) #Точки от сундука к шахте
GoToTile(1913,374,0,False) #Точки от сундука к шахте
GoToTile(1908,368,0,False) #Точки от сундука к шахте
GoToTile(1901,367,0,False) #Точки от сундука к шахте
wait(6000)
GoTo Beg
Nachalo:
UO.Print('THE END')
uo.say(",exec Main")
EndSub
Sub GetNumb(C,I)
var J,T,K
J=0
K=1
While K>0
J=J+1
If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then
If I==0 Then
T=Val(Left(C,J))
Else
T=GetNumb(Right(C,Len(C)-J-1),I-1)
EndIf
K=0
EndIf
wend
UO.Print(T)
return T
endsub
Sub Perp(Dir)
Var D
D=Dir
If Dir==1 Then
D=3
EndIf
If Dir==2 Then
D=4
EndIf
If Dir==3 Then
D=-1
EndIf
If Dir==4 Then
D=-2
EndIf
If Dir==-1 Then
D=-3
EndIf
If Dir==-2 Then
D=-4
EndIf
If Dir==-3 Then
D=1
EndIf
If Dir==-4 Then
D=2
EndIf
RETURN D
EndSub
Sub MoveOnce(Dir,Del,Rev)
Var Num
If Rev Then
Num=MoveNumber+1
Else
Num=MoveNumber
EndIf
If (Num>0) and (Dir<>0) Then
If Dir==1 Then
UO.Press(38,Num,Del)
EndIf
If Dir==2 Then
UO.Press(33,Num,Del)
EndIf
If Dir==3 Then
UO.Press(39,Num,Del)
EndIf
If Dir==4 Then
UO.Press(34,Num,Del)
EndIf
If Dir==-1 Then
UO.Press(40,Num-1,Del)
EndIf
If Dir==-2 Then
UO.Press(35,Num,Del)
EndIf
If Dir==-3 Then
UO.Press(37,Num,Del)
EndIf
If Dir==-4 Then
UO.Press(36,Num,Del)
EndIf
If Rev Then
If Dir<>-1 Then
UO.Press(40,1,Del)
EndIf
EndIf
EndIf
EndSub
Sub GetQDir(x,y)
Var J=0
If X==0 Then
J=1
Else
If (Y/X)<ep Then
J=3
Else
If (X/Y)<ep Then
J=1
Else
J=2
EndIf
EndIf
EndIf
RETURN J
EndSub
sub GetDir(myx,myy,ox,oy)
Var I,J
J=0
Var X=ox-myx
Var Y=oy-myy
I=GetQDir(Abs(X),Abs(Y))
If X>=0 Then
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-1
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=3
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
EndIf
Else
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-3
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=1
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
EndIf
EndIf
RETURN J
endsub
sub abs(a)
Var b
If a<0 Then
b=-a
Else
b=a
endif
return b
endsub
Sub PermResend()
Var Mn=9
Repeat
UO.Resend()
Wait(MoveDelay*Mn)
Until (1>2)
EndSub
sub max(A,B)
Var C
If A>B Then
C=A
Else
C=B
EndIf
Return C
EndSub
sub GetDistance(X,Y)
return max(abs(X-uo.getx()),abs(Y-uo.gety()))
endsub
sub GoToTile(OX,OY,N,S)
var myx, myy, MD, J
var Lx1 ,Ly1
var Lx2 ,Ly2
var Sx ,Sy
var T
var Des=N
J=1
MD=MoveDelay*1.5
myx=uo.getx()
myy=uo.gety()
MoveOnce(GetDir(uo.getx(),uo.gety(),ox,oy),MD,False)
Sx=0
Sy=0
Lx1=uo.getx()/2
Ly1=uo.gety()/2
Lx2=Lx1/2
Ly2=Ly1/2
T=UO.Timer()
If (GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N) Then
UO.Exec('exec PermResend')
EndIf
While ((GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N)) and (OX>=0) and (OY>=0)
If ((UO.Timer()-T)*15>MoveDelay) Then
T=UO.Timer()
Lx2=Lx1
Ly2=Ly1
Lx1=myx
Ly1=myy
myx=uo.getx()
myy=uo.gety()
endIf
MD=MoveDelay
If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then
MD=MD*3/GetDistance(ox,oy)
EndIf
wait(MD)
If GetDistance(OX,OY)>Des Then
MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False)
Else
If S Then
If GetDistance(OX,OY)<Des Then
If GetDistance(OX,OY)<>0 Then
MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False)
Else
MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False)
EndIf
EndIf
EndIf
EndIf
If GetDistance(OX,OY)<>Des Then
If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then
If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then
J=1
EndIf
J=J+1
UO.Resend()
Sx = uo.getx()
Sy = uo.gety()
Stun(ox,oy,J)
EndIf
EndIf
Wend
UO.Exec('terminate PermResend')
endsub
Sub Stun(X,Y,N)
Var I
Var myx
Var myy
myx = uo.getx()
myy = uo.gety()
For I=1 to N
MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
EndIf
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False)
Next
Wait(MoveDelay)
Stun(x,y,N)
EndIf
EndSub
Sub DeleteJournal(What)
Var T,J
J=False
If UO.InJournal(What) Then
J=True
UO.DeleteJournal()
EndIf
RETURN J
EndSub
sub presledovanie()
uo.exec("set finddistance 1")
uo.findtype("0x006C",-1,"ground")
while uo.FindCount()>0
Uo.Exec("waittargetobject finditem")
uo.useobject('Wep') # Wep должен быть обозначен в обжектах как оружее, которым будем мочить крыс и элемов.
uo.deletejournal()
uo.attack('finditem')
wait(6000)
uo.findtype("0x006C",-1,"ground")
while uo.life<100
UO.exec("waittargetself")
UO.exec("usetype bandage")
wait(1000)
UO.exec("useobject Shield") # Тоже самое что с Wep, но тока это щит. (Показать надо через Object)
wait(1000)
UO.exec("waittargetself")
UO.exec("useobject Wep")
wait(1500)
wend
uo.findtype("0x006C",-1,"ground")
wend
uo.findtype("0x00D7",-1,"ground")
while uo.FindCount()>0
Uo.Exec("waittargetobject finditem")
uo.useobject('Wep')
uo.deletejournal()
uo.attack('finditem')
wait(6000)
uo.findtype("0x006C",-1,"ground")
while uo.life<100 # После скольких жизний будем хелиться бинтами.
UO.exec("waittargetself")
UO.exec("usetype bandage")
wait(1000)
UO.exec("useobject Shield")
wait(1000)
UO.exec("waittargetself")
UO.exec("useobject Wep")
wait(1500)
wend
uo.findtype("0x00D7",-1,"ground")
wend
end sub
sub dobor() # Добор кирок из сундука.
while uo.count("0x0E86")<4
uo.print("kirka")
uo.useobject("0x4012ADAC") # ID'шник сундука в котором кирки.
wait(1000)
uo.findtype("0x0E86",-1,"0x4012ADAC") # ID'шник сундука в котором кирки.
wait(700)
uo.moveitem('finditem','4')
wait(700)
wend
end sub