[Orion] Mining for newbies (Minoc mine)
Posted: Fri Aug 16, 2019 12:47 pm
Hey, i made a small script for Orion Client ( https://github.com/Hotride/OrionUO ) that should help newbies to get some resources =). You just need some shovel(s) in your pack and be in Minoc mine. Script mines some ore, when near weight limit - smelts it on forge in cave, and returns to mining. That's all, no keys, no portable forges, no fire beetles
This scripts helped me to get some ingots for Tinkering, hope you like it.

Code: Select all
var config = {
"maxWeight" : (Player.MaxWeight()-10), //Max Weight to unload
"pickaxe" : "0x0F39", //Pickaxe type(pickaxe, shovel etc)
"ore" : "0x19B9",
"forge" : "0x0FB1",
"forgeScanDistance" : 20,
"toolQty" : 1, //To keep in bag
"tileOffset" : 2, // Radius to dig (X+-2, Y+-2)
};
var minePoints = {
1 : {"x" : 2559, "y" : 496, "z" : 0},
2 : {"x" : 2563, "y" : 489, "z" : 0},
3 : {"x" : 2566, "y" : 482, "z" : 0},
4 : {"x" : 2572, "y" : 484, "z" : 0},
5 : {"x" : 2577, "y" : 481, "z" : 0},
6 : {"x" : 2575, "y" : 477, "z" : 0},
7 : {"x" : 2571, "y" : 477, "z" : 0},
};
function start()
{
init();
while(!Player.Dead())
{
for(var i in minePoints)
{
Orion.Print('[i] Point '+i);
Orion.WalkTo(minePoints[i]["x"],minePoints[i]["y"], minePoints[i]["z"],0);
for (var x = -config['tileOffset']; x <= config['tileOffset']; x++)
{
for (var y = -config['tileOffset']; y <= config['tileOffset']; y++)
{
mine(x,y);
}
}
}
}
}
function mine(x,y)
{
Orion.Print("[i] Mining at offset X+"+x+" Y+"+y);
while(!Player.Dead())
{
if(checkTool())
{
if(Player.Weight() >= config['maxWeight'] )
smelt(Player.X(),Player.Y(),Player.Z());
if(Orion.ValidateTargetTileRelative('mine', x, y))
{
if(Orion.HaveTarget())
Orion.CancelWaitTarget();
Orion.UseType(config['pickaxe']);
Orion.WaitJournal('Where do you wish', Orion.Now(), Orion.Now()+2000, 'me|sys');
Orion.TargetTileRelative('mine', x, y, Player.Z());
var result = Orion.WaitJournal('You put some|You loosen some|There is no metal|Try mining|is too far|no line of|seen', Orion.Now(), (Orion.Now() + 7000), 'me|sys');
if(result && result.FindTextID()==2)
{
Orion.Print("[i] Tile depleted");
Orion.Wait(300);
break;
}
}else{
break;
}
}else{ //Not enough tools
break;
}
//Main Loop
}
}
function smelt(x,y,z){
Orion.Print("[i] Smelting");
var forgeSerial = Orion.FindType(config['forge'],-1,'ground','', config['forgeScanDistance']);
if(forgeSerial)
{
var forge = Orion.FindObject(forgeSerial);
if(forge)
{
if(Orion.WalkTo(forge.X(),forge.Y(),forge.Z(),1))
{
var ores = Orion.FindType(config['ore'],-1, 'backpack');
if(ores && ores.length > 0)
{
ores.forEach(function(items){
Orion.UseType(config['ore']);
Orion.WaitJournal("Select the forge", Orion.Now(), Orion.Now()+1000, 'me|sys');
Orion.TargetObject(forgeSerial);
Orion.WaitJournal("You burn away|You smelt", Orion.Now(), Orion.Now()+1000, 'me|sys');
Orion.Wait(500);
});
//Back to spot
Orion.WalkTo(x,y,z,0);
}
}
}
}
}
function checkTool()
{
var tools = Orion.FindType(config['pickaxe'], -1, 'backpack');
if(tools && tools.length >= config['toolQty'])
{
//Orion.Print("[i] There is "+tools.length+" tools left");
return true;
}else{
Orion.Print("[e] Not enough tools");
Orion.PlayWav("Alarm");
Orion.PauseScript();
return false;
}
}
function init()
{
if(Player.WarMode())
Player.WarMode(false)
Orion.Print("Initialization...");
}