Вот попросили написать скрипт- больше так небуду
Предлагали денег- невзял
Настраивать надо только руны и их кол-во...
чар открывает - закрывает калитку, там надо посмотреть типы...
хождение тоже каждому индивидуально настраивать...
Запускаем у сундука, в бекпаке руна от дома, руны в шахте в сундуке, чар летит в шахту - обкапывает 4 х 4 летит дамой, складывает, летит в другую...
Code:
###############################################################
#===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=#
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
;==================== Main mining script ======================
;======================= NMY (Lil Nmy) ========================
;================= http://forum.yoko.com.ua ===================
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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
update 22.01.2007