Table of Contents
Details #
All scripts have been collected over the years and if available will still contain the creators details, these scripts may run well or not.
Scripts #
mining-north south.sc #
sub main()
var mloop
var walkback
mloop=0
walkback=0
start:
if mloop<=1 then #less than
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(385,312)
mloop=mloop+1
wait(7500)
end if
if mloop>=1 then #greater than
UO.Press(33)
wait(1500)
mloop=0
walkback=walkback+1
end if
if walkback>=18 then #greater than or equil to
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(35)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
UO.Press(33)
UO.Exec('usetype shovel')
wait(2000)
UO.LClick(417,312)
wait(8000)
walkback=0
end if
GOTO start
end sub
mining waittargettile.sc #
sub main()
var shovel = 0x0F39
var pickaxe = 0x0E85
var fishCakes = 0x097B
#removes injection text from the screen
UO.Set('quiet', 1)
#mine a 10 by 10 square with a pickaxe, eating fish cakes when you get hungry
mineSquare(pickaxe, fishCakes, 8, 8)
end sub
sub mineSquare(tool, food, xLength, yLength)
var mapType = 0x14ED
var startX = UO.GetX()
var startY = UO.GetY()
var counter
var currentY = 0
var downRight = 34
var upLeft = 36
While TRUE
#hidePlayers()
dropAllOfType(mapType)
moveTo(startX, startY + currentY)
For counter = 0 To xLength-1
UO.Press(downRight)
mine(tool, food)
Next
currentY = currentY + 1
moveTo(startX + xLength-1, startY + currentY)
For counter = 0 To xLength-1
UO.Press(upLeft)
mine(tool, food)
Next
currentY = currentY + 1
If currentY > yLength - 1 Then
moveTo(startX, startY)
currentY = 0
End If
Wend
end sub
sub mine(tool, food)
var x = UO.GetX()
var y = UO.GetY()
#It looks like the tiles in the crafter mine have the tile graphics 581 to 585
waitTargetTileBelow(x, y, 581, 585)
UO.DeleteJournal()
UO.Usetype(tool)
journalWait('aborted|finished', 10000)
checkStamina(food)
UO.DeleteJournal()
hidePlayers()
end sub
sub moveTo(x,y)
#numpad key codes
var upRight = 33
var downRight = 34
var downLeft = 35
var upLeft = 36
var deltaX, deltaY
While UO.GetX() <> x || UO.GetY() <> y
deltaX = x - UO.GetX()
deltaY = y - UO.GetY()
If deltaX < 0 Then
deltaX = deltaX * -1
End If
If deltaY < 0 Then
deltaY = deltaY * -1
End If
If UO.GetX() > x Then
arrowKeyPress(upLeft, deltaX)
Else
If UO.GetX() < x Then
arrowKeyPress(downRight, deltaX)
Else
If UO.GetY() > y Then
arrowKeyPress(upRight, deltaY)
Else
If UO.GetY() < y Then
arrowKeyPress(downLeft, deltaY)
End If
End If
End If
End If
Wait(1000)
Wend
end sub
sub arrowKeyPress(key, amount)
var down = 40
var i
UO.Press(down)
For i = 0 To amount
UO.Press(key)
Wait(300)
Next
end sub
sub journalWait(journalPattern, timeout)
var time = 0
Repeat
Wait(50)
time = time + 50
Until UO.InJournal(journalPattern) || time > timeout
end sub
sub smelt()
var oreType = 0x19B9
Repeat
UO.FindType(oreType, -1, 'my')
UO.UseType(oreType)
Wait(500)
Until UO.FindCount() < 1
end sub
sub dropAllOfType(type)
Repeat
UO.FindType(type, -1, 'my')
UO.MoveItem('finditem','0','ground')
Wait(100)
Until UO.FindCount() < 2
end sub
sub checkStamina(food)
If UO.Stamina < 20 Then
UO.Usetype(food)
UO.Usetype(food)
UO.Usetype(food)
While UO.Stamina < 20
UO.Print("Stamina too low, waiting...")
Wait(1000)
Wend
End if
end sub
sub waitTargetTileBelow(x, y, firstTileType, lastTileType)
var g
For g = firstTileType to lastTileType
If UO.PrivateGetTile(x, y, 0 , g, g) Then
UO.WaitTargetTile(g, x, y, 0)
#We have successfully targeted the tile
Return
End If
Next
#If we fail, then brute force target the tile
forceWaitTargetTileBelow(x, y)
end sub
sub forceWaitTargetTileBelow(x, y)
var g
For g = 0 to 10000
If UO.PrivateGetTile(x, y, 0 , g, g) Then
UO.WaitTargetTile(g, x, y, 0)
Return
End If
Next
end sub
sub hidePlayers()
var maleType = 0x0190
var femaleType = 0x0191
var guardType = 0x03DE
hideFirst(maleType)
hideFirst(femaleType)
hideFirst(guardType)
end sub
sub hideFirst(type)
UO.WaitTargetGround(type)
UO.Hide()
end sub
Mining Full Stamina.sc #
sub main()
var shovel = 0x0F39
var pickaxe = 0x0E85
var fishCakeType = 0x097B
#removes injection text from the screen
UO.Set('quiet', 1)
#mine a 14 by 14 square with a pickaxe, eating fish cakes when you get hungry
mineSquare(pickaxe, fishCakeType, 14, 14)
end sub
sub mineSquare(tool, foodType, xLength, yLength)
var mapType = 0x14ED
var startX = UO.GetX()
var startY = UO.GetY()
var counter
var currentY = 0
var downRight = 34
var upLeft = 36
While TRUE
dropAllOfType(mapType)
moveTo(startX, startY + currentY, tool)
For counter = 0 To xLength-1
UO.Press(downRight)
mine(tool, foodType)
Next
currentY = currentY + 1
moveTo(startX + xLength-1, startY + currentY, tool)
For counter = 0 To xLength-1
UO.Press(upLeft)
mine(tool, foodType)
Next
currentY = currentY + 1
If currentY > yLength - 1 Then
moveTo(startX, startY, tool)
currentY = 0
End If
Wend
end sub
sub mine(tool, foodType)
var x = UO.GetX()
var y = UO.GetY()
Repeat
UO.WaitTargetSelf()
UO.Usetype(tool)
journalWait('aborted|finished', 10000)
If UO.Stamina < UO.Dex - 3 Then
UO.UseType(foodType)
Wait(200)
End If
Until UO.Stamina == UO.Dex
end sub
sub moveTo(x, y, tool)
#numpad key codes
var upRight = 33
var downRight = 34
var downLeft = 35
var upLeft = 36
var deltaX, deltaY
While UO.GetX() <> x || UO.GetY() <> y
deltaX = x - UO.GetX()
deltaY = y - UO.GetY()
If deltaX < 0 Then
deltaX = deltaX * -1
End If
If deltaY < 0 Then
deltaY = deltaY * -1
End If
If UO.GetX() > x Then
arrowKeyPress(upLeft, deltaX)
Else
If UO.GetX() < x Then
arrowKeyPress(downRight, deltaX)
Else
If UO.GetY() > y Then
arrowKeyPress(upRight, deltaY)
Else
If UO.GetY() < y Then
arrowKeyPress(downLeft, deltaY)
End If
End If
End If
End If
Wend
end sub
sub arrowKeyPress(key, amount)
var down = 40
var i
UO.Press(down)
For i = 0 To amount
UO.Press(key)
Wait(300)
Next
end sub
sub journalWait(journalPattern, timeout)
UO.DeleteJournal()
var time = 0
Repeat
Wait(200)
time = time + 200
Until UO.InJournal(journalPattern) || time > timeout
end sub
sub dropAllOfType(type)
Repeat
UO.FindType(type, -1, 'my')
UO.MoveItem('finditem', 0, 'ground')
Wait(200)
Until UO.FindCount() < 2
end sub
mining2.sc #
sub main()
var startX = UO.GetX()
var startY = UO.GetY()
var counter
var currY = 0
var xLength = 7
var yLength = 6
While TRUE
moveTo(startX, startY + currY)
For counter = 0 To xLength-1
UO.Press(34)
mine()
Next
currY = currY + 1
moveTo(startX + xLength-1, startY + currY)
For counter = 0 To xLength-1
UO.Press(36)
mine()
Next
currY = currY + 1
If currY > yLength - 1 Then
moveTo(startX, startY)
currY = 0
EndIf
Wend
end sub
sub mine()
var time
UO.DeleteJournal()
UO.WaitTargetSelf()
UO.Usetype(0x0E85)
time = 0
Repeat
Wait(200)
time = time + 200
Until UO.InJournal("You stop") || UO.InJournal("no ore") || UO.InJournal("dig anything") || time > 10000
If UO.InJournal("Saving World State") Then
Repeat
wait(200)
Until UO.InJournal("World Saved")
End If
If UO.InJournal("no ore") || UO.InJournal("dig anything") Then
wait(1000)
End If
If UO.Stamina < 10 Then
UO.Usetype(0x097B)
While UO.Stamina < 10
Wait(200)
Wend
End if
UO.DeleteJournal()
end sub
sub moveTo(x,y)
var deltaX
var deltaY
While NOT UO.GetX() == x || NOT UO.GetY() == y
deltaX = x - UO.GetX()
deltaY = y - UO.GetY()
UO.Print(str(deltaX))
UO.Print(str(deltaY))
If deltaX < 0 Then
deltaX = deltaX * -1
End If
If deltaY < 0 Then
deltaY = deltaY * -1
End If
If UO.GetX() > x Then
keyPress(36, deltaX)
Else
If UO.GetX() < x Then
keyPress(34, deltaX)
Else
If UO.GetY() > y Then
keyPress(33, deltaY)
Else
If UO.GetY() < y Then
keyPress(35, deltaY)
EndIf
EndIf
EndIf
EndIf
Wait(1000)
Wend
end sub
sub keyPress(key, amount)
var i
UO.Press(40)
For i = 0 To amount
UO.Press(key)
Wait(300)
Next
end sub
sub smelt()
Repeat
UO.FindType(0x19B9, -1, 'my')
UO.UseType(0x19B9)
Wait(500)
Until UO.FindCount() == 0
end sub
mining 3.sc #
#Start at 2572 482
sub main()
var time
var x
var y
var i
var xStart = UO.GetX() - 2
var yStart = UO.GetY() - 2
var tileNum = 0
Repeat
i = 0
tileNum = tileNum + 1
For x = xStart To xStart + 4
For y = yStart To yStart + 4
UO.DeleteJournal()
UO.Print("Mining at spot: " + STR(i))
UO.Print("X: " + STR(x) + " Y: " + STR(y) + " GFX: " + "?")
UO.WaitTargetTile(1339, x, y, 0)
i = i + 1
UO.UseType(0x0E85)
time = 0
Repeat
wait(200)
time = time + 200
Until UO.InJournal("no more") OR UO.InJournal("You stop") OR UO.InJournal("tool") OR UO.InJournal("see that") OR time > 100000
UO.FindType(0x19B9, -1, 'my')
While UO.FindCount() > 0
UO.WaitTargetObject(0x6AE17633)
UO.DeleteJournal()
UO.UseType(0x19B9)
time = 0
Repeat
wait(200)
time = time + 200
Until UO.InJournal("You create") OR time > 5000
UO.FindType(0x19B9, -1, 'my')
Wend
Next
Next
UO.Say("Free ore at my feet!")
Until FALSE
end sub
mining 4.sc #
sub main()
var time
var x
var y
var z = UO.GetZ()
var i
var xStart = UO.GetX() - 2
var yStart = UO.GetY() - 2
var tileNum = 0
Repeat
i = 0
tileNum = tileNum + 1
For x = xStart To xStart + 4
For y = yStart To yStart + 4
UO.DeleteJournal()
UO.Print("Mining at spot: " + STR(i + 1))
UO.Print("X: " + STR(x) + " Y: " + STR(y) + " GFX: " + "?")
UO.WaitTargetTile(1339, x, y, z)
i = i + 1
UO.UseType(0x0F39)
time = 0
Repeat
wait(200)
time = time + 200
Until UO.InJournal("no more") || UO.InJournal("You stop") || UO.InJournal("tool") || UO.InJournal("see that") || time > 100000
Next
Next
Until FALSE
end sub
mining 6.sc #
sub main()
var startX = UO.GetX()
var startY = UO.GetY()
var counter
var currY = 0
var xLength = 6
var yLength = 6
#UO.Set("quiet", "1")
UO.Set("quiet", "0")
While TRUE
#dropMaps()
moveTo(startX, startY + currY)
For counter = 0 To xLength-1
UO.Press(34)
mine()
Next
currY = currY + 1
moveTo(startX + xLength-1, startY + currY)
For counter = 0 To xLength-1
UO.Press(36)
mine()
Next
currY = currY + 1
If currY > yLength - 1 Then
moveTo(startX, startY)
currY = 0
EndIf
Wend
end sub
sub mine()
var time, g, x, y
x = UO.GetX()
y = UO.GetY()
UO.DeleteJournal()
For g = 1339 to 1360
If UO.PrivateGetTile(x, y, 0 , g, g) Then
UO.WaitTargetTile(g, x, y, 0)
goto ContinueToMine
End If
Next
ContinueToMine:
UO.Print("Graphic is " + STR(g))
#UO.WaitTargetSelf()
UO.Usetype(0x0E85)
time = 0
Repeat
Wait(50)
time = time + 50
Until UO.InJournal("Select a") || time > 5000
time = 0
Repeat
Wait(200)
time = time + 200
Until UO.InJournal("no more|dig anything|You stop|tool|see that") || time > 10000
If UO.InJournal("no ore|dig anything") Then
wait(1000)
End If
If UO.Stamina < 10 Then
UO.Usetype(0x097B)
While UO.Stamina < 10
UO.Print("Stamina too low, waiting...")
Wait(1000)
Wend
End if
UO.DeleteJournal()
end sub
sub moveTo(x,y)
var deltaX
var deltaY
While NOT UO.GetX() == x || NOT UO.GetY() == y
deltaX = x - UO.GetX()
deltaY = y - UO.GetY()
UO.Print(str(deltaX))
UO.Print(str(deltaY))
If deltaX < 0 Then
deltaX = deltaX * -1
End If
If deltaY < 0 Then
deltaY = deltaY * -1
End If
If UO.GetX() > x Then
keyPress(36, deltaX)
Else
If UO.GetX() < x Then
keyPress(34, deltaX)
Else
If UO.GetY() > y Then
keyPress(33, deltaY)
Else
If UO.GetY() < y Then
keyPress(35, deltaY)
EndIf
EndIf
EndIf
EndIf
Wait(1000)
Wend
end sub
sub keyPress(key, amount)
var i
UO.Press(40)
For i = 0 To amount
UO.Press(key)
Wait(300)
Next
end sub
sub smelt()
Repeat
UO.FindType(0x19B9, -1, 'my')
UO.UseType(0x19B9)
Wait(500)
Until UO.FindCount() == 0
end sub
sub dropMaps()
UO.FindType(0x14ED, -1, 'my')
While UO.FindCount() > 0
UO.MoveItem('finditem','0','ground')
Wait(100)
UO.FindType(0x14ED, -1, 'my')
Wend
end sub
mining 10.sc #
sub main()
var mloop
var walkback
mloop=0
walkback=0
start:
if mloop<=1 then #less than
UO.Exec('usetype pick')
wait(2000)
UO.LClick(380,312)
mloop=mloop+1
wait(7500)
end if
if mloop>=1 then #greater than
UO.Press(34)
wait(1500)
mloop=0
walkback=walkback+1
end if
if walkback>=18 then #greater than or equil to
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(36)
wait(500)
UO.Press(34)
wait(500)
walkback=0
end if
GOTO start
end sub
mining corsairs.sc #
################################
# corsairs el leeto mining script
# use recordpath to record a MoveArrayX/Y array
# msn [email protected]
# icq 59272943
# august 2004
###############################
sub main()
var ArraySize=200,MyX,MyY,i
dim MoveArrayX[200]
dim MoveArrayY[200]
MoveArrayX[0]=4307
MoveArrayY[0]=3734
MoveArrayX[1]=4307
MoveArrayY[1]=3733
MoveArrayX[2]=4306
MoveArrayY[2]=3733
MoveArrayX[3]=4306
MoveArrayY[3]=3732
MoveArrayX[4]=4305
MoveArrayY[4]=3732
MoveArrayX[5]=4304
MoveArrayY[5]=3732
MoveArrayX[6]=4303
MoveArrayY[6]=3732
MoveArrayX[7]=4302
MoveArrayY[7]=3732
MoveArrayX[8]=4301
MoveArrayY[8]=3732
MoveArrayX[9]=4300
MoveArrayY[9]=3732
MoveArrayX[10]=4299
MoveArrayY[10]=3732
MoveArrayX[11]=4298
MoveArrayY[11]=3732
MoveArrayX[12]=4297
MoveArrayY[12]=3732
MoveArrayX[13]=4296
MoveArrayY[13]=3732
MoveArrayX[14]=4295
MoveArrayY[14]=3732
MoveArrayX[15]=4294
MoveArrayY[15]=3732
MoveArrayX[16]=4293
MoveArrayY[16]=3732
MoveArrayX[17]=4292
MoveArrayY[17]=3732
MoveArrayX[18]=4291
MoveArrayY[18]=3732
MoveArrayX[19]=4290
MoveArrayY[19]=3732
MoveArrayX[20]=4289
MoveArrayY[20]=3732
MoveArrayX[21]=4288
MoveArrayY[21]=3732
MoveArrayX[22]=4287
MoveArrayY[22]=3733
MoveArrayX[23]=4286
MoveArrayY[23]=3733
MoveArrayX[24]=4285
MoveArrayY[24]=3733
MoveArrayX[25]=4284
MoveArrayY[25]=3733
MoveArrayX[26]=4283
MoveArrayY[26]=3734
MoveArrayX[27]=4282
MoveArrayY[27]=3734
MoveArrayX[28]=4281
MoveArrayY[28]=3735
MoveArrayX[29]=4280
MoveArrayY[29]=3735
MoveArrayX[30]=4279
MoveArrayY[30]=3736
MoveArrayX[31]=4278
MoveArrayY[31]=3737
MoveArrayX[32]=4277
MoveArrayY[32]=3737
MoveArrayX[33]=4276
MoveArrayY[33]=3737
MoveArrayX[34]=4275
MoveArrayY[34]=3737
MoveArrayX[35]=4274
MoveArrayY[35]=3737
MoveArrayX[36]=4273
MoveArrayY[36]=3737
MoveArrayX[37]=4272
MoveArrayY[37]=3738
MoveArrayX[38]=4271
MoveArrayY[38]=3738
MoveArrayX[39]=4270
MoveArrayY[39]=3738
MoveArrayX[40]=4269
MoveArrayY[40]=3738
MoveArrayX[41]=4269
MoveArrayY[41]=3737
MoveArrayX[42]=4268
MoveArrayY[42]=3737
MoveArrayX[43]=4267
MoveArrayY[43]=3737
MoveArrayX[44]=4266
MoveArrayY[44]=3737
MoveArrayX[45]=4265
MoveArrayY[45]=3736
MoveArrayX[46]=4265
MoveArrayY[46]=3735
MoveArrayX[47]=4264
MoveArrayY[47]=3735
MoveArrayX[48]=4263
MoveArrayY[48]=3735
MoveArrayX[49]=4262
MoveArrayY[49]=3735
MoveArrayX[50]=4262
MoveArrayY[50]=3734
MoveArrayX[51]=4262
MoveArrayY[51]=3733
MoveArrayX[52]=4261
MoveArrayY[52]=3733
MoveArrayX[53]=4260
MoveArrayY[53]=3733
MoveArrayX[54]=4259
MoveArrayY[54]=3733
MoveArrayX[55]=4258
MoveArrayY[55]=3733
MoveArrayX[56]=4257
MoveArrayY[56]=3733
MoveArrayX[57]=4256
MoveArrayY[57]=3733
MoveArrayX[58]=4255
MoveArrayY[58]=3733
MoveArrayX[59]=4254
MoveArrayY[59]=3733
MoveArrayX[60]=4253
MoveArrayY[60]=3733
MoveArrayX[61]=4252
MoveArrayY[61]=3733
MoveArrayX[62]=4251
MoveArrayY[62]=3733
MoveArrayX[63]=4250
MoveArrayY[63]=3733
MoveArrayX[64]=4249
MoveArrayY[64]=3733
MoveArrayX[65]=4248
MoveArrayY[65]=3733
MoveArrayX[66]=4247
MoveArrayY[66]=3733
MoveArrayX[67]=4246
MoveArrayY[67]=3733
MoveArrayX[68]=4245
MoveArrayY[68]=3733
MoveArrayX[69]=4244
MoveArrayY[69]=3733
MoveArrayX[70]=4243
MoveArrayY[70]=3733
MoveArrayX[71]=4242
MoveArrayY[71]=3734
MoveArrayX[72]=4241
MoveArrayY[72]=3734
MoveArrayX[73]=4241
MoveArrayY[73]=3735
MoveArrayX[74]=4241
MoveArrayY[74]=3736
MoveArrayX[75]=4240
MoveArrayY[75]=3736
MoveArrayX[76]=4239
MoveArrayY[76]=3736
MoveArrayX[77]=4238
MoveArrayY[77]=3736
MoveArrayX[78]=4237
MoveArrayY[78]=3737
MoveArrayX[79]=4236
MoveArrayY[79]=3738
MoveArrayX[80]=4235
MoveArrayY[80]=3739
MoveArrayX[81]=4234
MoveArrayY[81]=3739
MoveArrayX[82]=4233
MoveArrayY[82]=3739
MoveArrayX[83]=4233
MoveArrayY[83]=3740
MoveArrayX[84]=4232
MoveArrayY[84]=3740
MoveArrayX[85]=4231
MoveArrayY[85]=3740
MoveArrayX[86]=4230
MoveArrayY[86]=3741
MoveArrayX[87]=4229
MoveArrayY[87]=3742
MoveArrayX[88]=4228
MoveArrayY[88]=3743
MoveArrayX[89]=4227
MoveArrayY[89]=3744
MoveArrayX[90]=4227
MoveArrayY[90]=3745
MoveArrayX[91]=4227
MoveArrayY[91]=3746
MoveArrayX[92]=4227
MoveArrayY[92]=3747
MoveArrayX[93]=4227
MoveArrayY[93]=3748
MoveArrayX[94]=4226
MoveArrayY[94]=3748
MoveArrayX[95]=4226
MoveArrayY[95]=3749
MoveArrayX[96]=4226
MoveArrayY[96]=3750
MoveArrayX[97]=4226
MoveArrayY[97]=3751
MoveArrayX[98]=4226
MoveArrayY[98]=3752
MoveArrayX[99]=4226
MoveArrayY[99]=3753
MoveArrayX[100]=4226
MoveArrayY[100]=3752
MoveArrayX[101]=4226
MoveArrayY[101]=3751
MoveArrayX[102]=4226
MoveArrayY[102]=3750
MoveArrayX[103]=4226
MoveArrayY[103]=3749
MoveArrayX[104]=4226
MoveArrayY[104]=3748
MoveArrayX[105]=4227
MoveArrayY[105]=3747
MoveArrayX[106]=4227
MoveArrayY[106]=3746
MoveArrayX[107]=4228
MoveArrayY[107]=3745
MoveArrayX[108]=4228
MoveArrayY[108]=3744
MoveArrayX[109]=4229
MoveArrayY[109]=3743
MoveArrayX[110]=4229
MoveArrayY[110]=3742
MoveArrayX[111]=4230
MoveArrayY[111]=3741
MoveArrayX[112]=4231
MoveArrayY[112]=3740
MoveArrayX[113]=4232
MoveArrayY[113]=3740
MoveArrayX[114]=4233
MoveArrayY[114]=3740
MoveArrayX[115]=4233
MoveArrayY[115]=3739
MoveArrayX[116]=4234
MoveArrayY[116]=3738
MoveArrayX[117]=4235
MoveArrayY[117]=3738
MoveArrayX[118]=4236
MoveArrayY[118]=3738
MoveArrayX[119]=4237
MoveArrayY[119]=3738
MoveArrayX[120]=4238
MoveArrayY[120]=3737
MoveArrayX[121]=4238
MoveArrayY[121]=3736
MoveArrayX[122]=4239
MoveArrayY[122]=3736
MoveArrayX[123]=4240
MoveArrayY[123]=3736
MoveArrayX[124]=4241
MoveArrayY[124]=3736
MoveArrayX[125]=4242
MoveArrayY[125]=3736
MoveArrayX[126]=4241
MoveArrayY[126]=3736
MoveArrayX[127]=4241
MoveArrayY[127]=3735
MoveArrayX[128]=4241
MoveArrayY[128]=3734
MoveArrayX[129]=4242
MoveArrayY[129]=3734
MoveArrayX[130]=4243
MoveArrayY[130]=3734
MoveArrayX[131]=4244
MoveArrayY[131]=3734
MoveArrayX[132]=4245
MoveArrayY[132]=3734
MoveArrayX[133]=4246
MoveArrayY[133]=3734
MoveArrayX[134]=4246
MoveArrayY[134]=3733
MoveArrayX[135]=4247
MoveArrayY[135]=3732
MoveArrayX[136]=4248
MoveArrayY[136]=3732
MoveArrayX[137]=4249
MoveArrayY[137]=3732
MoveArrayX[138]=4250
MoveArrayY[138]=3732
MoveArrayX[139]=4251
MoveArrayY[139]=3732
MoveArrayX[140]=4252
MoveArrayY[140]=3732
MoveArrayX[141]=4253
MoveArrayY[141]=3732
MoveArrayX[142]=4254
MoveArrayY[142]=3732
MoveArrayX[143]=4255
MoveArrayY[143]=3733
MoveArrayX[144]=4256
MoveArrayY[144]=3733
MoveArrayX[145]=4257
MoveArrayY[145]=3733
MoveArrayX[146]=4258
MoveArrayY[146]=3733
MoveArrayX[147]=4259
MoveArrayY[147]=3733
MoveArrayX[148]=4260
MoveArrayY[148]=3733
MoveArrayX[149]=4261
MoveArrayY[149]=3733
MoveArrayX[150]=4262
MoveArrayY[150]=3733
MoveArrayX[151]=4263
MoveArrayY[151]=3734
MoveArrayX[152]=4264
MoveArrayY[152]=3735
MoveArrayX[153]=4265
MoveArrayY[153]=3735
MoveArrayX[154]=4266
MoveArrayY[154]=3736
MoveArrayX[155]=4267
MoveArrayY[155]=3737
MoveArrayX[156]=4268
MoveArrayY[156]=3737
MoveArrayX[157]=4269
MoveArrayY[157]=3737
MoveArrayX[158]=4270
MoveArrayY[158]=3737
MoveArrayX[159]=4271
MoveArrayY[159]=3737
MoveArrayX[160]=4272
MoveArrayY[160]=3737
MoveArrayX[161]=4273
MoveArrayY[161]=3737
MoveArrayX[162]=4274
MoveArrayY[162]=3737
MoveArrayX[163]=4275
MoveArrayY[163]=3737
MoveArrayX[164]=4276
MoveArrayY[164]=3737
MoveArrayX[165]=4277
MoveArrayY[165]=3737
MoveArrayX[166]=4278
MoveArrayY[166]=3737
MoveArrayX[167]=4279
MoveArrayY[167]=3737
MoveArrayX[168]=4279
MoveArrayY[168]=3736
MoveArrayX[169]=4280
MoveArrayY[169]=3736
MoveArrayX[170]=4280
MoveArrayY[170]=3735
MoveArrayX[171]=4281
MoveArrayY[171]=3735
MoveArrayX[172]=4282
MoveArrayY[172]=3735
MoveArrayX[173]=4282
MoveArrayY[173]=3734
MoveArrayX[174]=4283
MoveArrayY[174]=3733
MoveArrayX[175]=4284
MoveArrayY[175]=3733
MoveArrayX[176]=4285
MoveArrayY[176]=3733
MoveArrayX[177]=4286
MoveArrayY[177]=3733
MoveArrayX[178]=4287
MoveArrayY[178]=3733
MoveArrayX[179]=4288
MoveArrayY[179]=3733
MoveArrayX[180]=4288
MoveArrayY[180]=3732
MoveArrayX[181]=4289
MoveArrayY[181]=3732
MoveArrayX[182]=4290
MoveArrayY[182]=3732
MoveArrayX[183]=4291
MoveArrayY[183]=3732
MoveArrayX[184]=4292
MoveArrayY[184]=3732
MoveArrayX[185]=4293
MoveArrayY[185]=3732
MoveArrayX[186]=4294
MoveArrayY[186]=3732
MoveArrayX[187]=4295
MoveArrayY[187]=3732
MoveArrayX[188]=4296
MoveArrayY[188]=3732
MoveArrayX[189]=4297
MoveArrayY[189]=3732
MoveArrayX[190]=4298
MoveArrayY[190]=3732
MoveArrayX[191]=4299
MoveArrayY[191]=3732
MoveArrayX[192]=4300
MoveArrayY[192]=3732
MoveArrayX[193]=4301
MoveArrayY[193]=3732
MoveArrayX[194]=4302
MoveArrayY[194]=3732
MoveArrayX[195]=4303
MoveArrayY[195]=3732
MoveArrayX[196]=4304
MoveArrayY[196]=3732
MoveArrayX[197]=4305
MoveArrayY[197]=3732
MoveArrayX[198]=4306
MoveArrayY[198]=3732
MoveArrayX[199]=4307
MoveArrayY[199]=3733
MoveArrayX[200]=4307
MoveArrayY[200]=3734
start:
for i=0 to ArraySize
if MoveArrayX[i] AND MoveArrayY[i] then
uo.print(STR(MoveArrayX[i]) + " " + STR(MoveArrayY[i]))
gotoxy(MoveArrayX[i],MoveArrayY[i])
rapetiles()
endif
wait(50)
next
goto start
end sub
sub randomxy(num,myx,myy,myz)
myx=myx
myy=myy
return str(myx)+" "+str(myy)+" "+str(myz)
wait(100)
end sub
sub gotoxy(x,y)
var prec=0
var ld=0,ldc=0
var dx,dy
var mx,my
var ox,oy,mk,k
var mDelay=150 #delay for sending steps
#uo.print(">")
uo.track("1",str(x),str(y))
start:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if not ldc then
#uo.print(STR(dx))
end if
if dx<3 then
mk=70
else
mk=15
end if
ox=mx
oy=my
for k=1 to mk
mx=UO.GetX()
my=UO.GetY()
if mx<>ox or my<>oy then
goto sdidapl
end if
wait(10)
next
sdidapl:
mx=UO.GetX()
my=UO.GetY()
dx=mx-x
if dx<0 then
dx=0-dx
endif
dy=my-y
if dy<0 then
dy=0-dy
endif
if dy>dx then
dx=dy
end if
mx=UO.GetX()
my=UO.GetY()
if dx<=prec then
return
end if
if ld==dx then
ldc=ldc+1
if ldc>100 then
uo.print("Can not reach location!")
return
end if
else
ld=dx
end if
mx=UO.GetX()
my=UO.GetY()
if mx==x then
if my==y then
return
endif
if my>y then
#UO.Print("UR")
UO.Press(33)
goto start
endif
#UO.Print("DL")
UO.Press(35)
goto start
end if
if mx<x then
if my>y then
#UO.Print("R")
UO.Press(39)
goto start
endif
if my==y then
#UO.Print("DR")
UO.Press(34)
goto start
endif
#UO.Print("D")
UO.Press(40)
goto start
end if
if my<y then
#UO.Print("L")
UO.Press(37)
goto start
endif
if my==y then
#UO.Print("LU")
UO.Press(36)
goto start
endif
#UO.Print("U")
UO.Press(38)
goto start
end sub
sub recordarray()
UO.Print("1. Try to avoid impassable objects like stalagmites by staying away by 2 tiles")
UO.Print("2. It is good idea to walk back to original start location or close to it to avoid script stuff ups")
UO.Print("3. Tile array is output to text dialog")
UO.TextOpen()
var mX,mY,lX,lY,count=0
UO.DeleteJournal()
repeat
wait(10)
mX=UO.GetX()
mY=UO.GetY()
if lX<>mX AND lY<>mY OR lX<>mX OR lY<>mY then
UO.TextPrint("MoveArrayX["+str(count)+"]="+str(mX))
UO.TextPrint("MoveArrayY["+str(count)+"]="+str(mY))
count=count+1
endif
lX=mX
lY=mY
until UO.InJournal("stop")
end sub
sub rapetiles()
var mx,my,mz,string,count=0
mx=UO.GetX()
my=UO.GetY()
mz=UO.GetZ()
string=randomxy(count,mx,my,mz)
rapetile(string)
end sub
sub mineonce(string)
var fcount
start:
UO.DeleteJournal()
UO.Exec("waittargettile 1339 "+string)
uo.exec("findtype 0x0F39 0x0000 my")
fcount=UO.FindCount()
if fcount==0 then
uo.useobject(UO.ObjAtLayer('Bpack'))
wait(5000)
endif
uo.exec("findtype 0x0F39 0x0000 my")
UO.Useobject("finditem")
repeat
wait(10)
until UO.InJournal("stop mining") OR UO.InJournal("Reconnected.") OR UO.InJournal("too far") OR UO.InJournal("Welcome to Ultima Online!")
end sub
sub rapetile(string)
repeat
mineonce(string)
wait(10)
until UO.InJournal("no ore") OR UO.InJournal("Reconnected.") OR UO.InJournal("too far")
end sub
sub dumpstuff()
var fcount
var ArraySize=49
dim DropArray[49]
#graphic color
DropArray[0]="0xabcd exfghi"
DropArray[1]="0x19b9 0x0000"
DropArray[2]="0x19b9 0x045e"
DropArray[3]="0x19b9 0x03ea"
DropArray[4]="0x19b9 0x0602"
DropArray[5]="0x19b9 0x0455"
DropArray[6]="0x19b9 0x06b8"
DropArray[7]="0x19b9 0x1159"
DropArray[8]="0x19b9 0x04df"
DropArray[9]="0x19b9 0x1111"
DropArray[10]="0x19b9 0x1158"
DropArray[11]="0x19b9 0x0383"
DropArray[12]="0x19b9 0x1160"
DropArray[13]="0x19b9 0x1223"
DropArray[14]="0x19b9 0x1134"
DropArray[15]="0x19b9 0x1152"
DropArray[16]="0x19b9 0x1001"
DropArray[17]="0x19b9 0x1155"
DropArray[18]="0x19b9 0x0633"
DropArray[19]="0x19b9 0x1131"
DropArray[20]="0x19b9 0x0852"
DropArray[21]="0x19b9 0x1154"
DropArray[22]="0x19b9 0x1105"
DropArray[23]="0x19b9 0x1209"
DropArray[24]="0x19b9 0x049e"
DropArray[25]="0x19b9 0x0499"
DropArray[26]="0x19b9 0x049c"
DropArray[27]="0x19b9 0x048b"
DropArray[28]="0x19b9 0x0500"
DropArray[29]="0x19b9 0x0501"
DropArray[30]="0x19b9 0x0492"
DropArray[31]="0x19b9 0x049f"
DropArray[32]="0x3885 0x1171"
DropArray[33]="0x3877 0x1172"
DropArray[34]="0x3873 0x1176"
DropArray[35]="0x19b9 0x0482"
DropArray[36]="0x19b9 0x0279"
DropArray[37]="0x19b9 0x04b9"
DropArray[38]="0x19b9 0x0480"
DropArray[39]="0x19b9 0x046e"
DropArray[40]="0x19b9 0x0451"
DropArray[41]="0x19b9 0x04c7"
DropArray[42]="0x19b9 0x0457"
DropArray[43]="0x19b9 0x017f"
DropArray[44]="0x19b9 0x046b"
DropArray[45]="0x19b9 0x0483"
DropArray[46]="0x19b9 0x0487"
DropArray[47]="0x19b9 0x0486"
DropArray[48]="0x19b9 0x03E9"
DropArray[49]="0x19b9 0x0488"
for var i=0 to ArraySize
UO.exec("findtype " + DropArray[i] + " my")
fcount=UO.FindCount()
if fcount==1 then
uo.exec("moveitem finditem 60000 dumpcrate")
endif
if fcount>1 then
uo.exec("moveitem finditem 60000 dumpcrate")
endif
wait(100)
next
end sub
sub where()
#########################
# |x:2857 #
# |y:2241 #
# #
# #
# #
# |x:2869 #
# |y:2253 #
#########################
var x=UO.GetX()
var y=UO.GetY()
x=UO.GetX()
y=UO.GetY()
if x==2521 AND y==191 then #TILE NEXT TO METAL CHEST
return "DTILE"
endif
if x>=2555 AND y>=450 AND x<=2581 AND y<=500 then
return "MINE"
endif
if x>=2515 AND y>=185 AND x<=2528 AND y<=196 then
return "TOWER"
endif
wait(250)
end sub
sub recall(rid)
var x=UO.GetX(),y=UO.GetY(),x2=UO.GetX(),y2=UO.GetY() #do not modify these
var RecallDelay=2500 #Taken from zh3 scripts
var timeout=200
var counter=0
var Msg.Failure="failure"
var Msg.Recall="recalled"
var Msg.Error="error"
var Msg.NoCharges="nocharges"
UO.DeleteJournal()
uo.exec("set norbcheck 1")
uo.exec("set norbcalc 1")
UO.Recall("runebook",int(rid))
uo.exec("moveoff")
repeat
x2=UO.GetX()
y2=UO.GetY()
wait(100)
counter=counter+1
until x2<>x OR y2<>y OR counter>=timeout OR UO.InJournal("out of charges.")
if UO.InJournal("out of charges.") then
uo.exec("moveon")
return Msg.NoCharges
endif
if counter>=timeout then
uo.exec("moveon")
return Msg.Failure
else
uo.exec("moveon")
return Msg.Recall
endif
uo.exec("moveon")
return Msg.Error
end sub
sub fillrbook()
var fcount
var tmp
var wDelay=1000 #action delay
UO.Exec("findtype 0x1F4C 0x0000 my")
fcount=UO.FindCount()
if fcount>=1 then
uo.print("found recalls, trying to fill book!")
UO.Exec("moveitem finditem 60000 runebook")
endif
wait(wDelay)
UO.Exec("findtype 0x1F4C 0x0000 dumpcrate")
fcount=UO.FindCount()
if fcount>=1 then
uo.print("found recalls, trying to fill book!")
UO.Exec("moveitem finditem 60000 runebook")
endif
wait(wDelay)
UO.Exec("findtype 0x1F4C 0x0000 my")
fcount=UO.FindCount()
if fcount>=1 then
uo.print("moving recalls to dumpchest")
if fcount==1 then
UO.Exec("findtype 0x1F4C 0x0000 my")
fcount=UO.FindCount()
tmp=UO.Count("0x1F4C")-5
UO.Exec("moveitem finditem "+str(tmp)+" dumpcrate")
wait(wDelay)
return
endif
while fcount>=3
UO.Exec("findtype 0x1F4C 0x0000 my")
fcount=UO.FindCount()
tmp=UO.Count("0x1F4C")
UO.Exec("moveitem finditem "+str(tmp)+" dumpcrate")
wait(wDelay)
wend
UO.Exec("findtype 0x1F4C 0x0000 my")
fcount=UO.FindCount()
tmp=UO.Count("0x1F4C")-5
UO.Exec("moveitem finditem "+str(tmp)+" dumpcrate")
wait(wDelay)
return
endif
UO.Print("FUCK!")
end sub
sub food()
var msg
UO.DeleteJournal()
wait(250)
UO.ServerPrint(".hungry")
wait(250)
if UO.InJournal("You are absolutely stuffed!")==false then
repeat
uo.usetype("food")
wait(500)
until UO.InJournal("You're stuffed!")
endif
end sub
mining 16.sc #
sub main()
var la
var boobs
Repeat
la = 0
boobs = 0
Repeat
Repeat
UO.Press(37)
UO.Print("Going Left. Tile Number " + str(la + 1))
mine()
la = la + 1
Until la == 5
UO.Press(40)
UO.Press(40)
Repeat
UO.Press(39)
UO.Print("Going Right. Tile Number " + str(la))
mine()
la = la - 1
Until la == 0
If not boobs == 1 Then
UO.Press(40)
UO.Press(40)
Endif
boobs = boobs + 1
Until boobs == 2
UO.Print("Going up!")
UO.Press(38)
UO.Press(38)
UO.Press(38)
UO.Press(38)
Until FALSE
end sub
sub mine()
var time
UO.WaitTargetSelf()
UO.Usetype(0x0E85)
time = 0
UO.DeleteJournal()
UO.Say(".hungry")
Repeat
Wait(200)
time = time + 200
Until UO.InJournal("You stop") || UO.InJournal("no ore") || UO.InJournal("dig anything") || time > 10000
time = 0
If UO.InJournal("no ore") || UO.InJournal("dig anything") Then
wait(1000)
End If
If NOT UO.InJournal("stuffed") AND UO.Stamina < 10 Then
UO.Usetype(0x097B)
End if
UO.DeleteJournal()
end sub
sub smelt()
Repeat
UO.Usetype(0x19b9)
Wait(300)
Until FALSE
end sub
Ultimate Mining Script.sc #
############################################################
# Ultimate Mining Script! v1.11
# by Hephaisto
# 04/9/2003
# Special Thanks to Voyta for ideas!
############################################################
#
#=== Main Idea
# First of all, user records a path inside the mine,
# then... the script follows this path mining under
# user's position each step.
#
#=== Possible Upgrades
# - Recalling between mines (at least in my shard, this
# macro mines faster than the mine regeneration rate,
# even in the biggest mines).
# - Override using of setcatchbag. Considered illegal
# in most of shards. First idea is to let the macro
# walk to a house and drop the ore there. UNFINISHED!
# - Correcting the lang... my englis is poor *lol*
#
#=== How to setup (it isn't that difficult)
# 1. Create an Object TYPE called "pickaxe", init
# it to your mining tool.
# 2. In my shard, mining time of a spot never takes
# more than 5 seconds. If in yours this time can
# be longer, change the maxMineTime var on the
# mine_spot sub.
# 3. If you wish to use the "setCatchBag" thing,
# create an injection OBJECT called "oresBag",
# and set it to the container in the bank (old
# spheres only) or in you pack wich will store
# the ores.
# 4. If you want to cycle the path (neverending
# mining, till you stop the macro), set the
# value of "cycle" variable in the go_mining
# sub to 1.
#
#=== Action starts! How to record the path?!
# 1. Go to the starting location (have to remember it!)
# and execute the record_path sub.
# 2. Walk normally all over where you you want to
# mine later (char will follow YOUR path, try to
# repeat as low spots as you can)
# 3. When you're done, just say "stop"
# 4. Your path is in the textWindow! Copy it to
# the 'Var path="xxxx"' on the go_mining sub, where
# xxxx is your path.
#
# IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT!
# The path is a fucking long string :P
# If you want to cycle this path, make sure it ends
# EXACTLY where it stats! (no need to look at same dir)
#
#=== Hardcore Action time! Let's rock!
# 1. Go to the starting position of your path.
# 2. Execute the go_mining function!
# 3. Let the time do his work, woh0h0h0h0!
#
#=== Considerations
# This macro NEVER uses the mouse! Why? This way you
# can use your comp while it's working. You can even
# use multiclient and have as many chars mining as you
# want.
# I use it to mine with one char while I play with my
# main char.
############################################################
# Main Mining Function! Conf. Needed (look above)
############################################################
sub go_mining()
var cycle=0
var path="l7el9wl8ek"
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 is no")==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("There is no") 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