OrionClient MiningScript UORemedy: различия между версиями
Sova (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
| + | |||
| + | |||
Скрипт сам крафтит себе тинкертулзы, лопаты, плавит, бьет элемов, хилится, относит весь стафф в банк. <br> | Скрипт сам крафтит себе тинкертулзы, лопаты, плавит, бьет элемов, хилится, относит весь стафф в банк. <br> | ||
Для старта иметь в сумке пару лопат + тинкер тулзы.<br> | Для старта иметь в сумке пару лопат + тинкер тулзы.<br> | ||
| + | Нужно создать List с названием Elementals, и добавить туда типы всех рудных элемов (по какой-то причине мне было лень это делать в скрипте). <br> | ||
В массив minePoints по аналогии добавить точки, которые будет обкапывать <br> | В массив minePoints по аналогии добавить точки, которые будет обкапывать <br> | ||
| − | < | + | {{#spoiler: |
| + | <syntaxhighlight> | ||
var config = { | var config = { | ||
"maxWeight" : (Player.MaxWeight()-30), //Max Weight to smelt | "maxWeight" : (Player.MaxWeight()-30), //Max Weight to smelt | ||
| Строка 99: | Строка 103: | ||
Orion.WaitJournal('Where do you wish', Orion.Now(), Orion.Now()+2000, 'me|sys'); | Orion.WaitJournal('Where do you wish', Orion.Now(), Orion.Now()+2000, 'me|sys'); | ||
Orion.TargetTileRelative('mine', x, y, Player.Z()); | Orion.TargetTileRelative('mine', x, y, Player.Z()); | ||
| − | var result = Orion.WaitJournal('You put some|You loosen some|There is no metal|You can\'t|You have worn|You dig|Try mining|is too far|no line of|seen', Orion.Now(), (Orion.Now() + 7000), 'me|sys'); | + | var result = Orion.WaitJournal('You put some|You loosen some|There is no metal|You can\'t| |
| + | You have worn|You dig|Try mining|is too far|no line of|seen', | ||
| + | Orion.Now(), (Orion.Now() + 7000), 'me|sys'); | ||
/*if(badOre.indexOf(result.Text()) > -1) | /*if(badOre.indexOf(result.Text()) > -1) | ||
| Строка 328: | Строка 334: | ||
} | } | ||
} | } | ||
| − | < | + | </syntaxhighlight> |
| + | }} | ||
| + | |||
| + | |||
| + | |||
| + | = Дополнительно = | ||
| + | |||
| + | {{#spoiler:show=Вариант предоставленный пользователем Corwines| | ||
| + | <syntaxhighlight> | ||
| + | var config = { | ||
| + | "maxWeight" : (Player.MaxWeight()-200), //Max Weight to smelt | ||
| + | "unloadWeight" : (Player.MaxWeight()-300), //Max Weight to unloaad | ||
| + | "pickaxe" : "0x0E86", //Pickaxe type(pickaxe, shovel etc) 0x0E86 0x0F39 | ||
| + | "pickaxe_keep" : 3, | ||
| + | "pickaxe_button" : 247, | ||
| + | "ore" : "0x19B9", | ||
| + | "forge" : "0x0FB1", | ||
| + | "ingot" : "0x1BF2", | ||
| + | //"breakstone" : "0x11EA", | ||
| + | "tinkerTools" : "0x1EB8", | ||
| + | "tinkerTools_keep" : 2, | ||
| + | "tinkerTools_button": 149, | ||
| + | "forge" : "0x400094D2", | ||
| + | "toolQty" : 1, //For check_tools, alert when < toolQty | ||
| + | "tileOffset" : 2, // Radius to dig (X+-2, Y+-2) | ||
| + | |||
| + | }; | ||
| + | |||
| + | var moreStuff = [ | ||
| + | 0x0EED, | ||
| + | 0x11EA, | ||
| + | 0x3194, | ||
| + | 0x3195, | ||
| + | 0x5732, | ||
| + | 0x3192, | ||
| + | 0x3193, | ||
| + | 0x0F28, | ||
| + | 0x3198, | ||
| + | 0x3197 | ||
| + | ]; | ||
| + | |||
| + | var bankCoords = { | ||
| + | "x" : XXXX, "y" : XXXX | ||
| + | }; | ||
| + | |||
| + | var forgeCoords = { | ||
| + | "x" : XXXX, "y" : XXXX | ||
| + | }; | ||
| + | |||
| + | |||
| + | var minePoints = { | ||
| + | 1 : {"x" : XXXX, "y" : XXXX, "z" : 0 }, | ||
| + | 2 : {"x" : XXXX, "y" : XXXX, "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)) | ||
| + | { | ||
| + | |||
| + | //var _enemy = Orion.FindType("0x006D", "0xFFFF", 'ground') | ||
| + | var _enemy = Orion.FindList('Elementals',ground,'near|mobile', 18, '') | ||
| + | if(_enemy != null && _enemy.length > 0) | ||
| + | { | ||
| + | Orion.Print("Found enemy"); | ||
| + | Orion.Print(_enemy[0]); | ||
| + | Orion.Attack(_enemy[0]); | ||
| + | follow(_enemy[0], Player.X(), Player.Y()); | ||
| + | Orion.Wait(500); | ||
| + | } | ||
| + | |||
| + | if(Orion.HaveTarget()) | ||
| + | Orion.CancelWaitTarget(); | ||
| + | |||
| + | if(Orion.ObjAtLayer(1) == null) | ||
| + | { | ||
| + | Orion.EquipT('0x0E86'); | ||
| + | Orion.Wait(500); | ||
| + | } | ||
| + | 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|is too far|no line of|Targen|seen|You can|Clay|You have worn|You dig|Try mining', Orion.Now(), (Orion.Now() + 7000), 'me|sys'); | ||
| + | |||
| + | /*if(badOre.indexOf(result.Text()) > -1) | ||
| + | { | ||
| + | Orion.Print("Low level ore found, skipping"); | ||
| + | Orion.Wait(300); | ||
| + | break; | ||
| + | }*/ | ||
| + | if(result && (result.FindTextID()==2 || result.FindTextID()==3 || result.FindTextID()==4 || result.FindTextID()==5 || result.FindTextID()==6 || result.FindTextID()==7)) | ||
| + | { | ||
| + | |||
| + | 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"); | ||
| + | while(Orion.WalkTo(forgeCoords["x"],forgeCoords["y"],0,0) != true) | ||
| + | { | ||
| + | Orion.WalkTo(forgeCoords["x"],forgeCoords["y"],0,0); | ||
| + | } | ||
| + | |||
| + | if(Orion.WalkTo(forgeCoords["x"],forgeCoords["y"],0,0)) | ||
| + | { | ||
| + | Orion.Print("[i] Smelting spot reached") | ||
| + | var ores = Orion.FindType(config['ore'],-1, 'backpack'); | ||
| + | if(ores && ores.length > 0) | ||
| + | { | ||
| + | ores.forEach(function(items){ | ||
| + | Orion.UseObject(items) | ||
| + | Orion.WaitJournal("Select the forge", Orion.Now(), Orion.Now()+1000, 'me|sys'); | ||
| + | Orion.TargetObject(config["forge"]); | ||
| + | var result = Orion.WaitJournal("You have no|You burn away|You smelt", Orion.Now(), Orion.Now()+1000, 'me|sys'); | ||
| + | Orion.Wait(500); | ||
| + | if(result && result.FindTextID()==0) | ||
| + | { | ||
| + | Orion.Print("[i] Cants smelt, skip"); | ||
| + | Orion.Wait(300); | ||
| + | Orion.Ignore(items) | ||
| + | continue; | ||
| + | } | ||
| + | |||
| + | }); | ||
| + | check_and_craft(config["tinkerTools"], config["tinkerTools_keep"], config["tinkerTools_button"]); | ||
| + | Orion.Wait(1000); | ||
| + | check_and_craft(config["pickaxe"], config["pickaxe_keep"], config["pickaxe_button"]); | ||
| + | Orion.Wait(1000); | ||
| + | if(Player.Weight() >= config['unloadWeight']) | ||
| + | unloadToBank(x,y,z) | ||
| + | |||
| + | while (Orion.WalkTo(x,y,z,0) != true) | ||
| + | { | ||
| + | Orion.WalkTo(x,y,z,0); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | function unloadToBank(x, y, z) | ||
| + | //function unloadToBank() | ||
| + | { | ||
| + | while (Player.X() != bankCoords["x"] && Player.Y() != bankCoords["y"]) | ||
| + | { | ||
| + | Orion.WalkTo(bankCoords["x"],bankCoords["y"],0,0) | ||
| + | } | ||
| + | Orion.Say('bank'); | ||
| + | Orion.Wait(1000); | ||
| + | var _ingots = Orion.FindType(config['ingot'], -1, 'backpack') | ||
| + | if (_ingots && _ingots.length > 0) | ||
| + | { | ||
| + | Orion.Print("Found some ingots"); | ||
| + | _ingots.forEach(function(_item){ | ||
| + | Orion.Print("Moving..."); | ||
| + | Orion.MoveItem(_item, 0, Player.BankSerial()); | ||
| + | Orion.Wait(1000); | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | moreStuff.forEach(function(_item){ | ||
| + | var _item_found = Orion.FindType(_item, -1, 'backpack'); | ||
| + | if(_item_found) | ||
| + | { | ||
| + | Orion.MoveItem(_item_found, 0, Player.BankSerial()); | ||
| + | Orion.Wait(1000); | ||
| + | } | ||
| + | }); | ||
| + | /* | ||
| + | var _breakstone = Orion.FindType(config['breakstone'], -1, 'backpack') | ||
| + | if(_breakstone) | ||
| + | { | ||
| + | Orion.Print("Found breakstone"); | ||
| + | Orion.MoveItem(_breakstone, 0, Player.BankSerial()); | ||
| + | Orion.Wait(1000); | ||
| + | } | ||
| + | |||
| + | var _gold = Orion.FindType(0x0EED, -1, 'backpack') | ||
| + | if(_gold) | ||
| + | { | ||
| + | Orion.Print("Found some gold"); | ||
| + | Orion.MoveItem(_gold, 0, Player.BankSerial()); | ||
| + | Orion.Wait(1000); | ||
| + | }*/ | ||
| + | |||
| + | while (Player.X() != x && Player.Y() != y) | ||
| + | { | ||
| + | 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.Exec("AutoHealSelf",true) | ||
| + | Orion.Exec("ability",true) | ||
| + | Orion.Print("Initialization..."); | ||
| + | } | ||
| + | |||
| + | function AutoHealSelf() | ||
| + | { | ||
| + | while(!Player.Dead()) | ||
| + | { | ||
| + | while(Player.Hits()<(Player.MaxHits()-20)) | ||
| + | { | ||
| + | Orion.ClearJournal(); | ||
| + | Orion.Say("[bandself"); | ||
| + | Orion.Wait(500); | ||
| + | Orion.WaitJournal("You finish|not damaged|heal|barely help", Orion.Now(), Orion.Now()+20000); | ||
| + | |||
| + | if(Orion.Count('0x0E21') < 10) | ||
| + | { | ||
| + | Orion.Print('33', ' [' + Orion.Count('0x0E21') + '] bandage left ! '); | ||
| + | } | ||
| + | } | ||
| + | Orion.Wait(100); | ||
| + | } | ||
| + | Orion.Wait(100); | ||
| + | Orion.IgnoreReset(); | ||
| + | } | ||
| + | |||
| + | function ability() | ||
| + | { | ||
| + | while(!Player.Dead()) | ||
| + | { | ||
| + | if(!Orion.AbilityStatus('primary')) | ||
| + | { | ||
| + | if(Player.Mana()>28) | ||
| + | Orion.UseAbility('primary'); | ||
| + | } | ||
| + | Orion.Wait(100); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | function follow(_target_serial, _original_x, _original_y) | ||
| + | { | ||
| + | while (Orion.FindObject(_target_serial) != null ) | ||
| + | { | ||
| + | var _target = Orion.FindObject(_target_serial); | ||
| + | if(_target && _target != null) | ||
| + | { | ||
| + | Orion.WalkTo(_target.X(), _target.Y(), _target.Z(),1); | ||
| + | Orion.Wait(100); | ||
| + | } | ||
| + | } | ||
| + | Orion.Wait(3000); | ||
| + | Orion.Print("Returning to position"); | ||
| + | Orion.WalkTo(_original_x, _original_y, Player.Z(), 0); | ||
| + | } | ||
| + | |||
| + | |||
| + | function check_and_craft(_item, _qty, _button) | ||
| + | { | ||
| + | while (Orion.FindType(_item).length < _qty) | ||
| + | { | ||
| + | Orion.Print("In While") | ||
| + | craft(config["tinkerTools"],_button); | ||
| + | } | ||
| + | Orion.Print("Tools ok") | ||
| + | } | ||
| + | |||
| + | //_tools -> Crafting tools type | ||
| + | //_button -> Gump response id | ||
| + | function craft(_tools, _button) | ||
| + | { | ||
| + | Orion.UseType(_tools); | ||
| + | Orion.WaitGump(Orion.CreateGumpHook(_button)); | ||
| + | if(Orion.WaitForGump(2000)) | ||
| + | { | ||
| + | Orion.WaitGump(Orion.CreateGumpHook(0)); | ||
| + | Orion.Print("Crafted -> Closed?"); | ||
| + | Orion.Wait(10000); // @TODO: Fix harcoded delay | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | Orion.Print("Error crafting item, WaitForGump timeout exceeded"); | ||
| + | Orion.PauseScript(); | ||
| + | } | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | }} | ||
Текущая версия на 23:47, 25 июня 2021
Скрипт сам крафтит себе тинкертулзы, лопаты, плавит, бьет элемов, хилится, относит весь стафф в банк.
Для старта иметь в сумке пару лопат + тинкер тулзы.
Нужно создать List с названием Elementals, и добавить туда типы всех рудных элемов (по какой-то причине мне было лень это делать в скрипте).
В массив minePoints по аналогии добавить точки, которые будет обкапывать