###############################################################
#===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=#
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
;==================== Main mining script ======================
;======================= NMY (Lil Nmy) ========================
;================= ===================
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
sub main()
VAR i, x

Dim rune[20]
rune[0] = 3
rune[1] = '0x416ABF80'
rune[2] = '0x401F70BB'
rune[3] = '0x415D1F41'
rune[4] = ''
rune[5] = ''
rune[6] = ''
rune[7] = ''
rune[8] = ''
rune[9] = ''
rune[10]= ''
rune[11]= ''
rune[12]= ''
rune[13]= ''
rune[14]= ''
rune[15]= ''
rune[16]= ''
rune[17]= ''
rune[18]= ''
rune[19]= ''

uo.print(' Ïîêàæû ãäå ðóíà äàìîé? ... ')
uo.exec('addobject home')
while uo.targeting()
wait(250)
wend

uo.print(' Ïîêàæû ñóíäóê êóäà ñêëàäûâàòü è ãäå ðóíû â ïåùåðû?? ... ')
uo.exec('addobject Sunduk')
while uo.targeting()
wait(250)
wend

while 1
for i = 1 to rune[0]

fizz:
if uo.mana < 12 then
while uo.mana < 12
uo.useskill('Meditation')
wait(5000)
wend
endif

regi()
uo.DeleteJournal()
uo.print(' Ëåòèì â øàõòó ...')
x = uo.getx()
uo.waittargetobject( rune[i] )
uo.cast('Recall')

while x == uo.getx() and not uo.InJournal('The spell fizzles')
wait(250)
wend

if uo.InJournal('The spell fizzles') then
goto fizz
endif

mining()
unload()

next
wend
end sub
;-------------------------------------------
Sub mining()
VAR mx, my, mz, i, j, jor, ser, noto, n
Dim Ore[4]
Ore[1] = '0x19B7'
Ore[2] = '0x19BA'
Ore[3] = '0x19B8'
Ore[4] = '0x19B9'

mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")

uo.set('finddistance','2')
uo.findtype('0x000E', -1 ,'ground')
if uo.FindCount() then
invis()
else
while not UO.Hidden()
UO.Warmode("0")
uo.print(" Ïðÿ÷åìñÿ...")
UO.UseSkill("Hiding")
wait(4000)
wend
end if

for i = mx-4 to mx+4
for j = my-4 to my+4
UO.DeleteJournal()

while not UO.Hidden()
UO.Warmode("0")
uo.print(" Ïðÿ÷åìñÿ...")
UO.UseSkill("Hiding")
wait(4000)
wend

while not UO.InJournal("Òóäà Âàì íå äîòÿíóòüñÿ|Ýòî ñëèøêîì äàëåêî îòñþäà|Òóò íå îñòàëîñü ðóäû|â øàõòå!")
UO.DeleteJournal()

UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Usetype("0x0E85")

while not UO.InJournal("Òóäà Âàì íå äîòÿíóòüñÿ|Ýòî ñëèøêîì äàëåêî îòñþäà|Òóò íå îñòàëîñü ðóäû|â øàõòå!|You put|fail to find|is attacking you|You have found") and not uo.Dead()
if uo.Dead() then
uo.playwav("C:\games\ultima online\alert.wav")
uo.exec('terminate all')
endif
wait(250)
wend

if uo.InJournal('is attacking you') then
invis()
endif

for jor = 0 to 9
ser = uo.journalserial(jor)
noto = uo.getnotoriety(ser)
if noto <> 1 and noto <> 0 and not uo.getgraphic(ser)=='0x000E' and not uo.InJournal('Fireman') then
if uo.waiting() then
uo.canceltarget()
endif
invis()
return
endif
next

uo.set('finddistance','1')
for n = 1 to 4
uo.findtype( Ore[n] ,'-1','ground')
while uo.FindCount()
uo.moveitem('finditem')
checklag()
wait(1000)
uo.findtype( Ore[n] ,'-1','ground')
wend
next

if uo.weight > uo.str*4 then
return
endif

wend

next
next
uo.print(' Ëåòèì äàìîé ...')
end sub
;-------------------------------------------
sub unload()
VAR n, x
Dim UnLoad[4]
UnLoad[1] = '0x19B7'
UnLoad[2] = '0x19BA'
UnLoad[3] = '0x19B8'
UnLoad[4] = '0x19B9'

