вот скрипт:
Code: Select all
##################
### Ïåðåìåííûå ###
###################################################################################################
var Reconnect=0 ## 1 - Âêëþ÷èòü ðåêîííåêò íà ñåðâåð åñëè âûêèíåò, 0 - îòêëþ÷èòü ðåêîííåêò.(íå ïðîâåðÿë ðàáîòàåò èëè íåò ñ ýòèì ñêðèïòîì)
###
var Food=0 ## - Êóøàòü ïîñëå ñáðîñà ðóäû èëè íåò? 1 - äà, 0 - íåò.
###
var Status=0 ## - Ñòàòóñ ðóäû, ïîêàçûâàåò ñêîêà íàêîïàëè (äëÿ îïûòíûõ ñêðèïò¸ðîâ) 1 - äà, 0 - íåò.
###
var Chest='0x40044B4D' ## - ID ñóíäóêà êóäà áóäóò âûãðóæàòüñÿ ðóäó, ãäå äîëæíû ëåæàòü ðåãè è åäà.
###
var TypeFood='0x160A' ## - Type åäû êîòîðóþ áóäåì êóøàòü.(ñåé÷àñ ôèøòåéêè)
###
var CountReg=150 ## - Êîë-âî ðåãîâ äëÿ ïîäçàðÿäêè.
###
var OreQty=520 ## - Ìàêñèìàëüíûé âåñ ïðè êîòîðîì äîìîé ñ ðóäîé
###
var maxjamp=15 ## - Äëÿ ðåêîëà (èçìåíÿòü íå íóæíî)
var rune=1 ## - Äëÿ ðåêîëà (èçìåíÿòü íå íóæíî)
###################################################################################################
### Wait - Æä¸ò ñîîáøåíèÿ ïîñëå çàìàõà êèðêè, ÷òîáû ïîâòîðèòü. ##
### Fizzle - Åñëè ïðèøëî òàêîå ñîîáøåíèå, òî ïåðåõîäèì íà ñëåä. êëåòêó êîïàòü. ##
###################################################################################################
var Wait1="You put"
var Wait2="heavy"
var Wait3="location"
var Wait4="no ore"
var Wait5="but fail"
var Wait6="far away"
var Wait7="in rock"
var Wait8="You can't"
var Wait9="nothing here"
var Wait10="You have found some"
###
var Fizzle1="There is"
var Fizzle2="You can't use the"
var Fizzle3="Try mining elsewhere."
var Fizzle4="location"
###################################################################################################
#################
### Âêëþ÷àëêà ###
#################
sub Start()
If UO.GetGlobal('Maningcheck')=='on' Then
UO.SetGlobal('Maningcheck','off')
UO.Exec('Exec Terminate')
Else
UO.Exec('Exec Maning')
UO.SetGlobal('Maningcheck','on')
EndIf
End sub
###############
### Ìàéíèíã ###
###############
Sub Maning()
var Mine=1
UO.print('!!!SELECT YOU PICKAXE!!!')
UO.exec('addobject Shovel')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('!!!SELECT YOU RUNE TO HOME!!!')
UO.exec('addobject Home')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('SELECT YOU RUNE TO MINE (1)')
UO.exec('addobject Mine1')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('SELECT YOU RUNE TO MINE (2)')
UO.exec('addobject Mine2')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('SELECT YOU RUNE TO MINE (3)')
UO.exec('addobject Mine3')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('SELECT YOU RUNE TO MINE (4)')
UO.exec('addobject Mine4')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('SELECT YOU RUNE TO MINE (5)')
UO.exec('addobject Mine5')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('SELECT YOU RUNE TO MINE (6)')
UO.exec('addobject Mine6')
while UO.targeting()
wait(100)
wend
wait(1000)
UO.print('SELECT YOU RUNE TO MINE (7)')
UO.exec('addobject Mine7')
while UO.targeting()
wait(100)
wend
If Reconnect==1 Then
UO.Exec('Exec Reconnect')
EndIf
##############################
### Êîïàåì ðóäó âîçëå ñåáÿ ###
##############################
If Mine==1 Then
REPEAT
JumpToRune()
GetOre()
wait(2000)
Until UO.Dead()
End sub
Sub GetOre()
var CheckTime
var mx, my, mz, i, j
mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
for i = mx-2 to mx+2
for j = my-2 to my+2
ToHide()
UO.Print("Get Coordinate: "+str(mx-i)+' '+str(my-j))
If UO.waiting() Then
UO.canceltarget()
EndIf
REPEAT
If UO.weight >= OreQty Then
ToRecall()
EndIf
ToHide()
UO.Waittargettile("1341",str(i),str(j),str(mz))
UO.Useobject("Shovel")
CheckTime=UO.Timer()
UO.DeleteJournal()
REPEAT
wait(300)
Until UO.InJournal(Wait1) or UO.InJournal(Wait2) or UO.InJournal(Wait3) or UO.InJournal(Wait4) or UO.InJournal(Wait5) or UO.InJournal(Wait6) or UO.InJournal(Wait7) or UO.InJournal(Wait8) or UO.InJournal(Wait9) or UO.InJournal(Wait10) or CheckTime+200<uo.Timer() or UO.Dead()
Until UO.InJournal(Fizzle1) or UO.InJournal(Fizzle2) or UO.InJournal(Fizzle3) or UO.InJournal(Fizzle4) or UO.Dead()
If UO.weight >= OreQty Then
ToRecall()
EndIf
Next
Next
End sub
###################
### Ðåêîë äîìîé ###
###################
Sub ToRecall()
RecallToHome()
ToHide()
DropOre()
CheckReg()
If Food==1 Then
ToEat()
EndIf
If Status==1 Then
InfoOre()
EndIf
BackToMine()
End sub
########################################################
### Ñèñòåìà ðåêîëîâ ïî ðóíàì (ñ ïðîâåðêîé íà ïðûæêè) ###
########################################################
Sub JumpToRune()
var x=0
var mx, my
mx = UO.GetX("self")
my = UO.GetY("self")
dim runes[7]
runes[1]='Mine1'
runes[2]='Mine2'
runes[3]='Mine3'
runes[4]='Mine4'
runes[5]='Mine5'
runes[6]='Mine6'
runes[7]='Mine7'
RecallMana()
If rune==maxjamp Then
rune=1
EndIf
UO.Print("Go to Mine: "+str(rune))
UO.Cast('Recall',runes[rune])
Wait(7000)
If UO.getx()==mx and UO.gety()==my Then
REPEAT
x=x+1
RecallMana()
UO.Cast('Recall',runes[rune])
Wait(7000)
Until UO.getx()<>mx and UO.gety()<>my or (x==2) or UO.Dead()
EndIf
CheckMark()
rune=rune+1
End sub
Sub BackToMine()
var x=0
var mx, my
mx = UO.GetX("self")
my = UO.GetY("self")
dim runes[7]
runes[1]='Mine1'
runes[2]='Mine2'
runes[3]='Mine3'
runes[4]='Mine4'
runes[5]='Mine5'
runes[6]='Mine6'
runes[7]='Mine7'
If rune==1 Then
rune=2
EndIf
rune=rune-1
RecallMana()
UO.Print("Go back to Mine: "+str(rune))
UO.Cast('Recall',runes[rune])
Wait(7000)
If UO.getx()==mx and UO.gety()==my Then
REPEAT
x=x+1
RecallMana()
UO.Cast('Recall',runes[rune])
Wait(7000)
Until UO.getx()<>mx and UO.gety()<>my or (x==2) or UO.Dead()
EndIf
CheckMark()
rune=rune+1
End sub
Sub CheckMark()
dim runes[7]
runes[1]='Mine1'
runes[2]='Mine2'
runes[3]='Mine3'
runes[4]='Mine4'
runes[5]='Mine5'
runes[6]='Mine6'
runes[7]='Mine7'
If UO.InJournal('The recall rune is starting to fade') Then
UO.print("Mark Rune: "+str(rune))
REPEAT
UO.DeleteJournal()
MarkMana()
UO.Cast('Mark',runes[rune])
wait(7000)
Until NOT UO.InJournal('The spell fizzles') or UO.Dead()
UO.DeleteJournal()
EndIf
End sub
#######################################################
### Ðåêîëèìñÿ äîìîé ïî ðóíàì (ñ ïðîâåðêîé íà ïðûæêè) ##
#######################################################
Sub RecallToHome()
var x=0
var mx, my
mx = UO.GetX("self")
my = UO.GetY("self")
REPEAT
x=x+1
RecallMana()
UO.Print('Go to Home')
UO.Cast('Recall','Home')
wait(7000)
Until UO.getx()<>mx and UO.gety()<>my or (x==3) or UO.Dead()
If UO.InJournal('The recall rune is starting to fade') Then
UO.print("Mark Rune")
REPEAT
UO.DeleteJournal()
MarkMana()
UO.Cast('Mark','Home')
wait(7000)
Until NOT UO.InJournal('The spell fizzles') or UO.Dead()
UO.DeleteJournal()
EndIf
End sub
####################################
### Âûêëàäûâàåì ðóäó â êîíòåéíåð ###
####################################
Sub DropOre()
If UO.waiting() Then
UO.canceltarget()
EndIf
VAR a,Exit
DIM Ore[5]
Ore[0]=0x19B9 ; 4 and more ore
Ore[1]=0x19B7 ; 1 ore
Ore[2]=0x19BA ; 2 ore
Ore[3]=0x19B8 ; 3 ore
UO.SetReceivingContainer(Chest)
wait(500)
For a=0 to 3
Exit=0
repeat
UO.FindType(Ore[a])
If UO.GetQuantity('finditem') > 0 Then
UO.Grab('0','finditem')
wait(1500)
Else
Exit=1
EndIf
Until Exit==1 or UO.Dead()
Next
UO.UnSetReceivingContainer()
End sub
#####################################
### Ïðîâåðÿåì êîë-âî ðåãîâ â ïàêå ###
#####################################
Sub CheckReg()
If UO.MR <= 10 or UO.BM <= 10 or UO.BP <= 10 Then
UO.Print("!!!Download Regs!!!")
UO.SetReceivingContainer('backpack')
UO.UseObject(Chest)
wait(5000)
UO.FindType('0x0F86','-1',Chest) ; MR
UO.Grab(STR(CountReg-UO.MR),'finditem')
wait(5000)
UO.FindType('0x0F7B','-1',Chest) ; BM
UO.Grab(STR(CountReg-UO.BM),'finditem')
wait(5000)
UO.FindType('0x0F7A','-1',Chest) ; BP
UO.Grab(STR(CountReg-UO.BP),'finditem')
wait(5000)
UO.UnsetReceivingContainer()
UO.Print("!!!Download Regs: Done!!!")
EndIf
End sub
##########################################
### Áåð¸ì õàâêó èç êîíòåéíåðà è êóøàåì ###
##########################################
Sub ToEat()
UO.UseObject(Chest)
wait(5000)
UO.FindType(TypeFood,'-1',Chest)
If UO.FindCount() > 0 Then
UO.SetReceivingContainer('backpack')
UO.Grab('25','finditem')
wait(2000)
REPEAT
UO.UseType(TypeFood)
wait(1000)
Until UO.InJournal('You are simply too full to eat any more!') or UO.Dead()
Else
UO.print("!!! Not Food !!!")
EndIf
DropFood()
End sub
Sub DropFood()
var f,Exit
dim Food[1]
Food[0]=TypeFood
If UO.Waiting() Then
UO.CancelTarget()
EndIf
UO.SetReceivingContainer(Chest)
for f=0 to 0
Exit=0
repeat
UO.FindType(Food[f])
If UO.GetQuantity('finditem') > 0 Then
UO.Grab('0','finditem')
wait(1500)
Else
Exit=1
EndIf
Until Exit==1 or UO.Dead()
next
UO.UnsetReceivingContainer()
End sub
####################################
### Ïðîâåðÿåì ìàíó ïåðåä êàñòàìè ###
####################################
Sub RecallMana()
If UO.mana <= 11 Then
UO.print('!!!Meditation!!!')
UO.Exec('warmode 0')
wait(1000)
REPEAT
UO.UseSkill('Meditation')
wait(15000); 15 ñåêóíä ìåäåòèðóåì.
Until UO.mana > 50 or UO.Dead()
EndIf
End sub
Sub MarkMana()
If UO.mana <= 17 Then
UO.print('!!!Meditation!!!')
UO.Exec('warmode 0')
wait(1000)
REPEAT
UO.UseSkill('Meditation')
wait(15000); 15 ñåêóíä ìåäåòèðóåì.
Until UO.mana > 50 or UO.Dead()
EndIf
End sub
#######################
### Ïðÿ÷èìñÿ â õàéä ###
#######################
Sub ToHide()
var CheckTime
while NOT UO.Hidden()
UO.Print('Hidden...')
UO.Exec("warmode 0")
wait(1000)
UO.UseSkill('Hiding')
CheckTime=UO.Timer()
REPEAT
wait(300)
Until UO.Hidden() or CheckTime+60<uo.Timer() or UO.Dead()
Wend
End sub
###################################
### Ñìîòðèì ñêîêà íàêîïàëè ðóäû ###
###################################
Sub InfoOre()
var LogsTime=PrintTime()
UO.FindType('0x1BDD','-1',Chest)
UO.TextOpen()
UO.TextPrint('#####################')
UO.TextPrint('## Âðåìÿ: '+LogsTime+' ##')
UO.TextPrint('#####################')
UO.TextPrint('Iron Ore: '+STR(GetAmount('0x19B9','0x0000',Chest)))
UO.TextPrint('Rose Ore: '+STR(GetAmount('0x19B9','0x0665',Chest)))
UO.TextPrint('Golden Ore: '+STR(GetAmount('0x19B9','0x084D',Chest)))
UO.TextPrint('Orion Ore: '+STR(GetAmount('0x19B9','0x048A',Chest)))
UO.TextPrint('Dwarf Ore: '+STR(GetAmount('0x19B9','0x0488',Chest)))
UO.TextPrint('Silver Ore: '+STR(GetAmount('0x19B9','0x0482',Chest)))
UO.TextPrint('Shadow Ore: '+STR(GetAmount('0x19B9','0x0770',Chest)))
UO.TextPrint('Valorite Ore: '+STR(GetAmount('0x19B9','0x0515',Chest)))
UO.TextPrint('Crystal Ore: '+STR(GetAmount('0x19B9','0x0487',Chest)))
UO.TextPrint('Magma Ore: '+STR(GetAmount('0x19B9','0x0486',Chest)))
UO.TextPrint('Obsidian Ore: '+STR(GetAmount('0x19B9','0x0485',Chest)))
UO.TextPrint('Mytheril Ore: '+STR(GetAmount('0x19B9','0x048D',Chest)))
UO.TextPrint('#####################')
End sub
Sub GetAmount(Type, Color, Cont)
Var item_amount = 0
UO.IgnoreReset()
Repeat
UO.FindType(Type, Color, Cont)
If UO.FindCount() > 0 Then
If UO.GetQuantity('finditem')==0 Then
item_amount = item_amount + 1
Else
item_amount = item_amount + UO.GetQuantity('finditem')
EndIf
UO.Ignore('finditem')
UO.FindType(Type, Color, Cont)
EndIf
Until UO.FindCount() < 1 or UO.Dead()
UO.IgnoreReset()
Return item_amount
End sub
Sub PrintTime()
Var HR = ''
Var MIN = ''
Var SEC = ''
Var CurrentTime = UO.Time()
If CurrentTime>99999 Then
HR = Mid(STR(CurrentTime),0,2)
MIN = Mid(STR(CurrentTime),2,2)
SEC = Mid(STR(CurrentTime),4,2)
Else
If CurrentTime > 9999 Then
HR = '0'+Mid(STR(CurrentTime),0,1)
MIN = Mid(STR(CurrentTime),1,2)
SEC = Mid(STR(CurrentTime),3,2)
Else
If CurrentTime > 999 Then
HR = '00'
MIN = Mid(STR(CurrentTime),0,2)
SEC = Mid(STR(CurrentTime),2,2)
Else
If CurrentTime > 99 Then
HR = '00'
MIN = '0'+Mid(STR(CurrentTime),0,1)
SEC = Mid(STR(CurrentTime),1,2)
Else
If CurrentTime > 9 Then
HR = '00'
MIN = '00'
SEC = STR(CurrentTime)
Else
HR = '00'
MIN = '00'
SEC = '0'+STR(CurrentTime)
EndIf
EndIf
EndIf
EndIf
EndIf
UO.TextPrint(STR(CurrentTime ))
Return (HR+':'+MIN+':'+SEC)
End sub
##################
### ÐÅÊÎÍÅÊÒÎÐ ###
##################
Sub Reconnect()
var ReconnectTime,rFlag
ReconnectTime='0'
rFlag=1
repeat
while (UO.ObjAtLayer('Bpack')=='')
If rFlag Then
ReconnectTime=MakeTime()
rFlag=0
EndIf
wait(20000)
UO.Say('')
wait(3000)
UO.Say('')
wait(3000)
UO.Say('')
wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
wait(3000)
wend
wait(3000)
If (rFlag==0) and (ReconnectTime<>'0') Then
UO.TextOpen()
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
rFlag=1
ReconnectTime='0'
EndIf
Until false
End sub
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
#############################
### Âûêëþ÷àåì âñå ñêðèïòû ###
#############################
Sub Terminate()
UO.Print("Mining script: Off!")
UO.DeleteJournal()
UO.Exec('terminate all')
wait(100)
UO.Exec('terminate all')
wait(100)
UO.Exec('terminate all')
wait(100)
End sub