Posted: 2004-08-31 18:57:38
can u please post your version wiht the recalling.
Code: Select all
sub Oredroppings()
UO.DeleteJournal()
Checkmana()
UO.Cast('Mark','temprune') #Keep an extra rune loose inside your backpack and add it to your Objects in Injection naming it "temprune"
Wait(8000)
While UO.InJournal("spell fizzle")==1
UO.Cast('Mark','temprune')
Wait(8000)
Wend
Checkmana()
UO.Exec("recall Runebook 23") #Change 23 to match the rune of your house in your runebook
Wait(8000)
While UO.InJournal("spell fizzle")==1
UO.Exec("recall Runebook 23")
Wait(8000)
Wend
Wait(200)
UO.Exec("emptycontainer 100 orebag OreDC") #Add an object to your Injection called "orebag" and target a bag inside your backpack. OreDC is a chest at my house which is locked and secured outside my front door for easy access.
Wait(1000)
Checkmana()
UO.Cast('Recall','temprune') #Then it recalls back to where you were last and continues mining with the path you recorded! Remember, this only works with this particular mining script at the beginning of the post.
Wait(8000)
While UO.InJournal("spell fizzle")==1
UO.Cast('Recall','temprune')
Wait(8000)
Wend
endsub
sub CheckLag() #Simple lag checking function so that you don't mess up marking or recalling
UO.DeleteJournal()
UO.Click('backpack')
Repeat
wait(200)
Until UO.InJournal('backpack')
end sub
sub Checkmana() #Another simple function so that in case you try to recall and don't have enough mana it will meditate instead of not doing the rest of the script (thusly never actually dropping off the ore :P)
Startmeditation:
Repeat
If UO.Mana<30 Then
UO.Useskill('Meditation')
Wait(2500)
Until UO.InJournal("You must wait") #Change this to match the message you get when you try to meditate but already are...
Repeat
Wait(100)
If UO.InJournal("You lose your concentration") OR UO.InJournal("You stop")
goto Startmeditation
Until UO.Mana>99 #If you don't have this much mana, fix this number to match your stats
endif
endsub
Code: Select all
If UO.Weight>250 Then #Set this weight according to your strength or server settings
Oredroppings()
Endif
UO.DeleteJournal()
While (UO.InJournal("There is nothing") OR UO.InJournal("Try mining"))==0
UO.Print("Mining time!")
UO.DeleteJournal()
UO.WaitTargetTile("1341",STR(UO.GetX()),STR(UO.GetY()),"0")
UO.UseObject("pickaxe")
Code: Select all
UO.SetCatchBag('orebag')
Repeat
timeout=timeout+20
Wait(20)
#UO.Print("Waiting...")
Until UO.InJournal("You loosen") OR UO.InJournal("You put the") OR UO.InJournal("There is nothing here") OR UO.InJournal("Try mining") OR UO.InJournal("You are starving") OR UO.InJournal("World save") OR timeout>maxMineTime
UO.UnSetCatchBag()
Code: Select all
############################################################
# Main Mining Function! Conf. Needed (look above)
############################################################
sub go_mining()
var cycle=1
var path="kskin2ol"
var test=0
var i=0
var j
UO.SetCatchBag("oresBag")
UO.DeleteJournal()
While i<LEN(path)
if VAL(path[i]) then
j=VAL(path[i])
i=i+1
else
j=1
endif
Repeat
if test<>1 then
UO.DeleteJournal()
mine_spot()
end if
UO.Print("New Location!")
if not make_step(path[i]) then
UO.Print("Probably Stuck!")
UO.Print("Hope it is a Worldsave")
endif
j=j-1
Until j==0
i = i + 1
if cycle && i==LEN(path) then
i=0
endif
Wend
end sub
############################################################
# Auxilliar Function. Little mod needed (look above)
############################################################
sub mine_spot()
var maxMineTime=5000
var times=0
var timeout=0
While UO.InJournal("There's no ore")==0
UO.Print("Mining time!")
UO.DeleteJournal()
UO.WaitTargetTile("1339",STR(UO.GetX()),STR(UO.GetY()),"0")
UO.UseType("pickaxe")
timeout=0
times = times +1
if times>20 then
wait(maxMineTime)
times = 0
endif
Repeat
timeout=timeout+200
Wait(200)
#UO.Print("Waiting...")
Until UO.InJournal("You put") OR UO.InJournal("World Save") OR UO.InJournal("There's no ore") OR timeout>maxMineTime
Wend
return 0
end sub
############################################################
# Main Path-Recording function!
############################################################
sub record_path()
var x
var y
var path=""
UO.DeleteJournal()
Repeat
x=UO.GetX()
y=UO.GetY()
if waitNewPos(x,y) then
path=path+extract_dir(x,y,UO.GetX(),UO.GetY())
endif
Until UO.InJournal("stop")
path = compressPath(path)
UO.TextClear()
UO.TextOpen()
UO.TextPrint("Your path is:")
UO.TextPrint(path)
end sub
############################################################
# Auxilliar sub.
############################################################
sub send_step(keycode,dir)
var x = UO.GetX()
var y = UO.GetY()
var timeout = 0
if UO.GetDir()<>dir then
UO.Press(keycode)
Repeat
wait(50)
Until UO.GetDir()==dir
endif
UO.Press(keycode)
Repeat
timeout=timeout+50
wait(50)
Until x<>UO.GetX() || y<>UO.GetY() || timeout>2000
if timeout>2000 then
return 0
endif
return 1
end sub
############################################################
# Bunch of auxilliar subs. No need to change anything!
############################################################
sub waitNewPos(x,y)
while x==UO.GetX() && y==UO.GetY()
if UO.InJournal("stop") then
return 0
endif
wend
return 1
end sub
sub compressPath(path)
Var i=0
Var j=0
Var newPath=""
while i<LEN(path)
j=1
while path[i]==path[i+1] AND j<9
i=i+1
j=j+1
wend
if j==1 then
newPath=newPath+path[i]
else
newPath=newPath+STR(j)+path[i]
endif
i=i+1
wend
return newPath
end sub
sub extract_dir(x,y,a,b)
if x>a then
if y==b then
return "i"
else
if y>b then
return "n"
else
return "w"
endif
endif
else
if x<a then
if y==b then
return "l"
else
if y>b then
return "e"
else
return "s"
endif
endif
else
if y>b then
return "o"
else
return "k"
endif
endif
endif
end sub
sub make_step(dir)
if dir=="e" then
send_step(39,1)
return 1
endif
if dir=="l" then
send_step(34,2)
return 1
endif
if dir=="s" then
send_step(40,3)
return 1
endif
if dir=="k" then
send_step(35,4)
return 1
endif
if dir=="w" then
send_step(37,5)
return 1
endif
if dir=="i" then
send_step(36,6)
return 1
endif
if dir=="n" then
send_step(38,7)
return 1
endif
if dir=="o" then
send_step(33,0)
return 1
endif
if dir=="d" then
While UO.Count("0x19b9")
UO.Drop("0x19b9")
wait(1000)
Wend
wait(200)
return 1
endif
UO.Print("Recall Time!")
return 0
end sub
Code: Select all
UO.SetCatchBag('orebag')
Repeat
timeout=timeout+20
Wait(20)
#UO.Print("Waiting...")
Until UO.InJournal("You loosen") OR UO.InJournal("You put the") OR UO.InJournal("There is nothing here") OR UO.InJournal("Try mining") OR UO.InJournal("You are starving") OR UO.InJournal("World save") OR timeout>maxMineTime
If UO.InJournal("World save") Then
Wait(5000)
Endif
UO.DeleteJournal()
UO.UnSetCatchBag()
Code: Select all
timeout=timeout+20
Code: Select all
UO.SetCatchBag("oresBag")
Repeat
timeout=timeout+200
Wait(20)
#UO.Print("Waiting...")
Until UO.InJournal("You loosen") OR UO.InJournal("You put the") OR UO.InJournal("There is nothing here") OR UO.InJournal("Try mining") OR UO.InJournal("You are starving") OR UO.InJournal("World save") OR timeout>maxMineTime
If UO.InJournal("World save") Then
Wait(5000)
Endif
UO.DeleteJournal()
Reply: ___________
[0004] primary reply
Checks&Radios (0)
Entryes (0)
Code: Select all
### Ultimat Mining Macro w/fixes
sub go_mining()
var cycle=1
var path="7oi7ki" #change this from your exec record_path text
var test=0
var i=0
var j
uo.print('Target the bag for your ingots to go into')
uo.exec('addobject oresBag')
while uo.targeting()
wait(100)
wend
uo.print('Target your Pickaxe')
uo.exec('addtype pickaxe')
while uo.targeting()
wait(100)
wend
uo.print('Target your rune')
uo.exec('addobject temprune')
while uo.targeting()
wait(100)
wend
UO.SetCatchBag("oresBag")
While i<LEN(path)
if VAL(path[i]) then
j=VAL(path[i])
i=i+1
else
j=1
endif
Repeat
if test<>1 then
UO.DeleteJournal()
mine_spot()
end if
UO.Print("New Location!")
if not make_step(path[i]) then
UO.Print("Probably Stuck!")
UO.Print("Hope it is a Worldsave")
endif
j=j-1
Until j==0
i = i + 1
if cycle && i==LEN(path) then
i=0
endif
Wend
end sub
sub mine_spot()
var maxMineTime=9000
var times=0
var timeout=0
If UO.Weight>2000 Then #Set this weight according to your strength or server settings (2000 stone = about 500 str)
Oredroppings()
Endif
UO.DeleteJournal()
ToHide()
While (UO.InJournal("There is no") OR UO.InJournal("Try mining"))==0
UO.Print("Mining time!")
UO.DeleteJournal()
#UO.WaitTargetTile("1339",STR(UO.GetX()),STR(UO.GetY()),"0") ; edited out to work on Dominaira
UO.Exec("waittargetself")
UO.UseType("pickaxe")
timeout=0
times = times +1
if times>20 then
wait(maxMineTime)
times = 0
endif
Repeat
timeout=timeout+20
Wait(20)
#UO.Print("Waiting...")
Until UO.InJournal("You loosen") OR UO.InJournal("You put the") OR UO.InJournal("There is no") OR UO.InJournal("Try mining") OR UO.InJournal("That is too") OR UO.InJournal("You are starving") OR UO.InJournal("World save") OR timeout>maxMineTime
If UO.InJournal("World save") Then
Wait(5000)
UO.DeleteJournal()
Endif
Wend
return 0
end sub
sub record_path()
var x
var y
var path=""
UO.DeleteJournal()
Repeat
x=UO.GetX()
y=UO.GetY()
if waitNewPos(x,y) then
path=path+extract_dir(x,y,UO.GetX(),UO.GetY())
endif
Until UO.InJournal("stop")
path = compressPath(path)
UO.TextClear()
UO.TextOpen()
UO.TextPrint("Your path is:")
UO.TextPrint(path)
end sub
sub send_step(keycode,dir)
var x = UO.GetX()
var y = UO.GetY()
var timeout = 0
if UO.GetDir()<>dir then
UO.Press(keycode)
Repeat
wait(50)
Until UO.GetDir()==dir
endif
UO.Press(keycode)
Repeat
timeout=timeout+50
wait(50)
Until x<>UO.GetX() || y<>UO.GetY() || timeout>2000
if timeout>2000 then
return 0
endif
return 1
end sub
sub waitNewPos(x,y)
while x==UO.GetX() && y==UO.GetY()
if UO.InJournal("stop") then
return 0
endif
wend
return 1
end sub
sub compressPath(path)
Var i=0
Var j=0
Var newPath=""
while i<LEN(path)
j=1
while path[i]==path[i+1] AND j<9
i=i+1
j=j+1
wend
if j==1 then
newPath=newPath+path[i]
else
newPath=newPath+STR(j)+path[i]
endif
i=i+1
wend
return newPath
end sub
sub extract_dir(x,y,a,b)
if x>a then
if y==b then
return "i"
else
if y>b then
return "n"
else
return "w"
endif
endif
else
if x<a then
if y==b then
return "l"
else
if y>b then
return "e"
else
return "s"
endif
endif
else
if y>b then
return "o"
else
return "k"
endif
endif
endif
end sub
sub make_step(dir)
if dir=="e" then
send_step(39,1)
return 1
endif
if dir=="l" then
send_step(34,2)
return 1
endif
if dir=="s" then
send_step(40,3)
return 1
endif
if dir=="k" then
send_step(35,4)
return 1
endif
if dir=="w" then
send_step(37,5)
return 1
endif
if dir=="i" then
send_step(36,6)
return 1
endif
if dir=="n" then
send_step(38,7)
return 1
endif
if dir=="o" then
send_step(33,0)
return 1
endif
if dir=="d" then
While UO.Count("0x19b9")
UO.Drop("0x19b9")
wait(1000)
Wend
wait(200)
return 1
endif
UO.Print("Recall Time!")
return 0
end sub
sub Oredroppings()
UO.DeleteJournal()
Checkmana()
UO.UnSetCatchBag()
UO.DeleteJournal()
UO.Cast('Mark','temprune') #Keep an extra rune loose inside your backpack
Wait(5000)
While UO.InJournal("spell fizzle")==1
UO.Cast('Mark','temprune')
Wait(5000)
Wend
Checkmana()
UO.warmode(0)
UO.Exec("recall Runebook 0x03") #Change 0x03 to match the slot of your house in your runebook
Wait(2000)
While UO.InJournal("spell fizzle")==1
UO.warmode(0)
UO.Exec("recall Runebook 0x03")
Wait(2000)
Wend
ToHide()
Wait(200)
UO.Exec("emptycontainer 100 oresBag oreChest") # use ",addobject oreChest" then target your chest you want to drop off the ore in (a secure container in front of your house)
Wait(100)
Checkmana()
UO.warmode(0)
UO.Cast('Recall','temprune') #Then it recalls back to where you were last and continues mining with the path you recorded!
Wait(3000)
While UO.InJournal("spell fizzle")==1
UO.Cast('Recall','temprune')
Wait(3000)
Wend
UO.SetCatchBag("oresBag")
endsub
sub CheckLag() #Simple lag checking function so that you don't mess up marking or recalling
UO.DeleteJournal()
UO.Click('backpack')
Repeat
wait(200)
Until UO.InJournal('backpack')
end sub
sub Checkmana() #Another simple function so that in case you try to recall and don't have enough mana it will meditate instead of not doing the rest of the script (thusly never actually dropping off the ore :P) Genocide
if UO.Mana<100 then #rewritten by Genocide - set this amount to your chars INT value if not 100
while UO.Mana<UO.INT
UO.UseSkill("Meditation")
wait(3000)
wend
endif
endsub
sub ToHide()
while not UO.Hidden()
uo.print('Attempting to hide')
uo.deletejournal()
UO.UseSkill("Stealth")
wait(4100)
wend
wait(100)
end sub
Atsumi wrote:Thanks for stealing my script without giving me any credit. Lots of thanks.
############################################################
# Ultimate Mining Script! v1.11
# by Hephaisto
# 04/9/2003
# Special Thanks to Voyta for ideas!
############################################################