fizz:
uo.DeleteJournal()
uo.print(' Ëåòèì äàìîé ...')
x = uo.getx()
uo.waittargetobject('home')
uo.cast('Recall')

while x == uo.getx() and not uo.InJournal('The spell fizzles') and uo.life >= uo.str
wait(250)
wend

if uo.InJournal('The spell fizzles') then
goto fizz
endif

if uo.life < uo.str then
invis()
heal()
goto fizz
endif

check()
open()
walkme(2920,115,'')
close()
walkme(2914,110,'')

uo.useobject("Sunduk")
wait(250)
CheckLag()

uo.print(' Ðàçãðóæàþñü ...')
For n = 1 to 4
UO.FindType( UnLoad[n] )
while UO.FindCount()
UO.moveitem('finditem','0','Sunduk')
CheckLag()
wait(1000)
UO.FindType( UnLoad[n] )
wend
next

uo.print(' Ðàçãðóçèëèñü ...')
end sub
;-------------------------------------------
sub invis()
uo.print(' Èíâèçêà ...')
uo.warmode('0')
uo.usetype('0x0F09','0x0060')
end sub
;-------------------------------------------
sub heal()
uo.Print(' Ëå÷åíèå ... ')
uo.warmode('0')
while uo.life < uo.str
uo.bandageself()
checklag()
wait(11000)
wend
end sub
;-------------------------------------------
sub regi()
VAR r, q, n, amount = 10
Dim reg[4]
reg[1] = '0x0F7A'
reg[2] = '0x0F7B'
reg[3] = '0x0F86'
reg[4] = '0x0E21'

For r = 1 to 4
if uo.count( reg[r] )<>amount then
q = amount - uo.count( reg[r] )

if q <> 0 then
if q > 0 then

uo.useobject("Sunduk")
wait(250)
CheckLag()

uo.findtype( reg[r] , -1 ,"Sunduk")

If uo.findcount() == 0 then
uo.msg('You dont have any!')
return
endif

uo.moveitem('finditem', STR(q) )
checklag()
wait(1000)

else

q = q*-1
uo.findtype( reg[r] )
uo.moveitem('finditem', STR(q) ,"Sunduk")
CheckLag()
wait(1000)

endif
endif

endif
next

While uo.Count('0x0F09','0x0060') < 2
uo.findtype('0x0F09','0x0060',"Sunduk")
if uo.FindCount() then
uo.moveitem('finditem')
checklag()
wait(1000)
endif
wend

uo.print(' Âçÿëè ðåãè ...')
end sub
;-------------------------------------------
sub open()
uo.print(' Îòêðûâàåì êàëèòêó ...')
UO.Set('finddistance','2')
UO.FindType('0x0826', -1 ,'ground')
If UO.FindCount() then
UO.UseObject('finditem')
repeat
uo.findtype('0x0827', -1 ,'ground')
wait(100)
until uo.findcount()
Endif
end sub
;-------------------------------------------
sub check()
VAR m
uo.Print(' Ïðîâåðÿåì ðóíó ... ')
uo.deletejournal()
uo.click('home')
while not uo.injournal('jumps left')
wait(250)
wend
if uo.injournal('(0 jumps left)|(1 jumps left)') then
uo.Print(' Ìàðêàåì ðóíó ... ')
m = uo.mana
uo.waittargetobject('home')
uo.cast('Mark')
repeat
wait(250)
until uo.mana<m
endif
end sub
;-------------------------------------------
sub close()
uo.print(' çàêðûâàåì ...')
UO.Set('finddistance','2')
UO.FindType('0x0827', -1 ,'ground')
If UO.FindCount() then
UO.UseObject('finditem')
repeat
uo.findtype('0x0826', -1 ,'ground')
wait(100)
until uo.findcount()
Endif
end sub
;-------------------------------------------
sub Reconnector()
while True
while UO.IsOnline() AND NOT UO.Dead()
wait(1000)
wend
UO.TextOpen()
UO.TextPrint('Disconnected at '+MakeTime())
UO.Exec('terminate all')
connect:
wait(3000)
UO.LDblClick(616,455)
wait(3000)
UO.LDblClick(616,455)
wait(3000)
UO.LDblClick(616,455)
wait(3000)
UO.LDblClick(357,164)
if UO.IsOnline() then
UO.Exec('exec main')
UO.TextOpen()
UO.TextPrint('Reconnected at '+MakeTime())
else
goto connect
endif
wend
endsub
;-------------------------------------------
Sub MakeTime()
VAR D, T, Ret, i
Ret = STR(UO.Time())
T = ""
For i = 0 To Len(Ret)
T = Ret[Len(Ret)-i] + T
If (I == 2) OR (I == 4) Then
T = ":" + T
EndIf
Next
Ret = STR(UO.Date())
D = ""
For i = 0 To Len(Ret)
D = Ret[Len(Ret)-i] + D
If (I == 2) OR (I == 4) Then
D = "." + D
EndIf
Next
Ret = T + " @ " + D
RETURN Ret
end sub

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;; W A L K E R ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

################# W A L K E R ######################

sub WalkME(x,y,Target)
VAR i
VAR dir,ldir,rdir,key,olddir
VAR dx,dy,Exit=0
VAR CacheLimit=9,CacheIndex="Text"
DIM CacheX[10], CacheY[10]

CacheX[0]="Test"
While Exit<>1
If Target<>"" Then
dx=UO.GetX(Target)-UO.GetX()
dy=UO.GetY(Target)-UO.GetY()
; UO.Print("Target locked!")
If UO.GetDistance(Target)<2 Then
return
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 ; GoSE
dir=3
ldir=2
rdir=4
key=40 ; DownArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=0
rdir=1
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=5
rdir=6
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dx>0 AND dy<0 Then ; GoNE
dir=1
ldir=0
rdir=2
key=39 ; RightArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=6
rdir=7
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dx<0 AND dy>0 Then ; GoSW
dir=5
ldir=4
rdir=6
key=37 ; LeftArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==6 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dx<0 AND dy<0 Then ; GoWN
dir=7
ldir=6
rdir=0
key=38 ; UpArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif

If dx<>0 AND dy==0 Then
If dx>0 Then ; GoE
dir=2
key=34 ; PgDown
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoNE
dir=1
ldir=1
rdir=0
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dx<0 Then ; GoW
dir=6
key=36 ; Home key
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif

If dx==0 AND dy<>0 Then
If dy>0 Then ; GoS
dir=4
key=35 ; End
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=6
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif

If dy<0 Then ;GoN
dir=0
key=33 ; PgUp
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoWN
dir=7
ldir=7
rdir=6
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
Wend
end sub


sub StepEdit(x,y,dir,key)
VAR walkwait=100
VAR ErrLevel=0
If UO.GetDir()<>dir Then
checkstam()
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
checkstam()
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
If x==UO.GetX() AND y==UO.GetY() Then
;zatik
ErrLevel=1
Endif
Endif
Return ErrLevel
end sub


sub StepArrow(x,y,dir,ldir,rdir,key)
VAR walkwait=100
VAR ErrLevel=0
If UO.GetDir()<>dir Then
checkstam()
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then
CheckLag()
Endif
Endif

If UO.GetX()==x AND UO.GetY()==y Then
checkstam()
UO.Press(key)
wait(walkwait)
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
CheckLag()
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
; zatik
ErrLevel=1
Endif
Endif
Endif
Return ErrLevel
end sub

sub checkstam()
var refresh = '0x0F0B'
if uo.stamina < 10 then
uo.findtype(refresh,-1,'backpack')
if uo.findcount() then
uo.usetype(refresh)
wait(1000)
else
uo.print("Nety Refreshey! Stoim...")
repeat
wait(500)
until uo.stamina >= 10
endif
else
endif
endsub

Sub CHECKLAG()
del('backpack')
uo.click('backpack')
repeat
wait(200)
until uo.injournal('backpack')
del('backpack')
endsub

Sub DEL(msg)
while uo.injournal(msg)
uo.setJournalLine(uo.injournal(msg)-1,"Is Empty!")
wend
endsub




Есть такой скрипт, но хочеться его переделать немного под нужный шард. а именно - хочеться все таки вместо реколов в шахты сделай так что бы чар сам от дома бежал к шахте (она не далеко), либо рекол но с одним условием, когда рекол проходил к дому. что бы открыть залоченный сундук у дома для сброса ресов нужно стоять на нем, а рекол происходил на 1 тайл от мешка. плюс в скрипте есть перемарк рун - это не надо. ВОобщем готов обьяснить что нужно мне от скрипты видеть тому кто готов помочь либо из своего интереса, либо готов немного отблагодарить